diff --git a/.gitignore b/.gitignore index 4be594a..bddf676 100644 --- a/.gitignore +++ b/.gitignore
@@ -347,6 +347,7 @@ /third_party/google_appengine_cloudstorage /third_party/google_toolbox_for_mac/src /third_party/googlemac +/third_party/gvr-android-sdk/src /third_party/gperf /third_party/grpc /third_party/guava/lib/*.jar @@ -433,7 +434,7 @@ /third_party/sqlite4java/lib/**/*.jar /third_party/sqlite4java/lib/**/*.jnilib /third_party/sqlite4java/lib/**/*.so -/third_party/swiftshader/include/ +/third_party/swiftshader/ /third_party/syzygy /third_party/syzygy/binaries /third_party/tsan/
diff --git a/DEPS b/DEPS index e309eca..ba9c181f 100644 --- a/DEPS +++ b/DEPS
@@ -36,11 +36,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '9be372041ec331f1b04c99890f92d24c59bf9dad', + 'skia_revision': '643ede69216c073c2dd497c382577dc9fde36b3e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'd67f12f726168059428a6e71be25eed71ee4fa5b', + 'v8_revision': '199f49c5b68b871173e3724c31288c6c33070b82', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -48,15 +48,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '9c721c64170b6698bbc68b407d780d25b2f7133c', + 'angle_revision': '3416ff3eef4f29c157785e862f6518fc099855f2', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling build tools # and whatever else without interference from each other. - 'buildtools_revision': 'e4aa960cb9cd2c7dbaa69655efa85b3d7dff13dd', - # Three lines of non-changing comments so that - # the commit queue can handle CLs rolling SwiftShader - # and whatever else without interference from each other. - 'swiftshader_revision': '3e204de9bb74b5379b42b7eea5c4b898b2698d56', + 'buildtools_revision': '33a32b8aa2b7274d246fcf85ce8f762cf4291418', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -92,7 +88,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': 'af9a4b2a5d6b342f45cc54906b729ec1d8a37115', + 'catapult_revision': '267de636c5220724645172da098015957e71bd62', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -106,7 +102,6 @@ 'boringssl.googlesource.com', 'pdfium.googlesource.com', 'android.googlesource.com', - 'swiftshader.googlesource.com', ] deps = { @@ -254,9 +249,6 @@ 'src/third_party/ced/src': Var('chromium_git') + '/external/github.com/google/compact_enc_det.git' + '@' + '9012c0ab648025dd0f8df14294bf5d6d73793ac9', - 'src/third_party/swiftshader': - 'https://swiftshader.googlesource.com/SwiftShader.git' + '@' + Var('swiftshader_revision'), - 'src/third_party/cld_2/src': Var('chromium_git') + '/external/github.com/CLD2Owners/cld2.git' + '@' + '84b58a5d7690ebf05a91406f371ce00c3daf31c0', @@ -490,6 +482,9 @@ 'src/third_party/custom_tabs_client/src': Var('chromium_git') + '/external/github.com/GoogleChrome/custom-tabs-client.git' + '@' + '2d896e8578f12ce85b804cab9e8f7e6e8c1bab7d', + + 'src/third_party/gvr-android-sdk/src': + Var('chromium_git') + '/external/github.com/googlevr/gvr-android-sdk.git' + '@' + 'cff15311c7c1abbe77b3c714135dccc2009ee473', }, }
diff --git a/android_webview/java/strings/translations/android_webview_strings_am.xtb b/android_webview/java/strings/translations/android_webview_strings_am.xtb index 269c4bb..16986997 100644 --- a/android_webview/java/strings/translations/android_webview_strings_am.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_am.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="am"> <translation id="3572484393913897457">የስርዓት WebView ፈቃዶች</translation> +<translation id="7096034533295549981">ቪዲዮን በመጫን ላይ</translation> <translation id="8916631167640856213">ይህ ተግባር በዚህ የAndroid ስሪት ላይ አይደገፍም።</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_ar.xtb b/android_webview/java/strings/translations/android_webview_strings_ar.xtb index b2eb6155..8f2d810 100644 --- a/android_webview/java/strings/translations/android_webview_strings_ar.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_ar.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="ar"> <translation id="3572484393913897457">تراخيص WebView للنظام</translation> +<translation id="7096034533295549981">تحميل الفيديو</translation> <translation id="8916631167640856213">هذه الوظيفة غير مدعومة في هذا الإصدار من Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_bg.xtb b/android_webview/java/strings/translations/android_webview_strings_bg.xtb index da416998..3de1835 100644 --- a/android_webview/java/strings/translations/android_webview_strings_bg.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_bg.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="bg"> <translation id="3572484393913897457">Системни лицензи за WebView</translation> +<translation id="7096034533295549981">Клип: Зарежда се</translation> <translation id="8916631167640856213">Функционалността не се поддържа в тази версия на Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_ca.xtb b/android_webview/java/strings/translations/android_webview_strings_ca.xtb index 7033e3b0..84508326 100644 --- a/android_webview/java/strings/translations/android_webview_strings_ca.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_ca.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="ca"> <translation id="3572484393913897457">Llicències de WebView del sistema</translation> +<translation id="7096034533295549981">Carregant vídeo</translation> <translation id="8916631167640856213">Aquesta funcionalitat no s'admet en aquesta versió d'Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_cs.xtb b/android_webview/java/strings/translations/android_webview_strings_cs.xtb index 71658517..21a0ee06 100644 --- a/android_webview/java/strings/translations/android_webview_strings_cs.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_cs.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="cs"> <translation id="3572484393913897457">Systémové licence WebView</translation> +<translation id="7096034533295549981">Načítání videa</translation> <translation id="8916631167640856213">V této verzi platformy Android tato funkce není podporována.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_da.xtb b/android_webview/java/strings/translations/android_webview_strings_da.xtb index 47675fe9..1ede9eb 100644 --- a/android_webview/java/strings/translations/android_webview_strings_da.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_da.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="da"> <translation id="3572484393913897457">System WebView-licenser</translation> +<translation id="7096034533295549981">Videoen indlæses</translation> <translation id="8916631167640856213">Funktionen er ikke understøttet i denne version af Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_de.xtb b/android_webview/java/strings/translations/android_webview_strings_de.xtb index f56d941..be426e3 100644 --- a/android_webview/java/strings/translations/android_webview_strings_de.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_de.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="de"> <translation id="3572484393913897457">System-WebView-Lizenzen</translation> +<translation id="7096034533295549981">Video wird geladen</translation> <translation id="8916631167640856213">Diese Funktion wird von dieser Android-Version nicht unterstützt.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_el.xtb b/android_webview/java/strings/translations/android_webview_strings_el.xtb index 20d0665..c59f5b3 100644 --- a/android_webview/java/strings/translations/android_webview_strings_el.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_el.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="el"> <translation id="3572484393913897457">Άδειες συστήματος WebView</translation> +<translation id="7096034533295549981">Φόρτωση βίντεο</translation> <translation id="8916631167640856213">Αυτή η λειτουργία δεν υποστηρίζεται σε αυτήν την έκδοση Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_en-GB.xtb b/android_webview/java/strings/translations/android_webview_strings_en-GB.xtb index 83c7404..ef6ab14 100644 --- a/android_webview/java/strings/translations/android_webview_strings_en-GB.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_en-GB.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="en-GB"> <translation id="3572484393913897457">System WebView licences</translation> +<translation id="7096034533295549981">Loading video</translation> <translation id="8916631167640856213">This functionality is not supported in this version of Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_es-419.xtb b/android_webview/java/strings/translations/android_webview_strings_es-419.xtb index 8f71dbf..ffb9302 100644 --- a/android_webview/java/strings/translations/android_webview_strings_es-419.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_es-419.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="es-419"> <translation id="3572484393913897457">Licencias de WebView del sistema</translation> +<translation id="7096034533295549981">Cargando video</translation> <translation id="8916631167640856213">Esta funcionalidad no se admite en esta versión de Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_es.xtb b/android_webview/java/strings/translations/android_webview_strings_es.xtb index 07927f7..73c0c837 100644 --- a/android_webview/java/strings/translations/android_webview_strings_es.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_es.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="es"> <translation id="3572484393913897457">Licencias de vista web del sistema</translation> +<translation id="7096034533295549981">Cargando vídeo</translation> <translation id="8916631167640856213">Esta función no se admite en esta versión de Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_fa.xtb b/android_webview/java/strings/translations/android_webview_strings_fa.xtb index b3fe811..14963b8e 100644 --- a/android_webview/java/strings/translations/android_webview_strings_fa.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_fa.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="fa"> <translation id="3572484393913897457">مجوزهای وبنمای سیستم</translation> +<translation id="7096034533295549981">بارگیری ویدیو</translation> <translation id="8916631167640856213">این قابلیت در این نسخه Android پشتیبانی نمیشود.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_fi.xtb b/android_webview/java/strings/translations/android_webview_strings_fi.xtb index 16d14ac..0e235c3 100644 --- a/android_webview/java/strings/translations/android_webview_strings_fi.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_fi.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="fi"> <translation id="3572484393913897457">Järjestelmän WebView-lisenssit</translation> +<translation id="7096034533295549981">Videota ladataan</translation> <translation id="8916631167640856213">Tässä Android-versiossa ei tueta tätä toimintoa.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_fil.xtb b/android_webview/java/strings/translations/android_webview_strings_fil.xtb index e7c439f8..7a2a2ac9 100644 --- a/android_webview/java/strings/translations/android_webview_strings_fil.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_fil.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="fil"> <translation id="3572484393913897457">Mga lisensya ng System WebView</translation> +<translation id="7096034533295549981">Naglo-load</translation> <translation id="8916631167640856213">Hindi sinusuportahan ang functionality na ito sa bersyong ito ng Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_fr.xtb b/android_webview/java/strings/translations/android_webview_strings_fr.xtb index 9be8e22..1c70ea9 100644 --- a/android_webview/java/strings/translations/android_webview_strings_fr.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_fr.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="fr"> <translation id="3572484393913897457">Licences système WebView</translation> +<translation id="7096034533295549981">Chargement vidéo…</translation> <translation id="8916631167640856213">Cette fonctionnalité n'est pas compatible avec cette version d'Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_hi.xtb b/android_webview/java/strings/translations/android_webview_strings_hi.xtb index edded5b..130699d 100644 --- a/android_webview/java/strings/translations/android_webview_strings_hi.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_hi.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="hi"> <translation id="3572484393913897457">सिस्टम WebView लाइसेंस</translation> +<translation id="7096034533295549981">वीडियो लोड हो रहा है</translation> <translation id="8916631167640856213">यह कार्यात्मकता Android के इस संस्करण में समर्थित नहीं है.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_hr.xtb b/android_webview/java/strings/translations/android_webview_strings_hr.xtb index 4fd4129..cbbeed61 100644 --- a/android_webview/java/strings/translations/android_webview_strings_hr.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_hr.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="hr"> <translation id="3572484393913897457">WebView licence sustava</translation> +<translation id="7096034533295549981">Učitavanje videa</translation> <translation id="8916631167640856213">Ova verzija Androida ne podržava tu funkciju.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_hu.xtb b/android_webview/java/strings/translations/android_webview_strings_hu.xtb index aa6868e..f1af30b 100644 --- a/android_webview/java/strings/translations/android_webview_strings_hu.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_hu.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="hu"> <translation id="3572484393913897457">A rendszer WebView-licencei</translation> +<translation id="7096034533295549981">Videó betöltése</translation> <translation id="8916631167640856213">Ezt a funkciót az Android jelen verziója nem támogatja.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_id.xtb b/android_webview/java/strings/translations/android_webview_strings_id.xtb index 6bd9773..4d8abd7 100644 --- a/android_webview/java/strings/translations/android_webview_strings_id.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_id.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="id"> <translation id="3572484393913897457">Lisensi System WebView</translation> +<translation id="7096034533295549981">Memuat video</translation> <translation id="8916631167640856213">Fungsi tersebut tidak didukung pada versi Android ini.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_it.xtb b/android_webview/java/strings/translations/android_webview_strings_it.xtb index 2e4c741..38d749b 100644 --- a/android_webview/java/strings/translations/android_webview_strings_it.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_it.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="it"> <translation id="3572484393913897457">Licenze WebView di sistema</translation> +<translation id="7096034533295549981">Caricamento video</translation> <translation id="8916631167640856213">Questa funzionalità non è supportata in questa versione di Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_iw.xtb b/android_webview/java/strings/translations/android_webview_strings_iw.xtb index 3b2229c..33304a4 100644 --- a/android_webview/java/strings/translations/android_webview_strings_iw.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_iw.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="iw"> <translation id="3572484393913897457">רישיונות WebView של המערכת</translation> +<translation id="7096034533295549981">טוען סרטון</translation> <translation id="8916631167640856213">פונקציונליות זו אינה נתמכת בגרסה זו של Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_ja.xtb b/android_webview/java/strings/translations/android_webview_strings_ja.xtb index 1579868..987e195 100644 --- a/android_webview/java/strings/translations/android_webview_strings_ja.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_ja.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="ja"> <translation id="3572484393913897457">システムのWebViewライセンス</translation> +<translation id="7096034533295549981">動画を読み込み中</translation> <translation id="8916631167640856213">この機能はこのバージョンのAndroidではサポートされていません。</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_ko.xtb b/android_webview/java/strings/translations/android_webview_strings_ko.xtb index 03f68db8..35a576e 100644 --- a/android_webview/java/strings/translations/android_webview_strings_ko.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_ko.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="ko"> <translation id="3572484393913897457">시스템 WebView 라이선스</translation> +<translation id="7096034533295549981">동영상 로드 중</translation> <translation id="8916631167640856213">사용 중인 Android 버전에서 지원하지 않는 기능입니다.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_lt.xtb b/android_webview/java/strings/translations/android_webview_strings_lt.xtb index 3662bae..654f32c 100644 --- a/android_webview/java/strings/translations/android_webview_strings_lt.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_lt.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="lt"> <translation id="3572484393913897457">Sistemos „WebView“ licencijos</translation> +<translation id="7096034533295549981">Įkel. v. įrašas</translation> <translation id="8916631167640856213">Ši funkcija šioje „Android“ versijoje nepalaikoma.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_lv.xtb b/android_webview/java/strings/translations/android_webview_strings_lv.xtb index 6f439394..887528f 100644 --- a/android_webview/java/strings/translations/android_webview_strings_lv.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_lv.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="lv"> <translation id="3572484393913897457">Sistēmas WebView licences</translation> +<translation id="7096034533295549981">Video ielāde</translation> <translation id="8916631167640856213">Šī funkcionalitāti šajā Android versijā netiek atbalstīta.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_nl.xtb b/android_webview/java/strings/translations/android_webview_strings_nl.xtb index 58ff9200..3d70456 100644 --- a/android_webview/java/strings/translations/android_webview_strings_nl.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_nl.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="nl"> <translation id="3572484393913897457">Systeemlicenties voor webweergave</translation> +<translation id="7096034533295549981">Video laden</translation> <translation id="8916631167640856213">Deze functionaliteit wordt niet ondersteund in deze versie van Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_no.xtb b/android_webview/java/strings/translations/android_webview_strings_no.xtb index 0e88b0ed..b5034bda 100644 --- a/android_webview/java/strings/translations/android_webview_strings_no.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_no.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="no"> <translation id="3572484393913897457">WebView-lisenser på systemet</translation> +<translation id="7096034533295549981">Laster inn videoen ...</translation> <translation id="8916631167640856213">Denne funksjonen støttes ikke på denne Android-versjonen.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_pl.xtb b/android_webview/java/strings/translations/android_webview_strings_pl.xtb index a567400..290d5801 100644 --- a/android_webview/java/strings/translations/android_webview_strings_pl.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_pl.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="pl"> <translation id="3572484393913897457">Licencje systemu WebView</translation> +<translation id="7096034533295549981">Wczytuję film</translation> <translation id="8916631167640856213">Funkcja nie działa w tej wersji Androida.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_pt-BR.xtb b/android_webview/java/strings/translations/android_webview_strings_pt-BR.xtb index deba31d..b5f618cc 100644 --- a/android_webview/java/strings/translations/android_webview_strings_pt-BR.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_pt-BR.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="pt-BR"> <translation id="3572484393913897457">Licenças do sistema WebView</translation> +<translation id="7096034533295549981">Carregando vídeo</translation> <translation id="8916631167640856213">Esta funcionalidade não é suportada nesta versão do Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_pt-PT.xtb b/android_webview/java/strings/translations/android_webview_strings_pt-PT.xtb index ce23f90..5198423 100644 --- a/android_webview/java/strings/translations/android_webview_strings_pt-PT.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_pt-PT.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="pt-PT"> <translation id="3572484393913897457">Licenças do sistema WebView</translation> +<translation id="7096034533295549981">A carregar vídeo</translation> <translation id="8916631167640856213">Esta funcionalidade não é suportada nesta versão do Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_ro.xtb b/android_webview/java/strings/translations/android_webview_strings_ro.xtb index abaa57b..8dba24c9 100644 --- a/android_webview/java/strings/translations/android_webview_strings_ro.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_ro.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="ro"> <translation id="3572484393913897457">Licențe de sistem pentru WebView</translation> +<translation id="7096034533295549981">Se încarcă video</translation> <translation id="8916631167640856213">Funcționalitatea nu este acceptată de această versiune de Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_ru.xtb b/android_webview/java/strings/translations/android_webview_strings_ru.xtb index 938250d..1344945 100644 --- a/android_webview/java/strings/translations/android_webview_strings_ru.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_ru.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="ru"> <translation id="3572484393913897457">Системные лицензии WebView</translation> +<translation id="7096034533295549981">Загрузка видео…</translation> <translation id="8916631167640856213">Эта функция не поддерживается в данной версии Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_sk.xtb b/android_webview/java/strings/translations/android_webview_strings_sk.xtb index dc623c8a..f157fa2 100644 --- a/android_webview/java/strings/translations/android_webview_strings_sk.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_sk.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="sk"> <translation id="3572484393913897457">Systémové licencie WebView</translation> +<translation id="7096034533295549981">Načítanie videa</translation> <translation id="8916631167640856213">Táto funkcia nie je podporovaná v tejto verzii systému Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_sl.xtb b/android_webview/java/strings/translations/android_webview_strings_sl.xtb index ab3a771..1751dbd 100644 --- a/android_webview/java/strings/translations/android_webview_strings_sl.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_sl.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="sl"> <translation id="3572484393913897457">Sistemske licence za WebView</translation> +<translation id="7096034533295549981">Nalaganje videa</translation> <translation id="8916631167640856213">Ta različica Androida ne podpira te funkcije.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_sr.xtb b/android_webview/java/strings/translations/android_webview_strings_sr.xtb index d6ef434..f223e0c 100644 --- a/android_webview/java/strings/translations/android_webview_strings_sr.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_sr.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="sr"> <translation id="3572484393913897457">Лиценце за системски WebView</translation> +<translation id="7096034533295549981">Учитавање видеа</translation> <translation id="8916631167640856213">Функција није подржана на овој верзији Android-а.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_sv.xtb b/android_webview/java/strings/translations/android_webview_strings_sv.xtb index 9cec166..d7edb48 100644 --- a/android_webview/java/strings/translations/android_webview_strings_sv.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_sv.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="sv"> <translation id="3572484393913897457">Systemets WebView-licenser</translation> +<translation id="7096034533295549981">Videon läses in</translation> <translation id="8916631167640856213">Den här funktionen stöds inte i den här versionen av Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_sw.xtb b/android_webview/java/strings/translations/android_webview_strings_sw.xtb index 0892418..f245902 100644 --- a/android_webview/java/strings/translations/android_webview_strings_sw.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_sw.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="sw"> <translation id="3572484393913897457">Leseni za mfumo wa WebView</translation> +<translation id="7096034533295549981">Inapakia video</translation> <translation id="8916631167640856213">Utendaji huu hautumiki katika toleo hili la Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_th.xtb b/android_webview/java/strings/translations/android_webview_strings_th.xtb index ce7106d..3c3cf989 100644 --- a/android_webview/java/strings/translations/android_webview_strings_th.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_th.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="th"> <translation id="3572484393913897457">ใบอนุญาต WebView ของระบบ</translation> +<translation id="7096034533295549981">กำลังโหลดวิดีโอ</translation> <translation id="8916631167640856213">Android เวอร์ชันนี้ไม่รองรับฟังก์ชันการทำงานนี้</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_tr.xtb b/android_webview/java/strings/translations/android_webview_strings_tr.xtb index 4b96176..1cb09490 100644 --- a/android_webview/java/strings/translations/android_webview_strings_tr.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_tr.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="tr"> <translation id="3572484393913897457">Sistem WebView lisansları</translation> +<translation id="7096034533295549981">Video yükleniyor</translation> <translation id="8916631167640856213">Bu işlev Android'in bu sürümünde desteklenmemektedir.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_uk.xtb b/android_webview/java/strings/translations/android_webview_strings_uk.xtb index 19ff39f..26061357 100644 --- a/android_webview/java/strings/translations/android_webview_strings_uk.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_uk.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="uk"> <translation id="3572484393913897457">Системні ліцензії WebView</translation> +<translation id="7096034533295549981">Завантаж. відео</translation> <translation id="8916631167640856213">Ця версія Android не підтримує ці функції.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_vi.xtb b/android_webview/java/strings/translations/android_webview_strings_vi.xtb index 647e4cad..ef7aa915 100644 --- a/android_webview/java/strings/translations/android_webview_strings_vi.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_vi.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="vi"> <translation id="3572484393913897457">Giấy phép WebView của hệ thống</translation> +<translation id="7096034533295549981">Đang tải video</translation> <translation id="8916631167640856213">Chức năng này không được hỗ trợ trong phiên bản này của Android.</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_zh-CN.xtb b/android_webview/java/strings/translations/android_webview_strings_zh-CN.xtb index 5d80538..7de50eb 100644 --- a/android_webview/java/strings/translations/android_webview_strings_zh-CN.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_zh-CN.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="zh-CN"> <translation id="3572484393913897457">系统 WebView 许可</translation> +<translation id="7096034533295549981">加载视频</translation> <translation id="8916631167640856213">此版本的 Android 不支持该功能。</translation> </translationbundle> \ No newline at end of file
diff --git a/android_webview/java/strings/translations/android_webview_strings_zh-TW.xtb b/android_webview/java/strings/translations/android_webview_strings_zh-TW.xtb index ab4d32f32..b109205 100644 --- a/android_webview/java/strings/translations/android_webview_strings_zh-TW.xtb +++ b/android_webview/java/strings/translations/android_webview_strings_zh-TW.xtb
@@ -2,5 +2,6 @@ <!DOCTYPE translationbundle> <translationbundle lang="zh-TW"> <translation id="3572484393913897457">系統 WebView 授權</translation> +<translation id="7096034533295549981">正在載入影片</translation> <translation id="8916631167640856213">這個 Android 版本不支援這項功能。</translation> </translationbundle> \ No newline at end of file
diff --git a/ash/app_list/app_list_presenter_delegate.cc b/ash/app_list/app_list_presenter_delegate.cc index cefa086..6d557d3 100644 --- a/ash/app_list/app_list_presenter_delegate.cc +++ b/ash/app_list/app_list_presenter_delegate.cc
@@ -41,9 +41,17 @@ // Gets arrow location based on shelf alignment. views::BubbleBorder::Arrow GetBubbleArrow(aura::Window* window) { DCHECK(Shell::HasInstance()); - return Shelf::ForWindow(window)->SelectValueForShelfAlignment( - views::BubbleBorder::BOTTOM_CENTER, views::BubbleBorder::LEFT_CENTER, - views::BubbleBorder::RIGHT_CENTER); + switch (Shelf::ForWindow(window)->alignment()) { + case SHELF_ALIGNMENT_BOTTOM: + case SHELF_ALIGNMENT_BOTTOM_LOCKED: + return views::BubbleBorder::BOTTOM_CENTER; + case SHELF_ALIGNMENT_LEFT: + return views::BubbleBorder::LEFT_CENTER; + case SHELF_ALIGNMENT_RIGHT: + return views::BubbleBorder::RIGHT_CENTER; + } + NOTREACHED(); + return views::BubbleBorder::BOTTOM_CENTER; } // Using |button_bounds|, determine the anchor offset so that the bubble gets @@ -254,10 +262,17 @@ ->GetShelfLayoutManager() ->UpdateAutoHideState(); - return Shelf::ForWindow(root_window) - ->SelectValueForShelfAlignment(gfx::Vector2d(0, kAnimationOffset), - gfx::Vector2d(-kAnimationOffset, 0), - gfx::Vector2d(kAnimationOffset, 0)); + switch (Shelf::ForWindow(root_window)->alignment()) { + case SHELF_ALIGNMENT_BOTTOM: + case SHELF_ALIGNMENT_BOTTOM_LOCKED: + return gfx::Vector2d(0, kAnimationOffset); + case SHELF_ALIGNMENT_LEFT: + return gfx::Vector2d(-kAnimationOffset, 0); + case SHELF_ALIGNMENT_RIGHT: + return gfx::Vector2d(kAnimationOffset, 0); + } + NOTREACHED(); + return gfx::Vector2d(); } ////////////////////////////////////////////////////////////////////////////////
diff --git a/ash/app_list/app_list_presenter_delegate.h b/ash/app_list/app_list_presenter_delegate.h index 3b22609..2ea0154 100644 --- a/ash/app_list/app_list_presenter_delegate.h +++ b/ash/app_list/app_list_presenter_delegate.h
@@ -8,9 +8,8 @@ #include <stdint.h> #include "ash/ash_export.h" +#include "ash/common/shelf/shelf_icon_observer.h" #include "ash/common/shell_observer.h" -#include "ash/shelf/shelf_icon_observer.h" -#include "base/compiler_specific.h" #include "base/macros.h" #include "ui/app_list/presenter/app_list_presenter_delegate.h" #include "ui/events/event_handler.h"
diff --git a/ash/ash.gyp b/ash/ash.gyp index 6d2ed2f..836c99d 100644 --- a/ash/ash.gyp +++ b/ash/ash.gyp
@@ -141,6 +141,7 @@ 'common/shelf/shelf_constants.cc', 'common/shelf/shelf_constants.h', 'common/shelf/shelf_delegate.h', + 'common/shelf/shelf_icon_observer.h', 'common/shelf/shelf_item_delegate.h', 'common/shelf/shelf_item_types.cc', 'common/shelf/shelf_item_types.h', @@ -155,10 +156,13 @@ 'common/shelf/shelf_tooltip_manager.cc', 'common/shelf/shelf_tooltip_manager.h', 'common/shelf/shelf_types.h', + 'common/shelf/shelf_view.cc', + 'common/shelf/shelf_view.h', 'common/shelf/shelf_window_watcher.cc', 'common/shelf/shelf_window_watcher.h', 'common/shelf/shelf_window_watcher_item_delegate.cc', 'common/shelf/shelf_window_watcher_item_delegate.h', + 'common/shelf/wm_shelf.cc', 'common/shelf/wm_shelf.h', 'common/shelf/wm_shelf_observer.h', 'common/shelf/wm_shelf_util.cc', @@ -646,14 +650,11 @@ 'shelf/shelf.h', 'shelf/shelf_bezel_event_filter.cc', 'shelf/shelf_bezel_event_filter.h', - 'shelf/shelf_icon_observer.h', 'shelf/shelf_layout_manager.cc', 'shelf/shelf_layout_manager.h', 'shelf/shelf_layout_manager_observer.h', 'shelf/shelf_util.cc', 'shelf/shelf_util.h', - 'shelf/shelf_view.cc', - 'shelf/shelf_view.h', 'shelf/shelf_widget.cc', 'shelf/shelf_widget.h', 'shelf/shelf_window_targeter.cc', @@ -711,8 +712,6 @@ 'wm/event_client_impl.h', 'wm/gestures/overview_gesture_handler.cc', 'wm/gestures/overview_gesture_handler.h', - 'wm/gestures/shelf_gesture_handler.cc', - 'wm/gestures/shelf_gesture_handler.h', 'wm/immersive_fullscreen_controller.cc', 'wm/immersive_fullscreen_controller.h', 'wm/lock_layout_manager.cc',
diff --git a/ash/aura/wm_shelf_aura.cc b/ash/aura/wm_shelf_aura.cc index 5d70a39..84c7892d 100644 --- a/ash/aura/wm_shelf_aura.cc +++ b/ash/aura/wm_shelf_aura.cc
@@ -133,10 +133,11 @@ WmWindowAura::GetAuraWindow(window)); } -bool WmShelfAura::ProcessGestureEvent(const ui::GestureEvent& event, - WmWindow* target_window) { - return gesture_handler_.ProcessGestureEvent( - event, WmWindowAura::GetAuraWindow(target_window)); +bool WmShelfAura::ProcessGestureEvent(const ui::GestureEvent& event) { + // Can be called at login screen. + if (!shelf_layout_manager_) + return false; + return shelf_layout_manager_->ProcessGestureEvent(event); } void WmShelfAura::UpdateAutoHideForMouseEvent(ui::MouseEvent* event) {
diff --git a/ash/aura/wm_shelf_aura.h b/ash/aura/wm_shelf_aura.h index 8fc0f3c0..ff6439a5 100644 --- a/ash/aura/wm_shelf_aura.h +++ b/ash/aura/wm_shelf_aura.h
@@ -6,10 +6,9 @@ #define ASH_AURA_WM_SHELF_AURA_H_ #include "ash/ash_export.h" +#include "ash/common/shelf/shelf_icon_observer.h" #include "ash/common/shelf/wm_shelf.h" -#include "ash/shelf/shelf_icon_observer.h" #include "ash/shelf/shelf_layout_manager_observer.h" -#include "ash/wm/gestures/shelf_gesture_handler.h" #include "base/macros.h" #include "base/observer_list.h" @@ -57,8 +56,7 @@ gfx::Rect GetUserWorkAreaBounds() const override; void UpdateIconPositionForWindow(WmWindow* window) override; gfx::Rect GetScreenBoundsOfItemIconForWindow(WmWindow* window) override; - bool ProcessGestureEvent(const ui::GestureEvent& event, - WmWindow* target_window) override; + bool ProcessGestureEvent(const ui::GestureEvent& event) override; void UpdateAutoHideForMouseEvent(ui::MouseEvent* event) override; void UpdateAutoHideForGestureEvent(ui::GestureEvent* event) override; void AddObserver(WmShelfObserver* observer) override; @@ -83,9 +81,6 @@ // Cached separately because it may be destroyed before |shelf_|. ShelfLayoutManager* shelf_layout_manager_ = nullptr; - // Handler for swipe and drag gestures. - ShelfGestureHandler gesture_handler_; - base::ObserverList<WmShelfObserver> observers_; DISALLOW_COPY_AND_ASSIGN(WmShelfAura);
diff --git a/ash/common/keyboard/keyboard_ui.cc b/ash/common/keyboard/keyboard_ui.cc index c9d2fe9c..993b83eb 100644 --- a/ash/common/keyboard/keyboard_ui.cc +++ b/ash/common/keyboard/keyboard_ui.cc
@@ -17,7 +17,7 @@ class KeyboardUIImpl : public KeyboardUI, public AccessibilityObserver { public: - KeyboardUIImpl() { + KeyboardUIImpl() : enabled_(false) { WmShell::Get()->system_tray_notifier()->AddAccessibilityObserver(this); } @@ -41,11 +41,18 @@ // AccessibilityObserver: void OnAccessibilityModeChanged( AccessibilityNotificationVisibility notify) override { + bool enabled = IsEnabled(); + if (enabled_ == enabled) + return; + + enabled_ = enabled; FOR_EACH_OBSERVER(KeyboardUIObserver, *observers(), - OnKeyboardEnabledStateChanged(IsEnabled())); + OnKeyboardEnabledStateChanged(enabled)); } private: + bool enabled_; + DISALLOW_COPY_AND_ASSIGN(KeyboardUIImpl); };
diff --git a/ash/common/keyboard/keyboard_ui_observer.h b/ash/common/keyboard/keyboard_ui_observer.h index b3147c9..a0dc241 100644 --- a/ash/common/keyboard/keyboard_ui_observer.h +++ b/ash/common/keyboard/keyboard_ui_observer.h
@@ -12,7 +12,7 @@ class ASH_EXPORT KeyboardUIObserver { public: - virtual void OnKeyboardEnabledStateChanged(bool new_value) = 0; + virtual void OnKeyboardEnabledStateChanged(bool new_enabled) = 0; protected: virtual ~KeyboardUIObserver() {}
diff --git a/ash/common/shelf/DEPS b/ash/common/shelf/DEPS index 2d7c174..10133ab 100644 --- a/ash/common/shelf/DEPS +++ b/ash/common/shelf/DEPS
@@ -1,19 +1,7 @@ # Shelf code is being moved into //ash/common. Please ask jamescook@ or msw@ # before adding items here. http://crbug.com/615155 specific_include_rules = { - "app_list_button.cc": [ - "+ash/shelf/shelf_view.h" - ], - "overflow_bubble.cc": [ - "+ash/shelf/shelf_view.h" - ], - "shelf_button.cc": [ - "+ash/shelf/shelf_view.h" - ], - "shelf_tooltip_manager.cc": [ - "+ash/shelf/shelf_view.h" - ], - "shelf_tooltip_manager_unittest.cc": [ - "+ash/shelf/shelf_view.h" + "shelf_view.cc": [ + "+ash/shelf/shelf_widget.h" ], }
diff --git a/ash/common/shelf/app_list_button.cc b/ash/common/shelf/app_list_button.cc index e31acdf..1cd900e 100644 --- a/ash/common/shelf/app_list_button.cc +++ b/ash/common/shelf/app_list_button.cc
@@ -10,10 +10,10 @@ #include "ash/common/shelf/shelf_constants.h" #include "ash/common/shelf/shelf_item_types.h" #include "ash/common/shelf/shelf_types.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/shelf/wm_shelf.h" #include "ash/common/shelf/wm_shelf_util.h" #include "ash/common/wm_shell.h" -#include "ash/shelf/shelf_view.h" #include "base/command_line.h" #include "grit/ash_resources.h" #include "grit/ash_strings.h"
diff --git a/ash/common/shelf/overflow_bubble.cc b/ash/common/shelf/overflow_bubble.cc index 0a5428ab3..74e59be6 100644 --- a/ash/common/shelf/overflow_bubble.cc +++ b/ash/common/shelf/overflow_bubble.cc
@@ -5,10 +5,10 @@ #include "ash/common/shelf/overflow_bubble.h" #include "ash/common/shelf/overflow_bubble_view.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/shelf/wm_shelf.h" #include "ash/common/system/tray/tray_background_view.h" #include "ash/common/wm_shell.h" -#include "ash/shelf/shelf_view.h" #include "ui/gfx/geometry/rect.h" #include "ui/views/widget/widget.h"
diff --git a/ash/common/shelf/shelf_button.cc b/ash/common/shelf/shelf_button.cc index 8e31e85..74fccef 100644 --- a/ash/common/shelf/shelf_button.cc +++ b/ash/common/shelf/shelf_button.cc
@@ -10,9 +10,9 @@ #include "ash/common/material_design/material_design_controller.h" #include "ash/common/shelf/ink_drop_button_listener.h" #include "ash/common/shelf/shelf_constants.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/shelf/wm_shelf.h" #include "ash/common/shelf/wm_shelf_util.h" -#include "ash/shelf/shelf_view.h" #include "base/time/time.h" #include "grit/ash_resources.h" #include "skia/ext/image_operations.h"
diff --git a/ash/shelf/shelf_icon_observer.h b/ash/common/shelf/shelf_icon_observer.h similarity index 74% rename from ash/shelf/shelf_icon_observer.h rename to ash/common/shelf/shelf_icon_observer.h index 8132a89..3c1ae20 100644 --- a/ash/shelf/shelf_icon_observer.h +++ b/ash/common/shelf/shelf_icon_observer.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef ASH_SHELF_SHELF_ICON_OBSERVER_H_ -#define ASH_SHELF_SHELF_ICON_OBSERVER_H_ +#ifndef ASH_COMMON_SHELF_SHELF_ICON_OBSERVER_H_ +#define ASH_COMMON_SHELF_SHELF_ICON_OBSERVER_H_ #include "ash/ash_export.h" @@ -20,4 +20,4 @@ } // namespace ash -#endif // ASH_SHELF_SHELF_ICON_OBSERVER_H_ +#endif // ASH_COMMON_SHELF_SHELF_ICON_OBSERVER_H_
diff --git a/ash/common/shelf/shelf_tooltip_manager.cc b/ash/common/shelf/shelf_tooltip_manager.cc index 6a6db00..85028953 100644 --- a/ash/common/shelf/shelf_tooltip_manager.cc +++ b/ash/common/shelf/shelf_tooltip_manager.cc
@@ -4,13 +4,13 @@ #include "ash/common/shelf/shelf_tooltip_manager.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/shelf/wm_shelf.h" #include "ash/common/shell_window_ids.h" #include "ash/common/wm_lookup.h" #include "ash/common/wm_root_window_controller.h" #include "ash/common/wm_shell.h" #include "ash/common/wm_window.h" -#include "ash/shelf/shelf_view.h" #include "base/bind.h" #include "base/strings/string16.h" #include "base/threading/thread_task_runner_handle.h"
diff --git a/ash/common/shelf/shelf_tooltip_manager_unittest.cc b/ash/common/shelf/shelf_tooltip_manager_unittest.cc index 1135bb881..902c83bb 100644 --- a/ash/common/shelf/shelf_tooltip_manager_unittest.cc +++ b/ash/common/shelf/shelf_tooltip_manager_unittest.cc
@@ -6,8 +6,8 @@ #include "ash/common/shelf/app_list_button.h" #include "ash/common/shelf/shelf_model.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/shelf/wm_shelf.h" -#include "ash/shelf/shelf_view.h" #include "ash/test/ash_test_base.h" #include "ash/test/shelf_view_test_api.h" #include "ash/test/test_shelf_item_delegate.h"
diff --git a/ash/shelf/shelf_view.cc b/ash/common/shelf/shelf_view.cc similarity index 95% rename from ash/shelf/shelf_view.cc rename to ash/common/shelf/shelf_view.cc index c465a90..935045d8b 100644 --- a/ash/shelf/shelf_view.cc +++ b/ash/common/shelf/shelf_view.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/shelf/shelf_view.h" +#include "ash/common/shelf/shelf_view.h" #include <algorithm> #include <memory> @@ -18,6 +18,7 @@ #include "ash/common/shelf/shelf_button.h" #include "ash/common/shelf/shelf_constants.h" #include "ash/common/shelf/shelf_delegate.h" +#include "ash/common/shelf/shelf_icon_observer.h" #include "ash/common/shelf/shelf_menu_model.h" #include "ash/common/shelf/shelf_model.h" #include "ash/common/shelf/wm_shelf.h" @@ -26,14 +27,11 @@ #include "ash/common/wm_lookup.h" #include "ash/common/wm_shell.h" #include "ash/common/wm_window.h" -#include "ash/shelf/shelf.h" -#include "ash/shelf/shelf_icon_observer.h" #include "ash/shelf/shelf_widget.h" #include "base/auto_reset.h" #include "base/metrics/histogram.h" #include "grit/ash_strings.h" #include "ui/accessibility/ax_view_state.h" -#include "ui/aura/window.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/models/simple_menu_model.h" #include "ui/base/resource/resource_bundle.h" @@ -359,11 +357,11 @@ ShelfView::ShelfView(ShelfModel* model, ShelfDelegate* delegate, WmShelf* wm_shelf, - Shelf* shelf) + ShelfWidget* shelf_widget) : model_(model), delegate_(delegate), wm_shelf_(wm_shelf), - shelf_(shelf), + shelf_widget_(shelf_widget), view_model_(new views::ViewModel), first_visible_index_(0), last_visible_index_(-1), @@ -391,6 +389,7 @@ DCHECK(model_); DCHECK(delegate_); DCHECK(wm_shelf_); + DCHECK(shelf_widget_); bounds_animator_.reset(new views::BoundsAnimator(this)); bounds_animator_->AddObserver(this); set_context_menu_controller(this); @@ -478,19 +477,20 @@ gfx::Point midpoint_in_view(GetMirroredXInView(midpoint.x()), midpoint.y()); int target_index = current_index; - while (target_index > first_panel_index && - shelf_->PrimaryAxisValue(view_model_->ideal_bounds(target_index).x(), + while ( + target_index > first_panel_index && + wm_shelf_->PrimaryAxisValue(view_model_->ideal_bounds(target_index).x(), view_model_->ideal_bounds(target_index).y()) > - shelf_->PrimaryAxisValue(midpoint_in_view.x(), + wm_shelf_->PrimaryAxisValue(midpoint_in_view.x(), midpoint_in_view.y())) { --target_index; } while (target_index < view_model_->view_size() - 1 && - shelf_->PrimaryAxisValue( + wm_shelf_->PrimaryAxisValue( view_model_->ideal_bounds(target_index).right(), view_model_->ideal_bounds(target_index).bottom()) < - shelf_->PrimaryAxisValue(midpoint_in_view.x(), - midpoint_in_view.y())) { + wm_shelf_->PrimaryAxisValue(midpoint_in_view.x(), + midpoint_in_view.y())) { ++target_index; } if (current_index != target_index) @@ -752,7 +752,7 @@ drag_view_ = static_cast<ShelfButton*>(view); drag_origin_ = gfx::Point(event.x(), event.y()); UMA_HISTOGRAM_ENUMERATION("Ash.ShelfAlignmentUsage", - shelf_->SelectValueForShelfAlignment( + wm_shelf_->SelectValueForShelfAlignment( SHELF_ALIGNMENT_UMA_ENUM_VALUE_BOTTOM, SHELF_ALIGNMENT_UMA_ENUM_VALUE_LEFT, SHELF_ALIGNMENT_UMA_ENUM_VALUE_RIGHT), @@ -825,7 +825,7 @@ } void ShelfView::CalculateIdealBounds(IdealBounds* bounds) const { - int available_size = shelf_->PrimaryAxisValue(width(), height()); + int available_size = wm_shelf_->PrimaryAxisValue(width(), height()); DCHECK(model_->item_count() == view_model_->view_size()); if (!available_size) return; @@ -838,8 +838,8 @@ int button_size = GetShelfConstant(SHELF_BUTTON_SIZE); int button_spacing = GetShelfConstant(SHELF_BUTTON_SPACING); - int w = shelf_->PrimaryAxisValue(button_size, width()); - int h = shelf_->PrimaryAxisValue(height(), button_size); + int w = wm_shelf_->PrimaryAxisValue(button_size, width()); + int h = wm_shelf_->PrimaryAxisValue(height(), button_size); for (int i = 0; i < view_model_->view_size(); ++i) { if (i < first_visible_index_) { view_model_->set_ideal_bounds(i, gfx::Rect(x, y, 0, 0)); @@ -847,8 +847,8 @@ } view_model_->set_ideal_bounds(i, gfx::Rect(x, y, w, h)); - x = shelf_->PrimaryAxisValue(x + w + button_spacing, x); - y = shelf_->PrimaryAxisValue(y, y + h + button_spacing); + x = wm_shelf_->PrimaryAxisValue(x + w + button_spacing, x); + y = wm_shelf_->PrimaryAxisValue(y, y + h + button_spacing); } if (is_overflow_mode()) { @@ -858,19 +858,19 @@ // Right aligned icons. int end_position = available_size - button_spacing; - x = shelf_->PrimaryAxisValue(end_position, 0); - y = shelf_->PrimaryAxisValue(0, end_position); + x = wm_shelf_->PrimaryAxisValue(end_position, 0); + y = wm_shelf_->PrimaryAxisValue(0, end_position); for (int i = view_model_->view_size() - 1; i >= first_panel_index; --i) { - x = shelf_->PrimaryAxisValue(x - w - button_spacing, x); - y = shelf_->PrimaryAxisValue(y, y - h - button_spacing); + x = wm_shelf_->PrimaryAxisValue(x - w - button_spacing, x); + y = wm_shelf_->PrimaryAxisValue(y, y - h - button_spacing); view_model_->set_ideal_bounds(i, gfx::Rect(x, y, w, h)); - end_position = shelf_->PrimaryAxisValue(x, y); + end_position = wm_shelf_->PrimaryAxisValue(x, y); } // Icons on the left / top are guaranteed up to kLeftIconProportion of // the available space. int last_icon_position = - shelf_->PrimaryAxisValue( + wm_shelf_->PrimaryAxisValue( view_model_->ideal_bounds(last_button_index).right(), view_model_->ideal_bounds(last_button_index).bottom()) + button_size; @@ -881,8 +881,8 @@ end_position = std::max(end_position, reserved_icon_space); bounds->overflow_bounds.set_size( - gfx::Size(shelf_->PrimaryAxisValue(w, width()), - shelf_->PrimaryAxisValue(height(), h))); + gfx::Size(wm_shelf_->PrimaryAxisValue(w, width()), + wm_shelf_->PrimaryAxisValue(height(), h))); last_visible_index_ = DetermineLastVisibleIndex(end_position - button_size); last_hidden_index_ = DetermineFirstVisiblePanelIndex(end_position) - 1; @@ -929,10 +929,10 @@ x = 0; y = 0; } else { - x = shelf_->PrimaryAxisValue( + x = wm_shelf_->PrimaryAxisValue( view_model_->ideal_bounds(last_visible_index_).right(), view_model_->ideal_bounds(last_visible_index_).x()); - y = shelf_->PrimaryAxisValue( + y = wm_shelf_->PrimaryAxisValue( view_model_->ideal_bounds(last_visible_index_).y(), view_model_->ideal_bounds(last_visible_index_).bottom()); } @@ -942,8 +942,8 @@ // Add more space between last visible item and overflow button. // Without this, two buttons look too close compared with other items. - x = shelf_->PrimaryAxisValue(x + button_spacing, x); - y = shelf_->PrimaryAxisValue(y, y + button_spacing); + x = wm_shelf_->PrimaryAxisValue(x + button_spacing, x); + y = wm_shelf_->PrimaryAxisValue(y, y + button_spacing); bounds->overflow_bounds.set_x(x); bounds->overflow_bounds.set_y(y); @@ -958,9 +958,9 @@ int ShelfView::DetermineLastVisibleIndex(int max_value) const { int index = model_->FirstPanelIndex() - 1; while (index >= 0 && - shelf_->PrimaryAxisValue(view_model_->ideal_bounds(index).right(), - view_model_->ideal_bounds(index).bottom()) > - max_value) { + wm_shelf_->PrimaryAxisValue( + view_model_->ideal_bounds(index).right(), + view_model_->ideal_bounds(index).bottom()) > max_value) { index--; } return index; @@ -969,9 +969,9 @@ int ShelfView::DetermineFirstVisiblePanelIndex(int min_value) const { int index = model_->FirstPanelIndex(); while (index < view_model_->view_size() && - shelf_->PrimaryAxisValue(view_model_->ideal_bounds(index).right(), - view_model_->ideal_bounds(index).bottom()) < - min_value) { + wm_shelf_->PrimaryAxisValue( + view_model_->ideal_bounds(index).right(), + view_model_->ideal_bounds(index).bottom()) < min_value) { ++index; } return index; @@ -1102,7 +1102,7 @@ last_drag_index > last_visible_index_) last_drag_index = last_visible_index_; int x = 0, y = 0; - if (shelf_->IsHorizontalAlignment()) { + if (wm_shelf_->IsHorizontalAlignment()) { x = std::max(view_model_->ideal_bounds(indices.first).x(), drag_point.x() - drag_origin_.x()); x = std::min(view_model_->ideal_bounds(last_drag_index).right() - @@ -1124,8 +1124,8 @@ int target_index = views::ViewModelUtils::DetermineMoveIndex( *view_model_, drag_view_, - shelf_->IsHorizontalAlignment() ? views::ViewModelUtils::HORIZONTAL - : views::ViewModelUtils::VERTICAL, + wm_shelf_->IsHorizontalAlignment() ? views::ViewModelUtils::HORIZONTAL + : views::ViewModelUtils::VERTICAL, x, y); target_index = std::min(indices.second, std::max(target_index, indices.first)); @@ -1154,9 +1154,11 @@ std::string dragged_app_id = delegate_->GetAppIDForShelfID(model_->items()[current_index].id); - gfx::Point screen_location = event.root_location(); - ::wm::ConvertPointToScreen(GetWidget()->GetNativeWindow()->GetRootWindow(), - &screen_location); + gfx::Point screen_location = + WmLookup::Get() + ->GetWindowForWidget(GetWidget()) + ->GetRootWindow() + ->ConvertPointToScreen(event.root_location()); // To avoid ugly forwards and backwards flipping we use different constants // for ripping off / re-inserting the items. @@ -1373,7 +1375,7 @@ overflow_bubble_.reset(new OverflowBubble(wm_shelf_)); ShelfView* overflow_view = - new ShelfView(model_, delegate_, wm_shelf_, shelf_); + new ShelfView(model_, delegate_, wm_shelf_, shelf_widget_); overflow_view->overflow_mode_ = true; overflow_view->Init(); overflow_view->set_owner_overflow_bubble(overflow_bubble_.get()); @@ -1432,7 +1434,7 @@ last_button_bounds = overflow_button_->bounds(); } - if (shelf_->IsHorizontalAlignment()) { + if (wm_shelf_->IsHorizontalAlignment()) { preferred_size = gfx::Size(last_button_bounds.right() + leading_inset_, GetShelfConstant(SHELF_SIZE)); } else { @@ -1506,7 +1508,7 @@ ? view_model_->ideal_bounds(last_button_index) : gfx::Rect(gfx::Size(shelf_size, shelf_size)); - if (shelf_->IsHorizontalAlignment()) + if (wm_shelf_->IsHorizontalAlignment()) return gfx::Size(last_button_bounds.right() + leading_inset_, shelf_size); return gfx::Size(shelf_size, last_button_bounds.bottom() + leading_inset_); @@ -1543,10 +1545,7 @@ } void ShelfView::OnGestureEvent(ui::GestureEvent* event) { - aura::Window* target_window = static_cast<views::View*>(event->target()) - ->GetWidget() - ->GetNativeWindow(); - if (gesture_handler_.ProcessGestureEvent(*event, target_window)) + if (wm_shelf_->ProcessGestureEvent(*event)) event->StopPropagation(); } @@ -1840,12 +1839,21 @@ anchor.Inset(source->border()->GetInsets()); // Determine the menu alignment dependent on the shelf. - menu_alignment = shelf_->SelectValueForShelfAlignment( - views::MENU_ANCHOR_BUBBLE_ABOVE, views::MENU_ANCHOR_BUBBLE_RIGHT, - views::MENU_ANCHOR_BUBBLE_LEFT); + switch (wm_shelf_->GetAlignment()) { + case SHELF_ALIGNMENT_BOTTOM: + case SHELF_ALIGNMENT_BOTTOM_LOCKED: + menu_alignment = views::MENU_ANCHOR_BUBBLE_ABOVE; + break; + case SHELF_ALIGNMENT_LEFT: + menu_alignment = views::MENU_ANCHOR_BUBBLE_RIGHT; + break; + case SHELF_ALIGNMENT_RIGHT: + menu_alignment = views::MENU_ANCHOR_BUBBLE_LEFT; + break; + } } - shelf_->shelf_widget()->ForceUndimming(true); + shelf_widget_->ForceUndimming(true); // NOTE: if you convert to HAS_MNEMONICS be sure to update menu building code. launcher_menu_runner_->RunMenuAt(source->GetWidget(), nullptr, anchor, menu_alignment, source_type); @@ -1853,7 +1861,7 @@ void ShelfView::OnMenuClosed(views::InkDrop* ink_drop) { context_menu_id_ = 0; - shelf_->shelf_widget()->ForceUndimming(false); + shelf_widget_->ForceUndimming(false); // Hide the hide overflow bubble after showing a context menu for its items. if (owner_overflow_bubble_) @@ -1916,7 +1924,7 @@ int ShelfView::CalculateShelfDistance(const gfx::Point& coordinate) const { const gfx::Rect bounds = GetBoundsInScreen(); - int distance = shelf_->SelectValueForShelfAlignment( + int distance = wm_shelf_->SelectValueForShelfAlignment( bounds.y() - coordinate.y(), coordinate.x() - bounds.right(), bounds.x() - coordinate.x()); return distance > 0 ? distance : 0;
diff --git a/ash/shelf/shelf_view.h b/ash/common/shelf/shelf_view.h similarity index 97% rename from ash/shelf/shelf_view.h rename to ash/common/shelf/shelf_view.h index 9b479b3..e5f0dec 100644 --- a/ash/shelf/shelf_view.h +++ b/ash/common/shelf/shelf_view.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef ASH_SHELF_SHELF_VIEW_H_ -#define ASH_SHELF_SHELF_VIEW_H_ +#ifndef ASH_COMMON_SHELF_SHELF_VIEW_H_ +#define ASH_COMMON_SHELF_SHELF_VIEW_H_ #include <memory> #include <string> @@ -15,7 +15,6 @@ #include "ash/common/shelf/shelf_item_delegate.h" #include "ash/common/shelf/shelf_model_observer.h" #include "ash/common/shelf/shelf_tooltip_manager.h" -#include "ash/wm/gestures/shelf_gesture_handler.h" #include "base/macros.h" #include "base/observer_list.h" #include "ui/app_list/views/app_list_drag_and_drop_host.h" @@ -43,12 +42,12 @@ class OverflowBubble; class OverflowButton; class ScopedRootWindowForNewWindows; -class Shelf; class ShelfButton; class ShelfDelegate; class ShelfIconObserver; class ShelfModel; struct ShelfItem; +class ShelfWidget; class WmShelf; namespace test { @@ -71,10 +70,9 @@ ShelfView(ShelfModel* model, ShelfDelegate* delegate, WmShelf* wm_shelf, - Shelf* shelf); + ShelfWidget* shelf_widget); ~ShelfView() override; - Shelf* shelf() const { return shelf_; } WmShelf* wm_shelf() const { return wm_shelf_; } ShelfModel* model() const { return model_; } @@ -353,8 +351,9 @@ // The shelf controller; owned by RootWindowController. WmShelf* wm_shelf_; - // The shelf; owned by ShelfWidget. - Shelf* shelf_; + // The shelf widget for this view. For overflow bubbles, this is the widget + // for the shelf, not for the bubble. + ShelfWidget* shelf_widget_; // Used to manage the set of active launcher buttons. There is a view per // item in |model_|. @@ -409,8 +408,6 @@ // alignment). int leading_inset_; - ShelfGestureHandler gesture_handler_; - // True when an item being inserted or removed in the model cancels a drag. bool cancelling_drag_model_changed_; @@ -477,4 +474,4 @@ } // namespace ash -#endif // ASH_SHELF_SHELF_VIEW_H_ +#endif // ASH_COMMON_SHELF_SHELF_VIEW_H_
diff --git a/ash/common/shelf/wm_shelf.cc b/ash/common/shelf/wm_shelf.cc new file mode 100644 index 0000000..646ebed --- /dev/null +++ b/ash/common/shelf/wm_shelf.cc
@@ -0,0 +1,44 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/common/shelf/wm_shelf.h" + +#include "base/logging.h" + +namespace ash { + +bool WmShelf::IsHorizontalAlignment() const { + switch (GetAlignment()) { + case SHELF_ALIGNMENT_BOTTOM: + case SHELF_ALIGNMENT_BOTTOM_LOCKED: + return true; + case SHELF_ALIGNMENT_LEFT: + case SHELF_ALIGNMENT_RIGHT: + return false; + } + NOTREACHED(); + return true; +} + +int WmShelf::SelectValueForShelfAlignment(int bottom, + int left, + int right) const { + switch (GetAlignment()) { + case SHELF_ALIGNMENT_BOTTOM: + case SHELF_ALIGNMENT_BOTTOM_LOCKED: + return bottom; + case SHELF_ALIGNMENT_LEFT: + return left; + case SHELF_ALIGNMENT_RIGHT: + return right; + } + NOTREACHED(); + return bottom; +} + +int WmShelf::PrimaryAxisValue(int horizontal, int vertical) const { + return IsHorizontalAlignment() ? horizontal : vertical; +} + +} // namespace ash
diff --git a/ash/common/shelf/wm_shelf.h b/ash/common/shelf/wm_shelf.h index 0fbee4bc..30607d04 100644 --- a/ash/common/shelf/wm_shelf.h +++ b/ash/common/shelf/wm_shelf.h
@@ -33,6 +33,15 @@ virtual ShelfAlignment GetAlignment() const = 0; virtual void SetAlignment(ShelfAlignment alignment) = 0; + // Returns true if the shelf alignment is horizontal (i.e. at the bottom). + bool IsHorizontalAlignment() const; + + // Returns a value based on shelf alignment. + int SelectValueForShelfAlignment(int bottom, int left, int right) const; + + // Returns |horizontal| is shelf is horizontal, otherwise |vertical|. + int PrimaryAxisValue(int horizontal, int vertical) const; + virtual ShelfAutoHideBehavior GetAutoHideBehavior() const = 0; virtual void SetAutoHideBehavior(ShelfAutoHideBehavior behavior) = 0; @@ -76,12 +85,11 @@ // no item for the specified window an empty rect is returned. virtual gfx::Rect GetScreenBoundsOfItemIconForWindow(WmWindow* window) = 0; - // Handles a gesture |event| coming from a |target_window| outside the shelf + // Handles a gesture |event| coming from a source outside the shelf widget // (e.g. the status area widget). Allows support for behaviors like toggling - // auto-hide with an edge swipe, even if that gesture event hits another - // window. Returns true if the event was handled. - virtual bool ProcessGestureEvent(const ui::GestureEvent& event, - WmWindow* target_window) = 0; + // auto-hide with a swipe, even if that gesture event hits another window. + // Returns true if the event was handled. + virtual bool ProcessGestureEvent(const ui::GestureEvent& event) = 0; // TODO(jamescook): Nuke when ash_sysui is removed. http://crbug.com/621112 virtual void UpdateAutoHideForMouseEvent(ui::MouseEvent* event) = 0;
diff --git a/ash/common/shelf/wm_shelf_util.h b/ash/common/shelf/wm_shelf_util.h index acda56a..2fab27f 100644 --- a/ash/common/shelf/wm_shelf_util.h +++ b/ash/common/shelf/wm_shelf_util.h
@@ -11,6 +11,7 @@ namespace ash { // Returns true if the shelf |alignment| is horizontal. +// TODO(jamescook): Remove this in favor of WmShelf::IsHorizontalAlignment(). ASH_EXPORT bool IsHorizontalAlignment(ShelfAlignment alignment); } // namespace ash
diff --git a/ash/common/strings/ash_strings_am.xtb b/ash/common/strings/ash_strings_am.xtb index 5383ff15..9b68936 100644 --- a/ash/common/strings/ash_strings_am.xtb +++ b/ash/common/strings/ash_strings_am.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">አሁን ዘግተው እንዲወጡ ይደረጋሉ።</translation> <translation id="2825619548187458965">መደርደሪያ</translation> <translation id="2844169650293029770">USB-C መሣሪያ (የግራ ጎን የፊት ወደብ)</translation> +<translation id="2850666676745651490">ቤተ-ሥዕል</translation> <translation id="2857608528410806398">የQU ባህሪ ማሳወቂያ አካል እዚህ ነው የሚሆነው። የQU ባህሪ ማሳወቂያ አካል እዚህ ነው የሚሆነው። የQU ባህሪ ማሳወቂያ አካል እዚህ ነው የሚሆነው። የQU ባህሪ ማሳወቂያ አካል እዚህ ነው የሚሆነው። የQU ባህሪ ማሳወቂያ አካል እዚህ ነው የሚሆነው።</translation> <translation id="2872961005593481000">ዝጋ</translation> <translation id="2942516765047364088">የመደርደሪያ አቀማመጥ</translation>
diff --git a/ash/common/strings/ash_strings_ar.xtb b/ash/common/strings/ash_strings_ar.xtb index ab986e5..112b396 100644 --- a/ash/common/strings/ash_strings_ar.xtb +++ b/ash/common/strings/ash_strings_ar.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">سيتم تسجيل خروجك الآن.</translation> <translation id="2825619548187458965">الرف</translation> <translation id="2844169650293029770">جهاز USB-C (المنفذ الأمامي الأيسر)</translation> +<translation id="2850666676745651490">لوحة الألوان</translation> <translation id="2857608528410806398">يظهر نص إشعار ميزة إلغاء القفل السريع هنا. يظهر نص إشعار ميزة إلغاء القفل السريع هنا. يظهر نص إشعار ميزة إلغاء القفل السريع هنا. يظهر نص إشعار ميزة إلغاء القفل السريع هنا. يظهر نص إشعار ميزة إلغاء القفل السريع هنا.</translation> <translation id="2872961005593481000">إيقاف التشغيل</translation> <translation id="2942516765047364088">وضع الرف</translation>
diff --git a/ash/common/strings/ash_strings_bg.xtb b/ash/common/strings/ash_strings_bg.xtb index 005b94a..ea0b6a1 100644 --- a/ash/common/strings/ash_strings_bg.xtb +++ b/ash/common/strings/ash_strings_bg.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Ще излезете сега.</translation> <translation id="2825619548187458965">Лавица</translation> <translation id="2844169650293029770">Устройство с USB-C (предният ляв порт)</translation> +<translation id="2850666676745651490">Палитра</translation> <translation id="2857608528410806398">Място за основния текст на известието за функцията за бързо отключване. Място за основния текст на известието за функцията за бързо отключване. Място за основния текст на известието за функцията за бързо отключване. Място за основния текст на известието за функцията за бързо отключване. Място за основния текст на известието за функцията за бързо отключване.</translation> <translation id="2872961005593481000">Изключване</translation> <translation id="2942516765047364088">Позиция на лавицата</translation>
diff --git a/ash/common/strings/ash_strings_bn.xtb b/ash/common/strings/ash_strings_bn.xtb index 55b30b6..fb7f39f 100644 --- a/ash/common/strings/ash_strings_bn.xtb +++ b/ash/common/strings/ash_strings_bn.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">আপনি এখনই প্রস্থান করুন হবেন৷</translation> <translation id="2825619548187458965">তাক</translation> <translation id="2844169650293029770">USB-C ডিভাইস (বাম দিকের সামনের পোর্ট)</translation> +<translation id="2850666676745651490">প্যালেট</translation> <translation id="2857608528410806398">QU বৈশিষ্ট্য বিজ্ঞপ্তির শিরোনাম এখানে থাকবে। QU বৈশিষ্ট্য বিজ্ঞপ্তির শিরোনাম এখানে থাকবে। QU বৈশিষ্ট্য বিজ্ঞপ্তির শিরোনাম এখানে থাকবে। QU বৈশিষ্ট্য বিজ্ঞপ্তির শিরোনাম এখানে থাকবে। QU বৈশিষ্ট্য বিজ্ঞপ্তির শিরোনাম এখানে থাকবে।</translation> <translation id="2872961005593481000">বন্ধ করুন</translation> <translation id="2942516765047364088">তাকের অবস্থান</translation>
diff --git a/ash/common/strings/ash_strings_ca.xtb b/ash/common/strings/ash_strings_ca.xtb index 8af6e27a..fa9b3ae 100644 --- a/ash/common/strings/ash_strings_ca.xtb +++ b/ash/common/strings/ash_strings_ca.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Ara se us tancarà la sessió.</translation> <translation id="2825619548187458965">Prestatge</translation> <translation id="2844169650293029770">Dispositiu USB-C (port frontal esquerre)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">El cos de la notificació per a la funció Desbloqueig ràpid va aquí. El cos de la notificació per a la funció Desbloqueig ràpid va aquí. El cos de la notificació per a la funció Desbloqueig ràpid va aquí. El cos de la notificació per a la funció Desbloqueig ràpid va aquí. El cos de la notificació per a la funció Desbloqueig ràpid va aquí.</translation> <translation id="2872961005593481000">Apaga</translation> <translation id="2942516765047364088">Posició del prestatge</translation>
diff --git a/ash/common/strings/ash_strings_cs.xtb b/ash/common/strings/ash_strings_cs.xtb index a4d48825..afbb573f 100644 --- a/ash/common/strings/ash_strings_cs.xtb +++ b/ash/common/strings/ash_strings_cs.xtb
@@ -64,6 +64,7 @@ <translation id="2819276065543622893">Nyní budete odhlášeni.</translation> <translation id="2825619548187458965">Polička</translation> <translation id="2844169650293029770">Zařízení USB Type-C (levý přední port)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">Sem patří text oznámení funkce rychlého odemknutí. Sem patří text oznámení funkce rychlého odemknutí. Sem patří text oznámení funkce rychlého odemknutí. Sem patří text oznámení funkce rychlého odemknutí.</translation> <translation id="2872961005593481000">Vypnout</translation> <translation id="2942516765047364088">Pozice na poličce</translation>
diff --git a/ash/common/strings/ash_strings_da.xtb b/ash/common/strings/ash_strings_da.xtb index d2305b34..b7e5a20 100644 --- a/ash/common/strings/ash_strings_da.xtb +++ b/ash/common/strings/ash_strings_da.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Du bliver logget ud nu.</translation> <translation id="2825619548187458965">Hylde</translation> <translation id="2844169650293029770">USB-C-enhed (porten foran i venstre side)</translation> +<translation id="2850666676745651490">Palet</translation> <translation id="2857608528410806398">QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here.</translation> <translation id="2872961005593481000">Sluk</translation> <translation id="2942516765047364088">Hyldeplacering</translation>
diff --git a/ash/common/strings/ash_strings_de.xtb b/ash/common/strings/ash_strings_de.xtb index bc925a8..4727976 100644 --- a/ash/common/strings/ash_strings_de.xtb +++ b/ash/common/strings/ash_strings_de.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Sie werden jetzt abgemeldet.</translation> <translation id="2825619548187458965">Ablage</translation> <translation id="2844169650293029770">USB-C-Gerät (Port vorne links)</translation> +<translation id="2850666676745651490">Palette</translation> <translation id="2857608528410806398">Benachrichtigungstext für schnelles Entsperren hier einfügen. Benachrichtigungstext für schnelles Entsperren hier einfügen. Benachrichtigungstext für schnelles Entsperren hier einfügen. Benachrichtigungstext für schnelles Entsperren hier einfügen. Benachrichtigungstext für schnelles Entsperren hier einfügen.</translation> <translation id="2872961005593481000">Herunterfahren</translation> <translation id="2942516765047364088">Ablageposition</translation>
diff --git a/ash/common/strings/ash_strings_el.xtb b/ash/common/strings/ash_strings_el.xtb index f1e9812f6..82db2fb1 100644 --- a/ash/common/strings/ash_strings_el.xtb +++ b/ash/common/strings/ash_strings_el.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Θα αποσυνδεθείτε τώρα.</translation> <translation id="2825619548187458965">Ράφι</translation> <translation id="2844169650293029770">Συσκευή USB-C (αριστερή μπροστινή θύρα)</translation> +<translation id="2850666676745651490">Παλέτα</translation> <translation id="2857608528410806398">Εδώ εμφανίζεται το κύριο μέρος της ειδοποίησης της λειτουργίας Γρήγορου ξεκλειδώματος. Εδώ εμφανίζεται το κύριο μέρος της ειδοποίησης της λειτουργίας Γρήγορου ξεκλειδώματος. Εδώ εμφανίζεται το κύριο μέρος της ειδοποίησης της λειτουργίας Γρήγορου ξεκλειδώματος. Εδώ εμφανίζεται το κύριο μέρος της ειδοποίησης της λειτουργίας Γρήγορου ξεκλειδώματος. Εδώ εμφανίζεται το κύριο μέρος της ειδοποίησης της λειτουργίας Γρήγορου ξεκλειδώματος.</translation> <translation id="2872961005593481000">Τερματισμός λειτουργίας</translation> <translation id="2942516765047364088">Θέση ραφιού</translation>
diff --git a/ash/common/strings/ash_strings_en-GB.xtb b/ash/common/strings/ash_strings_en-GB.xtb index 965edfa3..0880da53 100644 --- a/ash/common/strings/ash_strings_en-GB.xtb +++ b/ash/common/strings/ash_strings_en-GB.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">You will be signed out now.</translation> <translation id="2825619548187458965">Shelf</translation> <translation id="2844169650293029770">USB-C device (left side front port)</translation> +<translation id="2850666676745651490">Palette</translation> <translation id="2857608528410806398">QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here.</translation> <translation id="2872961005593481000">Shut down</translation> <translation id="2942516765047364088">Shelf position</translation>
diff --git a/ash/common/strings/ash_strings_es-419.xtb b/ash/common/strings/ash_strings_es-419.xtb index 03463bd..e9752db 100644 --- a/ash/common/strings/ash_strings_es-419.xtb +++ b/ash/common/strings/ash_strings_es-419.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Saldrás de la sesión ahora.</translation> <translation id="2825619548187458965">Biblioteca</translation> <translation id="2844169650293029770">Dispositivo USB-C (puerto lateral izquierdo delantero)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here.</translation> <translation id="2872961005593481000">Cerrar</translation> <translation id="2942516765047364088">Posición de la biblioteca</translation>
diff --git a/ash/common/strings/ash_strings_es.xtb b/ash/common/strings/ash_strings_es.xtb index 99b7d143..1ebb313 100644 --- a/ash/common/strings/ash_strings_es.xtb +++ b/ash/common/strings/ash_strings_es.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Tu sesión se cerrará ahora.</translation> <translation id="2825619548187458965">Estantería</translation> <translation id="2844169650293029770">Dispositivo USB tipo C (puerto frontal izquierdo)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">Cuerpo de la notificación de la función de desbloqueo rápido. Cuerpo de la notificación de la función de desbloqueo rápido. Cuerpo de la notificación de la función de desbloqueo rápido. Cuerpo de la notificación de la función de desbloqueo rápido. Cuerpo de la notificación de la función de desbloqueo rápido.</translation> <translation id="2872961005593481000">Apagar</translation> <translation id="2942516765047364088">Posición de la estantería</translation>
diff --git a/ash/common/strings/ash_strings_et.xtb b/ash/common/strings/ash_strings_et.xtb index 6d325e0f..fac85fc 100644 --- a/ash/common/strings/ash_strings_et.xtb +++ b/ash/common/strings/ash_strings_et.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Teid logitakse nüüd välja.</translation> <translation id="2825619548187458965">Riiul</translation> <translation id="2844169650293029770">C-tüüpi USB-seade (eesmine vasakpoolne port)</translation> +<translation id="2850666676745651490">Palett</translation> <translation id="2857608528410806398">Siia läheb funktsiooni QU märguande sisu. Siia läheb funktsiooni QU märguande sisu. Siia läheb funktsiooni QU märguande sisu. Siia läheb funktsiooni QU märguande sisu. Siia läheb funktsiooni QU märguande sisu.</translation> <translation id="2872961005593481000">Lülita välja</translation> <translation id="2942516765047364088">Riiuli positsioon</translation>
diff --git a/ash/common/strings/ash_strings_fa.xtb b/ash/common/strings/ash_strings_fa.xtb index d73e04bb..aeddf79 100644 --- a/ash/common/strings/ash_strings_fa.xtb +++ b/ash/common/strings/ash_strings_fa.xtb
@@ -64,6 +64,7 @@ <translation id="2819276065543622893">هماکنون از سیستم خارج خواهید شد.</translation> <translation id="2825619548187458965">قفسه</translation> <translation id="2844169650293029770">دستگاه USB-C (درگاه جلوی سمت چپ)</translation> +<translation id="2850666676745651490">پالت</translation> <translation id="2857608528410806398">متن اعلان QU Feature اینجا میآید. متن اعلان QU Feature اینجا میآید. متن اعلان QU Feature اینجا میآید. متن اعلان QU Feature اینجا میآید. متن اعلان QU Feature اینجا میآید.</translation> <translation id="2872961005593481000">خاموش کردن</translation> <translation id="2942516765047364088">موقعیت قفسه</translation>
diff --git a/ash/common/strings/ash_strings_fi.xtb b/ash/common/strings/ash_strings_fi.xtb index 204df8f..2315cb2 100644 --- a/ash/common/strings/ash_strings_fi.xtb +++ b/ash/common/strings/ash_strings_fi.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Sinut kirjataan ulos nyt.</translation> <translation id="2825619548187458965">Hylly</translation> <translation id="2844169650293029770">C-tyypin USB-laite (vasemman sivun etummainen portti)</translation> +<translation id="2850666676745651490">Paletti</translation> <translation id="2857608528410806398">Lukituksen pika-avaamista koskevan ilmoituksen teksti tulee tähän. Lukituksen pika-avaamista koskevan ilmoituksen teksti tulee tähän. Lukituksen pika-avaamista koskevan ilmoituksen teksti tulee tähän. Lukituksen pika-avaamista koskevan ilmoituksen teksti tulee tähän.</translation> <translation id="2872961005593481000">Sammuta</translation> <translation id="2942516765047364088">Hyllyn sijainti</translation>
diff --git a/ash/common/strings/ash_strings_fil.xtb b/ash/common/strings/ash_strings_fil.xtb index 5051cc9d..eafc84ab 100644 --- a/ash/common/strings/ash_strings_fil.xtb +++ b/ash/common/strings/ash_strings_fil.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Masa-sign out ka ngayon.</translation> <translation id="2825619548187458965">Shelf</translation> <translation id="2844169650293029770">USB-C device (port sa kaliwang bahagi sa harap)</translation> +<translation id="2850666676745651490">Palette</translation> <translation id="2857608528410806398">Dito ilalagay ang nilalaman ng notification ng Feature na QU. Dito ilalagay ang nilalaman ng notification ng Feature na QU. Dito ilalagay ang nilalaman ng notification ng Feature na QU. Dito ilalagay ang nilalaman ng notification ng Feature na QU. Dito ilalagay ang nilalaman ng notification ng Feature na QU.</translation> <translation id="2872961005593481000">Shut down</translation> <translation id="2942516765047364088">Posisyon ng shelf</translation>
diff --git a/ash/common/strings/ash_strings_fr.xtb b/ash/common/strings/ash_strings_fr.xtb index 39ea7b1b..8db6d7ec 100644 --- a/ash/common/strings/ash_strings_fr.xtb +++ b/ash/common/strings/ash_strings_fr.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Vous allez être déconnecté maintenant.</translation> <translation id="2825619548187458965">Étagère</translation> <translation id="2844169650293029770">Appareil USB de type C (port situé sur la gauche de l'appareil, à l'avant)</translation> +<translation id="2850666676745651490">Palette</translation> <translation id="2857608528410806398">QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here.</translation> <translation id="2872961005593481000">Éteindre</translation> <translation id="2942516765047364088">Position de l'étagère</translation>
diff --git a/ash/common/strings/ash_strings_gu.xtb b/ash/common/strings/ash_strings_gu.xtb index 180e0ff2..1258ec0e 100644 --- a/ash/common/strings/ash_strings_gu.xtb +++ b/ash/common/strings/ash_strings_gu.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">તમે હવે સાઇન આઉટ થશો.</translation> <translation id="2825619548187458965">શેલ્ફ</translation> <translation id="2844169650293029770">USB-C ઉપકરણ (ડાબી બાજુનું આગળનું પોર્ટ)</translation> +<translation id="2850666676745651490">પૅલેટ</translation> <translation id="2857608528410806398">QU સુવિધા સૂચનાનો મુખ્ય ભાગ અહીં આવશે. QU સુવિધા સૂચનાનો મુખ્ય ભાગ અહીં આવશે. QU સુવિધા સૂચનાનો મુખ્ય ભાગ અહીં આવશે. QU સુવિધા સૂચનાનો મુખ્ય ભાગ અહીં આવશે. QU સુવિધા સૂચનાનો મુખ્ય ભાગ અહીં આવશે.</translation> <translation id="2872961005593481000">શટ ડાઉન કરો</translation> <translation id="2942516765047364088">શેલ્ફ સ્થિતી</translation>
diff --git a/ash/common/strings/ash_strings_hi.xtb b/ash/common/strings/ash_strings_hi.xtb index 3ec253e..df16950 100644 --- a/ash/common/strings/ash_strings_hi.xtb +++ b/ash/common/strings/ash_strings_hi.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">अब आप प्रस्थान कर जाएंगे.</translation> <translation id="2825619548187458965">अलमारी</translation> <translation id="2844169650293029770">USB-C डिवाइस (बायां सामने वाला पोर्ट)</translation> +<translation id="2850666676745651490">पैलेट</translation> <translation id="2857608528410806398">QU सुविधा नोटिफ़िकेशन का मुख्य भाग यहां आएगा. QU सुविधा नोटिफ़िकेशन का मुख्य भाग यहां आएगा. QU सुविधा नोटिफ़िकेशन का मुख्य भाग यहां आएगा. QU सुविधा नोटिफ़िकेशन का मुख्य भाग यहां आएगा. QU सुविधा नोटिफ़िकेशन का मुख्य भाग यहां आएगा.</translation> <translation id="2872961005593481000">शट डाउन करें</translation> <translation id="2942516765047364088">अलमारी की स्थिति</translation>
diff --git a/ash/common/strings/ash_strings_hr.xtb b/ash/common/strings/ash_strings_hr.xtb index 9f59028..f588ea64 100644 --- a/ash/common/strings/ash_strings_hr.xtb +++ b/ash/common/strings/ash_strings_hr.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Odjavit ćete se sada.</translation> <translation id="2825619548187458965">Polica</translation> <translation id="2844169650293029770">USB-C uređaj (prednji lijevi priključak)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">Ovdje treba unijeti tekst obavijesti značajke QU. Ovdje treba unijeti tekst obavijesti značajke QU. Ovdje treba unijeti tekst obavijesti značajke QU. Ovdje treba unijeti tekst obavijesti značajke QU. Ovdje treba unijeti tekst obavijesti značajke QU.</translation> <translation id="2872961005593481000">Isključi</translation> <translation id="2942516765047364088">Položaj police</translation>
diff --git a/ash/common/strings/ash_strings_hu.xtb b/ash/common/strings/ash_strings_hu.xtb index 45a11b72..d08b8ad 100644 --- a/ash/common/strings/ash_strings_hu.xtb +++ b/ash/common/strings/ash_strings_hu.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">A rendszer most kijelentkezteti Önt.</translation> <translation id="2825619548187458965">Polc</translation> <translation id="2844169650293029770">C típusú USB-vel kompatibilis eszköz (bal első port)</translation> +<translation id="2850666676745651490">Paletta</translation> <translation id="2857608528410806398">A gyorsfeloldás funkció értesítésének a törzse ide kerül. A gyorsfeloldás funkció értesítésének a törzse ide kerül. A gyorsfeloldás funkció értesítésének a törzse ide kerül. A gyorsfeloldás funkció értesítésének a törzse ide kerül. A gyorsfeloldás funkció értesítésének a törzse ide kerül.</translation> <translation id="2872961005593481000">Leállítás</translation> <translation id="2942516765047364088">Polc pozíciója</translation>
diff --git a/ash/common/strings/ash_strings_id.xtb b/ash/common/strings/ash_strings_id.xtb index 87613be..e8d7419 100644 --- a/ash/common/strings/ash_strings_id.xtb +++ b/ash/common/strings/ash_strings_id.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Anda akan dikeluarkan sekarang.</translation> <translation id="2825619548187458965">Rak</translation> <translation id="2844169650293029770">Perangkat USB-C (port depan sebelah kiri)</translation> +<translation id="2850666676745651490">Palet</translation> <translation id="2857608528410806398">QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here.</translation> <translation id="2872961005593481000">Matikan</translation> <translation id="2942516765047364088">Posisi rak</translation>
diff --git a/ash/common/strings/ash_strings_it.xtb b/ash/common/strings/ash_strings_it.xtb index 91cdd75..d7cad65f 100644 --- a/ash/common/strings/ash_strings_it.xtb +++ b/ash/common/strings/ash_strings_it.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Verrai disconnesso ora.</translation> <translation id="2825619548187458965">Shelf</translation> <translation id="2844169650293029770">Dispositivo USB-C (porta anteriore sinistra)</translation> +<translation id="2850666676745651490">Riquadro</translation> <translation id="2857608528410806398">Inserisci qui il corpo della notifica della funzione di sblocco rapido. Inserisci qui il corpo della notifica della funzione di sblocco rapido. Inserisci qui il corpo della notifica della funzione di sblocco rapido. Inserisci qui il corpo della notifica della funzione di sblocco rapido. Inserisci qui il corpo della notifica della funzione di sblocco rapido.</translation> <translation id="2872961005593481000">Spegni</translation> <translation id="2942516765047364088">Posizione shelf</translation>
diff --git a/ash/common/strings/ash_strings_iw.xtb b/ash/common/strings/ash_strings_iw.xtb index 665457c..77ca0ae 100644 --- a/ash/common/strings/ash_strings_iw.xtb +++ b/ash/common/strings/ash_strings_iw.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">תצא עכשיו מהחשבון.</translation> <translation id="2825619548187458965">מדף</translation> <translation id="2844169650293029770">מכשיר עם יציאת USB-C (יציאה שמאלית-קדמית)</translation> +<translation id="2850666676745651490">לוח צבעים</translation> <translation id="2857608528410806398">גוף ההודעה של תכונת QU יופיע כאן. גוף ההודעה של תכונת QU יופיע כאן. גוף ההודעה של תכונת QU יופיע כאן. גוף ההודעה של תכונת QU יופיע כאן. גוף ההודעה של תכונת QU יופיע כאן.</translation> <translation id="2872961005593481000">כיבוי</translation> <translation id="2942516765047364088">מיקום המדף</translation>
diff --git a/ash/common/strings/ash_strings_ja.xtb b/ash/common/strings/ash_strings_ja.xtb index 49902cca..938dd8b 100644 --- a/ash/common/strings/ash_strings_ja.xtb +++ b/ash/common/strings/ash_strings_ja.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">ログアウトします。</translation> <translation id="2825619548187458965">シェルフ</translation> <translation id="2844169650293029770">USB-C デバイス(左手前のポート)</translation> +<translation id="2850666676745651490">パレット</translation> <translation id="2857608528410806398">ロックのクイック解除機能の通知本文がここに表示されます。ロックのクイック解除機能の通知本文がここに表示されます。ロックのクイック解除機能の通知本文がここに表示されます。ロックのクイック解除機能の通知本文がここに表示されます。ロックのクイック解除機能の通知本文がここに表示されます。</translation> <translation id="2872961005593481000">終了</translation> <translation id="2942516765047364088">シェルフの位置</translation>
diff --git a/ash/common/strings/ash_strings_kn.xtb b/ash/common/strings/ash_strings_kn.xtb index 60a88bb8..c639161 100644 --- a/ash/common/strings/ash_strings_kn.xtb +++ b/ash/common/strings/ash_strings_kn.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">ಈಗ ನಿಮ್ಮನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ.</translation> <translation id="2825619548187458965">ಶೆಲ್ಫ್</translation> <translation id="2844169650293029770">USB-C ಸಾಧನ (ಎಡ ಭಾಗದ ಮುಂದಿನ ಪೋರ್ಟ್)</translation> +<translation id="2850666676745651490">ಪ್ಯಾಲೆಟ್</translation> <translation id="2857608528410806398">QU ವೈಶಿಷ್ಟ್ಯ ಅಧಿಸೂಚನೆ ಮುಖ್ಯಭಾಗ ಇಲ್ಲಿದೆ. QU ವೈಶಿಷ್ಟ್ಯ ಅಧಿಸೂಚನೆ ಮುಖ್ಯಭಾಗ ಇಲ್ಲಿದೆ. QU ವೈಶಿಷ್ಟ್ಯ ಅಧಿಸೂಚನೆ ಮುಖ್ಯಭಾಗ ಇಲ್ಲಿದೆ. QU ವೈಶಿಷ್ಟ್ಯ ಅಧಿಸೂಚನೆ ಮುಖ್ಯಭಾಗ ಇಲ್ಲಿದೆ. QU ವೈಶಿಷ್ಟ್ಯ ಅಧಿಸೂಚನೆ ಮುಖ್ಯಭಾಗ ಇಲ್ಲಿದೆ.</translation> <translation id="2872961005593481000">ಮುಚ್ಚಿಬಿಡಿ </translation> <translation id="2942516765047364088">ಶೆಲ್ಫ್ ಸ್ಥಾನ</translation>
diff --git a/ash/common/strings/ash_strings_ko.xtb b/ash/common/strings/ash_strings_ko.xtb index 3844a047..cd42971 100644 --- a/ash/common/strings/ash_strings_ko.xtb +++ b/ash/common/strings/ash_strings_ko.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">지금 로그아웃됩니다.</translation> <translation id="2825619548187458965">임시보관함</translation> <translation id="2844169650293029770">USB-C 기기(좌측 전면 포트)</translation> +<translation id="2850666676745651490">팔레트</translation> <translation id="2857608528410806398">QU 기능 알림 본문이 여기 표시됩니다. QU 기능 알림 본문이 여기 표시됩니다. QU 기능 알림 본문이 여기 표시됩니다. QU 기능 알림 본문이 여기 표시됩니다. QU 기능 알림 본문이 여기 표시됩니다.</translation> <translation id="2872961005593481000">종료</translation> <translation id="2942516765047364088">실행기 위치</translation>
diff --git a/ash/common/strings/ash_strings_lt.xtb b/ash/common/strings/ash_strings_lt.xtb index caf0c7e7..8a11d0f 100644 --- a/ash/common/strings/ash_strings_lt.xtb +++ b/ash/common/strings/ash_strings_lt.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Būsite atjungti.</translation> <translation id="2825619548187458965">Lentyna</translation> <translation id="2844169650293029770">USB-C įrenginys (prievadas kairėje, priekinėje dalyje)</translation> +<translation id="2850666676745651490">Paletė</translation> <translation id="2857608528410806398">SA funkcijos pranešimo turinys turi būti nurodytas čia. SA funkcijos pranešimo turinys turi būti nurodytas čia. SA funkcijos pranešimo turinys turi būti nurodytas čia. SA funkcijos pranešimo turinys turi būti nurodytas čia. SA funkcijos pranešimo turinys turi būti nurodytas čia.</translation> <translation id="2872961005593481000">Stabdyti</translation> <translation id="2942516765047364088">Lentynos pozicija</translation>
diff --git a/ash/common/strings/ash_strings_lv.xtb b/ash/common/strings/ash_strings_lv.xtb index 4545344e..af0a53d 100644 --- a/ash/common/strings/ash_strings_lv.xtb +++ b/ash/common/strings/ash_strings_lv.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Jūs tagad tiksiet izrakstīts.</translation> <translation id="2825619548187458965">Plaukts</translation> <translation id="2844169650293029770">USB-C ierīce (pieslēgvieta kreisajā pusē priekšā)</translation> +<translation id="2850666676745651490">Palete</translation> <translation id="2857608528410806398">Šeit ir jāievada ātrās atbloķēšanas funkcijas paziņojuma pamatteksts. Šeit ir jāievada ātrās atbloķēšanas funkcijas paziņojuma pamatteksts. Šeit ir jāievada ātrās atbloķēšanas funkcijas paziņojuma pamatteksts. Šeit ir jāievada ātrās atbloķēšanas funkcijas paziņojuma pamatteksts. Šeit ir jāievada ātrās atbloķēšanas funkcijas paziņojuma pamatteksts.</translation> <translation id="2872961005593481000">Beidzēt</translation> <translation id="2942516765047364088">Plaukta pozīcija</translation>
diff --git a/ash/common/strings/ash_strings_ml.xtb b/ash/common/strings/ash_strings_ml.xtb index bf7e9ab7..0727c74 100644 --- a/ash/common/strings/ash_strings_ml.xtb +++ b/ash/common/strings/ash_strings_ml.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">നിങ്ങൾ ഇപ്പോൾ സൈൻ ഔട്ട് ചെയ്യും.</translation> <translation id="2825619548187458965">ഷെൽഫ്</translation> <translation id="2844169650293029770">USB-C ഉപകരണം (ഇടത് വശത്ത് മുൻഭാഗത്തെ പോർട്ട്)</translation> +<translation id="2850666676745651490">പാലറ്റ്</translation> <translation id="2857608528410806398">QU ഫീച്ചർ അറിയിപ്പിന്റെ ഉള്ളടക്കം ഇവിടെയുണ്ട്. QU ഫീച്ചർ അറിയിപ്പ് ബോഡി ഇവിടെയുണ്ട്. QU ഫീച്ചർ അറിയിപ്പ് ബോഡി ഇവിടെയുണ്ട്. QU ഫീച്ചർ അറിയിപ്പ് ബോഡി ഇവിടെയുണ്ട്. QU ഫീച്ചർ അറിയിപ്പ് ബോഡി ഇവിടെയുണ്ട്.</translation> <translation id="2872961005593481000">അടയ്ക്കുക</translation> <translation id="2942516765047364088">ഷെൽഫ് സ്ഥാനം</translation> @@ -177,7 +178,7 @@ <translation id="6459472438155181876">സ്ക്രീൻ <ph name="DISPLAY_NAME" /> എന്നതിലേക്ക് വികസിപ്പിക്കുന്നു</translation> <translation id="6490471652906364588">USB-C ഉപകരണം (വലത് പോർട്ട്)</translation> <translation id="6501401484702599040"><ph name="RECEIVER_NAME" /> എന്നതിലേക്ക് സ്ക്രീൻ കാസ്റ്റുചെയ്യുന്നു</translation> -<translation id="6550675742724504774">ഐച്ഛികങ്ങള്</translation> +<translation id="6550675742724504774">ഓപ്ഷനുകൾ</translation> <translation id="6585808820553845416"><ph name="SESSION_TIME_REMAINING" />-നുള്ളിൽ സെഷൻ അവസാനിക്കുന്നു.</translation> <translation id="6596816719288285829">IP വിലാസം</translation> <translation id="6650933572246256093">"<ph name="DEVICE_NAME" />" എന്ന Bluetooth ഉപകരണം ജോടിയാക്കുന്നതിനുള്ള അനുമതി ആവശ്യപ്പെടുന്നു. ആ ഉപകരണത്തിൽ ഈ പാസ്കീ നൽകുക: <ph name="PASSKEY" /></translation>
diff --git a/ash/common/strings/ash_strings_mr.xtb b/ash/common/strings/ash_strings_mr.xtb index f3afd8d..ab7cfb7 100644 --- a/ash/common/strings/ash_strings_mr.xtb +++ b/ash/common/strings/ash_strings_mr.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">आता आपल्याला साइन आउट केले जाईल.</translation> <translation id="2825619548187458965">शेल्फ</translation> <translation id="2844169650293029770">USB-C डिव्हाइस (डाव्या बाजूचे पुढील पोर्ट)</translation> +<translation id="2850666676745651490">पॅलेट</translation> <translation id="2857608528410806398">QU वैशिष्ट्य सूचनेेचा मुख्य भाग येथे असेल. QU वैशिष्ट्य सूचनेेचा मुख्य भाग येथे असेल. QU वैशिष्ट्य सूचनेेचा मुख्य भाग येथे असेल. QU वैशिष्ट्य सूचनेेचा मुख्य भाग येथे असेल.</translation> <translation id="2872961005593481000">बंद करा</translation> <translation id="2942516765047364088">शेल्फ स्थिती</translation>
diff --git a/ash/common/strings/ash_strings_ms.xtb b/ash/common/strings/ash_strings_ms.xtb index 4f8d4106..c551b25a 100644 --- a/ash/common/strings/ash_strings_ms.xtb +++ b/ash/common/strings/ash_strings_ms.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Anda akan dilog keluar sekarang.</translation> <translation id="2825619548187458965">Rak</translation> <translation id="2844169650293029770">Peranti USB-C (port depan sebelah kiri)</translation> +<translation id="2850666676745651490">Palet</translation> <translation id="2857608528410806398">Isi pemberitahuan Ciri QU dipaparkan di sini. Isi pemberitahuan Ciri QU dipaparkan di sini. Isi pemberitahuan Ciri QU dipaparkan di sini. Isi pemberitahuan Ciri QU dipaparkan di sini. Isi pemberitahuan Ciri QU dipaparkan di sini.</translation> <translation id="2872961005593481000">Mematikan</translation> <translation id="2942516765047364088">Kedudukan rak</translation>
diff --git a/ash/common/strings/ash_strings_nl.xtb b/ash/common/strings/ash_strings_nl.xtb index a5bb22b..18f9bb13 100644 --- a/ash/common/strings/ash_strings_nl.xtb +++ b/ash/common/strings/ash_strings_nl.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Je wordt nu uitgelogd.</translation> <translation id="2825619548187458965">Plank</translation> <translation id="2844169650293029770">USB-C-apparaat (poort links aan de voorkant)</translation> +<translation id="2850666676745651490">Palet</translation> <translation id="2857608528410806398">Hoofdtekst voor melding over de functie voor snel ontgrendelen komt hier. Hoofdtekst voor melding over de functie voor snel ontgrendelen komt hier. Hoofdtekst voor melding over de functie voor snel ontgrendelen komt hier. Hoofdtekst voor melding over de functie voor snel ontgrendelen komt hier. Hoofdtekst voor melding over de functie voor snel ontgrendelen komt hier.</translation> <translation id="2872961005593481000">Afsluiten</translation> <translation id="2942516765047364088">Positie van plank</translation>
diff --git a/ash/common/strings/ash_strings_no.xtb b/ash/common/strings/ash_strings_no.xtb index cfaf365a..c686fcd 100644 --- a/ash/common/strings/ash_strings_no.xtb +++ b/ash/common/strings/ash_strings_no.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Du blir nå logget av.</translation> <translation id="2825619548187458965">Hylle</translation> <translation id="2844169650293029770">USB-C-enhet (porten foran på venstre side)</translation> +<translation id="2850666676745651490">Palett</translation> <translation id="2857608528410806398">Teksten i varselet for hurtigopplåsing-funksjonen skal være her. Teksten i varselet for hurtigopplåsing-funksjonen skal være her. Teksten i varselet for hurtigopplåsing-funksjonen skal være her. Teksten i varselet for hurtigopplåsing-funksjonen skal være her. Teksten i varselet for hurtigopplåsing-funksjonen skal være her.</translation> <translation id="2872961005593481000">Slå av</translation> <translation id="2942516765047364088">Hylleposisjon</translation>
diff --git a/ash/common/strings/ash_strings_pl.xtb b/ash/common/strings/ash_strings_pl.xtb index 506b808..a16a280 100644 --- a/ash/common/strings/ash_strings_pl.xtb +++ b/ash/common/strings/ash_strings_pl.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Zostaniesz teraz wylogowany.</translation> <translation id="2825619548187458965">Półka</translation> <translation id="2844169650293029770">Urządzenie USB-C (przedni port na lewym boku)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">Miejsce na treść powiadomienia o funkcji szybkiego odblokowania. Miejsce na treść powiadomienia o funkcji szybkiego odblokowania. Miejsce na treść powiadomienia o funkcji szybkiego odblokowania. Miejsce na treść powiadomienia o funkcji szybkiego odblokowania.</translation> <translation id="2872961005593481000">Wyłącz</translation> <translation id="2942516765047364088">Pozycja półki</translation>
diff --git a/ash/common/strings/ash_strings_pt-BR.xtb b/ash/common/strings/ash_strings_pt-BR.xtb index 2131b75..93dbe1f 100644 --- a/ash/common/strings/ash_strings_pt-BR.xtb +++ b/ash/common/strings/ash_strings_pt-BR.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Você sairá agora.</translation> <translation id="2825619548187458965">Estante</translation> <translation id="2844169650293029770">Dispositivo USB-C (porta frontal da esquerda)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">O corpo da notificação do recurso QU fica aqui. O corpo da notificação do recurso QU fica aqui. O corpo da notificação do recurso QU fica aqui. O corpo da notificação do recurso QU fica aqui.</translation> <translation id="2872961005593481000">Encerrar</translation> <translation id="2942516765047364088">Posição da estante</translation>
diff --git a/ash/common/strings/ash_strings_pt-PT.xtb b/ash/common/strings/ash_strings_pt-PT.xtb index 95c3c1be..7eb9371 100644 --- a/ash/common/strings/ash_strings_pt-PT.xtb +++ b/ash/common/strings/ash_strings_pt-PT.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">A sessão será terminada agora.</translation> <translation id="2825619548187458965">Prateleira</translation> <translation id="2844169650293029770">Dispositivo USB-C (porta frontal do lado esquerdo)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">Corpo da notificação da funcionalidade de Desbloqueio rápido aqui. Corpo da notificação da funcionalidade de Desbloqueio rápido aqui. Corpo da notificação da funcionalidade de Desbloqueio rápido aqui. Corpo da notificação da funcionalidade de Desbloqueio rápido aqui. Corpo da notificação da funcionalidade de Desbloqueio rápido aqui.</translation> <translation id="2872961005593481000">Encerrar</translation> <translation id="2942516765047364088">Posição da prateleira</translation>
diff --git a/ash/common/strings/ash_strings_ro.xtb b/ash/common/strings/ash_strings_ro.xtb index f536f33..e9c2dd0 100644 --- a/ash/common/strings/ash_strings_ro.xtb +++ b/ash/common/strings/ash_strings_ro.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Veți fi deconectat(ă) acum.</translation> <translation id="2825619548187458965">Raft</translation> <translation id="2844169650293029770">Dispozitiv USB-C (portul din stânga față)</translation> +<translation id="2850666676745651490">Paletă</translation> <translation id="2857608528410806398">Corpul notificării privind funcția Deblocare rapidă trebuie să apară aici. Corpul notificării privind funcția Deblocare rapidă trebuie să apară aici. Corpul notificării privind funcția Deblocare rapidă trebuie să apară aici. Corpul notificării privind funcția Deblocare rapidă trebuie să apară aici. Corpul notificării privind funcția Deblocare rapidă trebuie să apară aici.</translation> <translation id="2872961005593481000">Închide</translation> <translation id="2942516765047364088">Poziție raft</translation> @@ -158,7 +159,7 @@ <translation id="5958529069007801266">Utilizator monitorizat</translation> <translation id="5977415296283489383">Căști</translation> <translation id="5978382165065462689">În prezent, permiți controlul la ecran prin Asistență la distanță.</translation> -<translation id="5980301590375426705">Ieșiți din sesiunea pentru invitați</translation> +<translation id="5980301590375426705">Ieșiți din modul pentru invitați</translation> <translation id="6043994281159824495">Deconectați-vă acum</translation> <translation id="6047696787498798094">Permiterea accesului la ecran încetează când comuți la alt utilizator. Dorești să continui?</translation> <translation id="6062360702481658777">Veți fi deconectat(ă) automat peste <ph name="LOGOUT_TIME_LEFT" />.</translation>
diff --git a/ash/common/strings/ash_strings_ru.xtb b/ash/common/strings/ash_strings_ru.xtb index 2e36813c..00f00fa4 100644 --- a/ash/common/strings/ash_strings_ru.xtb +++ b/ash/common/strings/ash_strings_ru.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Сеанс завершен.</translation> <translation id="2825619548187458965">Полка</translation> <translation id="2844169650293029770">Устройство USB-C (ближний порт слева)</translation> +<translation id="2850666676745651490">Палитра</translation> <translation id="2857608528410806398">QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here. QU Feature notification body goes here.</translation> <translation id="2872961005593481000">Завершить работу</translation> <translation id="2942516765047364088">Положение панели запуска</translation>
diff --git a/ash/common/strings/ash_strings_sk.xtb b/ash/common/strings/ash_strings_sk.xtb index 4926184..b9337d8 100644 --- a/ash/common/strings/ash_strings_sk.xtb +++ b/ash/common/strings/ash_strings_sk.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Teraz prebehne odhlásenie.</translation> <translation id="2825619548187458965">Polička</translation> <translation id="2844169650293029770">Zariadenie USB-C (port vľavo vpredu)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">Tu má byť text upozornenia funkcie rýchleho odomknutia. Tu má byť text upozornenia funkcie rýchleho odomknutia. Tu má byť text upozornenia funkcie rýchleho odomknutia. Tu má byť text upozornenia funkcie rýchleho odomknutia. Tu má byť text upozornenia funkcie rýchleho odomknutia.</translation> <translation id="2872961005593481000">Vypnúť</translation> <translation id="2942516765047364088">Pozícia poličky</translation>
diff --git a/ash/common/strings/ash_strings_sl.xtb b/ash/common/strings/ash_strings_sl.xtb index 4025d80..b5d96b5d 100644 --- a/ash/common/strings/ash_strings_sl.xtb +++ b/ash/common/strings/ash_strings_sl.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Zdaj boste odjavljeni.</translation> <translation id="2825619548187458965">Polica</translation> <translation id="2844169650293029770">Naprava USB-C (vrata levo spredaj)</translation> +<translation id="2850666676745651490">Paleta</translation> <translation id="2857608528410806398">Telo sporočila o funkciji hitrega odklepanja je tukaj. Telo sporočila o funkciji hitrega odklepanja je tukaj. Telo sporočila o funkciji hitrega odklepanja je tukaj. Telo sporočila o funkciji hitrega odklepanja je tukaj. Telo sporočila o funkciji hitrega odklepanja je tukaj.</translation> <translation id="2872961005593481000">Zaustavitev</translation> <translation id="2942516765047364088">Položaj police</translation>
diff --git a/ash/common/strings/ash_strings_sr.xtb b/ash/common/strings/ash_strings_sr.xtb index d5425577..f29b198a 100644 --- a/ash/common/strings/ash_strings_sr.xtb +++ b/ash/common/strings/ash_strings_sr.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Бићете одмах одјављени.</translation> <translation id="2825619548187458965">Полица</translation> <translation id="2844169650293029770">Уређај са USB прикључком типа C (леви предњи порт)</translation> +<translation id="2850666676745651490">Палета</translation> <translation id="2857608528410806398">Тело обавештења о функцији Брзо откључавање ће бити приказано овде. Тело обавештења о функцији Брзо откључавање ће бити приказано овде. Тело обавештења о функцији Брзо откључавање ће бити приказано овде. Тело обавештења о функцији Брзо откључавање ће бити приказано овде. Тело обавештења о функцији Брзо откључавање ће бити приказано овде.</translation> <translation id="2872961005593481000">Искључи</translation> <translation id="2942516765047364088">Положај полице</translation>
diff --git a/ash/common/strings/ash_strings_sv.xtb b/ash/common/strings/ash_strings_sv.xtb index da1bed0..57c3f85f 100644 --- a/ash/common/strings/ash_strings_sv.xtb +++ b/ash/common/strings/ash_strings_sv.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Du loggas nu ut.</translation> <translation id="2825619548187458965">Hylla</translation> <translation id="2844169650293029770">USB-C-enhet (främre porten på vänster sida)</translation> +<translation id="2850666676745651490">Palett</translation> <translation id="2857608528410806398">Plats för aviseringstext för QU-funktionen. Plats för aviseringstext för QU-funktionen. Plats för aviseringstext för QU-funktionen. Plats för aviseringstext för QU-funktionen. Plats för aviseringstext för QU-funktionen.</translation> <translation id="2872961005593481000">Stäng av</translation> <translation id="2942516765047364088">Hyllposition</translation>
diff --git a/ash/common/strings/ash_strings_sw.xtb b/ash/common/strings/ash_strings_sw.xtb index 05536724..c7a9a617 100644 --- a/ash/common/strings/ash_strings_sw.xtb +++ b/ash/common/strings/ash_strings_sw.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Utaondolewa kwenye akaunti sasa hivi.</translation> <translation id="2825619548187458965">Rafu</translation> <translation id="2844169650293029770">Kifaa cha USB-C (mlango wa upande wa kushoto mbele)</translation> +<translation id="2850666676745651490">Safu</translation> <translation id="2857608528410806398">Maudhui ya arifa ya Kipengele cha QU huenda hapa. Maudhui ya arifa ya Kipengele cha QU huenda hapa. Maudhui ya arifa ya Kipengele cha QU huenda hapa. Maudhui ya arifa ya Kipengele cha QU huenda hapa. Maudhui ya arifa ya Kipengee cha QU huenda hapa.</translation> <translation id="2872961005593481000">Zima</translation> <translation id="2942516765047364088">Nafasi ya rafu</translation>
diff --git a/ash/common/strings/ash_strings_ta.xtb b/ash/common/strings/ash_strings_ta.xtb index 1416793c..9d7e031 100644 --- a/ash/common/strings/ash_strings_ta.xtb +++ b/ash/common/strings/ash_strings_ta.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">இப்போது வெளியேற்றப்படுவீர்கள்.</translation> <translation id="2825619548187458965">அடுக்கு</translation> <translation id="2844169650293029770">USB-C சாதனம் (இடது பக்கம் முன்னே இருக்கும் போர்ட்)</translation> +<translation id="2850666676745651490">தட்டு</translation> <translation id="2857608528410806398">QU அம்சத்தின் அறிவிப்பு உள்ளடக்கம் இங்கே. QU அம்சத்தின் அறிவிப்பு உள்ளடக்கம் இங்கே. QU அம்சத்தின் அறிவிப்பு உள்ளடக்கம் இங்கே. QU அம்சத்தின் அறிவிப்பு உள்ளடக்கம் இங்கே. QU அம்சத்தின் அறிவிப்பு உள்ளடக்கம் இங்கே.</translation> <translation id="2872961005593481000">நிறுத்து</translation> <translation id="2942516765047364088">அடுக்கின் நிலை</translation>
diff --git a/ash/common/strings/ash_strings_te.xtb b/ash/common/strings/ash_strings_te.xtb index 89c6495..7af1428 100644 --- a/ash/common/strings/ash_strings_te.xtb +++ b/ash/common/strings/ash_strings_te.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">మీరు ఇప్పుడు సైన్ అవుట్ చేయబడతారు.</translation> <translation id="2825619548187458965">అర</translation> <translation id="2844169650293029770">USB-C పరికరం (ఎడమవైపు ముందు పోర్ట్)</translation> +<translation id="2850666676745651490">ఫలకం</translation> <translation id="2857608528410806398">QU లక్షణం నోటిఫికేషన్ ప్రధాన భాగం ఇక్కడ అందించబడుతుంది. QU లక్షణం నోటిఫికేషన్ ప్రధాన భాగం ఇక్కడ అందించబడుతుంది. QU లక్షణం నోటిఫికేషన్ ప్రధాన భాగం ఇక్కడ అందించబడుతుంది. QU లక్షణం నోటిఫికేషన్ ప్రధాన భాగం ఇక్కడ అందించబడుతుంది. QU లక్షణం నోటిఫికేషన్ ప్రధాన భాగం ఇక్కడ అందించబడుతుంది.</translation> <translation id="2872961005593481000">షట్ డౌన్ చెయ్యండి</translation> <translation id="2942516765047364088">అర స్థానం</translation>
diff --git a/ash/common/strings/ash_strings_th.xtb b/ash/common/strings/ash_strings_th.xtb index 3b903ba..f07a9c5 100644 --- a/ash/common/strings/ash_strings_th.xtb +++ b/ash/common/strings/ash_strings_th.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">คุณจะออกจากระบบในตอนนี้</translation> <translation id="2825619548187458965">ชั้นวาง</translation> <translation id="2844169650293029770">อุปกรณ์ USB-C (พอร์ตด้านหน้าซ้าย)</translation> +<translation id="2850666676745651490">จาน</translation> <translation id="2857608528410806398">เนื้อหาการแจ้งเตือนด้วยคุณลักษณะ QU อยู่ที่นี่ เนื้อหาการแจ้งเตือนด้วยคุณลักษณะ QU อยู่ที่นี่ เนื้อหาการแจ้งเตือนด้วยคุณลักษณะ QU อยู่ที่นี่ เนื้อหาการแจ้งเตือนด้วยคุณลักษณะ QU อยู่ที่นี่ เนื้อหาการแจ้งเตือนด้วยคุณลักษณะ QU อยู่ที่นี่</translation> <translation id="2872961005593481000">ปิด</translation> <translation id="2942516765047364088">ตำแหน่งของชั้นวาง</translation>
diff --git a/ash/common/strings/ash_strings_tr.xtb b/ash/common/strings/ash_strings_tr.xtb index 81582ff..81d75ba7 100644 --- a/ash/common/strings/ash_strings_tr.xtb +++ b/ash/common/strings/ash_strings_tr.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Şimdi çıkış yapacaksınız.</translation> <translation id="2825619548187458965">Raf</translation> <translation id="2844169650293029770">USB-C cihaz (sol ön bağlantı noktası)</translation> +<translation id="2850666676745651490">Palet</translation> <translation id="2857608528410806398">QU Özelliği ile ilgili bildirim metni burada gösterilir. QU Özelliği ile ilgili bildirim metni burada gösterilir. QU Özelliği ile ilgili bildirim metni burada gösterilir. QU Özelliği ile ilgili bildirim metni burada gösterilir. QU Özelliği ile ilgili bildirim metni burada gösterilir.</translation> <translation id="2872961005593481000">Kapat</translation> <translation id="2942516765047364088">Raf konumu</translation>
diff --git a/ash/common/strings/ash_strings_uk.xtb b/ash/common/strings/ash_strings_uk.xtb index 777bd8c..8e66b63 100644 --- a/ash/common/strings/ash_strings_uk.xtb +++ b/ash/common/strings/ash_strings_uk.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Зараз ви вийдете.</translation> <translation id="2825619548187458965">Полиця</translation> <translation id="2844169650293029770">Пристрій, під’єднаний до порту USB-C (ліворуч на передній панелі)</translation> +<translation id="2850666676745651490">Палітра</translation> <translation id="2857608528410806398">Текст сповіщення функції швидкого розблокування.</translation> <translation id="2872961005593481000">Завершити роботу</translation> <translation id="2942516765047364088">Розташування полиці</translation>
diff --git a/ash/common/strings/ash_strings_vi.xtb b/ash/common/strings/ash_strings_vi.xtb index 72df4a2..70e29db 100644 --- a/ash/common/strings/ash_strings_vi.xtb +++ b/ash/common/strings/ash_strings_vi.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">Bạn sẽ bị đăng xuất bây giờ.</translation> <translation id="2825619548187458965">Giá</translation> <translation id="2844169650293029770">Thiết bị USB-C (cổng phía trước, bên trái)</translation> +<translation id="2850666676745651490">Bảng màu</translation> <translation id="2857608528410806398">Nội dung thông báo tính năng QU sẽ xuất hiện tại đây. Nội dung thông báo tính năng QU sẽ xuất hiện tại đây. Nội dung thông báo tính năng QU sẽ xuất hiện tại đây. Nội dung thông báo tính năng QU sẽ xuất hiện tại đây. Nội dung thông báo tính năng QU sẽ xuất hiện tại đây.</translation> <translation id="2872961005593481000">Tắt</translation> <translation id="2942516765047364088">Vị trí giá</translation>
diff --git a/ash/common/strings/ash_strings_zh-CN.xtb b/ash/common/strings/ash_strings_zh-CN.xtb index 9d1c009..93baa1d8 100644 --- a/ash/common/strings/ash_strings_zh-CN.xtb +++ b/ash/common/strings/ash_strings_zh-CN.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">您将立即退出。</translation> <translation id="2825619548187458965">任务栏</translation> <translation id="2844169650293029770">USB-C 设备(左侧前端端口)</translation> +<translation id="2850666676745651490">调色板</translation> <translation id="2857608528410806398">此处为快速解锁功能通知正文。此处为快速解锁功能通知正文。此处为快速解锁功能通知正文。此处为快速解锁功能通知正文。此处为快速解锁功能通知正文。</translation> <translation id="2872961005593481000">关机</translation> <translation id="2942516765047364088">任务栏位置</translation>
diff --git a/ash/common/strings/ash_strings_zh-TW.xtb b/ash/common/strings/ash_strings_zh-TW.xtb index 27b35412..bd54764 100644 --- a/ash/common/strings/ash_strings_zh-TW.xtb +++ b/ash/common/strings/ash_strings_zh-TW.xtb
@@ -65,6 +65,7 @@ <translation id="2819276065543622893">現在即將登出。</translation> <translation id="2825619548187458965">檔案櫃</translation> <translation id="2844169650293029770">USB-C 裝置 (左前方連接埠)</translation> +<translation id="2850666676745651490">調色盤</translation> <translation id="2857608528410806398">在這裡顯示 QU 功能通知內文。在這裡顯示 QU 功能通知內文。在這裡顯示 QU 功能通知內文。在這裡顯示 QU 功能通知內文。在這裡顯示 QU 功能通知內文。</translation> <translation id="2872961005593481000">關閉</translation> <translation id="2942516765047364088">檔案櫃位置</translation>
diff --git a/ash/common/system/chromeos/session/logout_button_tray.cc b/ash/common/system/chromeos/session/logout_button_tray.cc index 68aaef20..08cdfba 100644 --- a/ash/common/system/chromeos/session/logout_button_tray.cc +++ b/ash/common/system/chromeos/session/logout_button_tray.cc
@@ -23,6 +23,8 @@ #include "ui/gfx/color_palette.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/size.h" +#include "ui/gfx/paint_vector_icon.h" +#include "ui/gfx/vector_icons_public.h" #include "ui/views/bubble/tray_bubble_view.h" #include "ui/views/controls/button/label_button.h" #include "ui/views/controls/button/label_button_border.h" @@ -112,7 +114,6 @@ // TODO(estade): should this 2 be shared with other tray views? See // crbug.com/623987 button->AdjustFontSize(2); - button->SetMinSize(gfx::Size(0, kTrayItemSize)); button_ = button; } else { button_ = new LogoutButton(this); @@ -127,6 +128,9 @@ } void LogoutButtonTray::SetShelfAlignment(ShelfAlignment alignment) { + // We must first update the button so that + // TrayBackgroundView::SetShelfAlignment() can lay it out correctly. + UpdateButtonTextAndImage(login_status_, alignment); TrayBackgroundView::SetShelfAlignment(alignment); tray_container()->SetBorder(views::Border::NullBorder()); } @@ -162,12 +166,7 @@ } void LogoutButtonTray::UpdateAfterLoginStatusChange(LoginStatus login_status) { - login_status_ = login_status; - const base::string16 title = - user::GetLocalizedSignOutStringForStatus(login_status, false); - button_->SetText(title); - button_->SetAccessibleName(title); - UpdateVisibility(); + UpdateButtonTextAndImage(login_status, shelf_alignment()); } void LogoutButtonTray::UpdateVisibility() { @@ -176,4 +175,24 @@ login_status_ != LoginStatus::LOCKED); } +void LogoutButtonTray::UpdateButtonTextAndImage(LoginStatus login_status, + ShelfAlignment alignment) { + login_status_ = login_status; + const base::string16 title = + user::GetLocalizedSignOutStringForStatus(login_status, false); + if (alignment == SHELF_ALIGNMENT_BOTTOM) { + button_->SetText(title); + button_->SetImage(views::LabelButton::STATE_NORMAL, gfx::ImageSkia()); + button_->SetMinSize(gfx::Size(0, kTrayItemSize)); + } else { + button_->SetText(base::string16()); + button_->SetAccessibleName(title); + button_->SetImage( + views::LabelButton::STATE_NORMAL, + gfx::CreateVectorIcon(gfx::VectorIconId::SHELF_LOGOUT, kTrayIconColor)); + button_->SetMinSize(gfx::Size(kTrayItemSize, kTrayItemSize)); + } + UpdateVisibility(); +} + } // namespace ash
diff --git a/ash/common/system/chromeos/session/logout_button_tray.h b/ash/common/system/chromeos/session/logout_button_tray.h index abf50414..6a69bba 100644 --- a/ash/common/system/chromeos/session/logout_button_tray.h +++ b/ash/common/system/chromeos/session/logout_button_tray.h
@@ -45,6 +45,8 @@ private: void UpdateVisibility(); + void UpdateButtonTextAndImage(LoginStatus login_status, + ShelfAlignment alignment); views::LabelButton* button_; LoginStatus login_status_;
diff --git a/ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc b/ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc index 5e2391f..39eae983 100644 --- a/ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc +++ b/ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.cc
@@ -21,60 +21,48 @@ #include "ui/gfx/image/image_skia.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/gfx/vector_icons_public.h" -#include "ui/views/controls/button/image_button.h" +#include "ui/keyboard/keyboard_controller.h" +#include "ui/views/controls/image_view.h" namespace ash { VirtualKeyboardTray::VirtualKeyboardTray(WmShelf* wm_shelf) - : TrayBackgroundView(wm_shelf), button_(nullptr) { - button_ = new views::ImageButton(this); + : TrayBackgroundView(wm_shelf), icon_(new views::ImageView) { if (MaterialDesignController::IsShelfMaterial()) { gfx::ImageSkia image_md = CreateVectorIcon(gfx::VectorIconId::SHELF_KEYBOARD, kShelfIconColor); - button_->SetImage(views::CustomButton::STATE_NORMAL, &image_md); + icon_->SetImage(image_md); } else { gfx::ImageSkia* image_non_md = ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( IDR_AURA_UBER_TRAY_VIRTUAL_KEYBOARD); - button_->SetImage(views::CustomButton::STATE_NORMAL, image_non_md); + icon_->SetImage(image_non_md); } - button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER, - views::ImageButton::ALIGN_MIDDLE); - tray_container()->AddChildView(button_); - button_->SetFocusBehavior(FocusBehavior::NEVER); + SetIconBorderForShelfAlignment(); + tray_container()->AddChildView(icon_); SetContentsBackground(); // The Shell may not exist in some unit tests. if (WmShell::HasInstance()) WmShell::Get()->keyboard_ui()->AddObserver(this); + // Try observing keyboard controller, in case it is already constructed. + ObserveKeyboardController(); } VirtualKeyboardTray::~VirtualKeyboardTray() { + // Try unobserving keyboard controller, in case it still exists. + UnobserveKeyboardController(); // The Shell may not exist in some unit tests. if (WmShell::HasInstance()) WmShell::Get()->keyboard_ui()->RemoveObserver(this); } void VirtualKeyboardTray::SetShelfAlignment(ShelfAlignment alignment) { + if (alignment == shelf_alignment()) + return; + TrayBackgroundView::SetShelfAlignment(alignment); - tray_container()->SetBorder(views::Border::NullBorder()); - - // Pad button size to align with other controls in the system tray. - const gfx::ImageSkia image = - button_->GetImage(views::CustomButton::STATE_NORMAL); - const int size = GetTrayConstant(VIRTUAL_KEYBOARD_BUTTON_SIZE); - const int vertical_padding = (size - image.height()) / 2; - int horizontal_padding = (size - image.width()) / 2; - if (!ash::MaterialDesignController::IsShelfMaterial() && - IsHorizontalAlignment(alignment)) { - // Square up the padding if horizontally aligned. Avoid extra padding when - // vertically aligned as the button would violate the width constraint on - // the shelf. - horizontal_padding += std::max(0, vertical_padding - horizontal_padding); - } - - button_->SetBorder(views::Border::CreateEmptyBorder( - gfx::Insets(vertical_padding, horizontal_padding))); + SetIconBorderForShelfAlignment(); } base::string16 VirtualKeyboardTray::GetAccessibleNameForTray() { @@ -92,14 +80,51 @@ return true; } -void VirtualKeyboardTray::ButtonPressed(views::Button* sender, - const ui::Event& event) { - DCHECK_EQ(button_, sender); - PerformAction(event); +void VirtualKeyboardTray::OnKeyboardEnabledStateChanged(bool new_enabled) { + SetVisible(new_enabled); + if (new_enabled) { + // Observe keyboard controller to detect when the virtual keyboard is + // shown/hidden. + ObserveKeyboardController(); + } else { + // Try unobserving keyboard controller, in case it is not yet destroyed. + UnobserveKeyboardController(); + } } -void VirtualKeyboardTray::OnKeyboardEnabledStateChanged(bool new_value) { - SetVisible(WmShell::Get()->keyboard_ui()->IsEnabled()); +void VirtualKeyboardTray::OnKeyboardBoundsChanging( + const gfx::Rect& new_bounds) { + SetDrawBackgroundAsActive(!new_bounds.IsEmpty()); +} + +void VirtualKeyboardTray::SetIconBorderForShelfAlignment() { + const gfx::ImageSkia& image = icon_->GetImage(); + const int size = GetTrayConstant(VIRTUAL_KEYBOARD_BUTTON_SIZE); + const int vertical_padding = (size - image.height()) / 2; + int horizontal_padding = (size - image.width()) / 2; + if (!ash::MaterialDesignController::IsShelfMaterial() && + IsHorizontalAlignment(shelf_alignment())) { + // Square up the padding if horizontally aligned. Avoid extra padding when + // vertically aligned as the button would violate the width constraint on + // the shelf. + horizontal_padding += std::max(0, vertical_padding - horizontal_padding); + } + icon_->SetBorder(views::Border::CreateEmptyBorder( + gfx::Insets(vertical_padding, horizontal_padding))); +} + +void VirtualKeyboardTray::ObserveKeyboardController() { + keyboard::KeyboardController* keyboard_controller = + keyboard::KeyboardController::GetInstance(); + if (keyboard_controller) + keyboard_controller->AddObserver(this); +} + +void VirtualKeyboardTray::UnobserveKeyboardController() { + keyboard::KeyboardController* keyboard_controller = + keyboard::KeyboardController::GetInstance(); + if (keyboard_controller) + keyboard_controller->RemoveObserver(this); } } // namespace ash
diff --git a/ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.h b/ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.h index a52dc19..04847be48 100644 --- a/ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.h +++ b/ash/common/system/chromeos/virtual_keyboard/virtual_keyboard_tray.h
@@ -8,18 +8,18 @@ #include "ash/common/keyboard/keyboard_ui_observer.h" #include "ash/common/system/tray/tray_background_view.h" #include "base/macros.h" -#include "ui/views/controls/button/button.h" +#include "ui/keyboard/keyboard_controller_observer.h" namespace views { -class ImageButton; +class ImageView; } namespace ash { // TODO(sky): make this visible on non-chromeos platforms. class VirtualKeyboardTray : public TrayBackgroundView, - public views::ButtonListener, - public KeyboardUIObserver { + public KeyboardUIObserver, + public keyboard::KeyboardControllerObserver { public: explicit VirtualKeyboardTray(WmShelf* wm_shelf); ~VirtualKeyboardTray() override; @@ -31,14 +31,22 @@ void ClickedOutsideBubble() override; bool PerformAction(const ui::Event& event) override; - // views::ButtonListener: - void ButtonPressed(views::Button* sender, const ui::Event& event) override; - // KeyboardUIObserver: - void OnKeyboardEnabledStateChanged(bool new_value) override; + void OnKeyboardEnabledStateChanged(bool new_enabled) override; + + // keyboard::KeyboardControllerObserver: + void OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) override; private: - views::ImageButton* button_; // Not owned. + // Creates a new border for the icon. The padding is determined based on the + // alignment of the shelf. + void SetIconBorderForShelfAlignment(); + + void ObserveKeyboardController(); + void UnobserveKeyboardController(); + + // Weak pointer, will be parented by TrayContainer for its lifetime. + views::ImageView* icon_; DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardTray); };
diff --git a/ash/common/system/status_area_widget_delegate.cc b/ash/common/system/status_area_widget_delegate.cc index d749273d..3674f34 100644 --- a/ash/common/system/status_area_widget_delegate.cc +++ b/ash/common/system/status_area_widget_delegate.cc
@@ -86,7 +86,7 @@ static_cast<views::View*>(event->target())->GetWidget(); WmWindow* target_window = WmLookup::Get()->GetWindowForWidget(target_widget); WmShelf* shelf = target_window->GetRootWindowController()->GetShelf(); - if (shelf->ProcessGestureEvent(*event, target_window)) + if (shelf->ProcessGestureEvent(*event)) event->StopPropagation(); else views::AccessiblePaneView::OnGestureEvent(event);
diff --git a/ash/common/wm/overview/window_selector.cc b/ash/common/wm/overview/window_selector.cc index cc48767..b24142b1 100644 --- a/ash/common/wm/overview/window_selector.cc +++ b/ash/common/wm/overview/window_selector.cc
@@ -553,8 +553,12 @@ void WindowSelector::OnDisplayMetricsChanged(const display::Display& display, uint32_t metrics) { - PositionWindows(/* animate */ false); - RepositionTextFilterOnDisplayMetricsChange(); + // If only the work area changes, there is no need to reposition windows in + // overview. + if (metrics != DISPLAY_METRIC_WORK_AREA) { + PositionWindows(/* animate */ false); + RepositionTextFilterOnDisplayMetricsChange(); + } } void WindowSelector::OnWindowTreeChanged(WmWindow* window,
diff --git a/ash/metrics/user_metrics_recorder.cc b/ash/metrics/user_metrics_recorder.cc index fdd2e41..2b22a56 100644 --- a/ash/metrics/user_metrics_recorder.cc +++ b/ash/metrics/user_metrics_recorder.cc
@@ -8,13 +8,15 @@ #include "ash/common/shelf/shelf_delegate.h" #include "ash/common/shelf/shelf_item_types.h" #include "ash/common/shelf/shelf_model.h" +#include "ash/common/shelf/shelf_view.h" +#include "ash/common/shelf/wm_shelf.h" #include "ash/common/shell_window_ids.h" #include "ash/common/system/tray/system_tray_delegate.h" #include "ash/common/wm/window_state.h" +#include "ash/common/wm_root_window_controller.h" #include "ash/common/wm_shell.h" +#include "ash/common/wm_window.h" #include "ash/metrics/desktop_task_switch_metric_recorder.h" -#include "ash/shelf/shelf.h" -#include "ash/shelf/shelf_view.h" #include "ash/shell.h" #include "ash/wm/window_state_aura.h" #include "base/metrics/histogram.h" @@ -594,7 +596,10 @@ } void UserMetricsRecorder::RecordPeriodicMetrics() { - Shelf* shelf = Shelf::ForPrimaryDisplay(); + WmShelf* shelf = WmShell::Get() + ->GetPrimaryRootWindow() + ->GetRootWindowController() + ->GetShelf(); // TODO(bruthig): Investigating whether the check for |manager| is necessary // and add tests if it is. if (shelf) {
diff --git a/ash/mus/bridge/wm_shelf_mus.cc b/ash/mus/bridge/wm_shelf_mus.cc index 900f663..39e10de 100644 --- a/ash/mus/bridge/wm_shelf_mus.cc +++ b/ash/mus/bridge/wm_shelf_mus.cc
@@ -111,8 +111,7 @@ return gfx::Rect(); } -bool WmShelfMus::ProcessGestureEvent(const ui::GestureEvent& event, - WmWindow* target_window) { +bool WmShelfMus::ProcessGestureEvent(const ui::GestureEvent& event) { NOTIMPLEMENTED(); return false; }
diff --git a/ash/mus/bridge/wm_shelf_mus.h b/ash/mus/bridge/wm_shelf_mus.h index efbf389..985cc08 100644 --- a/ash/mus/bridge/wm_shelf_mus.h +++ b/ash/mus/bridge/wm_shelf_mus.h
@@ -43,8 +43,7 @@ gfx::Rect GetUserWorkAreaBounds() const override; void UpdateIconPositionForWindow(WmWindow* window) override; gfx::Rect GetScreenBoundsOfItemIconForWindow(WmWindow* window) override; - bool ProcessGestureEvent(const ui::GestureEvent& event, - WmWindow* target_window) override; + bool ProcessGestureEvent(const ui::GestureEvent& event) override; void UpdateAutoHideForMouseEvent(ui::MouseEvent* event) override; void UpdateAutoHideForGestureEvent(ui::GestureEvent* event) override; void AddObserver(WmShelfObserver* observer) override;
diff --git a/ash/shelf/shelf.cc b/ash/shelf/shelf.cc index 74db518..d519ef1 100644 --- a/ash/shelf/shelf.cc +++ b/ash/shelf/shelf.cc
@@ -12,14 +12,13 @@ #include "ash/common/shelf/shelf_item_delegate.h" #include "ash/common/shelf/shelf_model.h" #include "ash/common/shelf/shelf_navigator.h" -#include "ash/common/shelf/wm_shelf_util.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/shell_window_ids.h" #include "ash/common/wm_shell.h" #include "ash/root_window_controller.h" #include "ash/screen_util.h" #include "ash/shelf/shelf_layout_manager.h" #include "ash/shelf/shelf_util.h" -#include "ash/shelf/shelf_view.h" #include "ash/shell.h" #include "ash/wm/window_properties.h" #include "ui/aura/window.h" @@ -47,7 +46,7 @@ shelf_view_(new ShelfView(shelf_model, WmShell::Get()->shelf_delegate(), wm_shelf, - this)), + shelf_widget)), shelf_locking_manager_(wm_shelf) { DCHECK(wm_shelf_); shelf_view_->Init(); @@ -90,10 +89,6 @@ // ShelfLayoutManager will resize the shelf. } -bool Shelf::IsHorizontalAlignment() const { - return ::ash::IsHorizontalAlignment(alignment_); -} - void Shelf::SetAutoHideBehavior(ShelfAutoHideBehavior auto_hide_behavior) { if (auto_hide_behavior_ == auto_hide_behavior) return;
diff --git a/ash/shelf/shelf.h b/ash/shelf/shelf.h index 497c2b5..c22f451 100644 --- a/ash/shelf/shelf.h +++ b/ash/shelf/shelf.h
@@ -70,7 +70,6 @@ void SetAlignment(ShelfAlignment alignment); ShelfAlignment alignment() const { return alignment_; } - bool IsHorizontalAlignment() const; // Sets the ShelfAutoHideBehavior. See enum description for details. void SetAutoHideBehavior(ShelfAutoHideBehavior auto_hide_behavior); @@ -82,28 +81,6 @@ ShelfVisibilityState GetVisibilityState() const; - // A helper functions that chooses values specific to a shelf alignment. - template <typename T> - T SelectValueForShelfAlignment(T bottom, T left, T right) const { - switch (alignment_) { - case SHELF_ALIGNMENT_BOTTOM: - case SHELF_ALIGNMENT_BOTTOM_LOCKED: - return bottom; - case SHELF_ALIGNMENT_LEFT: - return left; - case SHELF_ALIGNMENT_RIGHT: - return right; - } - NOTREACHED(); - return right; - } - - // A helper functions that chooses values specific to a shelf alignment type. - template <typename T> - T PrimaryAxisValue(T horizontal, T vertical) const { - return IsHorizontalAlignment() ? horizontal : vertical; - } - // Returns the screen bounds of the item for the specified window. If there is // no item for the specified window an empty rect is returned. gfx::Rect GetScreenBoundsOfItemIconForWindow(const aura::Window* window);
diff --git a/ash/shelf/shelf_bezel_event_filter.cc b/ash/shelf/shelf_bezel_event_filter.cc index e052398..224180c7 100644 --- a/ash/shelf/shelf_bezel_event_filter.cc +++ b/ash/shelf/shelf_bezel_event_filter.cc
@@ -9,12 +9,15 @@ #include "ui/aura/window.h" #include "ui/display/display.h" #include "ui/display/screen.h" +#include "ui/gfx/geometry/point.h" +#include "ui/gfx/geometry/rect.h" #include "ui/wm/core/coordinate_conversion.h" namespace ash { -ShelfBezelEventFilter::ShelfBezelEventFilter(ShelfLayoutManager* shelf) - : shelf_(shelf), in_touch_drag_(false) { +ShelfBezelEventFilter::ShelfBezelEventFilter( + ShelfLayoutManager* shelf_layout_manager) + : shelf_layout_manager_(shelf_layout_manager), in_touch_drag_(false) { Shell::GetInstance()->AddPreTargetHandler(this); } @@ -32,7 +35,7 @@ if ((!screen.Contains(point_in_screen) && IsShelfOnBezel(screen, point_in_screen)) || in_touch_drag_) { - if (gesture_handler_.ProcessGestureEvent(*event, target)) { + if (shelf_layout_manager_->ProcessGestureEvent(*event)) { switch (event->type()) { case ui::ET_GESTURE_SCROLL_BEGIN: in_touch_drag_ = true; @@ -51,9 +54,9 @@ bool ShelfBezelEventFilter::IsShelfOnBezel(const gfx::Rect& screen, const gfx::Point& point) const { - return shelf_->SelectValueForShelfAlignment(point.y() >= screen.bottom(), - point.x() <= screen.x(), - point.x() >= screen.right()); + return shelf_layout_manager_->SelectValueForShelfAlignment( + point.y() >= screen.bottom(), point.x() <= screen.x(), + point.x() >= screen.right()); } } // namespace ash
diff --git a/ash/shelf/shelf_bezel_event_filter.h b/ash/shelf/shelf_bezel_event_filter.h index f2edffb..ff7d14d0 100644 --- a/ash/shelf/shelf_bezel_event_filter.h +++ b/ash/shelf/shelf_bezel_event_filter.h
@@ -5,10 +5,13 @@ #ifndef ASH_SHELF_SHELF_BEZEL_EVENT_FILTER_H_ #define ASH_SHELF_SHELF_BEZEL_EVENT_FILTER_H_ -#include "ash/wm/gestures/shelf_gesture_handler.h" #include "base/macros.h" #include "ui/events/event_handler.h" -#include "ui/gfx/geometry/rect.h" + +namespace gfx { +class Point; +class Rect; +} namespace ash { class ShelfLayoutManager; @@ -17,7 +20,7 @@ // shelf. class ShelfBezelEventFilter : public ui::EventHandler { public: - explicit ShelfBezelEventFilter(ShelfLayoutManager* shelf); + explicit ShelfBezelEventFilter(ShelfLayoutManager* shelf_layout_manager); ~ShelfBezelEventFilter() override; // Overridden from ui::EventHandler: @@ -26,9 +29,9 @@ private: bool IsShelfOnBezel(const gfx::Rect& screen, const gfx::Point& point) const; - ShelfLayoutManager* shelf_; // non-owned + ShelfLayoutManager* shelf_layout_manager_; bool in_touch_drag_; - ShelfGestureHandler gesture_handler_; + DISALLOW_COPY_AND_ASSIGN(ShelfBezelEventFilter); };
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc index 01cad5a0..2dedc94 100644 --- a/ash/shelf/shelf_layout_manager.cc +++ b/ash/shelf/shelf_layout_manager.cc
@@ -28,7 +28,6 @@ #include "ash/shelf/shelf_bezel_event_filter.h" #include "ash/shelf/shelf_layout_manager_observer.h" #include "ash/shell.h" -#include "ash/wm/gestures/shelf_gesture_handler.h" #include "ash/wm/window_animations.h" #include "ash/wm/workspace_controller.h" #include "base/auto_reset.h" @@ -302,10 +301,7 @@ workspace_controller_->GetWindowState()); switch (window_state) { case wm::WORKSPACE_WINDOW_STATE_FULL_SCREEN: { - const WmWindow* fullscreen_window = wm::GetWindowForFullscreenMode( - WmLookup::Get()->GetWindowForWidget(shelf_widget_)); - if (fullscreen_window && - fullscreen_window->GetWindowState()->hide_shelf_when_fullscreen()) { + if (IsShelfHiddenForFullscreen()) { SetState(SHELF_HIDDEN); } else { // The shelf is sometimes not hidden when in immersive fullscreen. @@ -370,10 +366,8 @@ return; aura::Window* target_window = static_cast<aura::Window*>(event->target()); - if (IsShelfWindow(target_window)) { - if (gesture_handler_.ProcessGestureEvent(*event, target_window)) - event->StopPropagation(); - } + if (IsShelfWindow(target_window) && ProcessGestureEvent(*event)) + event->StopPropagation(); } void ShelfLayoutManager::SetWindowOverlapsShelf(bool value) { @@ -389,108 +383,37 @@ observers_.RemoveObserver(observer); } -//////////////////////////////////////////////////////////////////////////////// -// ShelfLayoutManager, Gesture functions: +bool ShelfLayoutManager::ProcessGestureEvent(const ui::GestureEvent& event) { + // The gestures are disabled in the lock/login screen. + SessionStateDelegate* delegate = WmShell::Get()->GetSessionStateDelegate(); + if (!delegate->NumberOfLoggedInUsers() || delegate->IsScreenLocked()) + return false; -void ShelfLayoutManager::OnGestureEdgeSwipe(const ui::GestureEvent& gesture) { - if (visibility_state() == SHELF_AUTO_HIDE) { - gesture_drag_auto_hide_state_ = SHELF_AUTO_HIDE_SHOWN; - gesture_drag_status_ = GESTURE_DRAG_COMPLETE_IN_PROGRESS; - UpdateVisibilityState(); - gesture_drag_status_ = GESTURE_DRAG_NONE; - } -} + if (IsShelfHiddenForFullscreen()) + return false; -void ShelfLayoutManager::StartGestureDrag(const ui::GestureEvent& gesture) { - gesture_drag_status_ = GESTURE_DRAG_IN_PROGRESS; - gesture_drag_amount_ = 0.f; - gesture_drag_auto_hide_state_ = visibility_state() == SHELF_AUTO_HIDE - ? auto_hide_state() - : SHELF_AUTO_HIDE_SHOWN; - UpdateShelfBackground(BACKGROUND_CHANGE_ANIMATE); -} - -void ShelfLayoutManager::UpdateGestureDrag(const ui::GestureEvent& gesture) { - gesture_drag_amount_ += PrimaryAxisValue(gesture.details().scroll_y(), - gesture.details().scroll_x()); - LayoutShelf(); -} - -void ShelfLayoutManager::CompleteGestureDrag(const ui::GestureEvent& gesture) { - bool horizontal = IsHorizontalAlignment(); - bool should_change = false; - if (gesture.type() == ui::ET_GESTURE_SCROLL_END) { - // The visibility of the shelf changes only if the shelf was dragged X% - // along the correct axis. If the shelf was already visible, then the - // direction of the drag does not matter. - const float kDragHideThreshold = 0.4f; - gfx::Rect bounds = GetIdealBounds(); - float drag_ratio = fabs(gesture_drag_amount_) / - (horizontal ? bounds.height() : bounds.width()); - if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN) { - should_change = drag_ratio > kDragHideThreshold; - } else { - bool correct_direction = false; - switch (GetAlignment()) { - case SHELF_ALIGNMENT_BOTTOM: - case SHELF_ALIGNMENT_BOTTOM_LOCKED: - case SHELF_ALIGNMENT_RIGHT: - correct_direction = gesture_drag_amount_ < 0; - break; - case SHELF_ALIGNMENT_LEFT: - correct_direction = gesture_drag_amount_ > 0; - break; - } - should_change = correct_direction && drag_ratio > kDragHideThreshold; - } - } else if (gesture.type() == ui::ET_SCROLL_FLING_START) { - if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN) { - should_change = horizontal ? fabs(gesture.details().velocity_y()) > 0 - : fabs(gesture.details().velocity_x()) > 0; - } else { - should_change = - SelectValueForShelfAlignment(gesture.details().velocity_y() < 0, - gesture.details().velocity_x() > 0, - gesture.details().velocity_x() < 0); - } - } else { - NOTREACHED(); + if (event.type() == ui::ET_GESTURE_SCROLL_BEGIN) { + StartGestureDrag(event); + return true; } - if (!should_change) { - CancelGestureDrag(); - return; - } - if (shelf_widget_) { - shelf_widget_->Deactivate(); - shelf_widget_->status_area_widget()->Deactivate(); - } - gesture_drag_auto_hide_state_ = - gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN - ? SHELF_AUTO_HIDE_HIDDEN - : SHELF_AUTO_HIDE_SHOWN; - ShelfAutoHideBehavior new_auto_hide_behavior = - gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN - ? SHELF_AUTO_HIDE_BEHAVIOR_NEVER - : SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; + if (gesture_drag_status_ != GESTURE_DRAG_IN_PROGRESS) + return false; - // When in fullscreen and the shelf is forced to be auto hidden, the auto hide - // behavior affects neither the visibility state nor the auto hide state. Set - // |gesture_drag_status_| to GESTURE_DRAG_COMPLETE_IN_PROGRESS to set the auto - // hide state to |gesture_drag_auto_hide_state_|. - gesture_drag_status_ = GESTURE_DRAG_COMPLETE_IN_PROGRESS; - Shelf* shelf = shelf_widget_->shelf(); - if (shelf->auto_hide_behavior() != new_auto_hide_behavior) - shelf->SetAutoHideBehavior(new_auto_hide_behavior); - else - UpdateVisibilityState(); - gesture_drag_status_ = GESTURE_DRAG_NONE; -} + if (event.type() == ui::ET_GESTURE_SCROLL_UPDATE) { + UpdateGestureDrag(event); + return true; + } -void ShelfLayoutManager::CancelGestureDrag() { - gesture_drag_status_ = GESTURE_DRAG_CANCEL_IN_PROGRESS; - UpdateVisibilityState(); - gesture_drag_status_ = GESTURE_DRAG_NONE; + if (event.type() == ui::ET_GESTURE_SCROLL_END || + event.type() == ui::ET_SCROLL_FLING_START) { + CompleteGestureDrag(event); + return true; + } + + // Unexpected event. Reset the state and let the event fall through. + CancelGestureDrag(); + return false; } void ShelfLayoutManager::SetAnimationDurationOverride( @@ -1192,4 +1115,106 @@ return (state.visibility_state == SHELF_AUTO_HIDE) ? 1.0f : 0.0f; } +bool ShelfLayoutManager::IsShelfHiddenForFullscreen() const { + const WmWindow* fullscreen_window = wm::GetWindowForFullscreenMode( + WmLookup::Get()->GetWindowForWidget(shelf_widget_)); + return fullscreen_window && + fullscreen_window->GetWindowState()->hide_shelf_when_fullscreen(); +} + +//////////////////////////////////////////////////////////////////////////////// +// ShelfLayoutManager, Gesture functions: + +void ShelfLayoutManager::StartGestureDrag(const ui::GestureEvent& gesture) { + gesture_drag_status_ = GESTURE_DRAG_IN_PROGRESS; + gesture_drag_amount_ = 0.f; + gesture_drag_auto_hide_state_ = visibility_state() == SHELF_AUTO_HIDE + ? auto_hide_state() + : SHELF_AUTO_HIDE_SHOWN; + UpdateShelfBackground(BACKGROUND_CHANGE_ANIMATE); +} + +void ShelfLayoutManager::UpdateGestureDrag(const ui::GestureEvent& gesture) { + gesture_drag_amount_ += PrimaryAxisValue(gesture.details().scroll_y(), + gesture.details().scroll_x()); + LayoutShelf(); +} + +void ShelfLayoutManager::CompleteGestureDrag(const ui::GestureEvent& gesture) { + bool horizontal = IsHorizontalAlignment(); + bool should_change = false; + if (gesture.type() == ui::ET_GESTURE_SCROLL_END) { + // The visibility of the shelf changes only if the shelf was dragged X% + // along the correct axis. If the shelf was already visible, then the + // direction of the drag does not matter. + const float kDragHideThreshold = 0.4f; + gfx::Rect bounds = GetIdealBounds(); + float drag_ratio = fabs(gesture_drag_amount_) / + (horizontal ? bounds.height() : bounds.width()); + if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN) { + should_change = drag_ratio > kDragHideThreshold; + } else { + bool correct_direction = false; + switch (GetAlignment()) { + case SHELF_ALIGNMENT_BOTTOM: + case SHELF_ALIGNMENT_BOTTOM_LOCKED: + case SHELF_ALIGNMENT_RIGHT: + correct_direction = gesture_drag_amount_ < 0; + break; + case SHELF_ALIGNMENT_LEFT: + correct_direction = gesture_drag_amount_ > 0; + break; + } + should_change = correct_direction && drag_ratio > kDragHideThreshold; + } + } else if (gesture.type() == ui::ET_SCROLL_FLING_START) { + if (gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN) { + should_change = horizontal ? fabs(gesture.details().velocity_y()) > 0 + : fabs(gesture.details().velocity_x()) > 0; + } else { + should_change = + SelectValueForShelfAlignment(gesture.details().velocity_y() < 0, + gesture.details().velocity_x() > 0, + gesture.details().velocity_x() < 0); + } + } else { + NOTREACHED(); + } + + if (!should_change) { + CancelGestureDrag(); + return; + } + if (shelf_widget_) { + shelf_widget_->Deactivate(); + shelf_widget_->status_area_widget()->Deactivate(); + } + gesture_drag_auto_hide_state_ = + gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN + ? SHELF_AUTO_HIDE_HIDDEN + : SHELF_AUTO_HIDE_SHOWN; + ShelfAutoHideBehavior new_auto_hide_behavior = + gesture_drag_auto_hide_state_ == SHELF_AUTO_HIDE_SHOWN + ? SHELF_AUTO_HIDE_BEHAVIOR_NEVER + : SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; + + // When in fullscreen and the shelf is forced to be auto hidden, the auto hide + // behavior affects neither the visibility state nor the auto hide state. Set + // |gesture_drag_status_| to GESTURE_DRAG_COMPLETE_IN_PROGRESS to set the auto + // hide state to |gesture_drag_auto_hide_state_|. + gesture_drag_status_ = GESTURE_DRAG_COMPLETE_IN_PROGRESS; + Shelf* shelf = shelf_widget_->shelf(); + if (shelf->auto_hide_behavior() != new_auto_hide_behavior) + shelf->SetAutoHideBehavior(new_auto_hide_behavior); + else + UpdateVisibilityState(); + gesture_drag_status_ = GESTURE_DRAG_NONE; +} + +void ShelfLayoutManager::CancelGestureDrag() { + gesture_drag_status_ = GESTURE_DRAG_CANCEL_IN_PROGRESS; + UpdateVisibilityState(); + gesture_drag_status_ = GESTURE_DRAG_NONE; +} + } // namespace ash
diff --git a/ash/shelf/shelf_layout_manager.h b/ash/shelf/shelf_layout_manager.h index 1aa5039..ab237b2 100644 --- a/ash/shelf/shelf_layout_manager.h +++ b/ash/shelf/shelf_layout_manager.h
@@ -18,7 +18,6 @@ #include "ash/common/wm/workspace/workspace_types.h" #include "ash/common/wm_activation_observer.h" #include "ash/shelf/shelf_widget.h" -#include "ash/wm/gestures/shelf_gesture_handler.h" #include "base/macros.h" #include "base/observer_list.h" #include "base/timer/timer.h" @@ -120,12 +119,10 @@ void AddObserver(ShelfLayoutManagerObserver* observer); void RemoveObserver(ShelfLayoutManagerObserver* observer); - // Gesture related functions: - void OnGestureEdgeSwipe(const ui::GestureEvent& gesture); - void StartGestureDrag(const ui::GestureEvent& gesture); - void UpdateGestureDrag(const ui::GestureEvent& gesture); - void CompleteGestureDrag(const ui::GestureEvent& gesture); - void CancelGestureDrag(); + // Processes a gesture event and updates the status of the shelf when + // appropriate. Returns true if the gesture has been handled and it should not + // be processed any further, false otherwise. + bool ProcessGestureEvent(const ui::GestureEvent& event); // Set an animation duration override for the show / hide animation of the // shelf. Specifying 0 leads to use the default. @@ -294,6 +291,16 @@ // Compute |target_bounds| opacity based on gesture and shelf visibility. float ComputeTargetOpacity(const State& state); + // Returns true if there is a fullscreen window open that causes the shelf + // to be hidden. + bool IsShelfHiddenForFullscreen() const; + + // Gesture related functions: + void StartGestureDrag(const ui::GestureEvent& gesture); + void UpdateGestureDrag(const ui::GestureEvent& gesture); + void CompleteGestureDrag(const ui::GestureEvent& gesture); + void CancelGestureDrag(); + // The RootWindow is cached so that we don't invoke Shell::GetInstance() from // our destructor. We avoid that as at the time we're deleted Shell is being // deleted too. @@ -330,8 +337,6 @@ base::ObserverList<ShelfLayoutManagerObserver> observers_; - ShelfGestureHandler gesture_handler_; - // The shelf reacts to gesture-drags, and can be set to auto-hide for certain // gestures. Some shelf behaviour (e.g. visibility state, background color // etc.) are affected by various stages of the drag. The enum keeps track of
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc index 9f37d72..95713ce0 100644 --- a/ash/shelf/shelf_layout_manager_unittest.cc +++ b/ash/shelf/shelf_layout_manager_unittest.cc
@@ -12,6 +12,7 @@ #include "ash/common/material_design/material_design_controller.h" #include "ash/common/session/session_state_delegate.h" #include "ash/common/shelf/shelf_constants.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/shell_window_ids.h" #include "ash/common/system/status_area_widget.h" #include "ash/common/system/tray/system_tray.h" @@ -22,7 +23,6 @@ #include "ash/root_window_controller.h" #include "ash/shelf/shelf.h" #include "ash/shelf/shelf_layout_manager_observer.h" -#include "ash/shelf/shelf_view.h" #include "ash/shelf/shelf_widget.h" #include "ash/shell.h" #include "ash/test/ash_test_base.h" @@ -190,7 +190,7 @@ float scroll_delta = GetShelfLayoutManager()->PrimaryAxisValue(scroll_.y(), scroll_.x()); bool increasing_drag = - GetShelfWidget()->shelf()->SelectValueForShelfAlignment( + GetShelfLayoutManager()->SelectValueForShelfAlignment( scroll_delta<0, scroll_delta> 0, scroll_delta < 0); int shelf_size = GetShelfLayoutManager()->PrimaryAxisValue( shelf_bounds.height(), shelf_bounds.width()); @@ -1501,108 +1501,6 @@ display.bounds().right() - display.work_area().right()); } -TEST_F(ShelfLayoutManagerTest, GestureEdgeSwipe) { - Shelf* shelf = GetShelf(); - ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); - shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); - views::Widget* widget = CreateTestWidget(); - widget->Maximize(); - - ui::test::EventGenerator& generator(GetEventGenerator()); - - aura::Window* window = widget->GetNativeWindow(); - layout_manager->LayoutShelf(); - - // Edge swipe when SHELF_VISIBLE should not change visibility state. - EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); - generator.GestureEdgeSwipe(); - EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); - - // Edge swipe when AUTO_HIDE_HIDDEN should change to AUTO_HIDE_SHOWN. - shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); - layout_manager->LayoutShelf(); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); - generator.GestureEdgeSwipe(); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); - - widget->SetFullscreen(true); - wm::GetWindowState(window)->set_hide_shelf_when_fullscreen(false); - layout_manager->UpdateVisibilityState(); - - // Edge swipe in fullscreen + AUTO_HIDE_HIDDEN should show the shelf and - // remain fullscreen. - EXPECT_TRUE(widget->IsFullscreen()); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); - generator.GestureEdgeSwipe(); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); - EXPECT_TRUE(widget->IsFullscreen()); -} - -// Tests that gesture edge swipe events are forwarded to the right shelf on the -// right monitor (crbug.com/449851). -TEST_F(ShelfLayoutManagerTest, GestureEdgeSwipeMultiMonitor) { - if (!SupportsMultipleDisplays()) - return; - - // Create two displays. - UpdateDisplay("200x200,100x100"); - auto root_window_controllers = Shell::GetAllRootWindowControllers(); - ASSERT_EQ(2U, root_window_controllers.size()); - Shelf* shelf_1 = root_window_controllers[0]->GetShelf(); - Shelf* shelf_2 = root_window_controllers[1]->GetShelf(); - - // Create two maximized windows, one in each display. - aura::Window* window_1 = - CreateTestWindowInParent(root_window_controllers[0]->GetRootWindow()); - window_1->SetBounds(gfx::Rect(0, 0, 100, 100)); - window_1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); - window_1->Show(); - aura::Window* window_2 = - CreateTestWindowInParent(root_window_controllers[1]->GetRootWindow()); - window_2->SetBounds(gfx::Rect(201, 0, 100, 100)); - window_2->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); - window_2->Show(); - - // Make sure both are set to auto-hide and both are hidden. - shelf_1->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); - shelf_2->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); - shelf_1->shelf_layout_manager()->LayoutShelf(); - shelf_2->shelf_layout_manager()->LayoutShelf(); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); - EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); - - ui::test::EventGenerator monitor_1_generator( - root_window_controllers[0]->GetRootWindow()); - ui::test::EventGenerator monitor_2_generator( - root_window_controllers[1]->GetRootWindow()); - - // An edge swipe in one display should only affect the shelf in that display. - monitor_1_generator.GestureEdgeSwipe(); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf_1->GetAutoHideState()); - EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); - - // Back to normal after an update. - Shell::GetInstance()->UpdateShelfVisibility(); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); - EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); - - monitor_2_generator.GestureEdgeSwipe(); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); - EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); - EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf_2->GetAutoHideState()); -} - TEST_F(ShelfLayoutManagerTest, GestureDrag) { // Slop is an implementation detail of gesture recognition, and complicates // these tests. Ignore it.
diff --git a/ash/shelf/shelf_unittest.cc b/ash/shelf/shelf_unittest.cc index beaba32..686cc341 100644 --- a/ash/shelf/shelf_unittest.cc +++ b/ash/shelf/shelf_unittest.cc
@@ -8,7 +8,7 @@ #include "ash/common/shelf/shelf_button.h" #include "ash/common/shelf/shelf_model.h" -#include "ash/shelf/shelf_view.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/shelf/shelf_widget.h" #include "ash/test/ash_test_base.h" #include "ash/test/shelf_test_api.h"
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc index 8853ea0a..ee9e276c 100644 --- a/ash/shelf/shelf_view_unittest.cc +++ b/ash/shelf/shelf_view_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/shelf/shelf_view.h" +#include "ash/common/shelf/shelf_view.h" #include <algorithm> #include <memory> @@ -14,15 +14,14 @@ #include "ash/common/shelf/overflow_bubble_view.h" #include "ash/common/shelf/shelf_button.h" #include "ash/common/shelf/shelf_constants.h" +#include "ash/common/shelf/shelf_icon_observer.h" #include "ash/common/shelf/shelf_menu_model.h" #include "ash/common/shelf/shelf_model.h" #include "ash/common/shelf/shelf_tooltip_manager.h" +#include "ash/common/shelf/wm_shelf.h" #include "ash/common/shell_window_ids.h" #include "ash/common/test/material_design_controller_test_api.h" #include "ash/common/wm_shell.h" -#include "ash/root_window_controller.h" -#include "ash/shelf/shelf.h" -#include "ash/shelf/shelf_icon_observer.h" #include "ash/shelf/shelf_widget.h" #include "ash/shell.h" #include "ash/test/ash_test_base.h" @@ -34,8 +33,8 @@ #include "ash/test/test_shelf_item_delegate.h" #include "ash/test/test_shell_delegate.h" #include "ash/test/test_system_tray_delegate.h" -#include "base/compiler_specific.h" #include "base/i18n/rtl.h" +#include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/run_loop.h" #include "base/strings/string_number_conversions.h" @@ -193,16 +192,12 @@ observer()->Reset(); } -// Sometimes fails on trybots on win7_aura. http://crbug.com/177135 -#if defined(OS_WIN) -#define MAYBE_AddRemoveWithMultipleDisplays \ - DISABLED_AddRemoveWithMultipleDisplays -#else -#define MAYBE_AddRemoveWithMultipleDisplays AddRemoveWithMultipleDisplays -#endif // Make sure creating/deleting an window on one displays notifies a // shelf on external display as well as one on primary. -TEST_F(ShelfViewIconObserverTest, MAYBE_AddRemoveWithMultipleDisplays) { +TEST_F(ShelfViewIconObserverTest, AddRemoveWithMultipleDisplays) { + if (!SupportsMultipleDisplays()) + return; + UpdateDisplay("400x400,400x400"); TestShelfIconObserver second_observer(ShelfForSecondaryDisplay()); @@ -233,7 +228,8 @@ } TEST_F(ShelfViewIconObserverTest, BoundsChanged) { - ShelfWidget* widget = Shell::GetPrimaryRootWindowController()->shelf_widget(); + views::Widget* widget = + GetPrimaryShelf()->GetShelfViewForTesting()->GetWidget(); gfx::Rect shelf_bounds = widget->GetWindowBoundsInScreen(); shelf_bounds.set_width(shelf_bounds.width() / 2); ASSERT_GT(shelf_bounds.width(), 0); @@ -617,8 +613,8 @@ gfx::Point center_point_of_drag_item = drag_button->GetBoundsInScreen().CenterPoint(); - ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow(), - center_point_of_drag_item); + ui::test::EventGenerator& generator = GetEventGenerator(); + generator.set_current_location(center_point_of_drag_item); // Rip an item off to OverflowBubble. generator.PressLeftButton(); gfx::Point rip_off_point(center_point_of_drag_item.x(), 0); @@ -977,7 +973,7 @@ }; for (ShelfAlignment alignment : kAlignments) { - shelf_view_->shelf()->SetAlignment(alignment); + shelf_view_->wm_shelf()->SetAlignment(alignment); // For every 2 successive visible icons, expect that their bounds don't // intersect. for (int i = 1; i < test_api_->GetButtonCount() - 1; ++i) { @@ -1007,7 +1003,7 @@ }; for (size_t i = 0; i < arraysize(kAlignments); i++) { - shelf_view_->shelf()->SetAlignment(kAlignments[i]); + shelf_view_->wm_shelf()->SetAlignment(kAlignments[i]); // Make sure there are enough icons to trigger the overflow in new // orientation. @@ -1336,10 +1332,10 @@ // Confirm that shelf item bounds are correctly updated on shelf changes. TEST_F(ShelfViewTest, ShelfItemBoundsCheck) { VerifyShelfItemBoundsAreValid(); - shelf_view_->shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); + shelf_view_->wm_shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); test_api_->RunMessageLoopUntilAnimationsDone(); VerifyShelfItemBoundsAreValid(); - shelf_view_->shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); + shelf_view_->wm_shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); test_api_->RunMessageLoopUntilAnimationsDone(); VerifyShelfItemBoundsAreValid(); } @@ -1356,7 +1352,7 @@ ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); EXPECT_TRUE(test_api_->shelf_view()->GetWidget()->GetNativeWindow()); - ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); + ui::test::EventGenerator& generator = GetEventGenerator(); generator.MoveMouseTo(app_button->GetBoundsInScreen().CenterPoint()); // There's a delay to show the tooltip, so it's not visible yet. @@ -1506,7 +1502,7 @@ TEST_F(ShelfViewTest, ShouldHideTooltipWhenHoveringOnTooltip) { ShelfTooltipManager* tooltip_manager = test_api_->tooltip_manager(); tooltip_manager->set_timer_delay_for_test(0); - ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); + ui::test::EventGenerator& generator = GetEventGenerator(); // Move the mouse off any item and check that no tooltip is shown. generator.MoveMouseTo(gfx::Point(0, 0)); @@ -1598,8 +1594,7 @@ int item_width = test_for_overflow_view.GetButtonSize() + test_for_overflow_view.GetButtonSpacing(); - ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), - gfx::Point()); + ui::test::EventGenerator& generator = GetEventGenerator(); ShelfButton* button = test_for_overflow_view.GetButton(ripped_index); // Rip off the last visible item. gfx::Point start_point = button->GetBoundsInScreen().CenterPoint(); @@ -1822,10 +1817,14 @@ // Tests that the AppListButton renders as active in response to touches. TEST_F(ShelfViewTest, AppListButtonTouchFeedback) { + // Touch feedback is not available in material mode. + if (ash::MaterialDesignController::IsShelfMaterial()) + return; + AppListButton* app_list_button = shelf_view_->GetAppListButton(); EXPECT_FALSE(app_list_button->draw_background_as_active()); - ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); + ui::test::EventGenerator& generator = GetEventGenerator(); generator.set_current_location( app_list_button->GetBoundsInScreen().CenterPoint()); generator.PressTouch(); @@ -1839,10 +1838,14 @@ // Tests that a touch that slides out of the bounds of the AppListButton leads // to the end of rendering an active state. TEST_F(ShelfViewTest, AppListButtonTouchFeedbackCancellation) { + // Touch feedback is not available in material mode. + if (ash::MaterialDesignController::IsShelfMaterial()) + return; + AppListButton* app_list_button = shelf_view_->GetAppListButton(); EXPECT_FALSE(app_list_button->draw_background_as_active()); - ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); + ui::test::EventGenerator& generator = GetEventGenerator(); generator.set_current_location( app_list_button->GetBoundsInScreen().CenterPoint()); generator.PressTouch();
diff --git a/ash/shelf/shelf_widget_unittest.cc b/ash/shelf/shelf_widget_unittest.cc index 2b1fce3..6d955e2 100644 --- a/ash/shelf/shelf_widget_unittest.cc +++ b/ash/shelf/shelf_widget_unittest.cc
@@ -6,11 +6,11 @@ #include "ash/common/material_design/material_design_controller.h" #include "ash/common/shelf/shelf_delegate.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/system/status_area_widget.h" #include "ash/root_window_controller.h" #include "ash/shelf/shelf.h" #include "ash/shelf/shelf_layout_manager.h" -#include "ash/shelf/shelf_view.h" #include "ash/shell.h" #include "ash/test/ash_md_test_base.h" #include "ash/test/ash_test_helper.h"
diff --git a/ash/test/shelf_view_test_api.cc b/ash/test/shelf_view_test_api.cc index c57e169..e42d96dac 100644 --- a/ash/test/shelf_view_test_api.cc +++ b/ash/test/shelf_view_test_api.cc
@@ -8,7 +8,7 @@ #include "ash/common/shelf/shelf_button.h" #include "ash/common/shelf/shelf_constants.h" #include "ash/common/shelf/shelf_model.h" -#include "ash/shelf/shelf_view.h" +#include "ash/common/shelf/shelf_view.h" #include "base/message_loop/message_loop.h" #include "ui/views/animation/bounds_animator.h" #include "ui/views/controls/menu/menu_runner.h"
diff --git a/ash/wm/gestures/shelf_gesture_handler.cc b/ash/wm/gestures/shelf_gesture_handler.cc deleted file mode 100644 index 1996ad5b..0000000 --- a/ash/wm/gestures/shelf_gesture_handler.cc +++ /dev/null
@@ -1,79 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/wm/gestures/shelf_gesture_handler.h" - -#include "ash/common/session/session_state_delegate.h" -#include "ash/common/shelf/shelf_types.h" -#include "ash/common/system/status_area_widget.h" -#include "ash/common/wm/window_state.h" -#include "ash/common/wm_shell.h" -#include "ash/root_window_controller.h" -#include "ash/shelf/shelf_layout_manager.h" -#include "ash/shelf/shelf_widget.h" -#include "ash/wm/window_state_aura.h" -#include "ash/wm/window_util.h" -#include "ui/aura/window.h" -#include "ui/compositor/layer.h" -#include "ui/compositor/scoped_layer_animation_settings.h" -#include "ui/gfx/transform.h" -#include "ui/views/widget/widget.h" - -namespace ash { - -ShelfGestureHandler::ShelfGestureHandler() : drag_in_progress_(false) {} - -ShelfGestureHandler::~ShelfGestureHandler() {} - -bool ShelfGestureHandler::ProcessGestureEvent( - const ui::GestureEvent& event, - const aura::Window* event_target_window) { - // The gestures are disabled in the lock/login screen. - SessionStateDelegate* delegate = WmShell::Get()->GetSessionStateDelegate(); - if (!delegate->NumberOfLoggedInUsers() || delegate->IsScreenLocked()) - return false; - - RootWindowController* controller = - RootWindowController::ForWindow(event_target_window); - ShelfLayoutManager* shelf = controller->GetShelfLayoutManager(); - - if (event.type() == ui::ET_GESTURE_WIN8_EDGE_SWIPE) { - shelf->OnGestureEdgeSwipe(event); - return true; - } - - const aura::Window* fullscreen = controller->GetWindowForFullscreenMode(); - if (fullscreen && - wm::GetWindowState(fullscreen)->hide_shelf_when_fullscreen()) { - return false; - } - - if (event.type() == ui::ET_GESTURE_SCROLL_BEGIN) { - drag_in_progress_ = true; - shelf->StartGestureDrag(event); - return true; - } - - if (!drag_in_progress_) - return false; - - if (event.type() == ui::ET_GESTURE_SCROLL_UPDATE) { - shelf->UpdateGestureDrag(event); - return true; - } - - drag_in_progress_ = false; - - if (event.type() == ui::ET_GESTURE_SCROLL_END || - event.type() == ui::ET_SCROLL_FLING_START) { - shelf->CompleteGestureDrag(event); - return true; - } - - // Unexpected event. Reset the state and let the event fall through. - shelf->CancelGestureDrag(); - return false; -} - -} // namespace ash
diff --git a/ash/wm/gestures/shelf_gesture_handler.h b/ash/wm/gestures/shelf_gesture_handler.h deleted file mode 100644 index 8a28c575..0000000 --- a/ash/wm/gestures/shelf_gesture_handler.h +++ /dev/null
@@ -1,46 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_WM_GESTURES_SHELF_GESTURE_HANDLER_H_ -#define ASH_WM_GESTURES_SHELF_GESTURE_HANDLER_H_ - -#include "base/macros.h" - -namespace aura { -class Window; -} // namespace aura - -namespace ui { -class GestureEvent; -} // namespace ui - -namespace ash { - -// This manages gestures on the shelf (e.g. launcher, status tray) that affects -// the shelf visibility. -// TODO(jamescook): Consolidate this with ShelfLayoutManager and its notion of -// drag status. -class ShelfGestureHandler { - public: - ShelfGestureHandler(); - virtual ~ShelfGestureHandler(); - - // Processes a gesture event and updates the status of the shelf when - // appropriate. Returns true of the gesture has been handled and it should not - // be processed any farther, false otherwise. - // The caller must provide the |event_target_window| because the caller has - // knowledge of the type of the |event.target()| whether it's a |views::View| - // or an |aura::Window|. - bool ProcessGestureEvent(const ui::GestureEvent& event, - const aura::Window* event_target_window); - - private: - bool drag_in_progress_; - - DISALLOW_COPY_AND_ASSIGN(ShelfGestureHandler); -}; - -} // namespace ash - -#endif // ASH_WM_GESTURES_SHELF_GESTURE_HANDLER_H_
diff --git a/ash/wm/immersive_fullscreen_controller.cc b/ash/wm/immersive_fullscreen_controller.cc index 8890dc4..c2882f1 100644 --- a/ash/wm/immersive_fullscreen_controller.cc +++ b/ash/wm/immersive_fullscreen_controller.cc
@@ -406,12 +406,6 @@ return; switch (event->type()) { -#if defined(OS_WIN) - case ui::ET_GESTURE_WIN8_EDGE_SWIPE: - UpdateRevealedLocksForSwipe(GetSwipeType(event)); - event->SetHandled(); - break; -#endif case ui::ET_GESTURE_SCROLL_BEGIN: if (ShouldHandleGestureEvent(GetEventLocationInScreen(*event))) { gesture_begun_ = true; @@ -858,10 +852,6 @@ ImmersiveFullscreenController::SwipeType ImmersiveFullscreenController::GetSwipeType(ui::GestureEvent* event) const { -#if defined(OS_WIN) - if (event->type() == ui::ET_GESTURE_WIN8_EDGE_SWIPE) - return SWIPE_OPEN; -#endif if (event->type() != ui::ET_GESTURE_SCROLL_UPDATE) return SWIPE_NONE; // Make sure that it is a clear vertical gesture.
diff --git a/ash/wm/panels/attached_panel_window_targeter.cc b/ash/wm/panels/attached_panel_window_targeter.cc index c2c85df..0274559 100644 --- a/ash/wm/panels/attached_panel_window_targeter.cc +++ b/ash/wm/panels/attached_panel_window_targeter.cc
@@ -4,8 +4,8 @@ #include "ash/wm/panels/attached_panel_window_targeter.h" -#include "ash/aura/wm_shelf_aura.h" #include "ash/aura/wm_window_aura.h" +#include "ash/common/shelf/wm_shelf.h" #include "ash/common/wm/panels/panel_layout_manager.h" #include "ash/common/wm_shell.h" #include "ash/shelf/shelf.h" @@ -53,12 +53,21 @@ DCHECK(panel_layout_manager_->shelf()); gfx::Insets touch(default_touch_extend_); - set_touch_extend( - WmShelfAura::GetShelf(panel_layout_manager_->shelf()) - ->SelectValueForShelfAlignment( - gfx::Insets(touch.top(), touch.left(), 0, touch.right()), - gfx::Insets(touch.top(), 0, touch.bottom(), touch.right()), - gfx::Insets(touch.top(), touch.left(), touch.bottom(), 0))); + switch (panel_layout_manager_->shelf()->GetAlignment()) { + case SHELF_ALIGNMENT_BOTTOM: + case SHELF_ALIGNMENT_BOTTOM_LOCKED: + set_touch_extend( + gfx::Insets(touch.top(), touch.left(), 0, touch.right())); + break; + case SHELF_ALIGNMENT_LEFT: + set_touch_extend( + gfx::Insets(touch.top(), 0, touch.bottom(), touch.right())); + break; + case SHELF_ALIGNMENT_RIGHT: + set_touch_extend( + gfx::Insets(touch.top(), touch.left(), touch.bottom(), 0)); + break; + } } } // namespace ash
diff --git a/ash/wm/panels/panel_layout_manager_unittest.cc b/ash/wm/panels/panel_layout_manager_unittest.cc index 5ba95d4..335985f 100644 --- a/ash/wm/panels/panel_layout_manager_unittest.cc +++ b/ash/wm/panels/panel_layout_manager_unittest.cc
@@ -9,6 +9,7 @@ #include "ash/common/shelf/shelf_button.h" #include "ash/common/shelf/shelf_model.h" #include "ash/common/shelf/shelf_types.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/shell_window_ids.h" #include "ash/common/wm/mru_window_tracker.h" #include "ash/common/wm/window_state.h" @@ -17,7 +18,6 @@ #include "ash/shelf/shelf.h" #include "ash/shelf/shelf_layout_manager.h" #include "ash/shelf/shelf_util.h" -#include "ash/shelf/shelf_view.h" #include "ash/shelf/shelf_widget.h" #include "ash/shell.h" #include "ash/test/ash_test_base.h"
diff --git a/ash/wm/system_gesture_event_filter.cc b/ash/wm/system_gesture_event_filter.cc index 4cd98846..43132f6 100644 --- a/ash/wm/system_gesture_event_filter.cc +++ b/ash/wm/system_gesture_event_filter.cc
@@ -9,7 +9,6 @@ #include "ash/shell.h" #include "ash/touch/touch_uma.h" #include "ash/wm/gestures/overview_gesture_handler.h" -#include "ash/wm/gestures/shelf_gesture_handler.h" #include "ui/base/touch/touch_device.h" #include "ui/events/event.h" #include "ui/events/event_constants.h" @@ -17,8 +16,7 @@ namespace ash { SystemGestureEventFilter::SystemGestureEventFilter() - : overview_gesture_handler_(new OverviewGestureHandler), - shelf_gesture_handler_(new ShelfGestureHandler()) {} + : overview_gesture_handler_(new OverviewGestureHandler) {} SystemGestureEventFilter::~SystemGestureEventFilter() {} @@ -47,13 +45,6 @@ void SystemGestureEventFilter::OnGestureEvent(ui::GestureEvent* event) { aura::Window* target = static_cast<aura::Window*>(event->target()); ash::TouchUMA::GetInstance()->RecordGestureEvent(target, *event); - - if (event->type() == ui::ET_GESTURE_WIN8_EDGE_SWIPE && - shelf_gesture_handler_->ProcessGestureEvent(*event, target)) { - // Do not stop propagation, since the immersive fullscreen controller may - // need to handle this event. - return; - } } } // namespace ash
diff --git a/ash/wm/system_gesture_event_filter.h b/ash/wm/system_gesture_event_filter.h index 30cf3a21..d45c2a7 100644 --- a/ash/wm/system_gesture_event_filter.h +++ b/ash/wm/system_gesture_event_filter.h
@@ -12,7 +12,6 @@ namespace ash { class OverviewGestureHandler; -class ShelfGestureHandler; namespace test { class SystemGestureEventFilterTest; @@ -34,7 +33,6 @@ friend class ash::test::SystemGestureEventFilterTest; std::unique_ptr<OverviewGestureHandler> overview_gesture_handler_; - std::unique_ptr<ShelfGestureHandler> shelf_gesture_handler_; DISALLOW_COPY_AND_ASSIGN(SystemGestureEventFilter); };
diff --git a/ash/wm/window_animations.cc b/ash/wm/window_animations.cc index b39896b6..7702495 100644 --- a/ash/wm/window_animations.cc +++ b/ash/wm/window_animations.cc
@@ -482,10 +482,17 @@ gfx::Rect work_area = display::Screen::GetScreen()->GetDisplayNearestWindow(window).work_area(); int ltr_adjusted_x = base::i18n::IsRTL() ? work_area.right() : work_area.x(); - return shelf->SelectValueForShelfAlignment( - gfx::Rect(ltr_adjusted_x, work_area.bottom(), 0, 0), - gfx::Rect(work_area.x(), work_area.y(), 0, 0), - gfx::Rect(work_area.right(), work_area.y(), 0, 0)); + switch (shelf->alignment()) { + case SHELF_ALIGNMENT_BOTTOM: + case SHELF_ALIGNMENT_BOTTOM_LOCKED: + return gfx::Rect(ltr_adjusted_x, work_area.bottom(), 0, 0); + case SHELF_ALIGNMENT_LEFT: + return gfx::Rect(work_area.x(), work_area.y(), 0, 0); + case SHELF_ALIGNMENT_RIGHT: + return gfx::Rect(work_area.right(), work_area.y(), 0, 0); + } + NOTREACHED(); + return gfx::Rect(); } } // namespace ash
diff --git a/base/BUILD.gn b/base/BUILD.gn index 6cc8c9722..bf7092f 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn
@@ -280,6 +280,10 @@ # This file depends on files from the "debug/allocator" target, # but this target does not depend on "debug/allocator" (see # allocator.gyp for details). + "debug/activity_analyzer.cc", + "debug/activity_analyzer.h", + "debug/activity_tracker.cc", + "debug/activity_tracker.h", "debug/leak_annotations.h", "debug/leak_tracker.h", "debug/proc_maps_linux.cc", @@ -1757,6 +1761,8 @@ "containers/small_map_unittest.cc", "containers/stack_container_unittest.cc", "cpu_unittest.cc", + "debug/activity_analyzer_unittest.cc", + "debug/activity_tracker_unittest.cc", "debug/crash_logging_unittest.cc", "debug/debugger_unittest.cc", "debug/leak_tracker_unittest.cc",
diff --git a/base/base.gyp b/base/base.gyp index e6e39f1..427a960c 100644 --- a/base/base.gyp +++ b/base/base.gyp
@@ -398,6 +398,8 @@ 'containers/small_map_unittest.cc', 'containers/stack_container_unittest.cc', 'cpu_unittest.cc', + 'debug/activity_analyzer_unittest.cc', + 'debug/activity_tracker_unittest.cc', 'debug/crash_logging_unittest.cc', 'debug/debugger_unittest.cc', 'debug/leak_tracker_unittest.cc',
diff --git a/base/base.gypi b/base/base.gypi index 616c62a..ad2e3cea 100644 --- a/base/base.gypi +++ b/base/base.gypi
@@ -147,6 +147,10 @@ 'cpu.h', 'critical_closure.h', 'critical_closure_internal_ios.mm', + 'debug/activity_analyzer.cc', + 'debug/activity_analyzer.h', + 'debug/activity_tracker.cc', + 'debug/activity_tracker.h', 'debug/alias.cc', 'debug/alias.h', 'debug/asan_invalid_access.cc',
diff --git a/base/debug/OWNERS b/base/debug/OWNERS new file mode 100644 index 0000000..6150257 --- /dev/null +++ b/base/debug/OWNERS
@@ -0,0 +1,2 @@ +# For activity tracking: +per-file activity_*=bcwhite@chromium.org
diff --git a/base/debug/activity_analyzer.cc b/base/debug/activity_analyzer.cc new file mode 100644 index 0000000..3c4f808 --- /dev/null +++ b/base/debug/activity_analyzer.cc
@@ -0,0 +1,129 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/debug/activity_analyzer.h" + +#include "base/files/file.h" +#include "base/files/file_path.h" +#include "base/files/memory_mapped_file.h" +#include "base/logging.h" +#include "base/memory/ptr_util.h" +#include "base/stl_util.h" +#include "base/strings/string_util.h" + +namespace base { +namespace debug { + +ThreadActivityAnalyzer::ThreadActivityAnalyzer( + const ThreadActivityTracker& tracker) + : activity_snapshot_valid_(tracker.Snapshot(&activity_snapshot_)) {} + +ThreadActivityAnalyzer::ThreadActivityAnalyzer(void* base, size_t size) + : ThreadActivityAnalyzer(ThreadActivityTracker(base, size)) {} + +ThreadActivityAnalyzer::ThreadActivityAnalyzer( + PersistentMemoryAllocator* allocator, + PersistentMemoryAllocator::Reference reference) + : ThreadActivityAnalyzer(allocator->GetAsObject<char>( + reference, + GlobalActivityTracker::kTypeIdActivityTracker), + allocator->GetAllocSize(reference)) {} + +ThreadActivityAnalyzer::~ThreadActivityAnalyzer() {} + +GlobalActivityAnalyzer::GlobalActivityAnalyzer( + std::unique_ptr<PersistentMemoryAllocator> allocator) + : allocator_(std::move(allocator)), allocator_iterator_(allocator_.get()) {} + +GlobalActivityAnalyzer::~GlobalActivityAnalyzer() {} + +#if !defined(OS_NACL) +// static +std::unique_ptr<GlobalActivityAnalyzer> GlobalActivityAnalyzer::CreateWithFile( + const FilePath& file_path) { + // Map the file read-write so it can guarantee consistency between + // the analyzer and any trackers that my still be active. + std::unique_ptr<MemoryMappedFile> mmfile(new MemoryMappedFile()); + mmfile->Initialize(file_path, MemoryMappedFile::READ_WRITE); + if (!mmfile->IsValid()) + return nullptr; + + if (!FilePersistentMemoryAllocator::IsFileAcceptable(*mmfile, true)) + return nullptr; + + return WrapUnique(new GlobalActivityAnalyzer( + WrapUnique(new FilePersistentMemoryAllocator( + std::move(mmfile), 0, 0, base::StringPiece(), + true)))); +} +#endif // !defined(OS_NACL) + +ThreadActivityAnalyzer* GlobalActivityAnalyzer::GetFirstAnalyzer() { + PrepareAllAnalyzers(); + analyzers_iterator_ = analyzers_.begin(); + if (analyzers_iterator_ == analyzers_.end()) + return nullptr; + return analyzers_iterator_->second.get(); +} + +ThreadActivityAnalyzer* GlobalActivityAnalyzer::GetNextAnalyzer() { + DCHECK(analyzers_iterator_ != analyzers_.end()); + ++analyzers_iterator_; + if (analyzers_iterator_ == analyzers_.end()) + return nullptr; + return analyzers_iterator_->second.get(); +} + +ThreadActivityAnalyzer* GlobalActivityAnalyzer::GetAnalyzerForThread( + const ThreadKey& key) { + auto found = analyzers_.find(key); + if (found == analyzers_.end()) + return nullptr; + return found->second.get(); +} + +void GlobalActivityAnalyzer::PrepareAllAnalyzers() { + // Fetch all the records. This will retrieve only ones created since the + // last run since the PMA iterator will continue from where it left off. + uint32_t type; + PersistentMemoryAllocator::Reference ref; + while ((ref = allocator_iterator_.GetNext(&type)) != 0) { + switch (type) { + case GlobalActivityTracker::kTypeIdActivityTracker: + case GlobalActivityTracker::kTypeIdActivityTrackerFree: + // Free or not, add it to the list of references for later analysis. + tracker_references_.insert(ref); + break; + } + } + + // Go through all the known references and create analyzers for them with + // snapshots of the current state. + analyzers_.clear(); + for (PersistentMemoryAllocator::Reference tracker_ref : tracker_references_) { + // Get the actual data segment for the tracker. This can fail if the + // record has been marked "free" since the type will not match. + void* base = allocator_->GetAsObject<char>( + tracker_ref, GlobalActivityTracker::kTypeIdActivityTracker); + if (!base) + continue; + + // Create the analyzer on the data. This will capture a snapshot of the + // tracker state. This can fail if the tracker is somehow corrupted or is + // in the process of shutting down. + std::unique_ptr<ThreadActivityAnalyzer> analyzer(new ThreadActivityAnalyzer( + base, allocator_->GetAllocSize(tracker_ref))); + if (!analyzer->IsValid()) + continue; + + // Add this analyzer to the map of known ones, indexed by a unique thread + // identifier. + DCHECK(!ContainsKey(analyzers_, analyzer->GetThreadKey())); + analyzer->allocator_reference_ = ref; + analyzers_[analyzer->GetThreadKey()] = std::move(analyzer); + } +} + +} // namespace debug +} // namespace base
diff --git a/base/debug/activity_analyzer.h b/base/debug/activity_analyzer.h new file mode 100644 index 0000000..5333de2 --- /dev/null +++ b/base/debug/activity_analyzer.h
@@ -0,0 +1,159 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_DEBUG_ACTIVITY_ANALYZER_H_ +#define BASE_DEBUG_ACTIVITY_ANALYZER_H_ + +#include <map> +#include <memory> +#include <set> + +#include "base/base_export.h" +#include "base/debug/activity_tracker.h" + +namespace base { +namespace debug { + +// This class provides analysis of data captured from a ThreadActivityTracker. +// When created, it takes a snapshot of the data held by the tracker and +// makes that information available to other code. +class BASE_EXPORT ThreadActivityAnalyzer { + public: + using Activity = ThreadActivityTracker::Activity; + using ActivitySnapshot = ThreadActivityTracker::ActivitySnapshot; + + // This class provides keys that uniquely identify a thread, even across + // multiple processes. + class ThreadKey { + public: + ThreadKey(int64_t pid, int64_t tid) : pid_(pid), tid_(tid) {} + + bool operator<(const ThreadKey& rhs) const { + if (pid_ != rhs.pid_) + return pid_ < rhs.pid_; + return tid_ < rhs.tid_; + } + + bool operator==(const ThreadKey& rhs) const { + return (pid_ == rhs.pid_ && tid_ == rhs.tid_); + } + + private: + int64_t pid_; + int64_t tid_; + }; + + // Creates an analyzer for an existing activity |tracker|. A snapshot is taken + // immediately and the tracker is not referenced again. + explicit ThreadActivityAnalyzer(const ThreadActivityTracker& tracker); + + // Creates an analyzer for a block of memory currently or previously in-use + // by an activity-tracker. A snapshot is taken immediately and the memory + // is not referenced again. + ThreadActivityAnalyzer(void* base, size_t size); + + // Creates an analyzer for a block of memory held within a persistent-memory + // |allocator| at the given |reference|. A snapshot is taken immediately and + // the memory is not referenced again. + ThreadActivityAnalyzer(PersistentMemoryAllocator* allocator, + PersistentMemoryAllocator::Reference reference); + + ~ThreadActivityAnalyzer(); + + // Returns true iff the contained data is valid. Results from all other + // methods are undefined if this returns false. + bool IsValid() { return activity_snapshot_valid_; } + + // Gets the name of the thread. + const std::string& GetThreadName() { + return activity_snapshot_.thread_name; + } + + // Gets the TheadKey for this thread. + ThreadKey GetThreadKey() { + return ThreadKey(activity_snapshot_.process_id, + activity_snapshot_.thread_id); + } + + private: + friend class GlobalActivityAnalyzer; + + // The snapshot of the activity tracker taken at the moment of construction. + ActivitySnapshot activity_snapshot_; + + // Flag indicating if the snapshot data is valid. + bool activity_snapshot_valid_; + + // A reference into a persistent memory allocator, used by the global + // analyzer to know where this tracker came from. + PersistentMemoryAllocator::Reference allocator_reference_ = 0; + + DISALLOW_COPY_AND_ASSIGN(ThreadActivityAnalyzer); +}; + + +// This class manages analyzers for all known processes and threads as stored +// in a persistent memory allocator. It supports retrieval of them through +// iteration and directly using a ThreadKey, which allows for cross-references +// to be resolved. +// Note that though atomic snapshots are used and everything has its snapshot +// taken at the same time, the multi-snapshot itself is not atomic and thus may +// show small inconsistencies between threads if attempted on a live system. +class BASE_EXPORT GlobalActivityAnalyzer { + public: + using ThreadKey = ThreadActivityAnalyzer::ThreadKey; + + // Creates a global analyzer from a persistent memory allocator. + explicit GlobalActivityAnalyzer( + std::unique_ptr<PersistentMemoryAllocator> allocator); + + ~GlobalActivityAnalyzer(); + +#if !defined(OS_NACL) + // Creates a global analyzer using the contents of a file given in + // |file_path|. + static std::unique_ptr<GlobalActivityAnalyzer> CreateWithFile( + const FilePath& file_path); +#endif // !defined(OS_NACL) + + // Iterates over all known analyzers or returns null if there are no more. + // Ownership stays with the global analyzer object and all existing analyzer + // pointers are invalidated when GetFirstAnalyzer() is called. + ThreadActivityAnalyzer* GetFirstAnalyzer(); + ThreadActivityAnalyzer* GetNextAnalyzer(); + + // Gets the analyzer for a specific thread or null if there is none. + // Ownership stays with the global analyzer object. + ThreadActivityAnalyzer* GetAnalyzerForThread(const ThreadKey& key); + + private: + using AnalyzerMap = + std::map<ThreadKey, std::unique_ptr<ThreadActivityAnalyzer>>; + + // Finds, creates, and indexes analyzers for all known processes and threads. + void PrepareAllAnalyzers(); + + // The persistent memory allocator holding all tracking data. + std::unique_ptr<PersistentMemoryAllocator> allocator_; + + // The iterator for finding tracking information in the allocator. + PersistentMemoryAllocator::Iterator allocator_iterator_; + + // A set of all tracker memory references found within the allocator. + std::set<PersistentMemoryAllocator::Reference> tracker_references_; + + // A map, keyed by ThreadKey, of all valid activity analyzers. + AnalyzerMap analyzers_; + + // The iterator within the analyzers_ map for returning analyzers through + // first/next iteration. + AnalyzerMap::iterator analyzers_iterator_; + + DISALLOW_COPY_AND_ASSIGN(GlobalActivityAnalyzer); +}; + +} // namespace debug +} // namespace base + +#endif // BASE_DEBUG_ACTIVITY_ANALYZER_H_
diff --git a/base/debug/activity_analyzer_unittest.cc b/base/debug/activity_analyzer_unittest.cc new file mode 100644 index 0000000..ba23a481 --- /dev/null +++ b/base/debug/activity_analyzer_unittest.cc
@@ -0,0 +1,181 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/debug/activity_analyzer.h" + +#include <memory> + +#include "base/bind.h" +#include "base/debug/activity_tracker.h" +#include "base/files/file.h" +#include "base/files/file_util.h" +#include "base/files/memory_mapped_file.h" +#include "base/files/scoped_temp_dir.h" +#include "base/memory/ptr_util.h" +#include "base/pending_task.h" +#include "base/process/process.h" +#include "base/synchronization/condition_variable.h" +#include "base/synchronization/lock.h" +#include "base/synchronization/spin_wait.h" +#include "base/threading/platform_thread.h" +#include "base/threading/simple_thread.h" +#include "base/time/time.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace base { +namespace debug { + +namespace { + +class TestActivityTracker : public ThreadActivityTracker { + public: + TestActivityTracker(std::unique_ptr<char[]> memory, size_t mem_size) + : ThreadActivityTracker(memset(memory.get(), 0, mem_size), mem_size), + mem_segment_(std::move(memory)) {} + + ~TestActivityTracker() override {} + + private: + std::unique_ptr<char[]> mem_segment_; +}; + +} // namespace + + +class ActivityAnalyzerTest : public testing::Test { + public: + const int kMemorySize = 1 << 10; // 1MiB + const int kStackSize = 1 << 10; // 1KiB + + using Activity = ThreadActivityAnalyzer::Activity; + + ActivityAnalyzerTest() {} + + ~ActivityAnalyzerTest() override { + GlobalActivityTracker* global_tracker = GlobalActivityTracker::Get(); + if (global_tracker) { + global_tracker->ReleaseTrackerForCurrentThreadForTesting(); + delete global_tracker; + } + } + + std::unique_ptr<ThreadActivityTracker> CreateActivityTracker() { + std::unique_ptr<char[]> memory(new char[kStackSize]); + return WrapUnique(new TestActivityTracker(std::move(memory), kStackSize)); + } + + static void DoNothing() {} +}; + +TEST_F(ActivityAnalyzerTest, ThreadAnalyzerConstruction) { + std::unique_ptr<ThreadActivityTracker> tracker = CreateActivityTracker(); + { + ThreadActivityAnalyzer analyzer(*tracker); + EXPECT_TRUE(analyzer.IsValid()); + EXPECT_EQ(PlatformThread::GetName(), analyzer.GetThreadName()); + } + + // TODO(bcwhite): More tests once Analyzer does more. +} + + +// GlobalActivityAnalyzer tests below. + +class SimpleActivityThread : public SimpleThread { + public: + SimpleActivityThread(const std::string& name, + const void* source, + ThreadActivityTracker::ActivityType activity, + const ThreadActivityTracker::ActivityData& data) + : SimpleThread(name, Options()), + source_(source), + activity_(activity), + data_(data), + exit_condition_(&lock_) {} + + ~SimpleActivityThread() override {} + + void Run() override { + GlobalActivityTracker::Get() + ->GetOrCreateTrackerForCurrentThread() + ->PushActivity(source_, activity_, data_); + + { + AutoLock auto_lock(lock_); + ready_ = true; + while (!exit_) + exit_condition_.Wait(); + } + + GlobalActivityTracker::Get() + ->GetOrCreateTrackerForCurrentThread() + ->PopActivity(); + } + + void Exit() { + AutoLock auto_lock(lock_); + exit_ = true; + exit_condition_.Signal(); + } + + void WaitReady() { + SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(ready_); + } + + private: + const void* source_; + ThreadActivityTracker::ActivityType activity_; + ThreadActivityTracker::ActivityData data_; + + bool ready_ = false; + bool exit_ = false; + Lock lock_; + ConditionVariable exit_condition_; + + DISALLOW_COPY_AND_ASSIGN(SimpleActivityThread); +}; + +TEST_F(ActivityAnalyzerTest, GlobalAnalyzerConstruction) { + GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3); + + PersistentMemoryAllocator* allocator = + GlobalActivityTracker::Get()->allocator(); + GlobalActivityAnalyzer analyzer(WrapUnique( + new PersistentMemoryAllocator(const_cast<void*>(allocator->data()), + allocator->size(), 0, 0, "", true))); + + // The only thread at thois point is the test thread. + ThreadActivityAnalyzer* ta1 = analyzer.GetFirstAnalyzer(); + ASSERT_TRUE(ta1); + EXPECT_FALSE(analyzer.GetNextAnalyzer()); + ThreadActivityAnalyzer::ThreadKey tk1 = ta1->GetThreadKey(); + EXPECT_EQ(ta1, analyzer.GetAnalyzerForThread(tk1)); + + // Create a second thread that will do something. + SimpleActivityThread t2("t2", nullptr, ThreadActivityTracker::ACT_TASK, + ThreadActivityTracker::ActivityData::ForTask(11)); + t2.Start(); + t2.WaitReady(); + + // Now there should be two. + EXPECT_TRUE(analyzer.GetFirstAnalyzer()); + EXPECT_TRUE(analyzer.GetNextAnalyzer()); + EXPECT_FALSE(analyzer.GetNextAnalyzer()); + + // Let thread exit. + t2.Exit(); + t2.Join(); + + // Now there should be only one again. Calling GetFirstAnalyzer invalidates + // any previously returned analyzer pointers. + ThreadActivityAnalyzer* ta2 = analyzer.GetFirstAnalyzer(); + ASSERT_TRUE(ta2); + EXPECT_FALSE(analyzer.GetNextAnalyzer()); + ThreadActivityAnalyzer::ThreadKey tk2 = ta2->GetThreadKey(); + EXPECT_EQ(ta2, analyzer.GetAnalyzerForThread(tk2)); + EXPECT_EQ(tk1, tk2); +} + +} // namespace debug +} // namespace base
diff --git a/base/debug/activity_tracker.cc b/base/debug/activity_tracker.cc new file mode 100644 index 0000000..ea9e1258 --- /dev/null +++ b/base/debug/activity_tracker.cc
@@ -0,0 +1,780 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/debug/activity_tracker.h" + +#include "base/debug/stack_trace.h" +#include "base/files/file.h" +#include "base/files/file_path.h" +#include "base/files/memory_mapped_file.h" +#include "base/logging.h" +#include "base/memory/ptr_util.h" +#include "base/metrics/field_trial.h" +#include "base/metrics/histogram_macros.h" +#include "base/pending_task.h" +#include "base/process/process.h" +#include "base/process/process_handle.h" +#include "base/stl_util.h" +#include "base/strings/string_util.h" +#include "base/threading/platform_thread.h" + +namespace base { +namespace debug { + +namespace { + +// A number that identifies the memory as having been initialized. It's +// arbitrary but happens to be the first 8 bytes of SHA1(ThreadActivityTracker). +// A version number is added on so that major structure changes won't try to +// read an older version (since the cookie won't match). +const uint64_t kHeaderCookie = 0xC0029B240D4A3092ULL + 1; // v1 + +// The minimum depth a stack should support. +const int kMinStackDepth = 2; + +} // namespace + + +// This information is kept for every thread that is tracked. It is filled +// the very first time the thread is seen. All fields must be of exact sizes +// so there is no issue moving between 32 and 64-bit builds. +struct ThreadActivityTracker::Header { + // This unique number indicates a valid initialization of the memory. + uint64_t cookie; + + // The process-id and thread-id to which this data belongs. These identifiers + // are not guaranteed to mean anything but are unique, in combination, among + // all active trackers. It would be nice to always have the process_id be a + // 64-bit value but the necessity of having it atomic (for the memory barriers + // it provides) limits it to the natural word size of the machine. +#ifdef ARCH_CPU_64_BITS + std::atomic<int64_t> process_id; +#else + std::atomic<int32_t> process_id; + int32_t process_id_padding; +#endif + + union { + int64_t as_id; +#if defined(OS_WIN) + // On Windows, the handle itself is often a pseudo-handle with a common + // value meaning "this thread" and so the thread-id is used. The former + // can be converted to a thread-id with a system call. + PlatformThreadId as_tid; +#elif defined(OS_POSIX) + // On Posix, the handle is always a unique identifier so no conversion + // needs to be done. However, it's value is officially opaque so there + // is no one correct way to convert it to a numerical identifier. + PlatformThreadHandle::Handle as_handle; +#endif + } thread_ref; + + // The start-time and start-ticks when the data was created. Each activity + // record has a |time_internal| value that can be converted to a "wall time" + // with these two values. + int64_t start_time; + int64_t start_ticks; + + // The number of Activity slots in the data. + uint32_t stack_slots; + + // The current depth of the stack. This may be greater than the number of + // slots. If the depth exceeds the number of slots, the newest entries + // won't be recorded. + std::atomic<uint32_t> current_depth; + + // A memory location used to indicate if changes have been made to the stack + // that would invalidate an in-progress read of its contents. The active + // tracker will zero the value whenever something gets popped from the + // stack. A monitoring tracker can write a non-zero value here, copy the + // stack contents, and read the value to know, if it is still non-zero, that + // the contents didn't change while being copied. This can handle concurrent + // snapshot operations only if each snapshot writes a different bit (which + // is not the current implementation so no parallel snapshots allowed). + std::atomic<uint32_t> stack_unchanged; + + // The name of the thread (up to a maximum length). Dynamic-length names + // are not practical since the memory has to come from the same persistent + // allocator that holds this structure and to which this object has no + // reference. + char thread_name[32]; +}; + +// It doesn't matter what is contained in this (though it will be all zeros) +// as only the address of it is important. +const ThreadActivityTracker::ActivityData + ThreadActivityTracker::kNullActivityData = {}; + +ThreadActivityTracker::ActivityData +ThreadActivityTracker::ActivityData::ForThread( + const PlatformThreadHandle& handle) { + // Header already has a conversion union; reuse that. + ThreadActivityTracker::Header header; + header.thread_ref.as_id = 0; // Zero the union in case other is smaller. +#if defined(OS_WIN) + header.thread_ref.as_tid = ::GetThreadId(handle.platform_handle()); +#elif defined(OS_POSIX) + header.thread_ref.as_handle = handle.platform_handle(); +#endif + return ForThread(header.thread_ref.as_id); +} + +ThreadActivityTracker::ActivitySnapshot::ActivitySnapshot() {} +ThreadActivityTracker::ActivitySnapshot::~ActivitySnapshot() {} + + +ThreadActivityTracker::ThreadActivityTracker(void* base, size_t size) + : header_(static_cast<Header*>(base)), + stack_(reinterpret_cast<Activity*>(reinterpret_cast<char*>(base) + + sizeof(Header))), + stack_slots_( + static_cast<uint32_t>((size - sizeof(Header)) / sizeof(Activity))) { + DCHECK(thread_checker_.CalledOnValidThread()); + + // Verify the parameters but fail gracefully if they're not valid so that + // production code based on external inputs will not crash. IsValid() will + // return false in this case. + if (!base || + // Ensure there is enough space for the header and at least a few records. + size < sizeof(Header) + kMinStackDepth * sizeof(Activity) || + // Ensure that the |stack_slots_| calculation didn't overflow. + (size - sizeof(Header)) / sizeof(Activity) > + std::numeric_limits<uint32_t>::max()) { + NOTREACHED(); + return; + } + + // Ensure that the thread reference doesn't exceed the size of the ID number. + // This won't compile at the global scope because Header is a private struct. + static_assert( + sizeof(header_->thread_ref) == sizeof(header_->thread_ref.as_id), + "PlatformThreadHandle::Handle is too big to hold in 64-bit ID"); + + // Ensure that the alignment of Activity.data is properly aligned to a + // 64-bit boundary so there are no interoperability-issues across cpu + // architectures. + static_assert(offsetof(Activity, data) % sizeof(uint64_t) == 0, + "ActivityData.data is not 64-bit aligned"); + + // Provided memory should either be completely initialized or all zeros. + if (header_->cookie == 0) { + // This is a new file. Double-check other fields and then initialize. + DCHECK_EQ(0, header_->process_id.load(std::memory_order_relaxed)); + DCHECK_EQ(0, header_->thread_ref.as_id); + DCHECK_EQ(0, header_->start_time); + DCHECK_EQ(0, header_->start_ticks); + DCHECK_EQ(0U, header_->stack_slots); + DCHECK_EQ(0U, header_->current_depth.load(std::memory_order_relaxed)); + DCHECK_EQ(0U, header_->stack_unchanged.load(std::memory_order_relaxed)); + DCHECK_EQ(0, stack_[0].time_internal); + DCHECK_EQ(0U, stack_[0].origin_address); + DCHECK_EQ(0U, stack_[0].call_stack[0]); + DCHECK_EQ(0U, stack_[0].data.task.sequence_id); + +#if defined(OS_WIN) + header_->thread_ref.as_tid = PlatformThread::CurrentId(); +#elif defined(OS_POSIX) + header_->thread_ref.as_handle = + PlatformThread::CurrentHandle().platform_handle(); +#endif + header_->start_time = base::Time::Now().ToInternalValue(); + header_->start_ticks = base::TimeTicks::Now().ToInternalValue(); + header_->stack_slots = stack_slots_; + strlcpy(header_->thread_name, PlatformThread::GetName(), + sizeof(header_->thread_name)); + header_->cookie = kHeaderCookie; + + // This is done last so as to guarantee that everything above is "released" + // by the time this value gets written. + header_->process_id.store(GetCurrentProcId(), std::memory_order_release); + + valid_ = true; + DCHECK(IsValid()); + } else { + // This is a file with existing data. Perform basic consistency checks. + valid_ = true; + valid_ = IsValid(); + } +} + +ThreadActivityTracker::~ThreadActivityTracker() {} + +void ThreadActivityTracker::PushActivity(const void* origin, + ActivityType type, + const ActivityData& data) { + // A thread-checker creates a lock to check the thread-id which means + // re-entry into this code if lock acquisitions are being tracked. + DCHECK(type == ACT_LOCK_ACQUIRE || thread_checker_.CalledOnValidThread()); + + // Get the current depth of the stack. No access to other memory guarded + // by this variable is done here so a "relaxed" load is acceptable. + uint32_t depth = header_->current_depth.load(std::memory_order_relaxed); + + // Handle the case where the stack depth has exceeded the storage capacity. + // Extra entries will be lost leaving only the base of the stack. + if (depth >= stack_slots_) { + // Since no other threads modify the data, no compare/exchange is needed. + // Since no other memory is being modified, a "relaxed" store is acceptable. + header_->current_depth.store(depth + 1, std::memory_order_relaxed); + return; + } + + // Get a pointer to the next activity and load it. No atomicity is required + // here because the memory is known only to this thread. It will be made + // known to other threads once the depth is incremented. + Activity* activity = &stack_[depth]; + activity->time_internal = base::TimeTicks::Now().ToInternalValue(); + activity->origin_address = reinterpret_cast<uintptr_t>(origin); + activity->activity_type = type; + activity->data = data; + +#if defined(SYZYASAN) + // Create a stacktrace from the current location and get the addresses. + StackTrace stack_trace; + size_t stack_depth; + const void* const* stack_addrs = stack_trace.Addresses(&stack_depth); + // Copy the stack addresses, ignoring the first one (here). + size_t i; + for (i = 1; i < stack_depth && i < kActivityCallStackSize; ++i) { + activity->call_stack[i - 1] = reinterpret_cast<uintptr_t>(stack_addrs[i]); + } + activity->call_stack[i - 1] = 0; +#else + // Since the memory was initially zero and nothing ever overwrites it in + // this "else" case, there is no need to write even the null terminator. + //activity->call_stack[0] = 0; +#endif + + // Save the incremented depth. Because this guards |activity| memory filled + // above that may be read by another thread once the recorded depth changes, + // a "release" store is required. + header_->current_depth.store(depth + 1, std::memory_order_release); +} + +void ThreadActivityTracker::ChangeActivity(ActivityType type, + const ActivityData& data) { + DCHECK(thread_checker_.CalledOnValidThread()); + DCHECK(type != ACT_NULL || &data != &kNullActivityData); + + // Get the current depth of the stack and acquire the data held there. + uint32_t depth = header_->current_depth.load(std::memory_order_acquire); + DCHECK_LT(0U, depth); + + // Update the information if it is being recorded (i.e. within slot limit). + if (depth <= stack_slots_) { + Activity* activity = &stack_[depth - 1]; + + if (type != ACT_NULL) { + DCHECK_EQ(activity->activity_type & ACT_CATEGORY_MASK, + type & ACT_CATEGORY_MASK); + activity->activity_type = type; + } + + if (&data != &kNullActivityData) + activity->data = data; + } +} + +void ThreadActivityTracker::PopActivity() { + // Do an atomic decrement of the depth. No changes to stack entries guarded + // by this variable are done here so a "relaxed" operation is acceptable. + // |depth| will receive the value BEFORE it was modified. + uint32_t depth = + header_->current_depth.fetch_sub(1, std::memory_order_relaxed); + + // Validate that everything is running correctly. + DCHECK_LT(0U, depth); + + // A thread-checker creates a lock to check the thread-id which means + // re-entry into this code if lock acquisitions are being tracked. + DCHECK(stack_[depth - 1].activity_type == ACT_LOCK_ACQUIRE || + thread_checker_.CalledOnValidThread()); + + // The stack has shrunk meaning that some other thread trying to copy the + // contents for reporting purposes could get bad data. That thread would + // have written a non-zero value into |stack_unchanged|; clearing it here + // will let that thread detect that something did change. This needs to + // happen after the atomic |depth| operation above so a "release" store + // is required. + header_->stack_unchanged.store(0, std::memory_order_release); +} + +bool ThreadActivityTracker::IsValid() const { + if (header_->cookie != kHeaderCookie || + header_->process_id.load(std::memory_order_relaxed) == 0 || + header_->thread_ref.as_id == 0 || + header_->start_time == 0 || + header_->start_ticks == 0 || + header_->stack_slots != stack_slots_ || + header_->thread_name[sizeof(header_->thread_name) - 1] != '\0') { + return false; + } + + return valid_; +} + +bool ThreadActivityTracker::Snapshot(ActivitySnapshot* output_snapshot) const { + DCHECK(output_snapshot); + + // There is no "called on valid thread" check for this method as it can be + // called from other threads or even other processes. It is also the reason + // why atomic operations must be used in certain places above. + + // It's possible for the data to change while reading it in such a way that it + // invalidates the read. Make several attempts but don't try forever. + const int kMaxAttempts = 10; + uint32_t depth; + + // Stop here if the data isn't valid. + if (!IsValid()) + return false; + + // Allocate the maximum size for the stack so it doesn't have to be done + // during the time-sensitive snapshot operation. It is shrunk once the + // actual size is known. + output_snapshot->activity_stack.reserve(stack_slots_); + + for (int attempt = 0; attempt < kMaxAttempts; ++attempt) { + // Remember the process and thread IDs to ensure they aren't replaced + // during the snapshot operation. Use "acquire" to ensure that all the + // non-atomic fields of the structure are valid (at least at the current + // moment in time). + const int64_t starting_process_id = + header_->process_id.load(std::memory_order_acquire); + const int64_t starting_thread_id = header_->thread_ref.as_id; + + // Write a non-zero value to |stack_unchanged| so it's possible to detect + // at the end that nothing has changed since copying the data began. A + // "cst" operation is required to ensure it occurs before everything else. + // Using "cst" memory ordering is relatively expensive but this is only + // done during analysis so doesn't directly affect the worker threads. + header_->stack_unchanged.store(1, std::memory_order_seq_cst); + + // Fetching the current depth also "acquires" the contents of the stack. + depth = header_->current_depth.load(std::memory_order_acquire); + uint32_t count = std::min(depth, stack_slots_); + output_snapshot->activity_stack.resize(count); + if (count > 0) { + // Copy the existing contents. Memcpy is used for speed. + memcpy(&output_snapshot->activity_stack[0], stack_, + count * sizeof(Activity)); + } + + // Retry if something changed during the copy. A "cst" operation ensures + // it must happen after all the above operations. + if (!header_->stack_unchanged.load(std::memory_order_seq_cst)) + continue; + + // Stack copied. Record it's full depth. + output_snapshot->activity_stack_depth = depth; + + // TODO(bcwhite): Snapshot other things here. + + // Get the general thread information. Loading of "process_id" is guaranteed + // to be last so that it's possible to detect below if any content has + // changed while reading it. It's technically possible for a thread to end, + // have its data cleared, a new thread get created with the same IDs, and + // it perform an action which starts tracking all in the time since the + // ID reads above but the chance is so unlikely that it's not worth the + // effort and complexity of protecting against it (perhaps with an + // "unchanged" field like is done for the stack). + output_snapshot->thread_name = + std::string(header_->thread_name, sizeof(header_->thread_name) - 1); + output_snapshot->thread_id = header_->thread_ref.as_id; + output_snapshot->process_id = + header_->process_id.load(std::memory_order_seq_cst); + + // All characters of the thread-name buffer were copied so as to not break + // if the trailing NUL were missing. Now limit the length if the actual + // name is shorter. + output_snapshot->thread_name.resize( + strlen(output_snapshot->thread_name.c_str())); + + // If the process or thread ID has changed then the tracker has exited and + // the memory reused by a new one. Try again. + if (output_snapshot->process_id != starting_process_id || + output_snapshot->thread_id != starting_thread_id) { + continue; + } + + // Only successful if the data is still valid once everything is done since + // it's possible for the thread to end somewhere in the middle and all its + // values become garbage. + if (!IsValid()) + return false; + + // Change all the timestamps in the activities from "ticks" to "wall" time. + const Time start_time = Time::FromInternalValue(header_->start_time); + const int64_t start_ticks = header_->start_ticks; + for (Activity& activity : output_snapshot->activity_stack) { + activity.time_internal = + (start_time + + TimeDelta::FromInternalValue(activity.time_internal - start_ticks)) + .ToInternalValue(); + } + + // Success! + return true; + } + + // Too many attempts. + return false; +} + +// static +size_t ThreadActivityTracker::SizeForStackDepth(int stack_depth) { + return static_cast<size_t>(stack_depth) * sizeof(Activity) + sizeof(Header); +} + + +GlobalActivityTracker* GlobalActivityTracker::g_tracker_ = nullptr; + +GlobalActivityTracker::ManagedActivityTracker::ManagedActivityTracker( + PersistentMemoryAllocator::Reference mem_reference, + void* base, + size_t size) + : ThreadActivityTracker(base, size), + mem_reference_(mem_reference), + mem_base_(base) {} + +GlobalActivityTracker::ManagedActivityTracker::~ManagedActivityTracker() { + // The global |g_tracker_| must point to the owner of this class since all + // objects of this type must be destructed before |g_tracker_| can be changed + // (something that only occurs in tests). + DCHECK(g_tracker_); + g_tracker_->ReturnTrackerMemory(this); +} + +void GlobalActivityTracker::CreateWithAllocator( + std::unique_ptr<PersistentMemoryAllocator> allocator, + int stack_depth) { + // There's no need to do anything with the result. It is self-managing. + GlobalActivityTracker* global_tracker = + new GlobalActivityTracker(std::move(allocator), stack_depth); + // Create a tracker for this thread since it is known. + global_tracker->CreateTrackerForCurrentThread(); +} + +#if !defined(OS_NACL) +// static +void GlobalActivityTracker::CreateWithFile(const FilePath& file_path, + size_t size, + uint64_t id, + StringPiece name, + int stack_depth) { + DCHECK(!file_path.empty()); + DCHECK_GE(static_cast<uint64_t>(std::numeric_limits<int64_t>::max()), size); + + // Create and map the file into memory and make it globally available. + std::unique_ptr<MemoryMappedFile> mapped_file(new MemoryMappedFile()); + bool success = + mapped_file->Initialize(File(file_path, + File::FLAG_CREATE_ALWAYS | File::FLAG_READ | + File::FLAG_WRITE | File::FLAG_SHARE_DELETE), + {0, static_cast<int64_t>(size)}, + MemoryMappedFile::READ_WRITE_EXTEND); + DCHECK(success); + CreateWithAllocator(WrapUnique(new FilePersistentMemoryAllocator( + std::move(mapped_file), size, id, name, false)), + stack_depth); +} +#endif // !defined(OS_NACL) + +// static +void GlobalActivityTracker::CreateWithLocalMemory(size_t size, + uint64_t id, + StringPiece name, + int stack_depth) { + CreateWithAllocator( + WrapUnique(new LocalPersistentMemoryAllocator(size, id, name)), + stack_depth); +} + +ThreadActivityTracker* GlobalActivityTracker::CreateTrackerForCurrentThread() { + DCHECK(!this_thread_tracker_.Get()); + + PersistentMemoryAllocator::Reference mem_reference = 0; + void* mem_base = nullptr; + + // Get the current count of available memories, acquiring the array values. + int count = available_memories_count_.load(std::memory_order_acquire); + while (count > 0) { + // There is a memory block that was previously released (and zeroed) so + // just re-use that rather than allocating a new one. Use "relaxed" because + // the value is guarded by the |count| "acquire". A zero reference replaces + // the existing value so that it can't be used by another thread that + // manages to interrupt this one before the count can be decremented. + // A zero reference is also required for the "push" operation to work + // once the count finally does get decremented. + mem_reference = + available_memories_[count - 1].exchange(0, std::memory_order_relaxed); + + // If the reference is zero, it's already been taken but count hasn't yet + // been decremented. Give that other thread a chance to finish then reload + // the "count" value and try again. + if (!mem_reference) { + PlatformThread::YieldCurrentThread(); + count = available_memories_count_.load(std::memory_order_acquire); + continue; + } + + // Decrement the count indicating that the value has been taken. If this + // fails then another thread has pushed something new and incremented the + // count. + // NOTE: |oldcount| will be loaded with the existing value. + int oldcount = count; + if (!available_memories_count_.compare_exchange_strong( + oldcount, count - 1, std::memory_order_acquire, + std::memory_order_acquire)) { + DCHECK_LT(count, oldcount); + + // Restore the reference that was zeroed above and try again. + available_memories_[count - 1].store(mem_reference, + std::memory_order_relaxed); + count = oldcount; + continue; + } + + // Turn the reference back into one of the activity-tracker type. + mem_base = allocator_->GetAsObject<char>(mem_reference, + kTypeIdActivityTrackerFree); + DCHECK(mem_base); + DCHECK_LE(stack_memory_size_, allocator_->GetAllocSize(mem_reference)); + bool changed = allocator_->ChangeType(mem_reference, kTypeIdActivityTracker, + kTypeIdActivityTrackerFree); + DCHECK(changed); + + // Success. + break; + } + + // Handle the case where no previously-used memories are available. + if (count == 0) { + // Allocate a block of memory from the persistent segment. + mem_reference = + allocator_->Allocate(stack_memory_size_, kTypeIdActivityTracker); + if (mem_reference) { + // Success. Convert the reference to an actual memory address. + mem_base = + allocator_->GetAsObject<char>(mem_reference, kTypeIdActivityTracker); + // Make the allocation iterable so it can be found by other processes. + allocator_->MakeIterable(mem_reference); + } else { + // Failure. This shouldn't happen. + NOTREACHED(); + // But if it does, probably because the allocator wasn't given enough + // memory to satisfy all possible requests, handle it gracefully by + // allocating the required memory from the heap. + mem_base = new char[stack_memory_size_]; + memset(mem_base, 0, stack_memory_size_); + // Report the thread-count at which the allocator was full so that the + // failure can be seen and underlying memory resized appropriately. + UMA_HISTOGRAM_COUNTS_1000( + "ActivityTracker.ThreadTrackers.MemLimitTrackerCount", + thread_tracker_count_.load(std::memory_order_relaxed)); + } + } + + // Create a tracker with the acquired memory and set it as the tracker + // for this particular thread in thread-local-storage. + DCHECK(mem_base); + ManagedActivityTracker* tracker = + new ManagedActivityTracker(mem_reference, mem_base, stack_memory_size_); + DCHECK(tracker->IsValid()); + this_thread_tracker_.Set(tracker); + int old_count = thread_tracker_count_.fetch_add(1, std::memory_order_relaxed); + + UMA_HISTOGRAM_ENUMERATION("ActivityTracker.ThreadTrackers.Count", + old_count + 1, kMaxThreadCount); + return tracker; +} + +void GlobalActivityTracker::ReleaseTrackerForCurrentThreadForTesting() { + ThreadActivityTracker* tracker = + reinterpret_cast<ThreadActivityTracker*>(this_thread_tracker_.Get()); + if (tracker) { + this_thread_tracker_.Free(); + delete tracker; + } +} + +GlobalActivityTracker::GlobalActivityTracker( + std::unique_ptr<PersistentMemoryAllocator> allocator, + int stack_depth) + : allocator_(std::move(allocator)), + stack_memory_size_(ThreadActivityTracker::SizeForStackDepth(stack_depth)), + this_thread_tracker_(&OnTLSDestroy), + thread_tracker_count_(0), + available_memories_count_(0) { + // Clear the available-memories array. + memset(available_memories_, 0, sizeof(available_memories_)); + + // Ensure the passed memory is valid and empty (iterator finds nothing). + uint32_t type; + DCHECK(!PersistentMemoryAllocator::Iterator(allocator_.get()).GetNext(&type)); + + // Ensure that there is no other global object and then make this one such. + DCHECK(!g_tracker_); + g_tracker_ = this; +} + +GlobalActivityTracker::~GlobalActivityTracker() { + DCHECK_EQ(g_tracker_, this); + DCHECK_EQ(0, thread_tracker_count_.load(std::memory_order_relaxed)); + g_tracker_ = nullptr; +} + +void GlobalActivityTracker::ReturnTrackerMemory( + ManagedActivityTracker* tracker) { + PersistentMemoryAllocator::Reference mem_reference = tracker->mem_reference_; + void* mem_base = tracker->mem_base_; + + // Zero the memory so that it is ready for use if needed again later. It's + // better to clear the memory now, when a thread is exiting, than to do it + // when it is first needed by a thread doing actual work. + memset(mem_base, 0, stack_memory_size_); + + // Remove the destructed tracker from the set of known ones. + DCHECK_LE(1, thread_tracker_count_.load(std::memory_order_relaxed)); + thread_tracker_count_.fetch_sub(1, std::memory_order_relaxed); + + // Deal with the memory that was used by the tracker. + if (mem_reference) { + // The memory was within the persistent memory allocator. Change its type + // so that iteration won't find it. + allocator_->ChangeType(mem_reference, kTypeIdActivityTrackerFree, + kTypeIdActivityTracker); + // There is no way to free memory from a persistent allocator so instead + // push it on the internal list of available memory blocks. + while (true) { + // Get the existing count of available memories and ensure we won't + // burst the array. Acquire the values in the array. + int count = available_memories_count_.load(std::memory_order_acquire); + if (count >= kMaxThreadCount) { + NOTREACHED(); + // Storage is full. Just forget about this memory. It won't be re-used + // but there's no real loss. + break; + } + + // Write the reference of the memory being returned to this slot in the + // array. Empty slots have a value of zero so do an atomic compare-and- + // exchange to ensure that a race condition doesn't exist with another + // thread doing the same. + PersistentMemoryAllocator::Reference mem_expected = 0; + if (!available_memories_[count].compare_exchange_strong( + mem_expected, mem_reference, std::memory_order_release, + std::memory_order_relaxed)) { + PlatformThread::YieldCurrentThread(); + continue; // Try again. + } + + // Increment the count, releasing the value written to the array. This + // could fail if a simultaneous "pop" operation decremented the counter. + // If that happens, clear the array slot and start over. Do a "strong" + // exchange to avoid spurious retries that can occur with a "weak" one. + int expected = count; // Updated by compare/exchange. + if (!available_memories_count_.compare_exchange_strong( + expected, count + 1, std::memory_order_release, + std::memory_order_relaxed)) { + available_memories_[count].store(0, std::memory_order_relaxed); + continue; + } + + // Count was successfully incremented to reflect the newly added value. + break; + } + } else { + // The memory was allocated from the process heap. This shouldn't happen + // because the persistent memory segment should be big enough for all + // thread stacks but it's better to support falling back to allocation + // from the heap rather than crash. Everything will work as normal but + // the data won't be persisted. + delete[] reinterpret_cast<char*>(mem_base); + } +} + +// static +void GlobalActivityTracker::OnTLSDestroy(void* value) { + delete reinterpret_cast<ManagedActivityTracker*>(value); +} + + +ScopedActivity::ScopedActivity(const tracked_objects::Location& location, + uint8_t action, + uint32_t id, + int32_t info) + : GlobalActivityTracker::ScopedThreadActivity( + location.program_counter(), + static_cast<ThreadActivityTracker::ActivityType>( + ThreadActivityTracker::ACT_GENERIC | action), + ThreadActivityTracker::ActivityData::ForGeneric(id, info), + /*lock_allowed=*/true), + id_(id) { + // The action must not affect the category bits of the activity type. + DCHECK_EQ(0, action & ThreadActivityTracker::ACT_CATEGORY_MASK); +} + +void ScopedActivity::ChangeAction(uint8_t action) { + DCHECK_EQ(0, action & ThreadActivityTracker::ACT_CATEGORY_MASK); + ChangeTypeAndData(static_cast<ThreadActivityTracker::ActivityType>( + ThreadActivityTracker::ACT_GENERIC | action), + ThreadActivityTracker::kNullActivityData); +} + +void ScopedActivity::ChangeInfo(int32_t info) { + ChangeTypeAndData(ThreadActivityTracker::ACT_NULL, + ThreadActivityTracker::ActivityData::ForGeneric(id_, info)); +} + +void ScopedActivity::ChangeActionAndInfo(uint8_t action, int32_t info) { + DCHECK_EQ(0, action & ThreadActivityTracker::ACT_CATEGORY_MASK); + ChangeTypeAndData(static_cast<ThreadActivityTracker::ActivityType>( + ThreadActivityTracker::ACT_GENERIC | action), + ThreadActivityTracker::ActivityData::ForGeneric(id_, info)); +} + +ScopedTaskRunActivity::ScopedTaskRunActivity(const base::PendingTask& task) + : GlobalActivityTracker::ScopedThreadActivity( + task.posted_from.program_counter(), + ThreadActivityTracker::ACT_TASK_RUN, + ThreadActivityTracker::ActivityData::ForTask(task.sequence_num), + /*lock_allowed=*/true) {} + +ScopedLockAcquireActivity::ScopedLockAcquireActivity( + const base::internal::LockImpl* lock) + : GlobalActivityTracker::ScopedThreadActivity( + nullptr, + ThreadActivityTracker::ACT_LOCK_ACQUIRE, + ThreadActivityTracker::ActivityData::ForLock(lock), + /*lock_allowed=*/false) {} + +ScopedEventWaitActivity::ScopedEventWaitActivity( + const base::WaitableEvent* event) + : GlobalActivityTracker::ScopedThreadActivity( + nullptr, + ThreadActivityTracker::ACT_EVENT_WAIT, + ThreadActivityTracker::ActivityData::ForEvent(event), + /*lock_allowed=*/true) {} + +ScopedThreadJoinActivity::ScopedThreadJoinActivity( + const base::PlatformThreadHandle* thread) + : GlobalActivityTracker::ScopedThreadActivity( + nullptr, + ThreadActivityTracker::ACT_THREAD_JOIN, + ThreadActivityTracker::ActivityData::ForThread(*thread), + /*lock_allowed=*/true) {} + +#if !defined(OS_NACL) && !defined(OS_IOS) +ScopedProcessWaitActivity::ScopedProcessWaitActivity( + const base::Process* process) + : GlobalActivityTracker::ScopedThreadActivity( + nullptr, + ThreadActivityTracker::ACT_PROCESS_WAIT, + ThreadActivityTracker::ActivityData::ForProcess(process->Pid()), + /*lock_allowed=*/true) {} +#endif + +} // namespace debug +} // namespace base
diff --git a/base/debug/activity_tracker.h b/base/debug/activity_tracker.h new file mode 100644 index 0000000..acac6b1 --- /dev/null +++ b/base/debug/activity_tracker.h
@@ -0,0 +1,608 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Activity tracking provides a low-overhead method of collecting information +// about the state of the application for analysis both while it is running +// and after it has terminated unexpectedly. Its primary purpose is to help +// locate reasons the browser becomes unresponsive by providing insight into +// what all the various threads and processes are (or were) doing. + +#ifndef BASE_DEBUG_ACTIVITY_TRACKER_H_ +#define BASE_DEBUG_ACTIVITY_TRACKER_H_ + +// std::atomic is undesired due to performance issues when used as global +// variables. There are no such instances here. This module uses the +// PersistentMemoryAllocator which also uses std::atomic and is written +// by the same author. +#include <atomic> +#include <memory> +#include <string> +#include <vector> + +#include "base/base_export.h" +#include "base/location.h" +#include "base/metrics/persistent_memory_allocator.h" +#include "base/threading/thread_checker.h" +#include "base/threading/thread_local_storage.h" + +namespace base { + +struct PendingTask; + +class FilePath; +class Lock; +class MemoryMappedFile; +class PlatformThreadHandle; +class Process; +class WaitableEvent; + +namespace debug { + +// This class manages tracking a stack of activities for a single thread in +// a persistent manner, implementing a bounded-size stack in a fixed-size +// memory allocation. In order to support an operational mode where another +// thread is analyzing this data in real-time, atomic operations are used +// where necessary to guarantee a consistent view from the outside. +// +// This class is not generally used directly but instead managed by the +// GlobalActivityTracker instance and updated using Scoped*Activity local +// objects. +class BASE_EXPORT ThreadActivityTracker { + public: + enum : int { + // The maximum number of call-stack addresses stored per activity. This + // cannot be changed without also changing the version number of the + // structure. See kTypeIdActivityTracker in GlobalActivityTracker. + kActivityCallStackSize = 10 + }; + + // The type of an activity on the stack. Activities are broken into + // categories with the category ID taking the top 4 bits and the lower + // bits representing an action within that category. This combination + // makes it easy to "switch" based on the type during analysis. + enum ActivityType : uint8_t { + // This "null" constant is used to indicate "do not change" in calls. + ACT_NULL = 0, + + // Task activities involve callbacks posted to a thread or thread-pool + // using the PostTask() method or any of its friends. + ACT_TASK = 1 << 4, + ACT_TASK_RUN = ACT_TASK, + + // Lock activities involve the acquisition of "mutex" locks. + ACT_LOCK = 2 << 4, + ACT_LOCK_ACQUIRE = ACT_LOCK, + ACT_LOCK_RELEASE, + + // Event activities involve operations on a WaitableEvent. + ACT_EVENT = 3 << 4, + ACT_EVENT_WAIT = ACT_EVENT, + ACT_EVENT_SIGNAL, + + // Thread activities involve the life management of threads. + ACT_THREAD = 4 << 4, + ACT_THREAD_START = ACT_THREAD, + ACT_THREAD_JOIN, + + // Process activities involve the life management of processes. + ACT_PROCESS = 5 << 4, + ACT_PROCESS_START = ACT_PROCESS, + ACT_PROCESS_WAIT, + + // Generic activities are user defined and can be anything. + ACT_GENERIC = 15 << 4, + + // These constants can be used to separate the category and action from + // a combined activity type. + ACT_CATEGORY_MASK = 0xF << 4, + ACT_ACTION_MASK = 0xF + }; + + // The data associated with an activity is dependent upon the activity type. + // This union defines all of the various fields. All fields must be explicitly + // sized types to ensure no interoperability problems between 32-bit and + // 64-bit systems. + union ActivityData { + // Generic activities don't have any defined structure. + struct { + uint32_t id; // An arbitrary identifier used for association. + int32_t info; // An arbitrary value used for information purposes. + } generic; + struct { + uint64_t sequence_id; // The sequence identifier of the posted task. + } task; + struct { + uint64_t lock_address; // The memory address of the lock object. + } lock; + struct { + uint64_t event_address; // The memory address of the event object. + } event; + struct { + int64_t thread_id; // A unique identifier for a thread within a process. + } thread; + struct { + int64_t process_id; // A unique identifier for a process. + } process; + + // These methods create an ActivityData object from the appropriate + // parameters. Objects of this type should always be created this way to + // ensure that no fields remain unpopulated should the set of recorded + // fields change. They're defined inline where practical because they + // reduce to loading a small local structure with a few values, roughly + // the same as loading all those values into parameters. + + static ActivityData ForGeneric(uint32_t id, int32_t info) { + ActivityData data; + data.generic.id = id; + data.generic.info = info; + return data; + } + + static ActivityData ForTask(uint64_t sequence) { + ActivityData data; + data.task.sequence_id = sequence; + return data; + } + + static ActivityData ForLock(const void* lock) { + ActivityData data; + data.lock.lock_address = reinterpret_cast<uintptr_t>(lock); + return data; + } + + static ActivityData ForEvent(const void* event) { + ActivityData data; + data.event.event_address = reinterpret_cast<uintptr_t>(event); + return data; + } + + static ActivityData ForThread(const PlatformThreadHandle& handle); + static ActivityData ForThread(const int64_t id) { + ActivityData data; + data.thread.thread_id = id; + return data; + } + + static ActivityData ForProcess(const int64_t id) { + ActivityData data; + data.process.process_id = id; + return data; + } + }; + + // This structure is the full contents recorded for every activity pushed + // onto the stack. The |activity_type| indicates what is actually stored in + // the |data| field. All fields must be explicitly sized types to ensure no + // interoperability problems between 32-bit and 64-bit systems. + struct Activity { + // Internal representation of time. During collection, this is in "ticks" + // but when returned in a snapshot, it is "wall time". + int64_t time_internal; + + // The address that is the origin of the activity if it not obvious from + // the call stack. This is useful for things like tasks that are posted + // from a completely different thread though most activities will leave + // it null. + uint64_t origin_address; + + // Array of program-counters that make up the top of the call stack. + // Despite the fixed size, this list is always null-terminated. Entries + // after the terminator have no meaning and may or may not also be null. + // The list will be completely empty if call-stack collection is not + // enabled. + uint64_t call_stack[kActivityCallStackSize]; + + // The (enumerated) type of the activity. This defines what fields of the + // |data| record are valid. + uint8_t activity_type; + + // Padding to ensure that the next member begins on a 64-bit boundary + // even on 32-bit builds which ensures inter-operability between CPU + // architectures. New fields can be taken from this space. + uint8_t padding[7]; + + // Information specific to the |activity_type|. + ActivityData data; + }; + + // This structure holds a copy of all the internal data at the moment the + // "snapshot" operation is done. It is disconnected from the live tracker + // so that continued operation of the thread will not cause changes here. + struct BASE_EXPORT ActivitySnapshot { + // Explicit constructor/destructor are needed because of complex types + // with non-trivial default constructors and destructors. + ActivitySnapshot(); + ~ActivitySnapshot(); + + // The name of the thread as set when it was created. The name may be + // truncated due to internal length limitations. + std::string thread_name; + + // The process and thread IDs. These values have no meaning other than + // they uniquely identify a running process and a running thread within + // that process. Thread-IDs can be re-used across different processes + // and both can be re-used after the process/thread exits. + int64_t process_id = 0; + int64_t thread_id = 0; + + // The current stack of activities that are underway for this thread. It + // is limited in its maximum size with later entries being left off. + std::vector<Activity> activity_stack; + + // The current total depth of the activity stack, including those later + // entries not recorded in the |activity_stack| vector. + uint32_t activity_stack_depth = 0; + }; + + // This is the base class for having the compiler manage an activity on the + // tracker's stack. It does nothing but call methods on the passed |tracker| + // if it is not null, making it safe (and cheap) to create these objects + // even if activity tracking is not enabled. + class BASE_EXPORT ScopedActivity { + public: + ScopedActivity(ThreadActivityTracker* tracker, + const void* origin, + ActivityType type, + const ActivityData& data) + : tracker_(tracker) { + if (tracker_) + tracker_->PushActivity(origin, type, data); + } + + ~ScopedActivity() { + if (tracker_) + tracker_->PopActivity(); + } + + void ChangeTypeAndData(ActivityType type, const ActivityData& data) { + if (tracker_) + tracker_->ChangeActivity(type, data); + } + + private: + // The thread tracker to which this object reports. It can be null if + // activity tracking is not (yet) enabled. + ThreadActivityTracker* const tracker_; + + DISALLOW_COPY_AND_ASSIGN(ScopedActivity); + }; + + // A ThreadActivityTracker runs on top of memory that is managed externally. + // It must be large enough for the internal header and a few Activity + // blocks. See SizeForStackDepth(). + ThreadActivityTracker(void* base, size_t size); + virtual ~ThreadActivityTracker(); + + // Indicates that an activity has started from a given |origin| address in + // the code, though it can be null if the creator's address is not known. + // The |type| and |data| describe the activity. + void PushActivity(const void* origin, + ActivityType type, + const ActivityData& data); + + // Changes the activity |type| and |data| of the top-most entry on the stack. + // This is useful if the information has changed and it is desireable to + // track that change without creating a new stack entry. If the type is + // ACT_NULL or the data is kNullActivityData then that value will remain + // unchanged. The type, if changed, must remain in the same category. + // Changing both is not atomic so a snapshot operation could occur between + // the update of |type| and |data| or between update of |data| fields. + void ChangeActivity(ActivityType type, const ActivityData& data); + + // Indicates that an activity has completed. + void PopActivity(); + + // Returns whether the current data is valid or not. It is not valid if + // corruption has been detected in the header or other data structures. + bool IsValid() const; + + // Gets a copy of the tracker contents for analysis. Returns false if a + // snapshot was not possible, perhaps because the data is not valid; the + // contents of |output_snapshot| are undefined in that case. The current + // implementation does not support concurrent snapshot operations. + bool Snapshot(ActivitySnapshot* output_snapshot) const; + + // Calculates the memory size required for a given stack depth, including + // the internal header structure for the stack. + static size_t SizeForStackDepth(int stack_depth); + + // A "null" activity-data that can be passed to indicate "do not change". + static const ActivityData kNullActivityData; + + private: + friend class ActivityTrackerTest; + + // This structure contains all the common information about the thread so + // it doesn't have to be repeated in every entry on the stack. It is defined + // and used completely within the .cc file. + struct Header; + + Header* const header_; // Pointer to the Header structure. + Activity* const stack_; // The stack of activities. + const uint32_t stack_slots_; // The total number of stack slots. + + bool valid_ = false; // Tracks whether the data is valid or not. + + base::ThreadChecker thread_checker_; + + DISALLOW_COPY_AND_ASSIGN(ThreadActivityTracker); +}; + + +// The global tracker manages all the individual thread trackers. Memory for +// the thread trackers is taken from a PersistentMemoryAllocator which allows +// for the data to be analyzed by a parallel process or even post-mortem. +class BASE_EXPORT GlobalActivityTracker { + public: + // Type identifiers used when storing in persistent memory so they can be + // identified during extraction; the first 4 bytes of the SHA1 of the name + // is used as a unique integer. A "version number" is added to the base + // so that, if the structure of that object changes, stored older versions + // will be safely ignored. These are public so that an external process + // can recognize records of this type within an allocator. + enum : uint32_t { + kTypeIdActivityTracker = 0x5D7381AF + 1, // SHA1(ActivityTracker) v1 + kTypeIdActivityTrackerFree = 0x3F0272FB + 1, // SHA1(ActivityTrackerFree) + }; + + // This is a thin wrapper around the thread-tracker's ScopedActivity that + // accesses the global tracker to provide some of the information, notably + // which thread-tracker to use. It is safe to create even if activity + // tracking is not enabled. + class BASE_EXPORT ScopedThreadActivity + : public ThreadActivityTracker::ScopedActivity { + public: + ScopedThreadActivity(const void* origin, + ThreadActivityTracker::ActivityType type, + const ThreadActivityTracker::ActivityData& data, + bool lock_allowed) + : ThreadActivityTracker::ScopedActivity( + GetOrCreateTracker(lock_allowed), + origin, + type, + data) {} + + private: + // Gets (or creates) a tracker for the current thread. If locking is not + // allowed (because a lock is being tracked which would cause recursion) + // then the attempt to create one if none found will be skipped. Once + // the tracker for this thread has been created for other reasons, locks + // will be tracked. The thread-tracker uses locks. + static ThreadActivityTracker* GetOrCreateTracker(bool lock_allowed) { + GlobalActivityTracker* global_tracker = Get(); + if (!global_tracker) + return nullptr; + if (lock_allowed) + return global_tracker->GetOrCreateTrackerForCurrentThread(); + else + return global_tracker->GetTrackerForCurrentThread(); + } + + DISALLOW_COPY_AND_ASSIGN(ScopedThreadActivity); + }; + + ~GlobalActivityTracker(); + + // Creates a global tracker using a given persistent-memory |allocator| and + // providing the given |stack_depth| to each thread tracker it manages. The + // created object is activated so tracking will begin immediately upon return. + static void CreateWithAllocator( + std::unique_ptr<PersistentMemoryAllocator> allocator, + int stack_depth); + +#if !defined(OS_NACL) + // Like above but internally creates an allocator around a disk file with + // the specified |size| at the given |file_path|. Any existing file will be + // overwritten. The |id| and |name| are arbitrary and stored in the allocator + // for reference by whatever process reads it. + static void CreateWithFile(const FilePath& file_path, + size_t size, + uint64_t id, + StringPiece name, + int stack_depth); +#endif // !defined(OS_NACL) + + // Like above but internally creates an allocator using local heap memory of + // the specified size. This is used primarily for unit tests. + static void CreateWithLocalMemory(size_t size, + uint64_t id, + StringPiece name, + int stack_depth); + + // Gets the global activity-tracker or null if none exists. + static GlobalActivityTracker* Get() { return g_tracker_; } + + // Gets the persistent-memory-allocator in which data is stored. Callers + // can store additional records here to pass more information to the + // analysis process. + PersistentMemoryAllocator* allocator() { return allocator_.get(); } + + // Gets the thread's activity-tracker if it exists. This is inline for + // performance reasons and it uses thread-local-storage (TLS) so that there + // is no significant lookup time required to find the one for the calling + // thread. Ownership remains with the global tracker. + ThreadActivityTracker* GetTrackerForCurrentThread() { + return reinterpret_cast<ThreadActivityTracker*>(this_thread_tracker_.Get()); + } + + // Gets the thread's activity-tracker or creates one if none exists. This + // is inline for performance reasons. Ownership remains with the global + // tracker. + ThreadActivityTracker* GetOrCreateTrackerForCurrentThread() { + ThreadActivityTracker* tracker = GetTrackerForCurrentThread(); + if (tracker) + return tracker; + return CreateTrackerForCurrentThread(); + } + + // Creates an activity-tracker for the current thread. + ThreadActivityTracker* CreateTrackerForCurrentThread(); + + // Releases the activity-tracker for the current thread (for testing only). + void ReleaseTrackerForCurrentThreadForTesting(); + + private: + friend class ActivityTrackerTest; + + enum : int { + // The maximum number of threads that can be tracked within a process. If + // more than this number run concurrently, tracking of new ones may cease. + kMaxThreadCount = 100, + }; + + // A thin wrapper around the main thread-tracker that keeps additional + // information that the global tracker needs to handle joined threads. + class ManagedActivityTracker : public ThreadActivityTracker { + public: + ManagedActivityTracker(PersistentMemoryAllocator::Reference mem_reference, + void* base, + size_t size); + ~ManagedActivityTracker() override; + + // The reference into persistent memory from which the thread-tracker's + // memory was created. + const PersistentMemoryAllocator::Reference mem_reference_; + + // The physical address used for the thread-tracker's memory. + void* const mem_base_; + + private: + DISALLOW_COPY_AND_ASSIGN(ManagedActivityTracker); + }; + + // Creates a global tracker using a given persistent-memory |allocator| and + // providing the given |stack_depth| to each thread tracker it manages. The + // created object is activated so tracking has already started upon return. + GlobalActivityTracker(std::unique_ptr<PersistentMemoryAllocator> allocator, + int stack_depth); + + // Returns the memory used by an activity-tracker managed by this class. + // It is called during the destruction of a ManagedActivityTracker object. + void ReturnTrackerMemory(ManagedActivityTracker* tracker); + + // Releases the activity-tracker associcated with thread. It is called + // automatically when a thread is joined and thus there is nothing more to + // be tracked. |value| is a pointer to a ManagedActivityTracker. + static void OnTLSDestroy(void* value); + + // The persistent-memory allocator from which the memory for all trackers + // is taken. + std::unique_ptr<PersistentMemoryAllocator> allocator_; + + // The size (in bytes) of memory required by a ThreadActivityTracker to + // provide the stack-depth requested during construction. + const size_t stack_memory_size_; + + // The activity tracker for the currently executing thread. + base::ThreadLocalStorage::Slot this_thread_tracker_; + + // These have to be lock-free because lock activity is tracked and causes + // re-entry problems. + std::atomic<int> thread_tracker_count_; + std::atomic<int> available_memories_count_; + std::atomic<PersistentMemoryAllocator::Reference> + available_memories_[kMaxThreadCount]; + + // The active global activity tracker. + static GlobalActivityTracker* g_tracker_; + + DISALLOW_COPY_AND_ASSIGN(GlobalActivityTracker); +}; + + +// Record entry in to and out of an arbitrary block of code. +class BASE_EXPORT ScopedActivity + : public GlobalActivityTracker::ScopedThreadActivity { + public: + // Track activity at the specified FROM_HERE location for an arbitrary + // 4-bit |action|, an arbitrary 32-bit |id|, and 32-bits of arbitrary + // |info|. None of these values affect operation; they're all purely + // for association and analysis. To have unique identifiers across a + // diverse code-base, create the number by taking the first 8 characters + // of the hash of the activity being tracked. + // + // For example: + // Tracking method: void MayNeverExit(uint32_t foo) {...} + // echo -n "MayNeverExit" | sha1sum => e44873ccab21e2b71270da24aa1... + // + // void MayNeverExit(int32_t foo) { + // base::debug::ScopedActivity track_me(FROM_HERE, 0, 0xE44873CC, foo); + // ... + // } + ScopedActivity(const tracked_objects::Location& location, + uint8_t action, + uint32_t id, + int32_t info); + + // Because this is inline, the FROM_HERE macro will resolve the current + // program-counter as the location in the calling code. + ScopedActivity() : ScopedActivity(FROM_HERE, 0, 0, 0) {} + + // Changes the |action| and/or |info| of this activity on the stack. This + // is useful for tracking progress through a function, updating the action + // to indicate "milestones" in the block (max 16 milestones: 0-15) or the + // info to reflect other changes. Changing both is not atomic so a snapshot + // operation could occur between the update of |action| and |info|. + void ChangeAction(uint8_t action); + void ChangeInfo(int32_t info); + void ChangeActionAndInfo(uint8_t action, int32_t info); + + private: + // A copy of the ID code so it doesn't have to be passed by the caller when + // changing the |info| field. + uint32_t id_; + + DISALLOW_COPY_AND_ASSIGN(ScopedActivity); +}; + + +// These "scoped" classes provide easy tracking of various blocking actions. + +class BASE_EXPORT ScopedTaskRunActivity + : public GlobalActivityTracker::ScopedThreadActivity { + public: + explicit ScopedTaskRunActivity(const base::PendingTask& task); + private: + DISALLOW_COPY_AND_ASSIGN(ScopedTaskRunActivity); +}; + +class BASE_EXPORT ScopedLockAcquireActivity + : public GlobalActivityTracker::ScopedThreadActivity { + public: + explicit ScopedLockAcquireActivity(const base::internal::LockImpl* lock); + private: + DISALLOW_COPY_AND_ASSIGN(ScopedLockAcquireActivity); +}; + +class BASE_EXPORT ScopedEventWaitActivity + : public GlobalActivityTracker::ScopedThreadActivity { + public: + explicit ScopedEventWaitActivity(const base::WaitableEvent* event); + private: + DISALLOW_COPY_AND_ASSIGN(ScopedEventWaitActivity); +}; + +class BASE_EXPORT ScopedThreadJoinActivity + : public GlobalActivityTracker::ScopedThreadActivity { + public: + explicit ScopedThreadJoinActivity(const base::PlatformThreadHandle* thread); + private: + DISALLOW_COPY_AND_ASSIGN(ScopedThreadJoinActivity); +}; + +// Some systems don't have base::Process +#if !defined(OS_NACL) && !defined(OS_IOS) +class BASE_EXPORT ScopedProcessWaitActivity + : public GlobalActivityTracker::ScopedThreadActivity { + public: + explicit ScopedProcessWaitActivity(const base::Process* process); + private: + DISALLOW_COPY_AND_ASSIGN(ScopedProcessWaitActivity); +}; +#endif + +} // namespace debug +} // namespace base + +#endif // BASE_DEBUG_ACTIVITY_TRACKER_H_
diff --git a/base/debug/activity_tracker_unittest.cc b/base/debug/activity_tracker_unittest.cc new file mode 100644 index 0000000..8b49601 --- /dev/null +++ b/base/debug/activity_tracker_unittest.cc
@@ -0,0 +1,298 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/debug/activity_tracker.h" + +#include <memory> + +#include "base/bind.h" +#include "base/files/file.h" +#include "base/files/file_util.h" +#include "base/files/memory_mapped_file.h" +#include "base/files/scoped_temp_dir.h" +#include "base/memory/ptr_util.h" +#include "base/pending_task.h" +#include "base/synchronization/condition_variable.h" +#include "base/synchronization/lock.h" +#include "base/synchronization/spin_wait.h" +#include "base/threading/simple_thread.h" +#include "base/time/time.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace base { +namespace debug { + +namespace { + +class TestActivityTracker : public ThreadActivityTracker { + public: + TestActivityTracker(std::unique_ptr<char[]> memory, size_t mem_size) + : ThreadActivityTracker(memset(memory.get(), 0, mem_size), mem_size), + mem_segment_(std::move(memory)) {} + + ~TestActivityTracker() override {} + + private: + std::unique_ptr<char[]> mem_segment_; +}; + +} // namespace + + +class ActivityTrackerTest : public testing::Test { + public: + const int kMemorySize = 1 << 10; // 1MiB + const int kStackSize = 1 << 10; // 1KiB + + using Activity = ThreadActivityTracker::Activity; + using ActivityData = ThreadActivityTracker::ActivityData; + + ActivityTrackerTest() {} + + ~ActivityTrackerTest() override { + GlobalActivityTracker* global_tracker = GlobalActivityTracker::Get(); + if (global_tracker) { + global_tracker->ReleaseTrackerForCurrentThreadForTesting(); + delete global_tracker; + } + } + + std::unique_ptr<ThreadActivityTracker> CreateActivityTracker() { + std::unique_ptr<char[]> memory(new char[kStackSize]); + return WrapUnique(new TestActivityTracker(std::move(memory), kStackSize)); + } + + size_t GetGlobalActiveTrackerCount() { + GlobalActivityTracker* global_tracker = GlobalActivityTracker::Get(); + if (!global_tracker) + return 0; + return global_tracker->thread_tracker_count_.load( + std::memory_order_relaxed); + } + + size_t GetGlobalInactiveTrackerCount() { + GlobalActivityTracker* global_tracker = GlobalActivityTracker::Get(); + if (!global_tracker) + return 0; + return global_tracker->available_memories_count_.load( + std::memory_order_relaxed); + } + + static void DoNothing() {} +}; + +TEST_F(ActivityTrackerTest, PushPopTest) { + std::unique_ptr<ThreadActivityTracker> tracker = CreateActivityTracker(); + ThreadActivityTracker::ActivitySnapshot snapshot; + + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(0U, snapshot.activity_stack_depth); + ASSERT_EQ(0U, snapshot.activity_stack.size()); + + char origin1; + tracker->PushActivity(&origin1, ThreadActivityTracker::ACT_TASK, + ActivityData::ForTask(11)); + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(1U, snapshot.activity_stack_depth); + ASSERT_EQ(1U, snapshot.activity_stack.size()); + EXPECT_NE(0, snapshot.activity_stack[0].time_internal); + EXPECT_EQ(ThreadActivityTracker::ACT_TASK, + snapshot.activity_stack[0].activity_type); + EXPECT_EQ(reinterpret_cast<uintptr_t>(&origin1), + snapshot.activity_stack[0].origin_address); + EXPECT_EQ(11U, snapshot.activity_stack[0].data.task.sequence_id); + + char origin2; + char lock2; + tracker->PushActivity(&origin2, ThreadActivityTracker::ACT_LOCK, + ActivityData::ForLock(&lock2)); + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(2U, snapshot.activity_stack_depth); + ASSERT_EQ(2U, snapshot.activity_stack.size()); + EXPECT_LE(snapshot.activity_stack[0].time_internal, + snapshot.activity_stack[1].time_internal); + EXPECT_EQ(ThreadActivityTracker::ACT_LOCK, + snapshot.activity_stack[1].activity_type); + EXPECT_EQ(reinterpret_cast<uintptr_t>(&origin2), + snapshot.activity_stack[1].origin_address); + EXPECT_EQ(reinterpret_cast<uintptr_t>(&lock2), + snapshot.activity_stack[1].data.lock.lock_address); + + tracker->PopActivity(); + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(1U, snapshot.activity_stack_depth); + ASSERT_EQ(1U, snapshot.activity_stack.size()); + EXPECT_EQ(ThreadActivityTracker::ACT_TASK, + snapshot.activity_stack[0].activity_type); + EXPECT_EQ(reinterpret_cast<uintptr_t>(&origin1), + snapshot.activity_stack[0].origin_address); + EXPECT_EQ(11U, snapshot.activity_stack[0].data.task.sequence_id); + + tracker->PopActivity(); + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(0U, snapshot.activity_stack_depth); + ASSERT_EQ(0U, snapshot.activity_stack.size()); +} + +TEST_F(ActivityTrackerTest, ScopedTaskTest) { + GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3); + + ThreadActivityTracker* tracker = + GlobalActivityTracker::Get()->GetOrCreateTrackerForCurrentThread(); + ThreadActivityTracker::ActivitySnapshot snapshot; + + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(0U, snapshot.activity_stack_depth); + ASSERT_EQ(0U, snapshot.activity_stack.size()); + + { + PendingTask task1(FROM_HERE, base::Bind(&DoNothing)); + ScopedTaskRunActivity activity1(task1); + + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(1U, snapshot.activity_stack_depth); + ASSERT_EQ(1U, snapshot.activity_stack.size()); + EXPECT_EQ(ThreadActivityTracker::ACT_TASK, + snapshot.activity_stack[0].activity_type); + + { + PendingTask task2(FROM_HERE, base::Bind(&DoNothing)); + ScopedTaskRunActivity activity2(task2); + + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(2U, snapshot.activity_stack_depth); + ASSERT_EQ(2U, snapshot.activity_stack.size()); + EXPECT_EQ(ThreadActivityTracker::ACT_TASK, + snapshot.activity_stack[1].activity_type); + } + + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(1U, snapshot.activity_stack_depth); + ASSERT_EQ(1U, snapshot.activity_stack.size()); + EXPECT_EQ(ThreadActivityTracker::ACT_TASK, + snapshot.activity_stack[0].activity_type); + } + + ASSERT_TRUE(tracker->Snapshot(&snapshot)); + ASSERT_EQ(0U, snapshot.activity_stack_depth); + ASSERT_EQ(0U, snapshot.activity_stack.size()); +} + +TEST_F(ActivityTrackerTest, CreateWithFileTest) { + const char temp_name[] = "CreateWithFileTest"; + ScopedTempDir temp_dir; + ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); + FilePath temp_file = temp_dir.path().AppendASCII(temp_name); + const size_t temp_size = 64 << 10; // 64 KiB + + // Create a global tracker on a new file. + ASSERT_FALSE(PathExists(temp_file)); + GlobalActivityTracker::CreateWithFile(temp_file, temp_size, 0, "foo", 3); + GlobalActivityTracker* global = GlobalActivityTracker::Get(); + EXPECT_EQ(std::string("foo"), global->allocator()->Name()); + global->ReleaseTrackerForCurrentThreadForTesting(); + delete global; + + // Create a global tracker over an existing file, replacing it. If the + // replacement doesn't work, the name will remain as it was first created. + ASSERT_TRUE(PathExists(temp_file)); + GlobalActivityTracker::CreateWithFile(temp_file, temp_size, 0, "bar", 3); + global = GlobalActivityTracker::Get(); + EXPECT_EQ(std::string("bar"), global->allocator()->Name()); + global->ReleaseTrackerForCurrentThreadForTesting(); + delete global; +} + + +// GlobalActivityTracker tests below. + +class SimpleActivityThread : public SimpleThread { + public: + SimpleActivityThread(const std::string& name, + const void* origin, + ThreadActivityTracker::ActivityType activity, + const ThreadActivityTracker::ActivityData& data) + : SimpleThread(name, Options()), + origin_(origin), + activity_(activity), + data_(data), + exit_condition_(&lock_) {} + + ~SimpleActivityThread() override {} + + void Run() override { + GlobalActivityTracker::Get() + ->GetOrCreateTrackerForCurrentThread() + ->PushActivity(origin_, activity_, data_); + + { + AutoLock auto_lock(lock_); + ready_ = true; + while (!exit_) + exit_condition_.Wait(); + } + + GlobalActivityTracker::Get() + ->GetOrCreateTrackerForCurrentThread() + ->PopActivity(); + } + + void Exit() { + AutoLock auto_lock(lock_); + exit_ = true; + exit_condition_.Signal(); + } + + void WaitReady() { + SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(ready_); + } + + private: + const void* origin_; + ThreadActivityTracker::ActivityType activity_; + ThreadActivityTracker::ActivityData data_; + + bool ready_ = false; + bool exit_ = false; + Lock lock_; + ConditionVariable exit_condition_; + + DISALLOW_COPY_AND_ASSIGN(SimpleActivityThread); +}; + +TEST_F(ActivityTrackerTest, ThreadDeathTest) { + GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3); + GlobalActivityTracker::Get()->GetOrCreateTrackerForCurrentThread(); + const size_t starting_active = GetGlobalActiveTrackerCount(); + const size_t starting_inactive = GetGlobalInactiveTrackerCount(); + + SimpleActivityThread t1("t1", nullptr, ThreadActivityTracker::ACT_TASK, + ThreadActivityTracker::ActivityData::ForTask(11)); + t1.Start(); + t1.WaitReady(); + EXPECT_EQ(starting_active + 1, GetGlobalActiveTrackerCount()); + EXPECT_EQ(starting_inactive, GetGlobalInactiveTrackerCount()); + + t1.Exit(); + t1.Join(); + EXPECT_EQ(starting_active, GetGlobalActiveTrackerCount()); + EXPECT_EQ(starting_inactive + 1, GetGlobalInactiveTrackerCount()); + + // Start another thread and ensure it re-uses the existing memory. + + SimpleActivityThread t2("t2", nullptr, ThreadActivityTracker::ACT_TASK, + ThreadActivityTracker::ActivityData::ForTask(22)); + t2.Start(); + t2.WaitReady(); + EXPECT_EQ(starting_active + 1, GetGlobalActiveTrackerCount()); + EXPECT_EQ(starting_inactive, GetGlobalInactiveTrackerCount()); + + t2.Exit(); + t2.Join(); + EXPECT_EQ(starting_active, GetGlobalActiveTrackerCount()); + EXPECT_EQ(starting_inactive + 1, GetGlobalInactiveTrackerCount()); +} + +} // namespace debug +} // namespace base
diff --git a/base/debug/task_annotator.cc b/base/debug/task_annotator.cc index 4ba4d91..2747d63c 100644 --- a/base/debug/task_annotator.cc +++ b/base/debug/task_annotator.cc
@@ -4,6 +4,7 @@ #include "base/debug/task_annotator.h" +#include "base/debug/activity_tracker.h" #include "base/debug/alias.h" #include "base/pending_task.h" #include "base/trace_event/trace_event.h" @@ -28,6 +29,8 @@ void TaskAnnotator::RunTask(const char* queue_function, const PendingTask& pending_task) { + ScopedTaskRunActivity task_activity(pending_task); + tracked_objects::TaskStopwatch stopwatch; stopwatch.Start(); tracked_objects::Duration queue_duration =
diff --git a/base/process/process_posix.cc b/base/process/process_posix.cc index ade82e5..a9d745ee 100644 --- a/base/process/process_posix.cc +++ b/base/process/process_posix.cc
@@ -9,6 +9,7 @@ #include <sys/resource.h> #include <sys/wait.h> +#include "base/debug/activity_tracker.h" #include "base/files/scoped_file.h" #include "base/logging.h" #include "base/posix/eintr_wrapper.h" @@ -354,6 +355,9 @@ } bool Process::WaitForExitWithTimeout(TimeDelta timeout, int* exit_code) { + // Record the event that this thread is blocking upon (for hang diagnosis). + base::debug::ScopedProcessWaitActivity process_activity(this); + return WaitForExitWithTimeoutImpl(Handle(), exit_code, timeout); }
diff --git a/base/process/process_win.cc b/base/process/process_win.cc index 8e508a1..6629f456 100644 --- a/base/process/process_win.cc +++ b/base/process/process_win.cc
@@ -4,6 +4,7 @@ #include "base/process/process.h" +#include "base/debug/activity_tracker.h" #include "base/logging.h" #include "base/numerics/safe_conversions.h" #include "base/process/kill.h" @@ -142,6 +143,9 @@ } bool Process::WaitForExitWithTimeout(TimeDelta timeout, int* exit_code) { + // Record the event that this thread is blocking upon (for hang diagnosis). + base::debug::ScopedProcessWaitActivity process_activity(this); + // Limit timeout to INFINITE. DWORD timeout_ms = saturated_cast<DWORD>(timeout.InMilliseconds()); if (::WaitForSingleObject(Handle(), timeout_ms) != WAIT_OBJECT_0)
diff --git a/base/synchronization/lock_impl_posix.cc b/base/synchronization/lock_impl_posix.cc index 7024ab2..e54595b8 100644 --- a/base/synchronization/lock_impl_posix.cc +++ b/base/synchronization/lock_impl_posix.cc
@@ -7,6 +7,7 @@ #include <errno.h> #include <string.h> +#include "base/debug/activity_tracker.h" #include "base/logging.h" #include "base/synchronization/lock.h" @@ -59,6 +60,7 @@ } void LockImpl::Lock() { + base::debug::ScopedLockAcquireActivity lock_activity(this); int rv = pthread_mutex_lock(&native_handle_); DCHECK_EQ(rv, 0) << ". " << strerror(rv); }
diff --git a/base/synchronization/lock_impl_win.cc b/base/synchronization/lock_impl_win.cc index d89a131..31f95f4 100644 --- a/base/synchronization/lock_impl_win.cc +++ b/base/synchronization/lock_impl_win.cc
@@ -4,6 +4,8 @@ #include "base/synchronization/lock_impl.h" +#include "base/debug/activity_tracker.h" + namespace base { namespace internal { @@ -16,6 +18,7 @@ } void LockImpl::Lock() { + base::debug::ScopedLockAcquireActivity lock_activity(this); ::AcquireSRWLockExclusive(&native_handle_); }
diff --git a/base/synchronization/waitable_event_posix.cc b/base/synchronization/waitable_event_posix.cc index b32c882..a8b686b88c 100644 --- a/base/synchronization/waitable_event_posix.cc +++ b/base/synchronization/waitable_event_posix.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include <vector> +#include "base/debug/activity_tracker.h" #include "base/logging.h" #include "base/synchronization/condition_variable.h" #include "base/synchronization/lock.h" @@ -157,6 +158,9 @@ } bool WaitableEvent::TimedWait(const TimeDelta& max_time) { + // Record the event that this thread is blocking upon (for hang diagnosis). + base::debug::ScopedEventWaitActivity event_activity(this); + base::ThreadRestrictions::AssertWaitAllowed(); const TimeTicks end_time(TimeTicks::Now() + max_time); const bool finite_time = max_time.ToInternalValue() >= 0; @@ -232,6 +236,9 @@ base::ThreadRestrictions::AssertWaitAllowed(); DCHECK(count) << "Cannot wait on no events"; + // Record an event (the first) that this thread is blocking upon. + base::debug::ScopedEventWaitActivity event_activity(raw_waitables[0]); + // We need to acquire the locks in a globally consistent order. Thus we sort // the array of waitables by address. We actually sort a pairs so that we can // map back to the original index values later.
diff --git a/base/synchronization/waitable_event_win.cc b/base/synchronization/waitable_event_win.cc index 59771633..cbdebbb 100644 --- a/base/synchronization/waitable_event_win.cc +++ b/base/synchronization/waitable_event_win.cc
@@ -9,6 +9,7 @@ #include <utility> +#include "base/debug/activity_tracker.h" #include "base/logging.h" #include "base/numerics/safe_conversions.h" #include "base/threading/thread_restrictions.h" @@ -47,6 +48,9 @@ } void WaitableEvent::Wait() { + // Record the event that this thread is blocking upon (for hang diagnosis). + base::debug::ScopedEventWaitActivity event_activity(this); + base::ThreadRestrictions::AssertWaitAllowed(); DWORD result = WaitForSingleObject(handle_.Get(), INFINITE); // It is most unexpected that this should ever fail. Help consumers learn @@ -55,6 +59,9 @@ } bool WaitableEvent::TimedWait(const TimeDelta& max_time) { + // Record the event that this thread is blocking upon (for hang diagnosis). + base::debug::ScopedEventWaitActivity event_activity(this); + base::ThreadRestrictions::AssertWaitAllowed(); DCHECK_GE(max_time, TimeDelta()); // Truncate the timeout to milliseconds. The API specifies that this method @@ -77,6 +84,11 @@ // static size_t WaitableEvent::WaitMany(WaitableEvent** events, size_t count) { + DCHECK(count) << "Cannot wait on no events"; + + // Record an event (the first) that this thread is blocking upon. + base::debug::ScopedEventWaitActivity event_activity(events[0]); + base::ThreadRestrictions::AssertWaitAllowed(); HANDLE handles[MAXIMUM_WAIT_OBJECTS]; CHECK_LE(count, static_cast<size_t>(MAXIMUM_WAIT_OBJECTS))
diff --git a/base/task_scheduler/scheduler_service_thread.cc b/base/task_scheduler/scheduler_service_thread.cc index 562e5c90..9f91907 100644 --- a/base/task_scheduler/scheduler_service_thread.cc +++ b/base/task_scheduler/scheduler_service_thread.cc
@@ -25,7 +25,10 @@ : delayed_task_manager_(delayed_task_manager) {} // SchedulerWorker::Delegate: - void OnMainEntry(SchedulerWorker* worker) override {} + void OnMainEntry(SchedulerWorker* worker, + const TimeDelta& detach_duration) override { + DCHECK(detach_duration.is_max()); + } scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override { delayed_task_manager_->PostReadyTasks();
diff --git a/base/task_scheduler/scheduler_worker.cc b/base/task_scheduler/scheduler_worker.cc index 8e37639e..dadfa4e 100644 --- a/base/task_scheduler/scheduler_worker.cc +++ b/base/task_scheduler/scheduler_worker.cc
@@ -36,7 +36,10 @@ // Set if this thread was detached. std::unique_ptr<Thread> detached_thread; - outer_->delegate_->OnMainEntry(outer_); + outer_->delegate_->OnMainEntry( + outer_, outer_->last_detach_time_.is_null() + ? TimeDelta::Max() + : TimeTicks::Now() - outer_->last_detach_time_); // A SchedulerWorker starts out waiting for work. WaitForWork(); @@ -248,7 +251,10 @@ // If a wakeup is pending, then a WakeUp() came in while we were deciding to // detach. This means we can't go away anymore since we would break the // guarantee that we call GetWork() after a successful wakeup. - return thread_->IsWakeUpPending() ? nullptr : std::move(thread_); + if (thread_->IsWakeUpPending()) + return nullptr; + last_detach_time_ = TimeTicks::Now(); + return std::move(thread_); } void SchedulerWorker::CreateThread() {
diff --git a/base/task_scheduler/scheduler_worker.h b/base/task_scheduler/scheduler_worker.h index d741f95..289d3ad4 100644 --- a/base/task_scheduler/scheduler_worker.h +++ b/base/task_scheduler/scheduler_worker.h
@@ -43,8 +43,11 @@ virtual ~Delegate() = default; // Called by a thread managed by |worker| when it enters its main function. - // If a thread is recreated after detachment, this call will occur again. - virtual void OnMainEntry(SchedulerWorker* worker) = 0; + // If a thread is recreated after detachment, |detach_duration| is the time + // elapsed since detachment. Otherwise, if this is the first thread created + // for |worker|, |detach_duration| is TimeDelta::Max(). + virtual void OnMainEntry(SchedulerWorker* worker, + const TimeDelta& detach_duration) = 0; // Called by a thread managed by |worker| to get a Sequence from which to // run a Task. @@ -129,12 +132,16 @@ bool ShouldExitForTesting() const; - // Synchronizes access to |thread_| + // Synchronizes access to |thread_|. mutable SchedulerLock thread_lock_; // The underlying thread for this SchedulerWorker. std::unique_ptr<Thread> thread_; + // Time of the last successful Detach(). Is only accessed from the thread + // managed by this SchedulerWorker. + TimeTicks last_detach_time_; + const ThreadPriority priority_hint_; const std::unique_ptr<Delegate> delegate_; TaskTracker* const task_tracker_;
diff --git a/base/task_scheduler/scheduler_worker_pool_impl.cc b/base/task_scheduler/scheduler_worker_pool_impl.cc index daf19ce..e143d161 100644 --- a/base/task_scheduler/scheduler_worker_pool_impl.cc +++ b/base/task_scheduler/scheduler_worker_pool_impl.cc
@@ -14,6 +14,7 @@ #include "base/bind_helpers.h" #include "base/lazy_instance.h" #include "base/memory/ptr_util.h" +#include "base/metrics/histogram.h" #include "base/sequenced_task_runner.h" #include "base/single_thread_task_runner.h" #include "base/strings/stringprintf.h" @@ -29,6 +30,9 @@ namespace { +constexpr char kDetachDurationHistogramPrefix[] = + "TaskScheduler.DetachDuration."; + // SchedulerWorker that owns the current thread, if any. LazyInstance<ThreadLocalPointer<const SchedulerWorker>>::Leaky tls_current_worker = LAZY_INSTANCE_INITIALIZER; @@ -201,7 +205,8 @@ } // SchedulerWorker::Delegate: - void OnMainEntry(SchedulerWorker* worker) override; + void OnMainEntry(SchedulerWorker* worker, + const TimeDelta& detach_duration) override; scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override; void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override; TimeDelta GetSleepTimeout() override; @@ -424,7 +429,8 @@ ~SchedulerWorkerDelegateImpl() = default; void SchedulerWorkerPoolImpl::SchedulerWorkerDelegateImpl::OnMainEntry( - SchedulerWorker* worker) { + SchedulerWorker* worker, + const TimeDelta& detach_duration) { #if DCHECK_IS_ON() // Wait for |outer_->workers_created_| to avoid traversing // |outer_->workers_| while it is being filled by Initialize(). @@ -432,6 +438,9 @@ DCHECK(ContainsWorker(outer_->workers_, worker)); #endif + if (!detach_duration.is_max()) + outer_->detach_duration_histogram_->AddTime(detach_duration); + PlatformThread::SetName( StringPrintf("TaskScheduler%sWorker%d", outer_->name_.c_str(), index_)); @@ -561,6 +570,12 @@ workers_created_(WaitableEvent::ResetPolicy::MANUAL, WaitableEvent::InitialState::NOT_SIGNALED), #endif + detach_duration_histogram_( + Histogram::FactoryTimeGet(kDetachDurationHistogramPrefix + name_, + TimeDelta::FromMilliseconds(1), + TimeDelta::FromHours(1), + 50, + HistogramBase::kUmaTargetedHistogramFlag)), task_tracker_(task_tracker), delayed_task_manager_(delayed_task_manager) { DCHECK(task_tracker_);
diff --git a/base/task_scheduler/scheduler_worker_pool_impl.h b/base/task_scheduler/scheduler_worker_pool_impl.h index 379f3286..772a02a9 100644 --- a/base/task_scheduler/scheduler_worker_pool_impl.h +++ b/base/task_scheduler/scheduler_worker_pool_impl.h
@@ -33,6 +33,7 @@ namespace base { +class HistogramBase; class TimeDelta; namespace internal { @@ -171,6 +172,10 @@ WaitableEvent workers_created_; #endif + // TaskScheduler.DetachDuration.[worker pool name] histogram. Is never + // deleted. + HistogramBase* const detach_duration_histogram_; + TaskTracker* const task_tracker_; DelayedTaskManager* const delayed_task_manager_;
diff --git a/base/task_scheduler/scheduler_worker_stack_unittest.cc b/base/task_scheduler/scheduler_worker_stack_unittest.cc index 6b0b881..07087d99 100644 --- a/base/task_scheduler/scheduler_worker_stack_unittest.cc +++ b/base/task_scheduler/scheduler_worker_stack_unittest.cc
@@ -22,7 +22,8 @@ class MockSchedulerWorkerDelegate : public SchedulerWorker::Delegate { public: - void OnMainEntry(SchedulerWorker* worker) override {} + void OnMainEntry(SchedulerWorker* worker, + const TimeDelta& detach_duration) override {} scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override { return nullptr; }
diff --git a/base/task_scheduler/scheduler_worker_unittest.cc b/base/task_scheduler/scheduler_worker_unittest.cc index ce63787..1bc5278 100644 --- a/base/task_scheduler/scheduler_worker_unittest.cc +++ b/base/task_scheduler/scheduler_worker_unittest.cc
@@ -22,14 +22,40 @@ #include "base/threading/platform_thread.h" #include "base/time/time.h" #include "build/build_config.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +using testing::_; +using testing::Mock; +using testing::Ne; +using testing::StrictMock; + namespace base { namespace internal { namespace { const size_t kNumSequencesPerTest = 150; +class SchedulerWorkerDefaultDelegate : public SchedulerWorker::Delegate { + public: + SchedulerWorkerDefaultDelegate() = default; + + // SchedulerWorker::Delegate: + void OnMainEntry(SchedulerWorker* worker, + const TimeDelta& detach_duration) override {} + scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override { + return nullptr; + } + void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override { + ADD_FAILURE() << "Unexpected call to ReEnqueueSequence()"; + } + TimeDelta GetSleepTimeout() override { return TimeDelta::Max(); } + bool CanDetach(SchedulerWorker* worker) override { return false; } + + private: + DISALLOW_COPY_AND_ASSIGN(SchedulerWorkerDefaultDelegate); +}; + // The test parameter is the number of Tasks per Sequence returned by GetWork(). class TaskSchedulerWorkerTest : public testing::TestWithParam<size_t> { protected: @@ -93,14 +119,14 @@ std::unique_ptr<SchedulerWorker> worker_; private: - class TestSchedulerWorkerDelegate - : public SchedulerWorker::Delegate { + class TestSchedulerWorkerDelegate : public SchedulerWorkerDefaultDelegate { public: TestSchedulerWorkerDelegate(TaskSchedulerWorkerTest* outer) : outer_(outer) {} // SchedulerWorker::Delegate: - void OnMainEntry(SchedulerWorker* worker) override { + void OnMainEntry(SchedulerWorker* worker, + const TimeDelta& detach_duration) override { outer_->worker_set_.Wait(); EXPECT_EQ(outer_->worker_.get(), worker); @@ -171,14 +197,6 @@ outer_->created_sequences_.size()); } - TimeDelta GetSleepTimeout() override { - return TimeDelta::Max(); - } - - bool CanDetach(SchedulerWorker* worker) override { - return false; - } - private: TaskSchedulerWorkerTest* outer_; }; @@ -295,7 +313,7 @@ namespace { -class ControllableDetachDelegate : public SchedulerWorker::Delegate { +class ControllableDetachDelegate : public SchedulerWorkerDefaultDelegate { public: ControllableDetachDelegate() : work_processed_(WaitableEvent::ResetPolicy::MANUAL, @@ -306,7 +324,8 @@ ~ControllableDetachDelegate() override = default; // SchedulerWorker::Delegate: - void OnMainEntry(SchedulerWorker* worker) override {} + MOCK_METHOD2(OnMainEntry, + void(SchedulerWorker* worker, const TimeDelta& detach_duration)); scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override { @@ -324,15 +343,6 @@ return sequence; } - void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override { - ADD_FAILURE() << - "GetWork() returns a sequence of one, so there's nothing to reenqueue."; - } - - TimeDelta GetSleepTimeout() override { - return TimeDelta::Max(); - } - bool CanDetach(SchedulerWorker* worker) override { detach_requested_.Signal(); return can_detach_; @@ -368,14 +378,17 @@ TEST(TaskSchedulerWorkerTest, WorkerDetaches) { TaskTracker task_tracker; // Will be owned by SchedulerWorker. - ControllableDetachDelegate* delegate = new ControllableDetachDelegate; + ControllableDetachDelegate* delegate = + new StrictMock<ControllableDetachDelegate>; delegate->set_can_detach(true); + EXPECT_CALL(*delegate, OnMainEntry(_, TimeDelta::Max())); std::unique_ptr<SchedulerWorker> worker = SchedulerWorker::Create( ThreadPriority::NORMAL, WrapUnique(delegate), &task_tracker, SchedulerWorker::InitialState::ALIVE); worker->WakeUp(); delegate->WaitForWorkToRun(); + Mock::VerifyAndClear(delegate); delegate->WaitForDetachRequest(); // Sleep to give a chance for the detach to happen. A yield is too short. PlatformThread::Sleep(TimeDelta::FromMilliseconds(50)); @@ -385,14 +398,17 @@ TEST(TaskSchedulerWorkerTest, WorkerDetachesAndWakes) { TaskTracker task_tracker; // Will be owned by SchedulerWorker. - ControllableDetachDelegate* delegate = new ControllableDetachDelegate; + ControllableDetachDelegate* delegate = + new StrictMock<ControllableDetachDelegate>; delegate->set_can_detach(true); + EXPECT_CALL(*delegate, OnMainEntry(_, TimeDelta::Max())); std::unique_ptr<SchedulerWorker> worker = SchedulerWorker::Create( ThreadPriority::NORMAL, WrapUnique(delegate), &task_tracker, SchedulerWorker::InitialState::ALIVE); worker->WakeUp(); delegate->WaitForWorkToRun(); + Mock::VerifyAndClear(delegate); delegate->WaitForDetachRequest(); // Sleep to give a chance for the detach to happen. A yield is too short. PlatformThread::Sleep(TimeDelta::FromMilliseconds(50)); @@ -400,8 +416,12 @@ delegate->ResetState(); delegate->set_can_detach(false); + // When SchedulerWorker recreates its thread, expect OnMainEntry() to be + // called with a detach duration which is not TimeDelta::Max(). + EXPECT_CALL(*delegate, OnMainEntry(worker.get(), Ne(TimeDelta::Max()))); worker->WakeUp(); delegate->WaitForWorkToRun(); + Mock::VerifyAndClear(delegate); delegate->WaitForDetachRequest(); PlatformThread::Sleep(TimeDelta::FromMilliseconds(50)); ASSERT_TRUE(worker->ThreadAliveForTesting()); @@ -411,14 +431,17 @@ TEST(TaskSchedulerWorkerTest, CreateDetached) { TaskTracker task_tracker; // Will be owned by SchedulerWorker. - ControllableDetachDelegate* delegate = new ControllableDetachDelegate; + ControllableDetachDelegate* delegate = + new StrictMock<ControllableDetachDelegate>; std::unique_ptr<SchedulerWorker> worker = SchedulerWorker::Create( ThreadPriority::NORMAL, WrapUnique(delegate), &task_tracker, SchedulerWorker::InitialState::DETACHED); ASSERT_FALSE(worker->ThreadAliveForTesting()); + EXPECT_CALL(*delegate, OnMainEntry(worker.get(), TimeDelta::Max())); worker->WakeUp(); delegate->WaitForWorkToRun(); + Mock::VerifyAndClear(delegate); delegate->WaitForDetachRequest(); ASSERT_TRUE(worker->ThreadAliveForTesting()); worker->JoinForTesting(); @@ -426,7 +449,7 @@ namespace { -class ExpectThreadPriorityDelegate : public SchedulerWorker::Delegate { +class ExpectThreadPriorityDelegate : public SchedulerWorkerDefaultDelegate { public: ExpectThreadPriorityDelegate() : priority_verified_in_get_work_event_( @@ -443,15 +466,15 @@ } // SchedulerWorker::Delegate: - void OnMainEntry(SchedulerWorker* worker) override { VerifyThreadPriority(); } + void OnMainEntry(SchedulerWorker* worker, + const TimeDelta& detach_duration) override { + VerifyThreadPriority(); + } scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override { VerifyThreadPriority(); priority_verified_in_get_work_event_.Signal(); return nullptr; } - void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override {} - TimeDelta GetSleepTimeout() override { return TimeDelta::Max(); } - bool CanDetach(SchedulerWorker* worker) override { return false; } private: void VerifyThreadPriority() {
diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc index 9dd16e3..9a6a2bb 100644 --- a/base/threading/platform_thread_posix.cc +++ b/base/threading/platform_thread_posix.cc
@@ -16,6 +16,7 @@ #include <memory> +#include "base/debug/activity_tracker.h" #include "base/lazy_instance.h" #include "base/logging.h" #include "base/threading/platform_thread_internal_posix.h" @@ -210,6 +211,9 @@ // static void PlatformThread::Join(PlatformThreadHandle thread_handle) { + // Record the event that this thread is blocking upon (for hang diagnosis). + base::debug::ScopedThreadJoinActivity thread_activity(&thread_handle); + // Joining another thread may block the current thread for a long time, since // the thread referred to by |thread_handle| may still be running long-lived / // blocking tasks.
diff --git a/base/threading/platform_thread_win.cc b/base/threading/platform_thread_win.cc index f5c136e..2644eee 100644 --- a/base/threading/platform_thread_win.cc +++ b/base/threading/platform_thread_win.cc
@@ -6,6 +6,7 @@ #include <stddef.h> +#include "base/debug/activity_tracker.h" #include "base/debug/alias.h" #include "base/debug/profiler.h" #include "base/logging.h" @@ -210,6 +211,9 @@ // static void PlatformThread::Join(PlatformThreadHandle thread_handle) { + // Record the event that this thread is blocking upon (for hang diagnosis). + base::debug::ScopedThreadJoinActivity thread_activity(&thread_handle); + DCHECK(thread_handle.platform_handle()); // TODO(willchan): Enable this check once I can get it to work for Windows // shutdown.
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_am.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_am.xtb index cb80116..77ce9e4d 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_am.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_am.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="am"> <translation id="1091157412887719337">ምደባ አልተሳካም። ምንም ፕሮግራም አይገኝም።</translation> +<translation id="117738548141695034">Blimp ቀያሪ</translation> <translation id="1416550906796893042">የመተግበሪያ ስሪት</translation> <translation id="1750179245464827362">የአርም መረጃ አሳይ</translation> <translation id="2004526128230838685">ምደባ አልተሳካም። ያልታወቀ ችግር።</translation> <translation id="2023631438558435272">ምደባ አልተሳካም። ልክ ያልሆነ ምላሽ።</translation> <translation id="2078561879028077171">የስሪት መረጃ</translation> <translation id="2117453604279487107">የመዳቢ ዩአርኤል</translation> +<translation id="2218944627481691815">የBlimp ቀያሪ ተለውጧል፣ እባክዎ መተግበሪያውን እንደገና ያስጀምሩ።</translation> <translation id="2353984724370197742">ምደባ አልተሳካም። የአውታረ መረብ ጥያቄ አልተሳካም።</translation> <translation id="2789927415041640472">አዲሱን የመዳቢ ውቅረትን ለመጠቀም እባክዎ መተግበሪያውን ዳግም ያስጀምሩት።</translation> <translation id="3046825211487065480">ምደባ አልተሳካም። ሁለተኛው ጥያቄ ከመጀመሪያው ጥያቄ መልስ ከመስጠቱ በፊት ተልኳል።</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">የሞተር ግንኙነት ተቋርጧል፣ ምክንያት፦ %1$s</translation> <translation id="7596558890252710462">ስርዓተ ክወና</translation> <translation id="7608553142876436780">የፕሮግራም አይፒ</translation> +<translation id="7795546637165553439">የBlimp ቅንብሮች</translation> <translation id="7961542533680218955">ምደባ ተሳክቷል።</translation> <translation id="8514856595257368555">ማስመሰያ ተገኝቷል።</translation> <translation id="8880704056643418312">ገቢዎች</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ar.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ar.xtb index 224eda76..f4aef80 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ar.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ar.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="ar"> <translation id="1091157412887719337">أخفق التعيين. لا يتوفر محرك.</translation> +<translation id="117738548141695034">تبديل Blimp</translation> <translation id="1416550906796893042">إصدار التطبيق</translation> <translation id="1750179245464827362">عرض معلومات تصحيح الأخطاء</translation> <translation id="2004526128230838685">أخفق التعيين. مشكلة غير معروفة.</translation> <translation id="2023631438558435272">أخفق التعيين. استجابة غير صالحة.</translation> <translation id="2078561879028077171">معلومات الإصدار</translation> <translation id="2117453604279487107">عنوان URL للمعيّن</translation> +<translation id="2218944627481691815">تم تغيير تبديل Blimp، يُرجى إعادة تشغيل التطبيق.</translation> <translation id="2353984724370197742">أخفق التعيين. أخفق طلب الشبكة.</translation> <translation id="2789927415041640472">يُرجى إعادة تشغيل التطبيق لاستخدام تهيئة المعيّن الجديدة.</translation> <translation id="3046825211487065480">أخفق التعيين. تم إرسال الطلب الثاني قبل استجابة الطلب الأول.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">المحرك غير متصل، والسبب: %1$s</translation> <translation id="7596558890252710462">نظام التشغيل</translation> <translation id="7608553142876436780">عنوان IP للمحرك</translation> +<translation id="7795546637165553439">إعدادات Blimp</translation> <translation id="7961542533680218955">تم نجاح التعيين.</translation> <translation id="8514856595257368555">تم استرداد الرمز المميز.</translation> <translation id="8880704056643418312">عمليات التنفيذ</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_bg.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_bg.xtb index ce7c24e..5989f34 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_bg.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_bg.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="bg"> <translation id="1091157412887719337">Получаването на заданието не бе успешно. Няма налична машина.</translation> +<translation id="117738548141695034">Превключвател за Blimp</translation> <translation id="1416550906796893042">Версия на приложението</translation> <translation id="1750179245464827362">Показване на информация за отстраняване на програмни грешки</translation> <translation id="2004526128230838685">Получаването на заданието не бе успешно. Неизвестен проблем.</translation> <translation id="2023631438558435272">Получаването на заданието не бе успешно. Невалиден отговор.</translation> <translation id="2078561879028077171">Информация за версията</translation> <translation id="2117453604279487107">URL адрес на възложителя</translation> +<translation id="2218944627481691815">Превключвателят за Blimp е променен. Моля, рестартирайте приложението.</translation> <translation id="2353984724370197742">Получаването на заданието не бе успешно поради проблем с мрежовата заявка.</translation> <translation id="2789927415041640472">Моля, рестартирайте приложението, за да използвате новата конфигурация за възложител.</translation> <translation id="3046825211487065480">Получаването на заданието не бе успешно. Изпратена е втора заявка, преди да е постъпил отговор за първата.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Връзката с машината е прекратена поради следната причина: %1$s</translation> <translation id="7596558890252710462">Операционна система</translation> <translation id="7608553142876436780">IP адрес на машината</translation> +<translation id="7795546637165553439">Настройки на Blimp</translation> <translation id="7961542533680218955">Получаването на заданието бе успешно.</translation> <translation id="8514856595257368555">Означението бе извлечено.</translation> <translation id="8880704056643418312">Изпращания</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ca.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ca.xtb index 2bdc994..bbd3e28 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ca.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ca.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="ca"> <translation id="1091157412887719337">No s'ha pogut obtenir l'assignació. No hi havia cap motor disponible.</translation> +<translation id="117738548141695034">Commutador de Blimp</translation> <translation id="1416550906796893042">Versió de l'aplicació</translation> <translation id="1750179245464827362">Mostra la informació de depuració</translation> <translation id="2004526128230838685">No s'ha pogut obtenir l'assignació. S'ha produït un error desconegut.</translation> <translation id="2023631438558435272">No s'ha pogut obtenir l'assignació. La resposta no era vàlida.</translation> <translation id="2078561879028077171">Informació de la versió</translation> <translation id="2117453604279487107">URL de l'eina d'assignació</translation> +<translation id="2218944627481691815">El commutador de Blimp ha canviat. Reinicia l'aplicació.</translation> <translation id="2353984724370197742">No s'ha pogut obtenir l'assignació. S'ha produït un error a la sol·licitud de xarxa.</translation> <translation id="2789927415041640472">Reinicieu l'aplicació per poder utilitzar la nova configuració de l'eina d'assignació.</translation> <translation id="3046825211487065480">No s'ha pogut obtenir l'assignació. La segona sol·licitud s'ha enviat abans de rebre resposta per a la primera.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">El motor s'ha desconnectat pel motiu següent: %1$s</translation> <translation id="7596558890252710462">Sistema operatiu</translation> <translation id="7608553142876436780">IP del motor</translation> +<translation id="7795546637165553439">Configuració de Blimp</translation> <translation id="7961542533680218955">L'assignació s'ha obtingut correctament.</translation> <translation id="8514856595257368555">S'ha recuperat el testimoni.</translation> <translation id="8880704056643418312">Canvis</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_cs.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_cs.xtb index 8ebc04c..f2b7872 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_cs.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_cs.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="cs"> <translation id="1091157412887719337">Přidružení se nezdařilo. Není k dispozici žádný modul.</translation> +<translation id="117738548141695034">Přepínač jádra Blimp</translation> <translation id="1416550906796893042">Verze aplikace</translation> <translation id="1750179245464827362">Zobrazit ladicí informace</translation> <translation id="2004526128230838685">Přidružení se nezdařilo. Neznámý problém.</translation> <translation id="2023631438558435272">Přidružení se nezdařilo. Neplatná odpověď.</translation> <translation id="2078561879028077171">Informace o verzi</translation> <translation id="2117453604279487107">URL zadavatele</translation> +<translation id="2218944627481691815">Přepínač jádra Blimp byl přepnut. Restartujte aplikaci.</translation> <translation id="2353984724370197742">Přidružení se nezdařilo. Síťový požadavek se nezdařil.</translation> <translation id="2789927415041640472">Chcete-li používat novou konfiguraci přiřazovače, restartujte aplikaci.</translation> <translation id="3046825211487065480">Přidružení se nezdařilo. Druhý požadavek byl odeslán ještě před přijetím odpovědi na první požadavek.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Vyhledávač byl odpojen. Důvod: %1$s</translation> <translation id="7596558890252710462">Operační systém</translation> <translation id="7608553142876436780">IP adresa jádra</translation> +<translation id="7795546637165553439">Nastavení jádra Blimp</translation> <translation id="7961542533680218955">Přidružení bylo úspěšné.</translation> <translation id="8514856595257368555">Token byl načten.</translation> <translation id="8880704056643418312">Odeslání</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_da.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_da.xtb index eba6be3f..fc6ce59 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_da.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_da.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="da"> <translation id="1091157412887719337">Tildelingen mislykkedes. Der var ingen tilgængelig maskine.</translation> +<translation id="117738548141695034">Blimp-kontakten</translation> <translation id="1416550906796893042">Appversion</translation> <translation id="1750179245464827362">Vis oplysninger om fejlretning</translation> <translation id="2004526128230838685">Tildelingen mislykkedes. Ukendt problem.</translation> <translation id="2023631438558435272">Tildelingen mislykkedes. Ugyldigt svar.</translation> <translation id="2078561879028077171">Oplysninger om version</translation> <translation id="2117453604279487107">Tildelerwebadresse</translation> +<translation id="2218944627481691815">Blimp-kontakten blev ændret. Genstart appen.</translation> <translation id="2353984724370197742">Tildelingen mislykkedes. Netværksanmodningen mislykkedes.</translation> <translation id="2789927415041640472">Genstart applikationen for at bruge den nye tildelerkonfiguration.</translation> <translation id="3046825211487065480">Tildelingen mislykkedes. Anden anmodning blev sendt, før første anmodning reagerede.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Forbindelsen til maskinen blev afbrudt. Årsag: %1$s</translation> <translation id="7596558890252710462">Operativsystem</translation> <translation id="7608553142876436780">IP-adresse for maskinen</translation> +<translation id="7795546637165553439">Indstillinger for Blimp</translation> <translation id="7961542533680218955">Tildelingen lykkedes.</translation> <translation id="8514856595257368555">Tokenet blev hentet.</translation> <translation id="8880704056643418312">Udfører</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_de.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_de.xtb index 2d570c8c..d189d741 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_de.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_de.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="de"> <translation id="1091157412887719337">Zuweisung fehlgeschlagen. Kein Modul verfügbar.</translation> +<translation id="117738548141695034">Blimp-Option</translation> <translation id="1416550906796893042">Anwendungsversion</translation> <translation id="1750179245464827362">Fehlersuche-Informationen einblenden</translation> <translation id="2004526128230838685">Zuweisung fehlgeschlagen. Unbekanntes Problem.</translation> <translation id="2023631438558435272">Zuweisung fehlgeschlagen. Ungültige Antwort.</translation> <translation id="2078561879028077171">Versionsinformationen</translation> <translation id="2117453604279487107">Übertragenden-URL</translation> +<translation id="2218944627481691815">Blimp-Option wurde geändert. Bitte starten Sie die Anwendung neu.</translation> <translation id="2353984724370197742">Zuweisung fehlgeschlagen. Netzwerkanfrage fehlgeschlagen.</translation> <translation id="2789927415041640472">Bitte starten Sie die App neu, um die neue Übertragendenkonfiguration zu verwenden.</translation> <translation id="3046825211487065480">Zuweisung fehlgeschlagen. Zweite Anfrage wurde vor Antwort auf erste Anfrage gesendet.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Modul getrennt, Grund: %1$s</translation> <translation id="7596558890252710462">Betriebssystem</translation> <translation id="7608553142876436780">Modul-IP</translation> +<translation id="7795546637165553439">Blimp-Einstellungen</translation> <translation id="7961542533680218955">Zuweisung ist erfolgt.</translation> <translation id="8514856595257368555">Token abgerufen.</translation> <translation id="8880704056643418312">Commits</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_el.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_el.xtb index 64ae568f..25b3737 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_el.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_el.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="el"> <translation id="1091157412887719337">Η ανάθεση απέτυχε. Δεν υπάρχει διαθέσιμη μηχανή.</translation> +<translation id="117738548141695034">Διακόπτης Blimp</translation> <translation id="1416550906796893042">Έκδοση εφαρμογής</translation> <translation id="1750179245464827362">Εμφάνιση πληροφοριών αντιμετώπισης προβλημάτων</translation> <translation id="2004526128230838685">Η ανάθεση απέτυχε. Άγνωστη πρόβλημα.</translation> <translation id="2023631438558435272">Η ανάθεση απέτυχε. Μη έγκυρη απόκριση.</translation> <translation id="2078561879028077171">Πληροφορίες έκδοσης</translation> <translation id="2117453604279487107">URL εφαρμογής αντιστοίχισης</translation> +<translation id="2218944627481691815">Ο διακόπτης Blimp άλλαξε, επανεκκινήστε την εφαρμογή.</translation> <translation id="2353984724370197742">Η ανάθεση απέτυχε. Το αίτημα δικτύου απέτυχε.</translation> <translation id="2789927415041640472">Επανεκκινήστε την εφαρμογή για να χρησιμοποιήσετε τη νέα διαμόρφωση εκχώρησης.</translation> <translation id="3046825211487065480">Η ανάθεση απέτυχε. Εστάλη δεύτερο αίτημα πριν από την απόκριση στο πρώτο αίτημα.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Η μηχανή αποσυνδέθηκε. Αιτία: %1$s</translation> <translation id="7596558890252710462">Λειτουργικό σύστημα</translation> <translation id="7608553142876436780">Διεύθυνση IP μηχανής</translation> +<translation id="7795546637165553439">Ρυθμίσεις Blimp</translation> <translation id="7961542533680218955">Η ανάθεση ήταν επιτυχής.</translation> <translation id="8514856595257368555">Το διακριτικό ανακτήθηκε.</translation> <translation id="8880704056643418312">Υποβολές</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_en-GB.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_en-GB.xtb index 14b5577..3f30b8dd 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_en-GB.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_en-GB.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="en-GB"> <translation id="1091157412887719337">Assignment failed. No engine available.</translation> +<translation id="117738548141695034">Blimp Switch</translation> <translation id="1416550906796893042">Application version</translation> <translation id="1750179245464827362">Show Debug Info</translation> <translation id="2004526128230838685">Assignment failed. Unknown issue.</translation> <translation id="2023631438558435272">Assignment failed. Invalid response.</translation> <translation id="2078561879028077171">Version Info</translation> <translation id="2117453604279487107">Assigner URL</translation> +<translation id="2218944627481691815">Blimp switch changed, Please restart the application.</translation> <translation id="2353984724370197742">Assignment failed. Network request failed.</translation> <translation id="2789927415041640472">Please restart the application to use the new assigner configuration.</translation> <translation id="3046825211487065480">Assignment failed. Second request sent before first request responded.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Engine disconnected, reason: %1$s</translation> <translation id="7596558890252710462">Operating system</translation> <translation id="7608553142876436780">Engine IP</translation> +<translation id="7795546637165553439">Blimp Settings</translation> <translation id="7961542533680218955">Assignment succeeded.</translation> <translation id="8514856595257368555">Token retrieved.</translation> <translation id="8880704056643418312">Commits</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_es-419.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_es-419.xtb index 9043f444..2f5220e 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_es-419.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_es-419.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="es-419"> <translation id="1091157412887719337">Se produjo un error de asignación. No hay motores disponibles.</translation> +<translation id="117738548141695034">Alternar Blimp</translation> <translation id="1416550906796893042">Versión de la aplicación</translation> <translation id="1750179245464827362">Mostrar información de depuración</translation> <translation id="2004526128230838685">Se produjo un error de asignación. Hay un problema desconocido.</translation> <translation id="2023631438558435272">Se produjo un error de asignación. La respuesta no es válida.</translation> <translation id="2078561879028077171">Información de la versión</translation> <translation id="2117453604279487107">URL del asignador</translation> +<translation id="2218944627481691815">La función Blimp cambió su estado; reinicia la aplicación.</translation> <translation id="2353984724370197742">Se produjo un error de asignación. Se produjo un error en la solicitud de la red.</translation> <translation id="2789927415041640472">Reinicia la aplicación para utilizar la nueva configuración del asignador.</translation> <translation id="3046825211487065480">Se produjo un error de asignación. Se envió una segunda solicitud antes de que se respondiera la primera.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motivo de la desconexión del motor: %1$s</translation> <translation id="7596558890252710462">Sistema operativo</translation> <translation id="7608553142876436780">IP del motor</translation> +<translation id="7795546637165553439">Configuración de Blimp</translation> <translation id="7961542533680218955">La asignación se completó correctamente.</translation> <translation id="8514856595257368555">Se recuperó el token.</translation> <translation id="8880704056643418312">Confirmaciones</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_es.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_es.xtb index 203fab0..0e11c44 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_es.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_es.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="es"> <translation id="1091157412887719337">Ha fallado la asignación. No hay motores disponibles.</translation> +<translation id="117738548141695034">Interruptor de Blimp</translation> <translation id="1416550906796893042">Versión de la aplicación</translation> <translation id="1750179245464827362">Mostrar información de depuración</translation> <translation id="2004526128230838685">Ha fallado la asignación. Problema desconocido.</translation> <translation id="2023631438558435272">Ha fallado la asignación. La respuesta no es válida.</translation> <translation id="2078561879028077171">Información sobre la versión</translation> <translation id="2117453604279487107">URL del asignador</translation> +<translation id="2218944627481691815">Se ha modificado el interruptor de Blimp. Reinicia la aplicación.</translation> <translation id="2353984724370197742">Ha fallado la asignación. Error en la solicitud de red.</translation> <translation id="2789927415041640472">Reinicia la aplicación para utilizar la configuración del nuevo asignador.</translation> <translation id="3046825211487065480">Ha fallado la asignación. Se ha enviado la segunda petición antes de que se respondiera la primera.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motivo por el que el motor está desconectado: %1$s</translation> <translation id="7596558890252710462">Sistema operativo</translation> <translation id="7608553142876436780">IP del motor</translation> +<translation id="7795546637165553439">Configuración de Blimp</translation> <translation id="7961542533680218955">Asignación correcta.</translation> <translation id="8514856595257368555">Se ha recuperado el token.</translation> <translation id="8880704056643418312">Cambios</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fa.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fa.xtb index a4ef9604..a672d49 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fa.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fa.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="fa"> <translation id="1091157412887719337">واگذاری ناموفق بود. موتوری در دسترس نیست.</translation> +<translation id="117738548141695034">کلید Blimp</translation> <translation id="1416550906796893042">نسخه برنامه</translation> <translation id="1750179245464827362">نمایش اطلاعات رفع اشکال</translation> <translation id="2004526128230838685">واگذاری ناموفق بود. مشکل نامشخص.</translation> <translation id="2023631438558435272">واگذاری ناموفق بود. پاسخ نامعتبر.</translation> <translation id="2078561879028077171">اطلاعات نسخه</translation> <translation id="2117453604279487107">نشانیوب اختصاصدهنده</translation> +<translation id="2218944627481691815">کلید Blimp تغییر کرد، لطفاً برنامه را راهاندازی مجدد کنید.</translation> <translation id="2353984724370197742">واگذاری ناموفق بود. درخواست شبکه انجام نشد.</translation> <translation id="2789927415041640472">لطفاً برای استفاده از پیکربندی اختصاصدهنده جدید راهاندازی مجدد کنید.</translation> <translation id="3046825211487065480">واگذاری ناموفق بود. قبل از اینکه به درخواست اول پاسخ داده شود، درخواست دوم ارسال شد.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">ارتباط موتور قطع شد، دلیل: %1$s</translation> <translation id="7596558890252710462">سیستم عامل</translation> <translation id="7608553142876436780">IP موتور</translation> +<translation id="7795546637165553439">تنظیمات Blimp</translation> <translation id="7961542533680218955">واگذاری با موفقیت انجام شد.</translation> <translation id="8514856595257368555">کد بازیابی شد.</translation> <translation id="8880704056643418312">اجراها</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fi.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fi.xtb index ec9e48c..a9d0f0c 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fi.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fi.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="fi"> <translation id="1091157412887719337">Tehtävä epäonnistui. Koneita ei ole käytettävissä.</translation> +<translation id="117738548141695034">Blimp-kytkin</translation> <translation id="1416550906796893042">Sovellusversio</translation> <translation id="1750179245464827362">Näytä virheenkorjaustiedot</translation> <translation id="2004526128230838685">Tehtävä epäonnistui. Tapahtui tuntematon virhe.</translation> <translation id="2023631438558435272">Tehtävä epäonnistui. Vastaus on virheellinen.</translation> <translation id="2078561879028077171">Versiotiedot</translation> <translation id="2117453604279487107">Määrittäjän URL-osoite</translation> +<translation id="2218944627481691815">Blimp-kytkintä muokattiin. Käynnistä sovellus uudelleen.</translation> <translation id="2353984724370197742">Tehtävä epäonnistui. Verkon pyyntö epäonnistui.</translation> <translation id="2789927415041640472">Ota määrittäjän uudet asetukset käyttöön käynnistämällä sovellus uudelleen.</translation> <translation id="3046825211487065480">Tehtävä epäonnistui. Toinen pyyntö lähetettiin ennen kuin ensimmäiseen pyyntöön vastattiin.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Yhteys katkaistiin. Syy: %1$s.</translation> <translation id="7596558890252710462">Käyttöjärjestelmä</translation> <translation id="7608553142876436780">Moottorin IP-osoite</translation> +<translation id="7795546637165553439">Blimp-asetukset</translation> <translation id="7961542533680218955">Tehtävä onnistui.</translation> <translation id="8514856595257368555">Tunnus noudettu.</translation> <translation id="8880704056643418312">Vahvistetut</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fil.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fil.xtb index 3beebbd..c9afd51 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fil.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fil.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="fil"> <translation id="1091157412887719337">Hindi naitalaga. Walang available na engine.</translation> +<translation id="117738548141695034">Blimp Switch</translation> <translation id="1416550906796893042">Bersyon ng application</translation> <translation id="1750179245464827362">Ipakita ang Impormasyon sa Pag-debug</translation> <translation id="2004526128230838685">Hindi naitalaga. May hindi matukoy na isyu.</translation> <translation id="2023631438558435272">Hindi naitalaga. Di-wasto ang tugon.</translation> <translation id="2078561879028077171">Impormasyon ng bersyon</translation> <translation id="2117453604279487107">Assigner URL</translation> +<translation id="2218944627481691815">Binago ang blimp switch, paki-restart ang application.</translation> <translation id="2353984724370197742">Hindi naitalaga. Hindi naisagawa ang kahilingan sa network.</translation> <translation id="2789927415041640472">Paki-restart ang application upang gamitin ang bagong assigner configuration.</translation> <translation id="3046825211487065480">Hindi naitalaga. Nagpadala ng pangalawang kahilingan bago pa natugunan ang unang kahilingan.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Nadiskonekta ang engine, dahilan: %1$s</translation> <translation id="7596558890252710462">Operating system</translation> <translation id="7608553142876436780">Engine IP</translation> +<translation id="7795546637165553439">Mga Setting ng Blimp</translation> <translation id="7961542533680218955">Naging matagumpay ang pagtatalaga.</translation> <translation id="8514856595257368555">Nabawi ang token.</translation> <translation id="8880704056643418312">Mga Pag-commit</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fr.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fr.xtb index be5deb2..55dba6a 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_fr.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_fr.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="fr"> <translation id="1091157412887719337">Échec de l'attribution. Aucun moteur disponible.</translation> +<translation id="117738548141695034">Option Blimp</translation> <translation id="1416550906796893042">Version de l'application</translation> <translation id="1750179245464827362">Afficher les informations de débogage</translation> <translation id="2004526128230838685">Échec de l'attribution. Problème inconnu.</translation> <translation id="2023631438558435272">Échec de l'attribution. Réponse incorrecte.</translation> <translation id="2078561879028077171">Informations sur la version</translation> <translation id="2117453604279487107">URL de l'autorité d'attribution</translation> +<translation id="2218944627481691815">L'option Blimp a été modifiée. Veuillez redémarrer l'application.</translation> <translation id="2353984724370197742">Échec de l'attribution. Échec de la demande réseau.</translation> <translation id="2789927415041640472">Veuillez relancer l'application pour utiliser la nouvelle configuration de l'autorité d'attribution.</translation> <translation id="3046825211487065480">Échec de l'attribution. Deuxième demande envoyée avant la réponse de la première demande.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Moteur déconnecté. Motif : %1$s</translation> <translation id="7596558890252710462">Système d'exploitation</translation> <translation id="7608553142876436780">Adresse IP du moteur</translation> +<translation id="7795546637165553439">Paramètres Blimp</translation> <translation id="7961542533680218955">L'attribution a bien été effectuée.</translation> <translation id="8514856595257368555">Le jeton a bien été récupéré.</translation> <translation id="8880704056643418312">Commits</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hi.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hi.xtb index 129d0ed..0c1a09a 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hi.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hi.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="hi"> <translation id="1091157412887719337">असाइनमेंट विफल रहा. कोई इंजन उपलब्ध नहीं.</translation> +<translation id="117738548141695034">ब्लिंप स्विच</translation> <translation id="1416550906796893042">ऐप्लिकेशन वर्शन</translation> <translation id="1750179245464827362">डीबग जानकारी दिखाएं</translation> <translation id="2004526128230838685">असाइनमेंट विफल रहा. अज्ञात समस्या.</translation> <translation id="2023631438558435272">असाइनमेंट विफल रहा. अमान्य प्रतिसाद.</translation> <translation id="2078561879028077171">वर्शन की जानकारी</translation> <translation id="2117453604279487107">असाइन करने वाला URL</translation> +<translation id="2218944627481691815">ब्लिंप स्विच बदला गया, कृपया ऐप्लिकेशन फिर से चालू करें.</translation> <translation id="2353984724370197742">असाइनमेंट विफल रहा. नेटवर्क अनुरोध विफल रहा.</translation> <translation id="2789927415041640472">नए असाइन करने वाले कॉन्फ़िगरेशन का उपयोग करने के लिए कृपया ऐप्लिकेशन पुनः प्रारंभ करें.</translation> <translation id="3046825211487065480">असाइनमेंट विफल रहा. पहले अनुरोध की प्रतिक्रिया से पूर्व दूसरा अनुरोध भेजा गया.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">इंजन इस कारण डिस्कनेक्ट किया गया: %1$s</translation> <translation id="7596558890252710462">ऑपरेटिंग सिस्टम</translation> <translation id="7608553142876436780">इंजन IP</translation> +<translation id="7795546637165553439">ब्लिंप सेटिंग</translation> <translation id="7961542533680218955">असाइनमेंट सफल रहा.</translation> <translation id="8514856595257368555">टोकन प्राप्त हुआ.</translation> <translation id="8880704056643418312">कमिट की संख्या</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hr.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hr.xtb index eaa1bf7..1401c289 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hr.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hr.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="hr"> <translation id="1091157412887719337">Dodjeljivanje nije uspjelo. Tražilica nije dostupna.</translation> +<translation id="117738548141695034">Prekidač za Blimp</translation> <translation id="1416550906796893042">Verzija aplikacije</translation> <translation id="1750179245464827362">Prikaži informacije o otklanjanju pogreški</translation> <translation id="2004526128230838685">Dodjeljivanje nije uspjelo zbog nepoznatog problema.</translation> <translation id="2023631438558435272">Dodjeljivanje nije uspjelo zbog nevažećeg odgovora.</translation> <translation id="2078561879028077171">Informacije o verziji</translation> <translation id="2117453604279487107">URL dodjelitelja</translation> +<translation id="2218944627481691815">Prekidač za Blimp se promijenio. Ponovo pokrenite aplikaciju.</translation> <translation id="2353984724370197742">Dodjeljivanje nije uspjelo. Mrežni zahtjev nije uspio.</translation> <translation id="2789927415041640472">Ponovo pokrenite aplikaciju da biste upotrebljavali novu konfiguraciju dodjeljivanja.</translation> <translation id="3046825211487065480">Dodjeljivanje nije uspjelo. Drugi zahtjev poslan je prije odgovora na prvi zahtjev.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Prekinuta je veza s uređajem, razlog: %1$s</translation> <translation id="7596558890252710462">Operativni sustav</translation> <translation id="7608553142876436780">IP tražilice</translation> +<translation id="7795546637165553439">Postavke Blimpa</translation> <translation id="7961542533680218955">Dodjeljivanje je uspjelo.</translation> <translation id="8514856595257368555">Oznaka je dohvaćena.</translation> <translation id="8880704056643418312">Potvrđivanja</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hu.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hu.xtb index 125bc18..b99d5c5 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_hu.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_hu.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="hu"> <translation id="1091157412887719337">A hozzárendelés nem sikerült. Nem áll rendelkezésre motor.</translation> +<translation id="117738548141695034">Blimp kapcsoló</translation> <translation id="1416550906796893042">Alkalmazás verziószáma</translation> <translation id="1750179245464827362">Hibakeresési adatok megjelenítése</translation> <translation id="2004526128230838685">A hozzárendelés nem sikerült. Ismeretlen hiba történt.</translation> <translation id="2023631438558435272">A hozzárendelés nem sikerült. Érvénytelen válasz.</translation> <translation id="2078561879028077171">Verzióinformáció</translation> <translation id="2117453604279487107">Hozzárendelő URL-je</translation> +<translation id="2218944627481691815">A Blimp kapcsoló megváltozott. Indítsa újra az alkalmazást.</translation> <translation id="2353984724370197742">A hozzárendelés nem sikerült. Sikertelen hálózati kérés.</translation> <translation id="2789927415041640472">Kérjük, indítsa újra az alkalmazást az új hozzárendelői konfiguráció használatához.</translation> <translation id="3046825211487065480">A hozzárendelés nem sikerült. Második kérést küldtek az első kérés megválaszolása előtt.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motor leválasztva, ok: %1$s</translation> <translation id="7596558890252710462">Operációs rendszer</translation> <translation id="7608553142876436780">Motor IP-címe</translation> +<translation id="7795546637165553439">Blimp beállításai</translation> <translation id="7961542533680218955">A hozzárendelés sikerült.</translation> <translation id="8514856595257368555">Token lekérve.</translation> <translation id="8880704056643418312">Végrehajtások</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_id.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_id.xtb index 8c22ca4..f75b275 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_id.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_id.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="id"> <translation id="1091157412887719337">Penugasan gagal. Tidak ada mesin yang tersedia.</translation> +<translation id="117738548141695034">Pengalih Blim</translation> <translation id="1416550906796893042">Versi aplikasi</translation> <translation id="1750179245464827362">Tampilkan Info Debug</translation> <translation id="2004526128230838685">Penugasan gagal. Masalah tidak dikenal.</translation> <translation id="2023631438558435272">Penugasan gagal. Tanggapan tidak valid.</translation> <translation id="2078561879028077171">Info Versi</translation> <translation id="2117453604279487107">URL Pemberi Tugas</translation> +<translation id="2218944627481691815">Pengalih blim diubah. Mulai ulang aplikasi.</translation> <translation id="2353984724370197742">Penugasan gagal. Permintaan jaringan gagal.</translation> <translation id="2789927415041640472">Mulai ulang aplikasi untuk menggunakan konfigurasi pemberi tugas yang baru.</translation> <translation id="3046825211487065480">Penugasan gagal. Permintaan kedua dikirim sebelum permintaan pertama ditanggapi.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Sambungan perangkat terputus, alasan: %1$s</translation> <translation id="7596558890252710462">Sistem operasi</translation> <translation id="7608553142876436780">IP Mesin</translation> +<translation id="7795546637165553439">Setelan Blim</translation> <translation id="7961542533680218955">Penugasan berhasil.</translation> <translation id="8514856595257368555">Token telah diambil.</translation> <translation id="8880704056643418312">Pelaksanaan</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_it.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_it.xtb index 10527bf4..80d8da3 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_it.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_it.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="it"> <translation id="1091157412887719337">Assegnazione non riuscita. Nessun motore disponibile.</translation> +<translation id="117738548141695034">Blimp</translation> <translation id="1416550906796893042">Versione applicazione</translation> <translation id="1750179245464827362">Mostra informazioni di debug</translation> <translation id="2004526128230838685">Assegnazione non riuscita. Problema sconosciuto.</translation> <translation id="2023631438558435272">Assegnazione non riuscita. Risposta non valida.</translation> <translation id="2078561879028077171">Info versione</translation> <translation id="2117453604279487107">URL assegnatore</translation> +<translation id="2218944627481691815">Blimp cambiato. Riavvia l'applicazione.</translation> <translation id="2353984724370197742">Assegnazione non riuscita. Richiesta di rete non riuscita.</translation> <translation id="2789927415041640472">Riavvia l'applicazione per utilizzare la nuova configurazione dell'assegnatore.</translation> <translation id="3046825211487065480">Assegnazione non riuscita. Seconda richiesta inviata prima che la precedente sia stata ricevuta.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motore disconnesso. Motivo: %1$s</translation> <translation id="7596558890252710462">Sistema operativo</translation> <translation id="7608553142876436780">IP del motore</translation> +<translation id="7795546637165553439">Impostazioni blimp</translation> <translation id="7961542533680218955">Assegnazione riuscita.</translation> <translation id="8514856595257368555">Token recuperato.</translation> <translation id="8880704056643418312">Commit</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_iw.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_iw.xtb index c3d863ec..fda1bab 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_iw.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_iw.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="iw"> <translation id="1091157412887719337">ההקצאה נכשלה. אין מנוע זמין.</translation> +<translation id="117738548141695034">מתג Blimp</translation> <translation id="1416550906796893042">גרסת אפליקציה</translation> <translation id="1750179245464827362">הצג מידע של ניפוי באגים</translation> <translation id="2004526128230838685">ההקצאה נכשלה. בעיה לא ידועה.</translation> <translation id="2023631438558435272">ההקצאה נכשלה. תגובה לא חוקית.</translation> <translation id="2078561879028077171">פרטי גירסה</translation> <translation id="2117453604279487107">כתובת אתר של המקצה</translation> +<translation id="2218944627481691815">מתג Blimp השתנה. הפעל מחדש את האפליקציה.</translation> <translation id="2353984724370197742">ההקצאה נכשלה. בקשת הרשת נכשלה.</translation> <translation id="2789927415041640472">הפעל מחדש את האפליקציה כדי להשתמש בהגדרות המקצה החדשות.</translation> <translation id="3046825211487065480">ההקצאה נכשלה. הבקשה השנייה נשלחה לפני התגובה לבקשה הראשונה.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">המנוע מנותק. הסיבה: %1$s</translation> <translation id="7596558890252710462">מערכת הפעלה</translation> <translation id="7608553142876436780">כתובת IP של המנוע</translation> +<translation id="7795546637165553439">הגדרות Blimp</translation> <translation id="7961542533680218955">ההקצאה הצליחה.</translation> <translation id="8514856595257368555">האסימון אוחזר.</translation> <translation id="8880704056643418312">פעולות שבוצעו</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ja.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ja.xtb index 3cc86a2..128fbfc 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ja.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ja.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="ja"> <translation id="1091157412887719337">割り当てが失敗しました。利用できるエンジンがありません。</translation> +<translation id="117738548141695034">Blimp スイッチ</translation> <translation id="1416550906796893042">アプリケーションのバージョン</translation> <translation id="1750179245464827362">デバッグ情報を表示</translation> <translation id="2004526128230838685">割り当てが失敗しました。不明なエラーが発生しました。</translation> <translation id="2023631438558435272">割り当てが失敗しました。無効な応答が返されました。</translation> <translation id="2078561879028077171">バージョン情報</translation> <translation id="2117453604279487107">割り当て元 URL</translation> +<translation id="2218944627481691815">Blimp スイッチを変更しました。アプリを再起動してください。</translation> <translation id="2353984724370197742">割り当てが失敗しました。ネットワーク リクエストが失敗しました。</translation> <translation id="2789927415041640472">新しい割り当て元の設定を使用するには、アプリケーションを再起動してください。</translation> <translation id="3046825211487065480">割り当てが失敗しました。最初のリクエストの応答がある前に、2 番目のリクエストが送信されました。</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">エンジンが切断されました。原因: %1$s</translation> <translation id="7596558890252710462">オペレーティング システム</translation> <translation id="7608553142876436780">エンジン IP</translation> +<translation id="7795546637165553439">Blimp の設定</translation> <translation id="7961542533680218955">割り当てが成功しました。</translation> <translation id="8514856595257368555">トークンを取得しました。</translation> <translation id="8880704056643418312">確定</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ko.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ko.xtb index fb8fb92..fbc5c64 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ko.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ko.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="ko"> <translation id="1091157412887719337">할당하지 못했습니다. 사용 가능한 엔진이 없습니다.</translation> +<translation id="117738548141695034">Blimp 스위치</translation> <translation id="1416550906796893042">애플리케이션 버전</translation> <translation id="1750179245464827362">디버그 정보 표시</translation> <translation id="2004526128230838685">할당하지 못했습니다. 알 수 없는 문제가 발생했습니다.</translation> <translation id="2023631438558435272">할당하지 못했습니다. 응답이 잘못되었습니다.</translation> <translation id="2078561879028077171">버전 정보</translation> <translation id="2117453604279487107">할당자 URL</translation> +<translation id="2218944627481691815">Blimp 스위치가 변경되었습니다. 애플리케이션을 다시 시작하세요.</translation> <translation id="2353984724370197742">할당하지 못했습니다. 네트워크 요청에 실패했습니다.</translation> <translation id="2789927415041640472">새로운 할당자 구성을 사용하려면 애플리케이션을 다시 시작하세요.</translation> <translation id="3046825211487065480">할당하지 못했습니다. 첫 번째 요청이 응답되기 전에 두 번째 요청이 전송되었습니다.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">다음 이유로 엔진 연결이 해제되었습니다. %1$s</translation> <translation id="7596558890252710462">운영체제</translation> <translation id="7608553142876436780">엔진 IP</translation> +<translation id="7795546637165553439">Blimp 설정</translation> <translation id="7961542533680218955">할당이 완료되었습니다.</translation> <translation id="8514856595257368555">토큰을 가져왔습니다.</translation> <translation id="8880704056643418312">확정</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_lt.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_lt.xtb index 7130af3..a90da7c 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_lt.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_lt.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="lt"> <translation id="1091157412887719337">Priskirti nepavyko. Nėra jokių pasiekiamų variklių.</translation> +<translation id="117738548141695034">„Blimp“ jungiklis</translation> <translation id="1416550906796893042">Programos versija</translation> <translation id="1750179245464827362">Rodyti derinimo informaciją</translation> <translation id="2004526128230838685">Priskirti nepavyko. Nežinoma problema.</translation> <translation id="2023631438558435272">Priskirti nepavyko. Netinkamas atsakas.</translation> <translation id="2078561879028077171">Versijos informacija</translation> <translation id="2117453604279487107">Priskyrimo priemonės URL</translation> +<translation id="2218944627481691815">„Blimp“ jungiklis pasikeitė. Paleiskite programą iš naujo.</translation> <translation id="2353984724370197742">Priskirti nepavyko. Nepavyko tinklo užklausa.</translation> <translation id="2789927415041640472">Norėdami naudoti naują priskyrimo priemonės konfigūraciją, paleiskite programą iš naujo.</translation> <translation id="3046825211487065480">Priskirti nepavyko. Antra užklausa išsiųsta prieš pateikiant atsaką į pirmą užklausą.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Variklis atjungtas, priežastis: %1$s</translation> <translation id="7596558890252710462">Operacinė sistema</translation> <translation id="7608553142876436780">Variklio IP protokolas</translation> +<translation id="7795546637165553439">„Blimp“ nustatymai</translation> <translation id="7961542533680218955">Priskirti pavyko.</translation> <translation id="8514856595257368555">Prieigos raktas gautas.</translation> <translation id="8880704056643418312">Pateikimai</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_lv.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_lv.xtb index af6d6f22..1046dae1 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_lv.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_lv.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="lv"> <translation id="1091157412887719337">Piešķires kļūme. Nav pieejamas programmas.</translation> +<translation id="117738548141695034">Blimp slēdzis</translation> <translation id="1416550906796893042">Lietojumprogrammas versija</translation> <translation id="1750179245464827362">Rādīt atkļūdošanas informāciju</translation> <translation id="2004526128230838685">Piešķires kļūme. Nezināma problēma.</translation> <translation id="2023631438558435272">Piešķires kļūme. Nederīga atbilde.</translation> <translation id="2078561879028077171">Informācija par versiju</translation> <translation id="2117453604279487107">Piešķīrēja URL</translation> +<translation id="2218944627481691815">Blimp slēdzis ir mainīts. Lūdzu, restartējiet lietojumprogrammu.</translation> <translation id="2353984724370197742">Piešķires kļūme. Tīkla pieprasījuma kļūme.</translation> <translation id="2789927415041640472">Lūdzu, restartējiet lietojumprogrammu, lai izmantotu jaunā piešķīrēja konfigurāciju.</translation> <translation id="3046825211487065480">Piešķires kļūme. Otrs pieprasījums nosūtīts, pirms tika saņemta atbilde uz pirmo pieprasījumu.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Programma ir atvienota, iemesls: %1$s</translation> <translation id="7596558890252710462">Operētājsistēma</translation> <translation id="7608553142876436780">Programmas IP</translation> +<translation id="7795546637165553439">Blimp iestatījumi</translation> <translation id="7961542533680218955">Piešķire bija veiksmīga.</translation> <translation id="8514856595257368555">Pilnvara ir iegūta.</translation> <translation id="8880704056643418312">Izpildes gadījumi</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_nl.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_nl.xtb index 1e4c7da..7a00e921 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_nl.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_nl.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="nl"> <translation id="1091157412887719337">Toewijzing mislukt. Geen engine beschikbaar.</translation> +<translation id="117738548141695034">Blimp-schakelaar</translation> <translation id="1416550906796893042">Appversie</translation> <translation id="1750179245464827362">Foutopsporingsinformatie weergeven</translation> <translation id="2004526128230838685">Toewijzing mislukt. Onbekend probleem.</translation> <translation id="2023631438558435272">Toewijzing mislukt. Ongeldige reactie.</translation> <translation id="2078561879028077171">Versie-info</translation> <translation id="2117453604279487107">URL van toewijzer</translation> +<translation id="2218944627481691815">Blimp-schakelaar gewijzigd. Start de app opnieuw.</translation> <translation id="2353984724370197742">Toewijzing mislukt. Netwerkverzoek mislukt.</translation> <translation id="2789927415041640472">Start de app opnieuw om de nieuwe toewijzerconfiguratie te gebruiken.</translation> <translation id="3046825211487065480">Toewijzing mislukt. Het tweede verzoek is verzonden voordat er op het eerste verzoek is gereageerd.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Verbinding met engine verbroken, reden: %1$s</translation> <translation id="7596558890252710462">Besturingssysteem</translation> <translation id="7608553142876436780">Engine-IP</translation> +<translation id="7795546637165553439">Blimp-instellingen</translation> <translation id="7961542533680218955">Toewijzing voltooid.</translation> <translation id="8514856595257368555">Token opgehaald.</translation> <translation id="8880704056643418312">Commits</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_no.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_no.xtb index 7815411..1258289 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_no.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_no.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="no"> <translation id="1091157412887719337">Oppgaven kunne ikke utføres. Ingen motorer var tilgjengelige.</translation> +<translation id="117738548141695034">Blimp-bryter</translation> <translation id="1416550906796893042">Programversjon</translation> <translation id="1750179245464827362">Vis feilsøkingsinformasjon</translation> <translation id="2004526128230838685">Oppgaven kunne ikke utføres. Ukjent problem.</translation> <translation id="2023631438558435272">Oppgaven kunne ikke utføres. Ugyldig svar.</translation> <translation id="2078561879028077171">Versjonsinformasjon</translation> <translation id="2117453604279487107">Nettadresse for tildeleren</translation> +<translation id="2218944627481691815">Blimp-bryteren er endret. Start appen på nytt.</translation> <translation id="2353984724370197742">Oppgaven kunne ikke utføres. Nettverksforespørselen mislyktes.</translation> <translation id="2789927415041640472">Start appen på nytt for å bruke den nye tildelerkonfigurasjonen.</translation> <translation id="3046825211487065480">Oppgaven kunne ikke utføres. Den andre forespørselen ble sendt før den første forespørselen svarte.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motoren er koblet fra. Årsak: %1$s</translation> <translation id="7596558890252710462">Operativsystem</translation> <translation id="7608553142876436780">Motor-IP</translation> +<translation id="7795546637165553439">Blimp-innstillinger</translation> <translation id="7961542533680218955">Oppgaven ble utført.</translation> <translation id="8514856595257368555">Tokenet er hentet.</translation> <translation id="8880704056643418312">Gjennomføringer</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pl.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pl.xtb index d54fec2..bf4204e 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pl.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pl.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="pl"> <translation id="1091157412887719337">Przypisanie się nie udało. Nie jest dostępna żadna wyszukiwarka.</translation> +<translation id="117738548141695034">Przełącznik Blimp</translation> <translation id="1416550906796893042">Wersja aplikacji</translation> <translation id="1750179245464827362">Pokaż informacje o debugowaniu</translation> <translation id="2004526128230838685">Przypisanie się nie udało. Nieznany problem.</translation> <translation id="2023631438558435272">Przypisanie się nie udało. Nieprawidłowa odpowiedź.</translation> <translation id="2078561879028077171">Informacje o wersji</translation> <translation id="2117453604279487107">URL przypisujący</translation> +<translation id="2218944627481691815">Nastąpiła zmiana przełącznika Blimp. Uruchom ponownie aplikację.</translation> <translation id="2353984724370197742">Przypisanie się nie udało. Błąd żądania sieciowego.</translation> <translation id="2789927415041640472">Uruchom ponownie aplikację, by korzystać z nowej konfiguracji przypisującego.</translation> <translation id="3046825211487065480">Przypisanie się nie udało. Drugie żądanie zostało wysłane przed otrzymaniem odpowiedzi na pierwsze.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Rozłączono z mechanizmem, powód: %1$s</translation> <translation id="7596558890252710462">System operacyjny</translation> <translation id="7608553142876436780">Adres IP mechanizmu</translation> +<translation id="7795546637165553439">Ustawienia Blimp</translation> <translation id="7961542533680218955">Przypisano.</translation> <translation id="8514856595257368555">Token został pobrany.</translation> <translation id="8880704056643418312">Zatwierdzenia</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-BR.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-BR.xtb index 73c3b6e6..45a0142 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-BR.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-BR.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="pt-BR"> <translation id="1091157412887719337">Falha na atribuição. Nenhum mecanismo disponível.</translation> +<translation id="117738548141695034">Interruptor Blimp</translation> <translation id="1416550906796893042">Versão do aplicativo</translation> <translation id="1750179245464827362">Exibir informações de depuração</translation> <translation id="2004526128230838685">Falha na atribuição. Problema desconhecido.</translation> <translation id="2023631438558435272">Falha na atribuição. Resposta inválida.</translation> <translation id="2078561879028077171">Informações da versão</translation> <translation id="2117453604279487107">URL do atribuidor</translation> +<translation id="2218944627481691815">Interruptor Blimp alterado. Reinicie o app.</translation> <translation id="2353984724370197742">Falha na atribuição. Falha na solicitação de rede.</translation> <translation id="2789927415041640472">Reinicie o aplicativo para usar a configuração do novo atribuidor.</translation> <translation id="3046825211487065480">Falha na atribuição. Segunda solicitação enviada antes de a primeira solicitação responder.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Mecanismo desconectado, motivo: %1$s</translation> <translation id="7596558890252710462">Sistema operacional</translation> <translation id="7608553142876436780">IP do mecanismo</translation> +<translation id="7795546637165553439">Configurações do Blimp</translation> <translation id="7961542533680218955">Atribuição concluída.</translation> <translation id="8514856595257368555">Token recuperado.</translation> <translation id="8880704056643418312">Commits</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-PT.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-PT.xtb index be93b73d..9963b329 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-PT.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_pt-PT.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="pt-PT"> <translation id="1091157412887719337">A atribuição falhou. Nenhum motor disponível.</translation> +<translation id="117738548141695034">Interruptor do Blimp</translation> <translation id="1416550906796893042">Versão da aplicação</translation> <translation id="1750179245464827362">Mostrar informações de depuração</translation> <translation id="2004526128230838685">A atribuição falhou. Problema desconhecido.</translation> <translation id="2023631438558435272">A atribuição falhou. Resposta inválida.</translation> <translation id="2078561879028077171">Informações da versão</translation> <translation id="2117453604279487107">URL do atribuidor</translation> +<translation id="2218944627481691815">Interruptor do Blimp alterado. Reinicie a aplicação.</translation> <translation id="2353984724370197742">A atribuição falhou. Falha no pedido de rede.</translation> <translation id="2789927415041640472">Reinicie a aplicação para utilizar a nova configuração do atribuidor.</translation> <translation id="3046825211487065480">A atribuição falhou. O segundo pedido foi enviado antes de o primeiro pedido responder.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motor desligado, motivo: %1$s</translation> <translation id="7596558890252710462">Sistema operativo</translation> <translation id="7608553142876436780">IP do motor</translation> +<translation id="7795546637165553439">Definições do Blimp</translation> <translation id="7961542533680218955">A atribuição foi bem-sucedida.</translation> <translation id="8514856595257368555">Símbolo obtido.</translation> <translation id="8880704056643418312">Consolidações</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ro.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ro.xtb index cd6634a..38da896 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ro.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ro.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="ro"> <translation id="1091157412887719337">Atribuirea nu a reușit. Niciun motor disponibil.</translation> +<translation id="117738548141695034">Comutator Blimp</translation> <translation id="1416550906796893042">Versiunea aplicației</translation> <translation id="1750179245464827362">Afișează informațiile privind remedierea erorilor</translation> <translation id="2004526128230838685">Atribuirea nu a reușit. Problemă necunoscută.</translation> <translation id="2023631438558435272">Atribuirea nu a reușit. Răspuns nevalid.</translation> <translation id="2078561879028077171">Informații privind versiunea</translation> <translation id="2117453604279487107">Adresa URL a instrumentului de atribuire</translation> +<translation id="2218944627481691815">Comutatorul Blimp s-a modificat. Repornește aplicația.</translation> <translation id="2353984724370197742">Atribuirea nu a reușit. Solicitarea din rețea nu a reușit.</translation> <translation id="2789927415041640472">Repornește aplicația pentru a folosi noua configurație a instrumentului de atribuire.</translation> <translation id="3046825211487065480">Atribuirea nu a reușit. A fost trimisă o a doua solicitare înainte ca prima solicitare să primească răspuns.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motor deconectat, motiv: %1$s</translation> <translation id="7596558890252710462">Sistem de operare</translation> <translation id="7608553142876436780">Adresa IP a motorului</translation> +<translation id="7795546637165553439">Setări Blimp</translation> <translation id="7961542533680218955">Atribuirea a reușit.</translation> <translation id="8514856595257368555">Indicativul a fost preluat.</translation> <translation id="8880704056643418312">Comiteri</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ru.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ru.xtb index 55a295c..94b3d1e2d9 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_ru.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_ru.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="ru"> <translation id="1091157412887719337">Ошибка. Поисковая система недоступна.</translation> +<translation id="117738548141695034">Переключатель Blimp</translation> <translation id="1416550906796893042">Версия приложения</translation> <translation id="1750179245464827362">Показать сведения об отладке</translation> <translation id="2004526128230838685">Неизвестная ошибка.</translation> <translation id="2023631438558435272">Ошибка. Недействительный ответ.</translation> <translation id="2078561879028077171">Версия</translation> <translation id="2117453604279487107">URL указателя</translation> +<translation id="2218944627481691815">Положение переключателя Blimp изменено. Перезапустите приложение.</translation> <translation id="2353984724370197742">Ошибка. Не удалось обработать запрос.</translation> <translation id="2789927415041640472">Чтобы использовать новую конфигурацию, перезапустите приложение.</translation> <translation id="3046825211487065480">Ошибка. Второй запрос был отправлен раньше, чем пришел ответ на первый.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Соединение прервано. Причина: %1$s.</translation> <translation id="7596558890252710462">Операционная система</translation> <translation id="7608553142876436780">IP-адрес поисковой системы</translation> +<translation id="7795546637165553439">Настройки Blimp</translation> <translation id="7961542533680218955">Готово.</translation> <translation id="8514856595257368555">Токен получен.</translation> <translation id="8880704056643418312">Число фиксаций</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sk.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sk.xtb index e8f654c6..f3838cd 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sk.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sk.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="sk"> <translation id="1091157412887719337">Priradenie zlyhalo. Nie je k dispozícii žiadny nástroj.</translation> +<translation id="117738548141695034">Spínač Blimp</translation> <translation id="1416550906796893042">Verzia aplikácie</translation> <translation id="1750179245464827362">Zobraziť informácie o ladení</translation> <translation id="2004526128230838685">Priradenie zlyhalo. Neznáma chyba.</translation> <translation id="2023631438558435272">Priradenie zlyhalo. Neplatná odpoveď.</translation> <translation id="2078561879028077171">Informácie o verzii</translation> <translation id="2117453604279487107">Webová adresa postupiteľa</translation> +<translation id="2218944627481691815">Spínač Blimp bol zmenený. Reštartujte aplikáciu.</translation> <translation id="2353984724370197742">Priradenie zlyhalo. Zlyhala žiadosť do siete.</translation> <translation id="2789927415041640472">Ak chcete použiť novú konfiguráciu postupiteľa, reštartujte aplikáciu.</translation> <translation id="3046825211487065480">Priradenie zlyhalo. Druhá žiadosť bola odoslaná ešte pred odpoveďou na prvú žiadosť.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Nástroj bol odpojený. Dôvod: %1$s</translation> <translation id="7596558890252710462">Operačný systém</translation> <translation id="7608553142876436780">Adresa IP nástroja</translation> +<translation id="7795546637165553439">Nastavenia spínača Blimp</translation> <translation id="7961542533680218955">Priradenie bolo úspešné.</translation> <translation id="8514856595257368555">Token bol načítaný.</translation> <translation id="8880704056643418312">Odoslania</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sl.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sl.xtb index 676ad00..e192df6 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sl.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sl.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="sl"> <translation id="1091157412887719337">Dodelitev ni uspela. Na voljo ni iskalnika.</translation> +<translation id="117738548141695034">Stikalo za Blimp</translation> <translation id="1416550906796893042">Različica aplikacije</translation> <translation id="1750179245464827362">Pokaži informacije za odpravljanje težav</translation> <translation id="2004526128230838685">Dodelitev ni uspela. Neznana težava.</translation> <translation id="2023631438558435272">Dodelitev ni uspela. Neveljaven odgovor.</translation> <translation id="2078561879028077171">Podatki o različici</translation> <translation id="2117453604279487107">URL dodeljevalnika</translation> +<translation id="2218944627481691815">Stikalo za Blimp je bilo spremenjeno. Znova zaženite aplikacijo.</translation> <translation id="2353984724370197742">Dodelitev ni uspela. Omrežna zahteva ni uspela.</translation> <translation id="2789927415041640472">Če želite uporabljati novo konfiguracijo dodeljevalnika, znova zaženite aplikacijo.</translation> <translation id="3046825211487065480">Dodelitev ni uspela. Pred odgovorom na prvo zahtevo je bila poslana druga zahteva.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Povezava z mehanizmom je prekinjena; razlog: %1$s</translation> <translation id="7596558890252710462">Operacijski sistem</translation> <translation id="7608553142876436780">IP mehanizma</translation> +<translation id="7795546637165553439">Nastavitve za Blimp</translation> <translation id="7961542533680218955">Dodelitev je uspela.</translation> <translation id="8514856595257368555">Žeton pridobljen.</translation> <translation id="8880704056643418312">Uveljavitve</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sr.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sr.xtb index bfbcf54..40401ed 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sr.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sr.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="sr"> <translation id="1091157412887719337">Пренос права није успео. Нема доступног механизма.</translation> +<translation id="117738548141695034">Прекидач за Blimp</translation> <translation id="1416550906796893042">Верзија апликације</translation> <translation id="1750179245464827362">Прикажи информације о отклањању грешака</translation> <translation id="2004526128230838685">Пренос права није успео. Дошло је до непознатог проблема.</translation> <translation id="2023631438558435272">Пренос права није успео. Неважећи одговор.</translation> <translation id="2078561879028077171">Информације о верзији</translation> <translation id="2117453604279487107">URL додељивача</translation> +<translation id="2218944627481691815">Прекидач за Blimp је промењен. Рестартујте апликацију.</translation> <translation id="2353984724370197742">Пренос права није успео. Захтев мреже није успео.</translation> <translation id="2789927415041640472">Рестартујте апликацију да би користила нову конфигурацију додељивача.</translation> <translation id="3046825211487065480">Пренос права није успео. Други захтев је послат пре одговора на први захтев.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Прекинута је веза са механизмом, разлог: %1$s</translation> <translation id="7596558890252710462">Оперативни систем</translation> <translation id="7608553142876436780">IP механизма</translation> +<translation id="7795546637165553439">Подешавања Blimp-а</translation> <translation id="7961542533680218955">Пренос права је успео.</translation> <translation id="8514856595257368555">Токен је преузет.</translation> <translation id="8880704056643418312">Примене</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sv.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sv.xtb index d3bd0ca..f1020b4 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sv.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sv.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="sv"> <translation id="1091157412887719337">Tilldelningen misslyckades. Det finns ingen tillgänglig motor.</translation> +<translation id="117738548141695034">Blimp-reglaget.</translation> <translation id="1416550906796893042">Appversion</translation> <translation id="1750179245464827362">Visa information om felsökning</translation> <translation id="2004526128230838685">Tilldelningen misslyckades. Okänt problem.</translation> <translation id="2023631438558435272">Tilldelningen misslyckades. Ogiltigt svar.</translation> <translation id="2078561879028077171">Versionsinformation</translation> <translation id="2117453604279487107">Tilldelaradress</translation> +<translation id="2218944627481691815">Reglaget för Blimp ändrades. Starta om programmet.</translation> <translation id="2353984724370197742">Tilldelningen misslyckades. Nätverksbegäran misslyckades.</translation> <translation id="2789927415041640472">Starta om programmet så att den nya tilldelningskonfigurationen träder i kraft.</translation> <translation id="3046825211487065480">Tilldelningen misslyckades. Den andra begäran skickades innan den första begäran hade besvarats.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motorn är frånkopplad. Anledning: %1$s</translation> <translation id="7596558890252710462">Operativsystem</translation> <translation id="7608553142876436780">Motor-IP</translation> +<translation id="7795546637165553439">Blimp-inställningar</translation> <translation id="7961542533680218955">Tilldelningen lyckades.</translation> <translation id="8514856595257368555">Token har hämtats.</translation> <translation id="8880704056643418312">Incheckningar</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sw.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sw.xtb index 03c668e..850444a 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_sw.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_sw.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="sw"> <translation id="1091157412887719337">Haijafaulu kuhawilisha. Hakuna mtambo unaopatikana.</translation> +<translation id="117738548141695034">Swichi ya Blimp</translation> <translation id="1416550906796893042">Toleo la programu</translation> <translation id="1750179245464827362">Onyesha Maelezo ya Hitilafu</translation> <translation id="2004526128230838685">Haijafaulu kuhawilisha. Hitilafu isiyojulikana.</translation> <translation id="2023631438558435272">Haijafaulu kuhawilisha. Jibu si sahihi.</translation> <translation id="2078561879028077171">Maelezo ya Toleo</translation> <translation id="2117453604279487107">URL ya anayehawilisha</translation> +<translation id="2218944627481691815">Swichi ya Blimp imebadilika. Tafadhali zima programu na uiwashe.</translation> <translation id="2353984724370197742">Haijafaulu kuhawilisha. Ombi la mtandao halijafaulu.</translation> <translation id="2789927415041640472">Tafadhali zima halafu uwashe programu ili utumie uwekaji mipangilio ya kihawilishaji kipya.</translation> <translation id="3046825211487065480">Haijafaulu kuhawilisha. Ombi la pili limetumwa kabla ya ombi la kwanza kujibu.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Mtambo umeondolewa, sababu: %1$s</translation> <translation id="7596558890252710462">Mfumo wa uendeshaji</translation> <translation id="7608553142876436780">IP ya Mtambo</translation> +<translation id="7795546637165553439">Mipangilio ya Blimp</translation> <translation id="7961542533680218955">Imefaulu kuhawilisha.</translation> <translation id="8514856595257368555">Tokeni imerejeshwa.</translation> <translation id="8880704056643418312">Imeweka</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_th.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_th.xtb index 44862355..99f401f 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_th.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_th.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="th"> <translation id="1091157412887719337">การมอบหมายล้มเหลว ไม่มีเครื่องที่พร้อมใช้งาน</translation> +<translation id="117738548141695034">สวิตช์เปิดปิดการใช้งาน</translation> <translation id="1416550906796893042">เวอร์ชันของแอปพลิเคชัน</translation> <translation id="1750179245464827362">แสดงข้อมูลการแก้ไขข้อบกพร่อง</translation> <translation id="2004526128230838685">การมอบหมายล้มเหลว ไม่ทราบปัญหา</translation> <translation id="2023631438558435272">การมอบหมายล้มเหลว การตอบกลับไม่ถูกต้อง</translation> <translation id="2078561879028077171">ข้อมูลเวอร์ชัน</translation> <translation id="2117453604279487107">URL ผู้กำหนด</translation> +<translation id="2218944627481691815">เปลี่ยนสวิตช์เปิดปิดการใช้งานแล้ว โปรดรีสตาร์ทแอปพลิเคชัน</translation> <translation id="2353984724370197742">การมอบหมายล้มเหลว คำขอเครือข่ายล้มเหลว</translation> <translation id="2789927415041640472">โปรดรีสตาร์ทแอปพลิเคชันเพื่อใช้การกำหนดค่าใหม่ของผู้กำหนด</translation> <translation id="3046825211487065480">การมอบหมายล้มเหลว คำขอที่ 2 ถูกส่งออกไปก่อนที่จะมีการตอบกลับคำขอแรก</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">ยกเลิกการเชื่อมต่อเครื่องมือแล้ว เหตุผลคือ %1$s</translation> <translation id="7596558890252710462">ระบบปฏิบัติการ</translation> <translation id="7608553142876436780">IP ของเครื่องมือ</translation> +<translation id="7795546637165553439">การตั้งค่าเปิดปิดการใช้งาน</translation> <translation id="7961542533680218955">การมอบหมายสำเร็จ</translation> <translation id="8514856595257368555">ดึงข้อมูลโทเค็นแล้ว</translation> <translation id="8880704056643418312">คอมมิต</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_tr.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_tr.xtb index f702a8c..6a9f708 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_tr.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_tr.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="tr"> <translation id="1091157412887719337">Atama başarısız oldu. Kullanılabilir motor yok.</translation> +<translation id="117738548141695034">Blimp Anahtarı</translation> <translation id="1416550906796893042">Uygulama sürümü</translation> <translation id="1750179245464827362">Hata Ayıklama Bilgilerini Göster</translation> <translation id="2004526128230838685">Atama başarısız oldu. Bilinmeyen sorun.</translation> <translation id="2023631438558435272">Atama başarısız oldu. Geçersiz yanıt.</translation> <translation id="2078561879028077171">Sürüm Bilgisi</translation> <translation id="2117453604279487107">Atayan URL'si</translation> +<translation id="2218944627481691815">Blimp anahtarı değişti. Lütfen uygulamayı yeniden başlatın.</translation> <translation id="2353984724370197742">Atama başarısız oldu. Ağ isteği başarısız oldu.</translation> <translation id="2789927415041640472">Yeni atayan yapılandırmasını kullanmak için lütfen uygulamayı yeniden başlatın.</translation> <translation id="3046825211487065480">Atama başarısız oldu. Birinci isteğe yanıt verilmeden ikinci istek gönderildi.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Motor bağlantısı kesildi, neden: %1$s</translation> <translation id="7596558890252710462">İşletim sistemi</translation> <translation id="7608553142876436780">Motor IP'si</translation> +<translation id="7795546637165553439">Blimp Ayarları</translation> <translation id="7961542533680218955">Atama başarılı oldu.</translation> <translation id="8514856595257368555">Jeton alındı.</translation> <translation id="8880704056643418312">Gerçekleştirme sayısı</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_uk.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_uk.xtb index 3ca77d04..1815b4a 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_uk.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_uk.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="uk"> <translation id="1091157412887719337">Не вдалось отримати завдання. Немає доступних ресурсів.</translation> +<translation id="117738548141695034">Перемикач Blimp</translation> <translation id="1416550906796893042">Версія додатка</translation> <translation id="1750179245464827362">Показати інформацію про налагодження</translation> <translation id="2004526128230838685">Не вдалось отримати завдання. Невідома проблема.</translation> <translation id="2023631438558435272">Не вдалось отримати завдання. Недійсна відповідь.</translation> <translation id="2078561879028077171">Інформація про версію</translation> <translation id="2117453604279487107">URL-адреса призначення</translation> +<translation id="2218944627481691815">Перемикач Blimp змінено. Перезапустіть додаток.</translation> <translation id="2353984724370197742">Не вдалось отримати завдання. Помилка мережі.</translation> <translation id="2789927415041640472">Перезапустіть додаток, щоб застосувати нову конфігурацію визначника.</translation> <translation id="3046825211487065480">Не вдалось отримати завдання. Другий запит надіслано до того, як надійшла відповідь на перший.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Систему від’єднано. Причина: %1$s</translation> <translation id="7596558890252710462">Операційна система</translation> <translation id="7608553142876436780">IP-адреса системи</translation> +<translation id="7795546637165553439">Налаштування Blimp</translation> <translation id="7961542533680218955">Завдання отримано.</translation> <translation id="8514856595257368555">Маркер отримано.</translation> <translation id="8880704056643418312">Підтвердження</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_vi.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_vi.xtb index c0c9bb1..ce23c7a9 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_vi.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_vi.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="vi"> <translation id="1091157412887719337">Gán không thành công. Không có công cụ.</translation> +<translation id="117738548141695034">Nút gạt Blimp</translation> <translation id="1416550906796893042">Phiên bản ứng dụng</translation> <translation id="1750179245464827362">Hiển thị thông tin gỡ lỗi</translation> <translation id="2004526128230838685">Gán không thành công. Sự cố không xác định.</translation> <translation id="2023631438558435272">Gán không thành công. Phản hồi không hợp lệ.</translation> <translation id="2078561879028077171">Thông tin phiên bản</translation> <translation id="2117453604279487107">URL trình gán</translation> +<translation id="2218944627481691815">Nút gạt Blimp đã thay đổi. Vui lòng khởi động lại ứng dụng.</translation> <translation id="2353984724370197742">Gán không thành công. Yêu cầu mạng không thành công.</translation> <translation id="2789927415041640472">Vui lòng khởi động lại ứng dụng để sử dụng cấu hình trình gán mới.</translation> <translation id="3046825211487065480">Gán không thành công. Yêu cầu thứ hai đã được gửi trước khi yêu cầu thứ nhất được phản hồi.</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">Đã ngắt kết nối công cụ, lí do: %1$s</translation> <translation id="7596558890252710462">Hệ điều hành</translation> <translation id="7608553142876436780">IP công cụ</translation> +<translation id="7795546637165553439">Cài đặt Blimp</translation> <translation id="7961542533680218955">Đã gán thành công.</translation> <translation id="8514856595257368555">Đã truy xuất mã thông báo.</translation> <translation id="8880704056643418312">Cam kết</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-CN.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-CN.xtb index 0430de7..d4ed405 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-CN.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-CN.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="zh-CN"> <translation id="1091157412887719337">无法获取任务,因为没有可用的引擎。</translation> +<translation id="117738548141695034">Blimp 开关</translation> <translation id="1416550906796893042">应用版本</translation> <translation id="1750179245464827362">显示调试信息</translation> <translation id="2004526128230838685">无法获取任务,因为出现了未知问题。</translation> <translation id="2023631438558435272">无法获取任务,因为响应无效。</translation> <translation id="2078561879028077171">版本信息</translation> <translation id="2117453604279487107">分配器网址</translation> +<translation id="2218944627481691815">Blimp 开关已更改,请重新启动该应用。</translation> <translation id="2353984724370197742">无法获取任务,因为网络请求失败。</translation> <translation id="2789927415041640472">请重新启动该应用,以使用新的分配器配置。</translation> <translation id="3046825211487065480">无法获取任务,因为您在系统响应第一个请求之前就发送了第二个请求。</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">引擎已断开,原因:%1$s</translation> <translation id="7596558890252710462">操作系统</translation> <translation id="7608553142876436780">引擎 IP</translation> +<translation id="7795546637165553439">Blimp 设置</translation> <translation id="7961542533680218955">已成功获取任务。</translation> <translation id="8514856595257368555">已检索到令牌。</translation> <translation id="8880704056643418312">提交数</translation>
diff --git a/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-TW.xtb b/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-TW.xtb index d6b074f3..8b8eca8 100644 --- a/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-TW.xtb +++ b/blimp/client/app/android/java/strings/translations/android_blimp_strings_zh-TW.xtb
@@ -2,12 +2,14 @@ <!DOCTYPE translationbundle> <translationbundle lang="zh-TW"> <translation id="1091157412887719337">指派失敗。沒有可用的引擎。</translation> +<translation id="117738548141695034">Blimp 切換</translation> <translation id="1416550906796893042">應用程式版本</translation> <translation id="1750179245464827362">顯示偵錯資訊</translation> <translation id="2004526128230838685">指派失敗。發生不明問題。</translation> <translation id="2023631438558435272">指派失敗。回應無效。</translation> <translation id="2078561879028077171">版本資訊</translation> <translation id="2117453604279487107">指派者網址</translation> +<translation id="2218944627481691815">Blimp 切換設定已變更,請重新啟動應用程式。</translation> <translation id="2353984724370197742">指派失敗。網路要求失敗。</translation> <translation id="2789927415041640472">請重新啟動應用程式,以使用新的指派器設定。</translation> <translation id="3046825211487065480">指派失敗。第一個要求尚未回應即送出第二個要求。</translation> @@ -31,6 +33,7 @@ <translation id="7536363920335771251">引擎連線已中斷 (原因:%1$s)</translation> <translation id="7596558890252710462">作業系統</translation> <translation id="7608553142876436780">引擎 IP</translation> +<translation id="7795546637165553439">Blimp 設定</translation> <translation id="7961542533680218955">指派成功。</translation> <translation id="8514856595257368555">已擷取憑證。</translation> <translation id="8880704056643418312">認可數</translation>
diff --git a/blimp/engine/browser_tests/engine_browsertest.cc b/blimp/engine/browser_tests/engine_browsertest.cc index 92be560f..f10f100 100644 --- a/blimp/engine/browser_tests/engine_browsertest.cc +++ b/blimp/engine/browser_tests/engine_browsertest.cc
@@ -59,11 +59,16 @@ }; IN_PROC_BROWSER_TEST_F(EngineBrowserTest, LoadUrl) { + testing::InSequence s; + EXPECT_TRUE(embedded_test_server()->Start()); GURL url = embedded_test_server()->GetURL("/hello.html"); EXPECT_CALL(client_rw_feature_delegate_, OnRenderWidgetCreated(1)); - EXPECT_CALL(client_nav_feature_delegate_, OnUrlChanged(kDummyTabId, url)) + EXPECT_CALL(client_nav_feature_delegate_, + OnTitleChanged(kDummyTabId, url.GetContent())); + EXPECT_CALL(client_nav_feature_delegate_, + OnTitleChanged(kDummyTabId, "hello")) .WillOnce(InvokeWithoutArgs(this, &EngineBrowserTest::QuitRunLoop)); // Skip assigner. Engine info is already available.
diff --git a/blimp/test/data/hello.html b/blimp/test/data/hello.html index 1ca7ec7..cf8e4e46b 100644 --- a/blimp/test/data/hello.html +++ b/blimp/test/data/hello.html
@@ -1,2 +1,3 @@ <!doctype html> +<title>hello</title> <h1>Hello world!</h1>
diff --git a/build/android/pylib/gtest/filter/content_browsertests_disabled b/build/android/pylib/gtest/filter/content_browsertests_disabled index d4fe3b6..b18be439 100644 --- a/build/android/pylib/gtest/filter/content_browsertests_disabled +++ b/build/android/pylib/gtest/filter/content_browsertests_disabled
@@ -34,7 +34,7 @@ RenderViewImplTest.OnHandleKeyboardEvent RenderViewImplTest.OnNavStateChanged # ZoomLevel is not used on Android -RenderViewImplTest.ZoomLimit +RenderFrameImplTest.ZoomLimit RendererAccessibilityTest.SendFullAccessibilityTreeOnReload RendererAccessibilityTest.HideAccessibilityObject RendererAccessibilityTest.ShowAccessibilityObject
diff --git a/build/android/pylib/local/device/local_device_perf_test_run.py b/build/android/pylib/local/device/local_device_perf_test_run.py index d6bf3689..b78553e 100644 --- a/build/android/pylib/local/device/local_device_perf_test_run.py +++ b/build/android/pylib/local/device/local_device_perf_test_run.py
@@ -61,72 +61,21 @@ class TestShard(object): - def __init__( - self, env, test_instance, device, index, tests, retries=3, timeout=None): - logging.info('Create shard %s for device %s to run the following tests:', - index, device) + def __init__(self, env, test_instance, tests, retries=3, timeout=None): + logging.info('Create shard for the following tests:') for t in tests: logging.info(' %s', t) - self._battery = battery_utils.BatteryUtils(device) self._current_test = None - self._device = device self._env = env - self._index = index + self._heart_beat = HeartBeat(self) + self._index = None self._output_dir = None self._retries = retries self._test_instance = test_instance self._tests = tests self._timeout = timeout - self._heart_beat = HeartBeat(self) - - @local_device_environment.handle_shard_failures - def RunTestsOnShard(self): - results = base_test_result.TestRunResults() - for test in self._tests: - tries_left = self._retries - result_type = None - while (result_type != base_test_result.ResultType.PASS - and tries_left > 0): - try: - self._TestSetUp(test) - result_type = self._RunSingleTest(test) - except device_errors.CommandTimeoutError: - result_type = base_test_result.ResultType.TIMEOUT - except device_errors.CommandFailedError: - logging.exception('Exception when executing %s.', test) - result_type = base_test_result.ResultType.FAIL - finally: - self._TestTearDown() - if result_type != base_test_result.ResultType.PASS: - try: - device_recovery.RecoverDevice(self._device, self._env.blacklist) - except device_errors.CommandTimeoutError: - logging.exception( - 'Device failed to recover after failing %s.', test) - tries_left = tries_left - 1 - - results.AddResult(base_test_result.BaseTestResult(test, result_type)) - return results def _TestSetUp(self, test): - if not self._device.IsOnline(): - msg = 'Device %s is unresponsive.' % str(self._device) - raise device_errors.DeviceUnreachableError(msg) - - logging.info('Charge level: %s%%', - str(self._battery.GetBatteryInfo().get('level'))) - if self._test_instance.min_battery_level: - self._battery.ChargeDeviceToLevel(self._test_instance.min_battery_level) - - logging.info('temperature: %s (0.1 C)', - str(self._battery.GetBatteryInfo().get('temperature'))) - if self._test_instance.max_battery_temp: - self._battery.LetBatteryCoolToTemperature( - self._test_instance.max_battery_temp) - - if not self._device.IsScreenOn(): - self._device.SetScreen(True) - if (self._test_instance.collect_chartjson_data or self._tests[test].get('archive_output_dir')): self._output_dir = tempfile.mkdtemp() @@ -141,8 +90,7 @@ cmd = self._CreateCmd(test) cwd = os.path.abspath(host_paths.DIR_SOURCE_ROOT) - logging.debug("Running %s with command '%s' on shard %d with timeout %d", - test, cmd, self._index, timeout) + self._LogTest(test, cmd, timeout) try: start_time = time.time() @@ -165,20 +113,33 @@ output, json_output, result_type) def _CreateCmd(self, test): - cmd = '%s --device %s' % (self._tests[test]['cmd'], str(self._device)) - if self._output_dir: - cmd = cmd + ' --output-dir=%s' % self._output_dir + cmd = [] if self._test_instance.dry_run: - cmd = 'echo %s' % cmd + cmd.append('echo') + cmd.append(self._tests[test]['cmd']) + if self._output_dir: + cmd.append('--output-dir=%s' % self._output_dir) + return ' '.join(self._ExtendCmd(cmd)) + + def _ExtendCmd(self, cmd): # pylint: disable=no-self-use return cmd + def _LogTest(self, _test, _cmd, _timeout): + raise NotImplementedError + + def _LogTestExit(self, test, exit_code, duration): + # pylint: disable=no-self-use + logging.info('%s : exit_code=%d in %d secs.', test, exit_code, duration) + + def _ExtendPersistedResult(self, persisted_result): + raise NotImplementedError + def _ProcessTestResult(self, test, cmd, start_time, end_time, exit_code, output, json_output, result_type): if exit_code is None: exit_code = -1 - logging.info('%s : exit_code=%d in %d secs on device %s', - test, exit_code, end_time - start_time, - str(self._device)) + + self._LogTestExit(test, exit_code, end_time - start_time) actual_exit_code = exit_code if (self._test_instance.flaky_steps @@ -198,9 +159,9 @@ 'start_time': start_time, 'end_time': end_time, 'total_time': end_time - start_time, - 'device': str(self._device), 'cmd': cmd, } + self._ExtendPersistedResult(persisted_result) self._SaveResult(persisted_result) return result_type @@ -237,18 +198,126 @@ if self._output_dir: shutil.rmtree(self._output_dir, ignore_errors=True) self._output_dir = None + self._heart_beat.Stop() + self._current_test = None + + @property + def current_test(self): + return self._current_test + + +class DeviceTestShard(TestShard): + def __init__( + self, env, test_instance, device, index, tests, retries=3, timeout=None): + super(DeviceTestShard, self).__init__( + env, test_instance, tests, retries, timeout) + self._battery = battery_utils.BatteryUtils(device) if device else None + self._device = device + self._index = index + + @local_device_environment.handle_shard_failures + def RunTestsOnShard(self): + results = base_test_result.TestRunResults() + for test in self._tests: + tries_left = self._retries + result_type = None + while (result_type != base_test_result.ResultType.PASS + and tries_left > 0): + try: + self._TestSetUp(test) + result_type = self._RunSingleTest(test) + except device_errors.CommandTimeoutError: + result_type = base_test_result.ResultType.TIMEOUT + except device_errors.CommandFailedError: + logging.exception('Exception when executing %s.', test) + result_type = base_test_result.ResultType.FAIL + finally: + self._TestTearDown() + if result_type != base_test_result.ResultType.PASS: + try: + device_recovery.RecoverDevice(self._device, self._env.blacklist) + except device_errors.CommandTimeoutError: + logging.exception( + 'Device failed to recover after failing %s.', test) + tries_left = tries_left - 1 + + results.AddResult(base_test_result.BaseTestResult(test, result_type)) + return results + + def _LogTestExit(self, test, exit_code, duration): + logging.info('%s : exit_code=%d in %d secs on device %s', + test, exit_code, duration, str(self._device)) + + def _TestSetUp(self, test): + if not self._device.IsOnline(): + msg = 'Device %s is unresponsive.' % str(self._device) + raise device_errors.DeviceUnreachableError(msg) + + logging.info('Charge level: %s%%', + str(self._battery.GetBatteryInfo().get('level'))) + if self._test_instance.min_battery_level: + self._battery.ChargeDeviceToLevel(self._test_instance.min_battery_level) + + logging.info('temperature: %s (0.1 C)', + str(self._battery.GetBatteryInfo().get('temperature'))) + if self._test_instance.max_battery_temp: + self._battery.LetBatteryCoolToTemperature( + self._test_instance.max_battery_temp) + + if not self._device.IsScreenOn(): + self._device.SetScreen(True) + + super(DeviceTestShard, self)._TestSetUp(test) + + def _LogTest(self, test, cmd, timeout): + logging.debug("Running %s with command '%s' on shard %s with timeout %d", + test, cmd, str(self._index), timeout) + + def _ExtendCmd(self, cmd): + cmd.extend(['--device=%s' % str(self._device)]) + return cmd + + def _ExtendPersistedResult(self, persisted_result): + persisted_result['host_test'] = False + persisted_result['device'] = str(self._device) + + def _TestTearDown(self): try: logging.info('Unmapping device ports for %s.', self._device) forwarder.Forwarder.UnmapAllDevicePorts(self._device) except Exception: # pylint: disable=broad-except logging.exception('Exception when resetting ports.') finally: - self._heart_beat.Stop() - self._current_test = None + super(DeviceTestShard, self)._TestTearDown() - @property - def current_test(self): - return self._current_test +class HostTestShard(TestShard): + def __init__(self, env, test_instance, tests, retries=3, timeout=None): + super(HostTestShard, self).__init__( + env, test_instance, tests, retries, timeout) + + @local_device_environment.handle_shard_failures + def RunTestsOnShard(self): + results = base_test_result.TestRunResults() + for test in self._tests: + tries_left = self._retries + result_type = None + while (result_type != base_test_result.ResultType.PASS + and tries_left > 0): + try: + self._TestSetUp(test) + result_type = self._RunSingleTest(test) + finally: + self._TestTearDown() + results.AddResult(base_test_result.BaseTestResult(test, result_type)) + return results + + def _LogTest(self, test, cmd, timeout): + logging.debug("Running %s with command '%s' on host shard with timeout %d", + test, cmd, timeout) + + def _ExtendPersistedResult(self, persisted_result): + persisted_result['host_test'] = True + class LocalDevicePerfTestRun(local_device_test_run.LocalDeviceTestRun): @@ -259,6 +328,7 @@ super(LocalDevicePerfTestRun, self).__init__(env, test_instance) self._devices = None self._env = env + self._no_device_tests = {} self._test_buckets = [] self._test_instance = test_instance self._timeout = None if test_instance.no_timeout else self._DEFAULT_TIMEOUT @@ -304,11 +374,14 @@ test_dict = self._GetStepsFromDict() for test, test_config in test_dict['steps'].iteritems(): try: - affinity = test_config['device_affinity'] - if len(self._test_buckets) < affinity + 1: - while len(self._test_buckets) != affinity + 1: - self._test_buckets.append({}) - self._test_buckets[affinity][test] = test_config + affinity = test_config.get('device_affinity') + if affinity is None: + self._no_device_tests[test] = test_config + else: + if len(self._test_buckets) < affinity + 1: + while len(self._test_buckets) != affinity + 1: + self._test_buckets.append({}) + self._test_buckets[affinity][test] = test_config except KeyError: logging.exception( 'Test config for %s is bad.\n Config:%s', test, str(test_config)) @@ -336,21 +409,28 @@ def RunTests(self): # Affinitize the tests. self._SplitTestsByAffinity() - if not self._test_buckets: + if not self._test_buckets and not self._no_device_tests: raise local_device_test_run.NoTestsError() def run_perf_tests(shard_id): - if device_status.IsBlacklisted( - str(self._devices[shard_id]), self._env.blacklist): - logging.warning('Device %s is not active. Will not create shard %s.', - str(self._devices[shard_id]), shard_id) - return None - s = TestShard(self._env, self._test_instance, self._devices[shard_id], - shard_id, self._test_buckets[shard_id], - retries=self._env.max_tries, timeout=self._timeout) + if shard_id is None: + s = HostTestShard(self._env, self._test_instance, self._no_device_tests, + retries=3, timeout=self._timeout) + else: + if device_status.IsBlacklisted( + str(self._devices[shard_id]), self._env.blacklist): + logging.warning('Device %s is not active. Will not create shard %s.', + str(self._devices[shard_id]), shard_id) + return None + s = DeviceTestShard(self._env, self._test_instance, + self._devices[shard_id], shard_id, + self._test_buckets[shard_id], + retries=self._env.max_tries, timeout=self._timeout) return s.RunTestsOnShard() device_indices = range(min(len(self._devices), len(self._test_buckets))) + if self._no_device_tests: + device_indices.append(None) shards = parallelizer.Parallelizer(device_indices).pMap(run_perf_tests) return [x for x in shards.pGet(self._timeout) if x is not None]
diff --git a/build/common.gypi b/build/common.gypi index ccd7a759..cde40e9 100644 --- a/build/common.gypi +++ b/build/common.gypi
@@ -2389,12 +2389,6 @@ ], }], - ['OS=="win" and clang==1 and asan==0', { - # TODO(thakis): Remove this again once building with clang/win and - # debug info doesn't make link.exe run for hours. - 'fastbuild': 1, - }], - ['host_clang==1', { 'host_cc': '<(make_clang_dir)/bin/clang', 'host_cxx': '<(make_clang_dir)/bin/clang++',
diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni index 8a3552b..2e5072e 100644 --- a/build/config/compiler/compiler.gni +++ b/build/config/compiler/compiler.gni
@@ -82,10 +82,6 @@ # With instrumentation enabled, debug info puts libchrome.so over 4gb, which # causes the linker to produce an invalid ELF. http://crbug.com/574476 symbol_level = 0 - } else if (is_win && is_clang && !using_sanitizer) { - # TODO(thakis): Remove this again once building with clang/win and - # debug info doesn't make link.exe run for hours. - symbol_level = 1 } else if (!is_linux || is_debug || is_official_build || is_chromecast) { # Linux is slowed by having symbols as part of the target binary, whereas # Mac and Windows have them separate, so in Release Linux, default them off,
diff --git a/build/config/ios/rules.gni b/build/config/ios/rules.gni index ca71a274..73fc8be 100644 --- a/build/config/ios/rules.gni +++ b/build/config/ios/rules.gni
@@ -402,7 +402,12 @@ ] + rebase_path(inputs, root_build_dir) if (enable_dsyms) { - outputs += [ "$root_out_dir/$_output_name.dSYM/" ] + _dsyms_dir = "$root_out_dir/$_output_name.dSYM/" + outputs += [ + "$_dsyms_dir/", + "$_dsyms_dir/Contents/Info.plist", + "$_dsyms_dir/Contents/Resources/DWARF/$_output_name", + ] args += [ "-Wcrl,dsym," + rebase_path("$root_out_dir/.", root_build_dir) ] } @@ -485,14 +490,17 @@ deps = [] } deps += [ ":$_bundle_data_info_plist" ] + if (!defined(public_deps)) { + public_deps = [] + } if (ios_enable_code_signing) { if (_is_fat_build) { - deps += [ ":$_lipo_executable" ] + public_deps += [ ":$_lipo_executable" ] } else { - deps += [ ":$_link_executable" ] + public_deps += [ ":$_link_executable" ] } } else { - deps += [ ":$_bundle_data_executable" ] + public_deps += [ ":$_bundle_data_executable" ] if (defined(invoker.extra_system_frameworks)) { deps += [ ":${_target_name}_extra_system_frameworks" ] } @@ -1122,7 +1130,12 @@ ] + rebase_path(inputs, root_build_dir) if (enable_dsyms) { - outputs += [ "$root_out_dir/$_output_name.dSYM/" ] + _dsyms_dir = "$root_out_dir/$_output_name.dSYM/" + outputs += [ + "$_dsyms_dir/", + "$_dsyms_dir/Contents/Info.plist", + "$_dsyms_dir/Contents/Resources/DWARF/$_output_name", + ] args += [ "-Wcrl,dsym," + rebase_path("$root_out_dir/.", root_build_dir) ] } @@ -1477,7 +1490,12 @@ ] + rebase_path(inputs, root_build_dir) if (enable_dsyms) { - outputs += [ "$root_out_dir/$_xctest_output.dSYM/" ] + _dsyms_dir = "$root_out_dir/$_output_name.dSYM/" + outputs += [ + "$_dsyms_dir/", + "$_dsyms_dir/Contents/Info.plist", + "$_dsyms_dir/Contents/Resources/DWARF/$_output_name", + ] args += [ "-Wcrl,dsym," + rebase_path("$root_out_dir/.", root_build_dir) ] }
diff --git a/build/mac/OWNERS b/build/mac/OWNERS index c56e89dd..163563f9 100644 --- a/build/mac/OWNERS +++ b/build/mac/OWNERS
@@ -1,2 +1,2 @@ mark@chromium.org -thomasvl@chromium.org +rsesek@chromium.org
diff --git a/build/toolchain/mac/BUILD.gn b/build/toolchain/mac/BUILD.gn index dea16eb..d3b0eeb 100644 --- a/build/toolchain/mac/BUILD.gn +++ b/build/toolchain/mac/BUILD.gn
@@ -114,8 +114,14 @@ # If dSYMs are enabled, this flag will be added to the link tools. if (_enable_dsyms) { dsym_switch = " -Wcrl,dsym,{{root_out_dir}} " - _dsym_output = - "{{root_out_dir}}/{{target_output_name}}{{output_extension}}.dSYM/" + dsym_output_dir = + "{{root_out_dir}}/{{target_output_name}}{{output_extension}}.dSYM" + dsym_output = [ + "$dsym_output_dir/", + "$dsym_output_dir/Contents/Info.plist", + "$dsym_output_dir/Contents/Resources/DWARF/" + + "{{target_output_name}}{{output_extension}}", + ] } else { dsym_switch = "" } @@ -249,7 +255,7 @@ depend_output = tocname if (_enable_dsyms) { - outputs += [ _dsym_output ] + outputs += dsym_output } if (_save_unstripped_output) { outputs += [ _unstripped_output ] @@ -284,7 +290,7 @@ ] if (_enable_dsyms) { - outputs += [ _dsym_output ] + outputs += dsym_output } if (_save_unstripped_output) { outputs += [ _unstripped_output ] @@ -312,7 +318,7 @@ ] if (_enable_dsyms) { - outputs += [ _dsym_output ] + outputs += dsym_output } if (_save_unstripped_output) { outputs += [ _unstripped_output ]
diff --git a/chrome/android/java/res/layout-sw720dp/download_main.xml b/chrome/android/java/res/layout-sw720dp/download_main.xml new file mode 100644 index 0000000..6d92f2f5 --- /dev/null +++ b/chrome/android/java/res/layout-sw720dp/download_main.xml
@@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2016 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="horizontal" > + + <LinearLayout + android:id="@+id/drawer_layout" + android:layout_width="256dp" + android:layout_height="match_parent" + android:layout_gravity="start" + android:background="#ffffff" + android:orientation="vertical" + android:paddingTop="@dimen/drawer_margin_large" > + + <include layout="@layout/download_manager_ui_space_widget" /> + + <ListView + android:id="@+id/section_list" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:divider="@null" + android:dividerHeight="0dp" /> + </LinearLayout> + + <LinearLayout + android:id="@+id/content_frame" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="#ffffff" + android:orientation="vertical" > + + <org.chromium.chrome.browser.download.ui.DownloadManagerToolbar + android:id="@id/action_bar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="@color/appbar_background" /> + + <org.chromium.chrome.browser.widget.FadingShadowView + android:id="@+id/shadow" + android:layout_width="match_parent" + android:layout_height="10dp" + android:layout_marginBottom="-10dp" /> + + <android.support.v7.widget.RecyclerView + android:id="@+id/recycler_view" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" /> + </LinearLayout> + +</LinearLayout> \ No newline at end of file
diff --git a/chrome/android/java/res/layout/download_main.xml b/chrome/android/java/res/layout/download_main.xml index 37f65802..1320ddb 100644 --- a/chrome/android/java/res/layout/download_main.xml +++ b/chrome/android/java/res/layout/download_main.xml
@@ -3,7 +3,7 @@ Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. --> -<org.chromium.chrome.browser.download.ui.DownloadManagerUi +<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > @@ -59,4 +59,4 @@ android:dividerHeight="0dp" /> </LinearLayout> -</org.chromium.chrome.browser.download.ui.DownloadManagerUi> +</android.support.v4.widget.DrawerLayout>
diff --git a/chrome/android/java/res/layout/payment_request_editor_icons.xml b/chrome/android/java/res/layout/payment_request_editor_icons.xml index fcb25bd..c72bb832 100644 --- a/chrome/android/java/res/layout/payment_request_editor_icons.xml +++ b/chrome/android/java/res/layout/payment_request_editor_icons.xml
@@ -21,6 +21,7 @@ <LinearLayout android:id="@+id/icons_container" android:layout_width="match_parent" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + android:orientation="horizontal" /> </LinearLayout> \ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BasicNativePage.java b/chrome/android/java/src/org/chromium/chrome/browser/BasicNativePage.java new file mode 100644 index 0000000..4ec11fe0 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/BasicNativePage.java
@@ -0,0 +1,92 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser; + +import android.app.Activity; +import android.content.res.Resources; +import android.view.View; +import android.view.ViewGroup.MarginLayoutParams; + +import org.chromium.base.ApiCompatibilityUtils; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.content_public.browser.LoadUrlParams; + +/** + * A basic implementation of a white {@link NativePage} that docks below the toolbar. + */ +public abstract class BasicNativePage implements NativePage { + + private final Activity mActivity; + private final Tab mTab; + private final int mBackgroundColor; + private final int mThemeColor; + + private String mUrl; + + public BasicNativePage(Activity activity, Tab tab) { + initialize(activity); + mActivity = activity; + mTab = tab; + mBackgroundColor = ApiCompatibilityUtils.getColor(activity.getResources(), + R.color.default_primary_color); + mThemeColor = ApiCompatibilityUtils.getColor( + activity.getResources(), R.color.default_primary_color); + + Resources res = mActivity.getResources(); + + MarginLayoutParams layoutParams = new MarginLayoutParams( + MarginLayoutParams.MATCH_PARENT, MarginLayoutParams.MATCH_PARENT); + layoutParams.setMargins(0, + res.getDimensionPixelSize(R.dimen.tab_strip_height) + + res.getDimensionPixelSize(R.dimen.toolbar_height_no_shadow), + 0, 0); + getView().setLayoutParams(layoutParams); + } + + /** + * Subclasses shall implement this method to initialize the UI that they hold. + */ + protected abstract void initialize(Activity activity); + + @Override + public abstract View getView(); + + @Override + public String getUrl() { + return mUrl; + } + + @Override + public int getBackgroundColor() { + return mBackgroundColor; + } + + @Override + public int getThemeColor() { + return mThemeColor; + } + + @Override + public boolean needsToolbarShadow() { + return true; + } + + @Override + public void updateForUrl(String url) { + mUrl = url; + } + + @Override + public void destroy() { } + + /** + * Tells the native page framework that the url should be changed. + */ + public void onStateChange(String url) { + if (url.equals(mUrl)) return; + mTab.loadUrl(new LoadUrlParams(url)); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java index b052938..22553bd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -1005,8 +1005,8 @@ // URL directly. if (url == null) url = currentTab.getUrl(); - ShareHelper.share( - shareDirectly, mainActivity, currentTab.getTitle(), url, bitmap); + ShareHelper.share(shareDirectly, true, mainActivity, currentTab.getTitle(), + null, url, bitmap, null); if (shareDirectly) { RecordUserAction.record("MobileMenuDirectShare"); } else { @@ -1411,6 +1411,8 @@ FeatureUtilities.setIsInMultiWindowMode( MultiWindowUtils.getInstance().isInMultiWindowMode(this)); } + + super.onMultiWindowModeChanged(isInMultiWindowMode); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java index 79db5d3..19f5186b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1098,7 +1098,11 @@ getToolbarManager().setUrlBarFocus(true); } } else if (id == R.id.downloads_menu_id) { - DownloadActivity.launch(this); + if (isTablet()) { + currentTab.loadUrl(new LoadUrlParams(UrlConstants.DOWNLOADS_URL)); + } else { + DownloadActivity.launch(this); + } } else if (id == R.id.open_recently_closed_tab) { TabModel currentModel = mTabModelSelectorImpl.getCurrentModel(); if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/UrlConstants.java b/chrome/android/java/src/org/chromium/chrome/browser/UrlConstants.java index 34784aa..1fe44b5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/UrlConstants.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/UrlConstants.java
@@ -10,8 +10,8 @@ public class UrlConstants { public static final String CHROME_SCHEME = "chrome://"; public static final String CHROME_NATIVE_SCHEME = "chrome-native://"; - public static final String DOCUMENT_SCHEME = "document"; public static final String CUSTOM_TAB_SCHEME = "customtab"; + public static final String DOCUMENT_SCHEME = "document"; public static final String HTTP_SCHEME = "http://"; public static final String HTTPS_SCHEME = "https://"; @@ -23,6 +23,9 @@ public static final String BOOKMARKS_UNCATEGORIZED_URL = "chrome-native://bookmarks/uncategorized/"; public static final String BOOKMARKS_HOST = "bookmarks"; + public static final String DOWNLOADS_URL = "chrome-native://downloads/"; + public static final String DOWNLOADS_FILTER_URL = "chrome-native://downloads/filter/"; + public static final String DOWNLOADS_HOST = "downloads"; public static final String RECENT_TABS_URL = "chrome-native://recent-tabs/"; public static final String RECENT_TABS_HOST = "recent-tabs"; public static final String HISTORY_URL = "chrome://history/";
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java index 993c4104..432eda4 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
@@ -17,6 +17,7 @@ import org.chromium.base.ContextUtils; import org.chromium.base.ObserverList; import org.chromium.chrome.R; +import org.chromium.chrome.browser.BasicNativePage; import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem; import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver; import org.chromium.chrome.browser.favicon.LargeIconBridge; @@ -47,7 +48,7 @@ private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<BookmarkUIObserver>(); private Set<BookmarkId> mSelectedBookmarks = new HashSet<>(); - private BookmarkStateChangeListener mUrlChangeListener; + private BasicNativePage mNativePage; private BookmarkContentView mContentView; private BookmarkSearchView mSearchView; private ViewSwitcher mViewSwitcher; @@ -195,8 +196,8 @@ /** * Sets the listener that reacts upon the change of the UI state of bookmark manager. */ - public void setUrlChangeListener(BookmarkStateChangeListener urlListner) { - mUrlChangeListener = urlListner; + public void setBasicNativePage(BasicNativePage nativePage) { + mNativePage = nativePage; } /** @@ -245,7 +246,7 @@ * <p> * If the given state is not valid, all_bookmark state will be shown. Afterwards, this method * checks the current state: if currently in loading state, it pops it out and adds the new - * state to the back stack. It also notifies the {@link #mUrlChangeListener} (if any) that the + * state to the back stack. It also notifies the {@link #mNativePage} (if any) that the * url has changed. * <p> * Also note that even if we store states to {@link #mStateStack}, on tablet the back navigation @@ -271,8 +272,8 @@ // Loading state may be pushed to the stack but should never be stored in preferences. BookmarkUtils.setLastUsedUrl(mActivity, state.mUrl); // If a loading state is replaced by another loading state, do not notify this change. - if (mUrlChangeListener != null) { - mUrlChangeListener.onBookmarkUIStateChange(state.mUrl); + if (mNativePage != null) { + mNativePage.onStateChange(state.mUrl); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java index fd040f1b..8e66c0f3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
@@ -5,29 +5,19 @@ package org.chromium.chrome.browser.bookmarks; import android.app.Activity; -import android.content.res.Resources; import android.view.View; -import android.view.ViewGroup.MarginLayoutParams; -import org.chromium.base.ApiCompatibilityUtils; import org.chromium.chrome.R; -import org.chromium.chrome.browser.NativePage; +import org.chromium.chrome.browser.BasicNativePage; import org.chromium.chrome.browser.UrlConstants; -import org.chromium.chrome.browser.bookmarks.BookmarkDelegate.BookmarkStateChangeListener; import org.chromium.chrome.browser.tab.Tab; -import org.chromium.content_public.browser.LoadUrlParams; /** * A native page holding a {@link BookmarkManager} on _tablet_. */ -public class BookmarkPage implements NativePage, BookmarkStateChangeListener { - private final Activity mActivity; - private final Tab mTab; - private final String mTitle; - private final int mBackgroundColor; - private final int mThemeColor; +public class BookmarkPage extends BasicNativePage { private BookmarkManager mManager; - private String mCurrentUrl; + private String mTitle; /** * Create a new instance of the bookmarks page. @@ -35,25 +25,14 @@ * @param tab The tab to load urls. */ public BookmarkPage(Activity activity, Tab tab) { - mActivity = activity; - mTab = tab; + super(activity, tab); + } + + @Override + protected void initialize(Activity activity) { + mManager = new BookmarkManager(activity, false); + mManager.setBasicNativePage(this); mTitle = activity.getString(R.string.bookmarks); - mBackgroundColor = ApiCompatibilityUtils.getColor(activity.getResources(), - R.color.default_primary_color); - mThemeColor = ApiCompatibilityUtils.getColor( - activity.getResources(), R.color.default_primary_color); - - mManager = new BookmarkManager(mActivity, false); - Resources res = mActivity.getResources(); - - MarginLayoutParams layoutParams = new MarginLayoutParams( - MarginLayoutParams.MATCH_PARENT, MarginLayoutParams.MATCH_PARENT); - layoutParams.setMargins(0, - res.getDimensionPixelSize(R.dimen.tab_strip_height) - + res.getDimensionPixelSize(R.dimen.toolbar_height_no_shadow), - 0, 0); - mManager.getView().setLayoutParams(layoutParams); - mManager.setUrlChangeListener(this); } @Override @@ -67,33 +46,13 @@ } @Override - public String getUrl() { - return mManager.getCurrentUrl(); - } - - @Override public String getHost() { return UrlConstants.BOOKMARKS_HOST; } @Override - public int getBackgroundColor() { - return mBackgroundColor; - } - - @Override - public int getThemeColor() { - return mThemeColor; - } - - @Override - public boolean needsToolbarShadow() { - return true; - } - - @Override public void updateForUrl(String url) { - mCurrentUrl = url; + super.updateForUrl(url); mManager.updateForUrl(url); } @@ -101,11 +60,6 @@ public void destroy() { mManager.destroy(); mManager = null; - } - - @Override - public void onBookmarkUIStateChange(String url) { - if (url.equals(mCurrentUrl)) return; - mTab.loadUrl(new LoadUrlParams(url)); + super.destroy(); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java index 998bb78b..f4783f2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -540,6 +540,13 @@ void showSignInToastIfNecessary(CustomTabsSessionToken session, Intent intent) { } /** + * Sends a callback using {@link CustomTabsCallback} about the first run result if necessary. + * @param intent The initial VIEW intent that initiated first run. + * @param resultOK Whether first run was successful. + */ + public void sendFirstRunCallbackIfNecessary(Intent intent, boolean resultOK) { } + + /** * Notifies the application of a navigation event. * * Delivers the {@link CustomTabsConnectionCallback#onNavigationEvent}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java index 98cf4465..55d64a2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java
@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.WarmupManager; import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.customtabs.CustomTabIntentDataProvider; +import org.chromium.chrome.browser.customtabs.CustomTabsConnection; import org.chromium.chrome.browser.customtabs.SeparateTaskCustomTabActivity; import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; import org.chromium.chrome.browser.metrics.LaunchMetrics; @@ -114,6 +115,7 @@ * you add _absolutely has_ to be here. */ @Override + @SuppressLint("MissingSuperCall") // Called in doOnCreate. public void onCreate(Bundle savedInstanceState) { // Third-party code adds disk access to Activity.onCreate. http://crbug.com/619824 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); @@ -247,6 +249,11 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == FIRST_RUN_EXPERIENCE_REQUEST_CODE) { + if (mIsCustomTabIntent) { + CustomTabsConnection.getInstance(getApplication()) + .sendFirstRunCallbackIfNecessary( + getIntent(), resultCode == Activity.RESULT_OK); + } if (resultCode == Activity.RESULT_OK) { // User might have opted out during FRE, so check again. if (mIsCustomTabIntent) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java index 5f240574..b5a1b1c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadActivity.java
@@ -4,30 +4,26 @@ package org.chromium.chrome.browser.download; -import android.content.Context; +import android.app.Activity; import android.content.Intent; import android.os.Bundle; -import android.view.LayoutInflater; -import org.chromium.chrome.R; +import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.SnackbarActivity; import org.chromium.chrome.browser.download.ui.DownloadManagerUi; -import org.chromium.chrome.browser.download.ui.DownloadManagerUi.DownloadManagerUiDelegate; /** * Activity for managing downloads handled through Chrome. */ -public class DownloadActivity extends SnackbarActivity implements DownloadManagerUiDelegate { +public class DownloadActivity extends SnackbarActivity { private DownloadManagerUi mDownloadManagerUi; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mDownloadManagerUi = - (DownloadManagerUi) LayoutInflater.from(this).inflate(R.layout.download_main, null); - mDownloadManagerUi.initialize(this, this); - setContentView(mDownloadManagerUi); + mDownloadManagerUi = new DownloadManagerUi(this); + setContentView(mDownloadManagerUi.getView()); } @Override @@ -36,17 +32,19 @@ } @Override - public void onCloseButtonClicked(DownloadManagerUi ui) { - finish(); + protected void onDestroy() { + mDownloadManagerUi.onDestroyed(); + super.onDestroy(); } /** * Convenience method for launching this Activity. - * @param context Context to use when starting this Activity. + * @param activity Activity that is launching this the Downloads page. */ - public static void launch(Context context) { + public static void launch(Activity activity) { Intent intent = new Intent(); - intent.setClass(context, DownloadActivity.class); - context.startActivity(intent); + intent.setClass(activity, DownloadActivity.class); + intent.putExtra(IntentHandler.EXTRA_PARENT_COMPONENT, activity.getComponentName()); + activity.startActivity(intent); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java new file mode 100644 index 0000000..33cc898 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java
@@ -0,0 +1,66 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.download; + +import android.app.Activity; +import android.view.View; + +import org.chromium.chrome.R; +import org.chromium.chrome.browser.BasicNativePage; +import org.chromium.chrome.browser.UrlConstants; +import org.chromium.chrome.browser.download.ui.DownloadManagerUi; +import org.chromium.chrome.browser.tab.Tab; + +/** + * Native page for managing downloads handled through Chrome. + */ +public class DownloadPage extends BasicNativePage { + private DownloadManagerUi mManager; + private String mTitle; + + /** + * Create a new instance of the bookmarks page. + * @param activity The activity to get context and manage fragments. + * @param tab The tab to load urls. + */ + public DownloadPage(Activity activity, Tab tab) { + super(activity, tab); + } + + @Override + protected void initialize(Activity activity) { + mManager = new DownloadManagerUi(activity); + mManager.setBasicNativePage(this); + mTitle = activity.getString(R.string.download_manager_ui_all_downloads); + } + + @Override + public View getView() { + return mManager.getView(); + } + + @Override + public String getTitle() { + return mTitle; + } + + @Override + public String getHost() { + return UrlConstants.DOWNLOADS_HOST; + } + + @Override + public void updateForUrl(String url) { + super.updateForUrl(url); + mManager.updateForUrl(url); + } + + @Override + public void destroy() { + mManager.onDestroyed(); + mManager = null; + super.destroy(); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadFilter.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadFilter.java new file mode 100644 index 0000000..1ec4fcb --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadFilter.java
@@ -0,0 +1,91 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.download.ui; + +import android.text.TextUtils; + +import org.chromium.base.Log; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.UrlConstants; + +/** + * A class holding constants and convenience methods about filters and their corresponding + * resources. + */ +class DownloadFilter { + static final int FILTER_ALL = 0; + static final int FILTER_PAGE = 1; + static final int FILTER_VIDEO = 2; + static final int FILTER_AUDIO = 3; + static final int FILTER_IMAGE = 4; + static final int FILTER_DOCUMENT = 5; + static final int FILTER_OTHER = 6; + + /** + * Icons and labels for each filter in the menu. + * + * Changing the ordering of these items requires changing the FILTER_* values in + * {@link DownloadHistoryAdapter}. + */ + static final int[][] FILTER_LIST = new int[][] { + {R.drawable.ic_get_app_white_24dp, R.string.download_manager_ui_all_downloads}, + {R.drawable.ic_drive_site_white_24dp, R.string.download_manager_ui_pages}, + {R.drawable.ic_play_arrow_white_24dp, R.string.download_manager_ui_video}, + {R.drawable.ic_music_note_white_24dp, R.string.download_manager_ui_audio}, + {R.drawable.ic_image_white_24dp, R.string.download_manager_ui_images}, + {R.drawable.ic_drive_text_white_24dp, R.string.download_manager_ui_documents}, + {R.drawable.ic_drive_file_white_24dp, R.string.download_manager_ui_other} + }; + + private static final String TAG = "download_ui"; + + /** + * @return The number of filters that exist. + */ + static int getFilterCount() { + return FILTER_LIST.length; + } + + /** + * @return The drawable id representing the given filter. + */ + static int getDrawableForFilter(int filter) { + return FILTER_LIST[filter][0]; + } + + /** + * @return The resource id of the title representing the given filter. + */ + static int getStringIdForFilter(int filter) { + return FILTER_LIST[filter][1]; + } + + /** + * @return The URL representing the filter. + */ + static String getUrlForFilter(int filter) { + if (filter == FILTER_ALL) { + return UrlConstants.DOWNLOADS_URL; + } + return UrlConstants.DOWNLOADS_FILTER_URL + filter; + } + + /** + * @return The filter that the given URL represents. + */ + static int getFilterFromUrl(String url) { + if (TextUtils.isEmpty(url) || UrlConstants.DOWNLOADS_HOST.equals(url)) return FILTER_ALL; + int result = FILTER_ALL; + if (url.startsWith(UrlConstants.DOWNLOADS_FILTER_URL)) { + try { + result = Integer + .parseInt(url.substring(UrlConstants.DOWNLOADS_FILTER_URL.length())); + } catch (NumberFormatException e) { + Log.e(TAG, "Url parsing failed."); + } + } + return result; + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java index 85fded40..db81315 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java
@@ -17,6 +17,7 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.download.DownloadItem; +import org.chromium.chrome.browser.download.ui.DownloadManagerUi.DownloadUiObserver; import org.chromium.chrome.browser.util.UrlUtilities; import org.chromium.chrome.browser.widget.DateDividedAdapter; @@ -25,10 +26,11 @@ import java.util.Locale; /** Bridges the user's download history and the UI used to display it. */ -public class DownloadHistoryAdapter extends DateDividedAdapter { +public class DownloadHistoryAdapter extends DateDividedAdapter implements DownloadUiObserver { /** Holds onto a View that displays information about a downloaded file. */ static class ItemViewHolder extends RecyclerView.ViewHolder { + public View mItemView; public ImageView mIconView; public TextView mFilenameView; public TextView mHostnameView; @@ -36,6 +38,7 @@ public ItemViewHolder(View itemView) { super(itemView); + mItemView = itemView; mIconView = (ImageView) itemView.findViewById(R.id.icon_view); mFilenameView = (TextView) itemView.findViewById(R.id.filename_view); mHostnameView = (TextView) itemView.findViewById(R.id.hostname_view); @@ -43,14 +46,6 @@ } } - static final int FILTER_ALL = 0; - static final int FILTER_PAGE = 1; - static final int FILTER_VIDEO = 2; - static final int FILTER_AUDIO = 3; - static final int FILTER_IMAGE = 4; - static final int FILTER_DOCUMENT = 5; - static final int FILTER_OTHER = 6; - private static final String MIMETYPE_VIDEO = "video"; private static final String MIMETYPE_AUDIO = "audio"; private static final String MIMETYPE_IMAGE = "image"; @@ -59,30 +54,20 @@ private final List<DownloadItem> mAllItems = new ArrayList<>(); private final List<DownloadItem> mFilteredItems = new ArrayList<>(); - private int mFilter = FILTER_ALL; + private int mFilter = DownloadFilter.FILTER_ALL; + private DownloadManagerUi mManager; + + @Override + public void initialize(DownloadManagerUi manager) { + manager.addObserver(this); + mManager = manager; + } /** Called when the user's download history has been gathered into a List of DownloadItems. */ public void onAllDownloadsRetrieved(List<DownloadItem> list) { mAllItems.clear(); mAllItems.addAll(list); - filter(FILTER_ALL); - } - - /** Filters the list of downloads to show only files of a specific type. */ - public void filter(int filterType) { - mFilter = filterType; - mFilteredItems.clear(); - if (filterType == FILTER_ALL) { - mFilteredItems.addAll(mAllItems); - } else { - for (int i = 0; i < mAllItems.size(); i++) { - int currentFiletype = - convertMimeTypeToFileType(mAllItems.get(i).getDownloadInfo().getMimeType()); - if (currentFiletype == filterType) mFilteredItems.add(mAllItems.get(i)); - } - } - - loadItems(mFilteredItems); + filter(DownloadFilter.FILTER_ALL); } /** Returns the total size of all the downloaded items. */ @@ -108,32 +93,39 @@ @Override public void bindViewHolderForTimedItem(ViewHolder current, TimedItem timedItem) { + final DownloadItem item = (DownloadItem) timedItem; + ItemViewHolder holder = (ItemViewHolder) current; Context context = holder.mFilesizeView.getContext(); - DownloadItem item = (DownloadItem) timedItem; holder.mFilenameView.setText(item.getDownloadInfo().getFileName()); holder.mHostnameView.setText( UrlUtilities.formatUrlForSecurityDisplay(item.getDownloadInfo().getUrl(), false)); holder.mFilesizeView.setText( Formatter.formatFileSize(context, item.getDownloadInfo().getContentLength())); + holder.mItemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mManager.onDownloadItemClicked(item); + } + }); // Pick what icon to display for the item. - int fileType = convertMimeTypeToFileType(item.getDownloadInfo().getMimeType()); + int fileType = convertMimeTypeToFilterType(item.getDownloadInfo().getMimeType()); int iconResource = R.drawable.ic_drive_file_white_24dp; switch (fileType) { - case FILTER_PAGE: + case DownloadFilter.FILTER_PAGE: iconResource = R.drawable.ic_drive_site_white_24dp; break; - case FILTER_VIDEO: + case DownloadFilter.FILTER_VIDEO: iconResource = R.drawable.ic_play_arrow_white_24dp; break; - case FILTER_AUDIO: + case DownloadFilter.FILTER_AUDIO: iconResource = R.drawable.ic_music_note_white_24dp; break; - case FILTER_IMAGE: + case DownloadFilter.FILTER_IMAGE: iconResource = R.drawable.ic_image_white_24dp; break; - case FILTER_DOCUMENT: + case DownloadFilter.FILTER_DOCUMENT: iconResource = R.drawable.ic_drive_text_white_24dp; break; default: @@ -161,23 +153,51 @@ filter(mFilter); } + @Override + public void onFilterChanged(int filter) { + filter(filter); + } + + @Override + public void onDestroy(DownloadManagerUi manager) { + manager.removeObserver(this); + mManager = null; + } + + /** Filters the list of downloads to show only files of a specific type. */ + private void filter(int filterType) { + mFilter = filterType; + mFilteredItems.clear(); + if (filterType == DownloadFilter.FILTER_ALL) { + mFilteredItems.addAll(mAllItems); + } else { + for (int i = 0; i < mAllItems.size(); i++) { + int currentFiletype = convertMimeTypeToFilterType( + mAllItems.get(i).getDownloadInfo().getMimeType()); + if (currentFiletype == filterType) mFilteredItems.add(mAllItems.get(i)); + } + } + + loadItems(mFilteredItems); + } + /** Identifies the type of file represented by the given MIME type string. */ - private static int convertMimeTypeToFileType(String mimeType) { - if (TextUtils.isEmpty(mimeType)) return FILTER_OTHER; + private static int convertMimeTypeToFilterType(String mimeType) { + if (TextUtils.isEmpty(mimeType)) return DownloadFilter.FILTER_OTHER; String[] pieces = mimeType.toLowerCase(Locale.getDefault()).split("/"); - if (pieces.length != 2) return FILTER_OTHER; + if (pieces.length != 2) return DownloadFilter.FILTER_OTHER; if (MIMETYPE_VIDEO.equals(pieces[0])) { - return FILTER_VIDEO; + return DownloadFilter.FILTER_VIDEO; } else if (MIMETYPE_AUDIO.equals(pieces[0])) { - return FILTER_AUDIO; + return DownloadFilter.FILTER_AUDIO; } else if (MIMETYPE_IMAGE.equals(pieces[0])) { - return FILTER_IMAGE; + return DownloadFilter.FILTER_IMAGE; } else if (MIMETYPE_DOCUMENT.equals(pieces[0])) { - return FILTER_DOCUMENT; + return DownloadFilter.FILTER_DOCUMENT; } else { - return FILTER_OTHER; + return DownloadFilter.FILTER_OTHER; } } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadManagerToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadManagerToolbar.java index 9e7fa83..4eeffec 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadManagerToolbar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadManagerToolbar.java
@@ -5,19 +5,54 @@ package org.chromium.chrome.browser.download.ui; import android.content.Context; +import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; import android.util.AttributeSet; import org.chromium.chrome.R; +import org.chromium.chrome.browser.download.ui.DownloadManagerUi.DownloadUiObserver; +import org.chromium.ui.base.DeviceFormFactor; /** * Handles toolbar functionality for the {@link DownloadManagerUi}. */ -public class DownloadManagerToolbar extends Toolbar { +public class DownloadManagerToolbar extends Toolbar implements DownloadUiObserver { + + private ActionBarDrawerToggle mActionBarDrawerToggle; public DownloadManagerToolbar(Context context, AttributeSet attrs) { super(context, attrs); inflateMenu(R.menu.download_manager_menu); } + @Override + public void initialize(DownloadManagerUi manager) { + if (manager.getView() instanceof DrawerLayout) { + DrawerLayout drawerLayout = (DrawerLayout) manager.getView(); + mActionBarDrawerToggle = new ActionBarDrawerToggle(manager.getActivity(), + drawerLayout, (Toolbar) manager.getView().findViewById(R.id.action_bar), + R.string.accessibility_bookmark_drawer_toggle_btn_open, + R.string.accessibility_bookmark_drawer_toggle_btn_close); + drawerLayout.addDrawerListener(mActionBarDrawerToggle); + mActionBarDrawerToggle.syncState(); + } + if (DeviceFormFactor.isTablet(getContext())) { + getMenu().findItem(R.id.close_menu_id).setVisible(false); + } + } + + @Override + public void onFilterChanged(int filter) { + if (filter == DownloadFilter.FILTER_ALL) { + setTitle(R.string.menu_downloads); + } else { + setTitle(DownloadFilter.getStringIdForFilter(filter)); + } + } + + @Override + public void onDestroy(DownloadManagerUi manager) { + manager.removeObserver(this); + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadManagerUi.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadManagerUi.java index 8d8e6c7..7ff6df5e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadManagerUi.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadManagerUi.java
@@ -5,281 +5,133 @@ package org.chromium.chrome.browser.download.ui; import android.app.Activity; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.drawable.Drawable; -import android.os.AsyncTask; -import android.os.Environment; -import android.os.StatFs; +import android.content.ActivityNotFoundException; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar.OnMenuItemClickListener; -import android.text.format.Formatter; -import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.BaseAdapter; import android.widget.ListView; -import android.widget.ProgressBar; -import android.widget.TextView; import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ContextUtils; -import org.chromium.base.Log; +import org.chromium.base.ObserverList; import org.chromium.chrome.R; +import org.chromium.chrome.browser.BasicNativePage; +import org.chromium.chrome.browser.download.DownloadItem; import org.chromium.chrome.browser.download.DownloadManagerService; import org.chromium.chrome.browser.widget.FadingShadow; import org.chromium.chrome.browser.widget.FadingShadowView; -import org.chromium.chrome.browser.widget.TintedDrawable; import org.chromium.ui.base.DeviceFormFactor; +import org.chromium.ui.widget.Toast; import java.io.File; +import java.util.List; /** * Displays and manages the UI for the download manager. */ -public class DownloadManagerUi extends DrawerLayout implements OnMenuItemClickListener { - private static final String TAG = "download_ui"; + +public class DownloadManagerUi implements OnMenuItemClickListener { /** - * Icons and labels for each filter in the menu. - * - * Changing the ordering of these items requires changing the FILTER_* values in - * {@link DownloadHistoryAdapter}. + * Interface to observe the changes in the download manager ui. This should be implemented by + * the ui components that is shown, in order to let them get proper notifications. */ - private static final int[][] FILTER_LIST = new int[][] { - {R.drawable.ic_get_app_white_24dp, R.string.download_manager_ui_all_downloads}, - {R.drawable.ic_drive_site_white_24dp, R.string.download_manager_ui_pages}, - {R.drawable.ic_play_arrow_white_24dp, R.string.download_manager_ui_video}, - {R.drawable.ic_music_note_white_24dp, R.string.download_manager_ui_audio}, - {R.drawable.ic_image_white_24dp, R.string.download_manager_ui_images}, - {R.drawable.ic_drive_text_white_24dp, R.string.download_manager_ui_documents}, - {R.drawable.ic_drive_file_white_24dp, R.string.download_manager_ui_other} - }; + public interface DownloadUiObserver { + /** + * Initializes the {@link DownloadUiObserver}. + */ + public void initialize(DownloadManagerUi manager); - /** Responds to events occurring in the DownloadManagerUi. */ - public interface DownloadManagerUiDelegate { - /** Called when the close button is clicked. */ - void onCloseButtonClicked(DownloadManagerUi ui); + /** + * Called when the filter has been changed by the user. + */ + public void onFilterChanged(int filter); + + /** + * Called when the download manager is not shown anymore. + */ + public void onDestroy(DownloadManagerUi manager); } - /** Manages the display of space used by the downloads. */ - private final class SpaceDisplay extends RecyclerView.AdapterDataObserver { - private final AsyncTask<Void, Void, Long> mFileSystemBytesTask; - - private TextView mSpaceUsedTextView; - private TextView mSpaceTotalTextView; - private ProgressBar mSpaceBar; - private long mFileSystemBytes = Long.MAX_VALUE; - - SpaceDisplay(final ViewGroup parent) { - mSpaceUsedTextView = (TextView) parent.findViewById(R.id.space_used_display); - mSpaceTotalTextView = (TextView) parent.findViewById(R.id.space_total_display); - mSpaceBar = (ProgressBar) parent.findViewById(R.id.space_bar); - mFileSystemBytesTask = createStorageSizeTask().execute(); - } - - private AsyncTask<Void, Void, Long> createStorageSizeTask() { - return new AsyncTask<Void, Void, Long>() { - @Override - protected Long doInBackground(Void... params) { - File downloadDirectory = Environment.getExternalStoragePublicDirectory( - Environment.DIRECTORY_DOWNLOADS); - - // Create the downloads directory, if necessary. - if (!downloadDirectory.exists()) { - try { - // mkdirs() can fail, so we still need to check if the directory exists - // later. - downloadDirectory.mkdirs(); - } catch (SecurityException e) { - Log.e(TAG, "SecurityException when creating download directory.", e); - } - } - - // Determine how much space is available on the storage device where downloads - // reside. If the downloads directory doesn't exist, it is likely that the user - // doesn't have an SD card installed. - long fileSystemBytes = 0; - if (downloadDirectory.exists()) { - StatFs statFs = new StatFs(downloadDirectory.getPath()); - long totalBlocks = ApiCompatibilityUtils.getBlockCount(statFs); - long blockSize = ApiCompatibilityUtils.getBlockSize(statFs); - fileSystemBytes = totalBlocks * blockSize; - } else { - Log.e(TAG, "Download directory doesn't exist."); - } - return fileSystemBytes; - } - }; - } - - @Override - public void onChanged() { - Context context = mSpaceUsedTextView.getContext(); - - if (mFileSystemBytes == Long.MAX_VALUE) { - try { - mFileSystemBytes = mFileSystemBytesTask.get(); - } catch (Exception e) { - Log.e(TAG, "Failed to get file system size."); - } - - // Display how big the storage is. - String fileSystemReadable = Formatter.formatFileSize(context, mFileSystemBytes); - mSpaceTotalTextView.setText(context.getString( - R.string.download_manager_ui_space_used, fileSystemReadable)); - } - - // Indicate how much space has been used by downloads. - long usedBytes = mHistoryAdapter.getTotalDownloadSize(); - int percentage = - mFileSystemBytes == 0 ? 0 : (int) (100.0 * usedBytes / mFileSystemBytes); - mSpaceBar.setProgress(percentage); - mSpaceUsedTextView.setText(Formatter.formatFileSize(context, usedBytes)); - } - } - - /** Allows selecting an item from a list displayed in the drawer. */ - private final class FilterAdapter - extends BaseAdapter implements AdapterView.OnItemClickListener { - - private final DownloadManagerUi mRootLayout; - private final int mSelectedBackgroundColor; - private int mSelectedIndex; - - public FilterAdapter(DownloadManagerUi parent) { - mRootLayout = parent; - mSelectedBackgroundColor = ApiCompatibilityUtils.getColor( - parent.getContext().getResources(), R.color.default_primary_color); - } - - @Override - public int getCount() { - return FILTER_LIST.length; - } - - @Override - public Object getItem(int position) { - return FILTER_LIST[position]; - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - Context context = mRootLayout.getContext(); - Resources resources = context.getResources(); - - TextView labelView = null; - if (convertView instanceof TextView) { - labelView = (TextView) convertView; - } else { - labelView = (TextView) LayoutInflater.from(context).inflate( - R.layout.download_manager_ui_drawer_filter, null); - } - - int iconId = FILTER_LIST[position][0]; - labelView.setText(FILTER_LIST[position][1]); - - Drawable iconDrawable = null; - if (position == mSelectedIndex) { - // Highlight the selected item by changing the foreground and background colors. - labelView.setBackgroundColor(mSelectedBackgroundColor); - iconDrawable = TintedDrawable.constructTintedDrawable( - resources, iconId, R.color.light_active_color); - labelView.setTextColor( - ApiCompatibilityUtils.getColor(resources, R.color.light_active_color)); - } else { - // Draw the item normally. - labelView.setBackground(null); - iconDrawable = TintedDrawable.constructTintedDrawable( - resources, iconId, R.color.descriptive_text_color); - labelView.setTextColor( - ApiCompatibilityUtils.getColor(resources, R.color.default_text_color)); - } - - labelView.setCompoundDrawablesWithIntrinsicBounds(iconDrawable, null, null, null); - return labelView; - } - - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - // Update the dataset based on the filter. - int filter = position; - mHistoryAdapter.filter(filter); - mRootLayout.onFilterChanged(filter); - - // Update the sidebar itself. - mSelectedIndex = position; - notifyDataSetChanged(); - mRootLayout.closeDrawer(Gravity.START); - } - } + private static final String TAG = "download_ui"; private final DownloadHistoryAdapter mHistoryAdapter; private final FilterAdapter mFilterAdapter; + private final ObserverList<DownloadUiObserver> mObservers = new ObserverList<>(); - private DownloadManagerUiDelegate mDelegate; - private ActionBarDrawerToggle mActionBarDrawerToggle; - private DownloadManagerToolbar mToolbar; - private SpaceDisplay mSpaceDisplay; - private ListView mFilterView; - private RecyclerView mRecyclerView; + private final Activity mActivity; + private final ViewGroup mMainView; + private final DownloadManagerToolbar mToolbar; + private final SpaceDisplay mSpaceDisplay; + private final ListView mFilterView; + private final RecyclerView mRecyclerView; - private boolean mIsDownloadHistoryInitialized; + private BasicNativePage mNativePage; - public DownloadManagerUi(Context context, AttributeSet attrs) { - super(context, attrs); + public DownloadManagerUi(Activity activity) { + mActivity = activity; + mMainView = (ViewGroup) LayoutInflater.from(activity).inflate(R.layout.download_main, null); + mHistoryAdapter = new DownloadHistoryAdapter(); - mFilterAdapter = new FilterAdapter(this); - } + mHistoryAdapter.initialize(this); - @Override - protected void onFinishInflate() { - super.onFinishInflate(); + mFilterAdapter = new FilterAdapter(); + mFilterAdapter.initialize(this); - mToolbar = (DownloadManagerToolbar) findViewById(R.id.action_bar); + mToolbar = (DownloadManagerToolbar) mMainView.findViewById(R.id.action_bar); + mToolbar.initialize(this); mToolbar.setOnMenuItemClickListener(this); - mSpaceDisplay = new SpaceDisplay(this); - mFilterView = (ListView) findViewById(R.id.section_list); + mSpaceDisplay = new SpaceDisplay(mMainView, mHistoryAdapter); + mFilterView = (ListView) mMainView.findViewById(R.id.section_list); mFilterView.setAdapter(mFilterAdapter); mFilterView.setOnItemClickListener(mFilterAdapter); - mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); + mRecyclerView = (RecyclerView) mMainView.findViewById(R.id.recycler_view); mRecyclerView.setAdapter(mHistoryAdapter); - mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); - } + mRecyclerView.setLayoutManager(new LinearLayoutManager(activity)); - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); + FadingShadowView shadow = (FadingShadowView) mMainView.findViewById(R.id.shadow); + if (DeviceFormFactor.isLargeTablet(mActivity)) { + shadow.setVisibility(View.GONE); + } else { + shadow.init(ApiCompatibilityUtils.getColor(mMainView.getResources(), + R.color.toolbar_shadow_color), FadingShadow.POSITION_TOP); + } + + mSpaceDisplay.onChanged(); + mToolbar.setTitle(R.string.menu_downloads); + getDownloadManagerService().addDownloadHistoryAdapter(mHistoryAdapter); mHistoryAdapter.registerAdapterDataObserver(mSpaceDisplay); - // Get information about all the downloads if it hasn't already been done. - if (!mIsDownloadHistoryInitialized) { - mIsDownloadHistoryInitialized = true; - getDownloadManagerService().getAllDownloads(); - } + // TODO(ianwen): add support for loading state. + getDownloadManagerService().getAllDownloads(); } - @Override - public void onDetachedFromWindow() { + /** + * Sets the {@link BasicNativePage} that holds this manager. + */ + public void setBasicNativePage(BasicNativePage delegate) { + mNativePage = delegate; + } + + /** + * Called when the activity/native page is destroyed. + */ + public void onDestroyed() { getDownloadManagerService().removeDownloadHistoryAdapter(mHistoryAdapter); mHistoryAdapter.unregisterAdapterDataObserver(mSpaceDisplay); - super.onDetachedFromWindow(); } /** @@ -288,56 +140,111 @@ * @return Whether the back button was handled. */ public boolean onBackPressed() { - if (isDrawerOpen(Gravity.START)) { - closeDrawer(Gravity.START); + if (mMainView instanceof DrawerLayout) { + DrawerLayout drawerLayout = (DrawerLayout) mMainView; + if (drawerLayout.isDrawerOpen(Gravity.START)) { + closeDrawer(); + return true; + } + } + return false; + } + + /** + * @return The view that shows the main download UI. + */ + public ViewGroup getView() { + return mMainView; + } + + /** + * Sets the download manager to the state that the url represents. + */ + public void updateForUrl(String url) { + int filter = DownloadFilter.getFilterFromUrl(url); + onFilterChanged(filter); + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + if (item.getItemId() == R.id.close_menu_id && !DeviceFormFactor.isTablet(mActivity)) { + mActivity.finish(); return true; } return false; } /** - * Initializes the UI for the given Activity. - * - * @param activity Activity that is showing the UI. + * @see DrawerLayout#closeDrawer(int) */ - public void initialize(DownloadManagerUiDelegate delegate, Activity activity) { - mDelegate = delegate; - - mActionBarDrawerToggle = new ActionBarDrawerToggle(activity, - this, (Toolbar) findViewById(R.id.action_bar), - R.string.accessibility_bookmark_drawer_toggle_btn_open, - R.string.accessibility_bookmark_drawer_toggle_btn_close); - addDrawerListener(mActionBarDrawerToggle); - mActionBarDrawerToggle.syncState(); - - FadingShadowView shadow = (FadingShadowView) findViewById(R.id.shadow); - if (DeviceFormFactor.isLargeTablet(getContext())) { - shadow.setVisibility(View.GONE); - } else { - shadow.init(ApiCompatibilityUtils.getColor(getResources(), - R.color.toolbar_shadow_color), FadingShadow.POSITION_TOP); + void closeDrawer() { + if (mMainView instanceof DrawerLayout) { + ((DrawerLayout) mMainView).closeDrawer(Gravity.START); } - - mSpaceDisplay.onChanged(); - mToolbar.setTitle(R.string.menu_downloads); } - @Override - public boolean onMenuItemClick(MenuItem item) { - if (item.getItemId() == R.id.close_menu_id && mDelegate != null) { - mDelegate.onCloseButtonClicked(DownloadManagerUi.this); - return true; + /** + * @return The activity that holds the download UI. + */ + Activity getActivity() { + return mActivity; + } + + /** Called when a particular download item has been clicked. */ + void onDownloadItemClicked(DownloadItem item) { + boolean success = false; + + String mimeType = item.getDownloadInfo().getMimeType(); + String filePath = item.getDownloadInfo().getFilePath(); + Uri fileUri = Uri.fromFile(new File(filePath)); + + // Check if any apps can open the file. + Intent fileIntent = new Intent(); + fileIntent.setAction(Intent.ACTION_VIEW); + fileIntent.setDataAndType(fileUri, mimeType); + fileIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + List<ResolveInfo> handlers = ContextUtils.getApplicationContext().getPackageManager() + .queryIntentActivities(fileIntent, PackageManager.MATCH_DEFAULT_ONLY); + if (handlers.size() > 0) { + Intent chooserIntent = Intent.createChooser(fileIntent, null); + chooserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + try { + mActivity.startActivity(chooserIntent); + success = true; + } catch (ActivityNotFoundException e) { + // Can't launch the Intent. + } } - return false; + + if (!success) { + Toast.makeText(mActivity, mActivity.getString(R.string.download_cant_open_file), + Toast.LENGTH_SHORT).show(); + } } /** Called when the filter has been changed by the user. */ - private void onFilterChanged(int filetype) { - if (filetype == 0) { - mToolbar.setTitle(R.string.menu_downloads); - } else { - mToolbar.setTitle(FILTER_LIST[filetype][1]); + void onFilterChanged(int filter) { + for (DownloadUiObserver observer : mObservers) { + observer.onFilterChanged(filter); } + if (mNativePage != null) { + mNativePage.onStateChange(DownloadFilter.getUrlForFilter(filter)); + } + } + + /** + * Adds a {@link DownloadUiObserver} to observe the changes in the download manager. + */ + void addObserver(DownloadUiObserver observer) { + mObservers.addObserver(observer); + } + + /** + * Removes a {@link DownloadUiObserver} that were added in + * {@link #addObserver(DownloadUiObserver)} + */ + void removeObserver(DownloadUiObserver observer) { + mObservers.removeObserver(observer); } private static DownloadManagerService getDownloadManagerService() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilterAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilterAdapter.java new file mode 100644 index 0000000..db7c8f3 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/FilterAdapter.java
@@ -0,0 +1,106 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.download.ui; + +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import org.chromium.base.ApiCompatibilityUtils; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.download.ui.DownloadManagerUi.DownloadUiObserver; +import org.chromium.chrome.browser.widget.TintedDrawable; + +/** An adapter that allows selecting an item from a list displayed in the drawer. */ +class FilterAdapter extends BaseAdapter + implements AdapterView.OnItemClickListener, DownloadUiObserver { + + private int mSelectedBackgroundColor; + private DownloadManagerUi mManagerUi; + private int mSelectedIndex; + + @Override + public int getCount() { + return DownloadFilter.getFilterCount(); + } + + @Override + public Object getItem(int position) { + return DownloadFilter.FILTER_LIST[position]; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + Resources resources = mManagerUi.getActivity().getResources(); + + TextView labelView = null; + if (convertView instanceof TextView) { + labelView = (TextView) convertView; + } else { + labelView = (TextView) LayoutInflater.from(mManagerUi.getActivity()).inflate( + R.layout.download_manager_ui_drawer_filter, null); + } + + int iconId = DownloadFilter.FILTER_LIST[position][0]; + labelView.setText(DownloadFilter.FILTER_LIST[position][1]); + + Drawable iconDrawable = null; + if (position == mSelectedIndex) { + // Highlight the selected item by changing the foreground and background colors. + labelView.setBackgroundColor(mSelectedBackgroundColor); + iconDrawable = TintedDrawable.constructTintedDrawable( + resources, iconId, R.color.light_active_color); + labelView.setTextColor( + ApiCompatibilityUtils.getColor(resources, R.color.light_active_color)); + } else { + // Draw the item normally. + labelView.setBackground(null); + iconDrawable = TintedDrawable.constructTintedDrawable( + resources, iconId, R.color.descriptive_text_color); + labelView.setTextColor( + ApiCompatibilityUtils.getColor(resources, R.color.default_text_color)); + } + + labelView.setCompoundDrawablesWithIntrinsicBounds(iconDrawable, null, null, null); + return labelView; + } + + @Override + public void onItemClick(AdapterView<?> parent, View view, int position, long id) { + mManagerUi.onFilterChanged(position); + } + + @Override + public void initialize(DownloadManagerUi manager) { + mManagerUi = manager; + mSelectedBackgroundColor = ApiCompatibilityUtils + .getColor(mManagerUi.getActivity().getResources(), R.color.default_primary_color); + manager.addObserver(this); + } + + @Override + public void onFilterChanged(int filter) { + if (mSelectedIndex == filter) return; + mSelectedIndex = filter; + notifyDataSetChanged(); + mManagerUi.closeDrawer(); + } + + @Override + public void onDestroy(DownloadManagerUi manager) { + mManagerUi.removeObserver(this); + mManagerUi = null; + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/SpaceDisplay.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/SpaceDisplay.java new file mode 100644 index 0000000..4b60333 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/SpaceDisplay.java
@@ -0,0 +1,101 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.download.ui; + +import android.content.Context; +import android.os.AsyncTask; +import android.os.Environment; +import android.os.StatFs; +import android.support.v7.widget.RecyclerView; +import android.text.format.Formatter; +import android.view.ViewGroup; +import android.widget.ProgressBar; +import android.widget.TextView; + +import org.chromium.base.ApiCompatibilityUtils; +import org.chromium.base.Log; +import org.chromium.chrome.R; + +import java.io.File; + +/** A View that manages the display of space used by the downloads. */ +class SpaceDisplay extends RecyclerView.AdapterDataObserver { + private static final String TAG = "download_ui"; + private final AsyncTask<Void, Void, Long> mFileSystemBytesTask; + + private DownloadHistoryAdapter mHistoryAdapter; + private TextView mSpaceUsedTextView; + private TextView mSpaceTotalTextView; + private ProgressBar mSpaceBar; + private long mFileSystemBytes = Long.MAX_VALUE; + + SpaceDisplay(final ViewGroup parent, DownloadHistoryAdapter historyAdapter) { + mHistoryAdapter = historyAdapter; + mSpaceUsedTextView = (TextView) parent.findViewById(R.id.space_used_display); + mSpaceTotalTextView = (TextView) parent.findViewById(R.id.space_total_display); + mSpaceBar = (ProgressBar) parent.findViewById(R.id.space_bar); + mFileSystemBytesTask = createStorageSizeTask().execute(); + } + + private AsyncTask<Void, Void, Long> createStorageSizeTask() { + return new AsyncTask<Void, Void, Long>() { + @Override + protected Long doInBackground(Void... params) { + File downloadDirectory = Environment.getExternalStoragePublicDirectory( + Environment.DIRECTORY_DOWNLOADS); + + // Create the downloads directory, if necessary. + if (!downloadDirectory.exists()) { + try { + // mkdirs() can fail, so we still need to check if the directory exists + // later. + downloadDirectory.mkdirs(); + } catch (SecurityException e) { + Log.e(TAG, "SecurityException when creating download directory.", e); + } + } + + // Determine how much space is available on the storage device where downloads + // reside. If the downloads directory doesn't exist, it is likely that the user + // doesn't have an SD card installed. + long fileSystemBytes = 0; + if (downloadDirectory.exists()) { + StatFs statFs = new StatFs(downloadDirectory.getPath()); + long totalBlocks = ApiCompatibilityUtils.getBlockCount(statFs); + long blockSize = ApiCompatibilityUtils.getBlockSize(statFs); + fileSystemBytes = totalBlocks * blockSize; + } else { + Log.e(TAG, "Download directory doesn't exist."); + } + return fileSystemBytes; + } + }; + } + + @Override + public void onChanged() { + Context context = mSpaceUsedTextView.getContext(); + + if (mFileSystemBytes == Long.MAX_VALUE) { + try { + mFileSystemBytes = mFileSystemBytesTask.get(); + } catch (Exception e) { + Log.e(TAG, "Failed to get file system size."); + } + + // Display how big the storage is. + String fileSystemReadable = Formatter.formatFileSize(context, mFileSystemBytes); + mSpaceTotalTextView.setText(context.getString( + R.string.download_manager_ui_space_used, fileSystemReadable)); + } + + // Indicate how much space has been used by downloads. + long usedBytes = mHistoryAdapter.getTotalDownloadSize(); + int percentage = + mFileSystemBytes == 0 ? 0 : (int) (100.0 * usedBytes / mFileSystemBytes); + mSpaceBar.setProgress(percentage); + mSpaceUsedTextView.setText(Formatter.formatFileSize(context, usedBytes)); + } +} \ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java index dc7cc57d..ec5384ff 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitializationActivity.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.init; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -200,6 +201,7 @@ * be called on that order. */ @Override + @SuppressLint("MissingSuperCall") // Called in onCreateInternal. protected final void onCreate(Bundle savedInstanceState) { TraceEvent.begin("AsyncInitializationActivity.onCreate()"); onCreateInternal(savedInstanceState);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NativePageFactory.java index 3894634..fb711065 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NativePageFactory.java
@@ -12,6 +12,7 @@ import org.chromium.chrome.browser.NativePage; import org.chromium.chrome.browser.UrlConstants; import org.chromium.chrome.browser.bookmarks.BookmarkPage; +import org.chromium.chrome.browser.download.DownloadPage; import org.chromium.chrome.browser.physicalweb.PhysicalWebDiagnosticsPage; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.TabModelSelector; @@ -40,6 +41,10 @@ return new BookmarkPage(activity, tab); } + protected NativePage buildDownloadsPage(Activity activity, Tab tab) { + return new DownloadPage(activity, tab); + } + protected NativePage buildRecentTabsPage(Activity activity, Tab tab) { RecentTabsManager recentTabsManager = new RecentTabsManager(tab, tab.getProfile(), activity); @@ -52,7 +57,7 @@ } enum NativePageType { - NONE, CANDIDATE, NTP, BOOKMARKS, RECENT_TABS, PHYSICAL_WEB + NONE, CANDIDATE, NTP, BOOKMARKS, RECENT_TABS, PHYSICAL_WEB, DOWNLOADS, } private static NativePageType nativePageType(String url, NativePage candidatePage, @@ -73,6 +78,8 @@ return NativePageType.NTP; } else if (UrlConstants.BOOKMARKS_HOST.equals(host)) { return NativePageType.BOOKMARKS; + } else if (UrlConstants.DOWNLOADS_HOST.equals(host)) { + return NativePageType.DOWNLOADS; } else if (UrlConstants.RECENT_TABS_HOST.equals(host) && !isIncognito) { return NativePageType.RECENT_TABS; } else if (UrlConstants.PHYSICAL_WEB_HOST.equals(host)) { @@ -122,6 +129,9 @@ case BOOKMARKS: page = sNativePageBuilder.buildBookmarksPage(activity, tab); break; + case DOWNLOADS: + page = sNativePageBuilder.buildDownloadsPage(activity, tab); + break; case RECENT_TABS: page = sNativePageBuilder.buildRecentTabsPage(activity, tab); break;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java index 0ce7dcc..4edd972 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
@@ -444,16 +444,7 @@ if (focused) StartupMetrics.getInstance().recordFocusedOmnibox(); - // When unfocused, force left-to-right rendering at the paragraph level (which is desired - // for URLs). Right-to-left runs are still rendered RTL, but will not flip the whole URL - // around. This is consistent with OmniboxViewViews on desktop. When focused, render text - // normally (to allow users to make non-URL searches and to avoid showing Android's split - // insertion point when an RTL user enters RTL text). - if (focused) { - ApiCompatibilityUtils.setTextDirection(this, TEXT_DIRECTION_INHERIT); - } else { - ApiCompatibilityUtils.setTextDirection(this, TEXT_DIRECTION_LTR); - } + fixupTextDirection(); // Always align to the same as the paragraph direction (LTR = left, RTL = right). ApiCompatibilityUtils.setTextAlignment(this, TEXT_ALIGNMENT_TEXT_START); } @@ -477,6 +468,25 @@ } } + /** + * Sets the {@link UrlBar}'s text direction based on focus and contents. + * + * Should be called whenever focus or text contents change. + */ + private void fixupTextDirection() { + // When unfocused, force left-to-right rendering at the paragraph level (which is desired + // for URLs). Right-to-left runs are still rendered RTL, but will not flip the whole URL + // around. This is consistent with OmniboxViewViews on desktop. When focused, render text + // normally (to allow users to make non-URL searches and to avoid showing Android's split + // insertion point when an RTL user enters RTL text). Also render text normally when the + // text field is empty (because then it displays an instruction that is not a URL). + if (mFocused || length() == 0) { + ApiCompatibilityUtils.setTextDirection(this, TEXT_DIRECTION_INHERIT); + } else { + ApiCompatibilityUtils.setTextDirection(this, TEXT_DIRECTION_LTR); + } + } + @Override protected void onWindowVisibilityChanged(int visibility) { super.onWindowVisibilityChanged(visibility); @@ -865,6 +875,8 @@ clearAutocompleteSpanIfInvalid(); } } + + fixupTextDirection(); } private void clearAutocompleteSpanIfInvalid() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java index 6ee99ab3..10e3700 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareHelper.java
@@ -24,7 +24,9 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; +import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; +import android.text.TextUtils; import android.util.Pair; import android.view.MenuItem; import android.view.View; @@ -89,6 +91,18 @@ } /** + * Callback interface for when a target is chosen. + */ + public static interface TargetChosenCallback { + /** + * Called when the user chooses a target in the share dialog. + * + * Note that if the user cancels the share dialog, this callback is never called. + */ + public void onTargetChosen(ComponentName chosenComponent); + } + + /** * Receiver to record the chosen component when sharing an Intent. */ static class TargetChosenReceiver extends BroadcastReceiver { @@ -98,12 +112,23 @@ private static String sTargetChosenReceiveAction; private static TargetChosenReceiver sLastRegisteredReceiver; + private final boolean mSaveLastUsed; + @Nullable private final TargetChosenCallback mCallback; + + private TargetChosenReceiver(boolean saveLastUsed, + @Nullable TargetChosenCallback callback) { + mSaveLastUsed = saveLastUsed; + mCallback = callback; + } + static boolean isSupported() { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1; } @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) - static void sendChooserIntent(Activity activity, Intent sharingIntent) { + static void sendChooserIntent(boolean saveLastUsed, Activity activity, + Intent sharingIntent, + @Nullable TargetChosenCallback callback) { synchronized (LOCK) { if (sTargetChosenReceiveAction == null) { sTargetChosenReceiveAction = activity.getPackageName() + "/" @@ -113,7 +138,7 @@ if (sLastRegisteredReceiver != null) { context.unregisterReceiver(sLastRegisteredReceiver); } - sLastRegisteredReceiver = new TargetChosenReceiver(); + sLastRegisteredReceiver = new TargetChosenReceiver(saveLastUsed, callback); context.registerReceiver( sLastRegisteredReceiver, new IntentFilter(sTargetChosenReceiveAction)); } @@ -121,11 +146,11 @@ Intent intent = new Intent(sTargetChosenReceiveAction); intent.setPackage(activity.getPackageName()); intent.putExtra(EXTRA_RECEIVER_TOKEN, sLastRegisteredReceiver.hashCode()); - final PendingIntent callback = PendingIntent.getBroadcast(activity, 0, intent, + final PendingIntent pendingIntent = PendingIntent.getBroadcast(activity, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT); Intent chooserIntent = Intent.createChooser(sharingIntent, activity.getString(R.string.share_link_chooser_title), - callback.getIntentSender()); + pendingIntent.getIntentSender()); activity.startActivity(chooserIntent); } @@ -142,7 +167,10 @@ } ComponentName target = intent.getParcelableExtra(Intent.EXTRA_CHOSEN_COMPONENT); - if (target != null) { + if (mCallback != null) { + mCallback.onTargetChosen(target); + } + if (mSaveLastUsed && target != null) { setLastShareComponentName(target); } } @@ -177,19 +205,27 @@ * * @param shareDirectly Whether it should share directly with the activity that was most * recently used to share. + * @param saveLastUsed Whether to save the chosen activity for future direct sharing. * @param activity Activity that is used to access package manager. * @param title Title of the page to be shared. + * @param text Text to be shared. If both |text| and |url| are supplied, they are concatenated + * with a space. * @param url URL of the page to be shared. * @param screenshot Screenshot of the page to be shared. + * @param callback Optional callback to be called when user makes a choice. Will not be called + * if receiving a response when the user makes a choice is not supported (on + * older Android versions). */ - public static void share(boolean shareDirectly, Activity activity, String title, String url, - Bitmap screenshot) { + public static void share(boolean shareDirectly, boolean saveLastUsed, Activity activity, + String title, String text, String url, Bitmap screenshot, + @Nullable TargetChosenCallback callback) { if (shareDirectly) { - shareWithLastUsed(activity, title, url, screenshot); + shareWithLastUsed(activity, title, text, url, screenshot); } else if (TargetChosenReceiver.isSupported()) { - makeIntentAndShare(activity, title, url, screenshot, null); + makeIntentAndShare(saveLastUsed, activity, title, text, url, screenshot, null, + callback); } else { - showShareDialog(activity, title, url, screenshot); + showShareDialog(saveLastUsed, activity, title, text, url, screenshot, callback); } } @@ -255,14 +291,21 @@ /** * Creates and shows a share intent picker dialog. * + * @param saveLastUsed Whether to save the chosen activity for future direct sharing. * @param activity Activity that is used to access package manager. * @param title Title of the page to be shared. + * @param text Text to be shared. If both |text| and |url| are supplied, they are concatenated + * with a space. * @param url URL of the page to be shared. * @param screenshot Screenshot of the page to be shared. + * @param callback Optional callback to be called when user makes a choice. Will not be called + * if receiving a response when the user makes a choice is not supported (on + * older Android versions). */ - private static void showShareDialog(final Activity activity, final String title, - final String url, final Bitmap screenshot) { - Intent intent = getShareIntent(activity, title, url, null); + private static void showShareDialog(final boolean saveLastUsed, final Activity activity, + final String title, final String text, final String url, final Bitmap screenshot, + @Nullable final TargetChosenCallback callback) { + Intent intent = getShareIntent(activity, title, text, url, null); PackageManager manager = activity.getPackageManager(); List<ResolveInfo> resolveInfoList = manager.queryIntentActivities(intent, 0); assert resolveInfoList.size() > 0; @@ -284,8 +327,10 @@ ActivityInfo ai = info.activityInfo; ComponentName component = new ComponentName(ai.applicationInfo.packageName, ai.name); - setLastShareComponentName(component); - makeIntentAndShare(activity, title, url, screenshot, component); + callback.onTargetChosen(component); + if (saveLastUsed) setLastShareComponentName(component); + makeIntentAndShare(false, activity, title, text, url, screenshot, component, + null); dialog.dismiss(); } }); @@ -296,30 +341,38 @@ * If there is no most recently used activity, it does nothing. * @param activity Activity that is used to start the share intent. * @param title Title of the page to be shared. + * @param text Text to be shared. If both |text| and |url| are supplied, they are concatenated + * with a space. * @param url URL of the page to be shared. * @param screenshot Screenshot of the page to be shared. */ private static void shareWithLastUsed( - Activity activity, String title, String url, Bitmap screenshot) { + Activity activity, String title, String text, String url, Bitmap screenshot) { ComponentName component = getLastShareComponentName(); if (component == null) return; - makeIntentAndShare(activity, title, url, screenshot, component); + makeIntentAndShare(false, activity, title, text, url, screenshot, component, null); } - private static void shareIntent(Activity activity, Intent sharingIntent) { + private static void shareIntent(boolean saveLastUsed, Activity activity, Intent sharingIntent, + @Nullable TargetChosenCallback callback) { if (sharingIntent.getComponent() != null) { + // If a component was specified, there should not also be a callback. + assert callback == null; activity.startActivity(sharingIntent); } else { assert TargetChosenReceiver.isSupported(); - TargetChosenReceiver.sendChooserIntent(activity, sharingIntent); + TargetChosenReceiver.sendChooserIntent(saveLastUsed, activity, sharingIntent, callback); } } - private static void makeIntentAndShare(final Activity activity, final String title, - final String url, final Bitmap screenshot, final ComponentName component) { + private static void makeIntentAndShare(final boolean saveLastUsed, final Activity activity, + final String title, final String text, final String url, final Bitmap screenshot, + final ComponentName component, @Nullable final TargetChosenCallback callback) { if (screenshot == null) { - shareIntent(activity, - getDirectShareIntentForComponent(activity, title, url, null, component)); + shareIntent( + saveLastUsed, activity, + getDirectShareIntentForComponent(activity, title, text, url, null, component), + callback); } else { new AsyncTask<Void, Void, File>() { @Override @@ -358,8 +411,11 @@ != ApplicationState.HAS_DESTROYED_ACTIVITIES) { Uri screenshotUri = saveFile == null ? null : UiUtils.getUriForImageCaptureFile(activity, saveFile); - shareIntent(activity, getDirectShareIntentForComponent( - activity, title, url, screenshotUri, component)); + shareIntent( + saveLastUsed, activity, + getDirectShareIntentForComponent(activity, title, text, url, + screenshotUri, component), + callback); } } }.execute(); @@ -379,7 +435,7 @@ final ComponentName component = getLastShareComponentName(); boolean isComponentValid = false; if (component != null) { - Intent intent = getShareIntent(activity, "", "", null); + Intent intent = getShareIntent(activity, "", "", "", null); intent.setPackage(component.getPackageName()); PackageManager manager = activity.getPackageManager(); List<ResolveInfo> resolveInfoList = manager.queryIntentActivities(intent, 0); @@ -439,13 +495,22 @@ @VisibleForTesting protected static Intent getShareIntent( - Activity activity, String title, String url, Uri screenshotUri) { - url = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(url); + Activity activity, String title, String text, String url, Uri screenshotUri) { + if (!TextUtils.isEmpty(url)) { + url = DomDistillerUrlUtils.getOriginalUrlFromDistillerUrl(url); + if (!TextUtils.isEmpty(text)) { + // Concatenate text and URL with a space. + text = text + " " + url; + } else { + text = url; + } + } + Intent intent = new Intent(Intent.ACTION_SEND); intent.addFlags(ApiCompatibilityUtils.getActivityNewDocumentFlag()); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, title); - intent.putExtra(Intent.EXTRA_TEXT, url); + intent.putExtra(Intent.EXTRA_TEXT, text); intent.putExtra(EXTRA_TASK_ID, activity.getTaskId()); if (screenshotUri != null) { @@ -469,9 +534,9 @@ } private static Intent getDirectShareIntentForComponent( - Activity activity, String title, String url, + Activity activity, String title, String text, String url, Uri screenshotUri, ComponentName component) { - Intent intent = getShareIntent(activity, title, url, screenshotUri); + Intent intent = getShareIntent(activity, title, text, url, screenshotUri); intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP); intent.setComponent(component);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webshare/ShareServiceImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/webshare/ShareServiceImpl.java index 73fc0a48..f4dc2387 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webshare/ShareServiceImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webshare/ShareServiceImpl.java
@@ -4,11 +4,11 @@ package org.chromium.chrome.browser.webshare; -import android.content.Context; -import android.content.Intent; +import android.app.Activity; +import android.content.ComponentName; import android.support.annotation.Nullable; -import org.chromium.chrome.R; +import org.chromium.chrome.browser.share.ShareHelper; import org.chromium.content.browser.ContentViewCore; import org.chromium.content_public.browser.WebContents; import org.chromium.mojo.system.MojoException; @@ -20,12 +20,10 @@ * third_party/WebKit/public/platform/modules/webshare/webshare.mojom. */ public class ShareServiceImpl implements ShareService { - private final WindowAndroid mWindow; - private final Context mContext; + private final Activity mActivity; public ShareServiceImpl(@Nullable WebContents webContents) { - mWindow = windowFromWebContents(webContents); - mContext = contextFromWindow(mWindow); + mActivity = activityFromWebContents(webContents); } @Override @@ -35,42 +33,29 @@ public void onConnectionError(MojoException e) {} @Override - public void share(String title, String text, ShareResponse callback) { - if (mContext == null) { + public void share(String title, String text, final ShareResponse callback) { + if (mActivity == null) { callback.call("Share failed"); return; } - String chooserTitle = mContext.getString(R.string.share_link_chooser_title); - Intent send = new Intent(Intent.ACTION_SEND); - send.setType("text/plain"); - send.putExtra(Intent.EXTRA_SUBJECT, title); - send.putExtra(Intent.EXTRA_TEXT, text); + ShareHelper.TargetChosenCallback innerCallback = new ShareHelper.TargetChosenCallback() { + public void onTargetChosen(ComponentName chosenComponent) { + callback.call(null); + } + }; - Intent chooser = Intent.createChooser(send, chooserTitle); - if (!mWindow.showIntent(chooser, null, null)) { - callback.call("Share failed"); - return; - } - - // Success. - // TODO(mgiuca): Wait until the user has made a choice, and report failure if they cancel - // the picker or something else goes wrong. - callback.call(null); + ShareHelper.share(false, false, mActivity, title, text, null, null, innerCallback); } @Nullable - private static WindowAndroid windowFromWebContents(@Nullable WebContents webContents) { + private static Activity activityFromWebContents(@Nullable WebContents webContents) { if (webContents == null) return null; ContentViewCore contentViewCore = ContentViewCore.fromWebContents(webContents); if (contentViewCore == null) return null; - return contentViewCore.getWindowAndroid(); - } - - @Nullable - private static Context contextFromWindow(@Nullable WindowAndroid window) { + WindowAndroid window = contentViewCore.getWindowAndroid(); if (window == null) return null; return window.getActivity().get();
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd index 963126d2..f814cec1 100644 --- a/chrome/android/java/strings/android_chrome_strings.grd +++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -1699,6 +1699,9 @@ <message name="IDS_DOWNLOAD_NOTIFICATION_PAUSED" desc="Download notification to be displayed when a download pauses."> Download paused. </message> + <message name="IDS_DOWNLOAD_CANT_OPEN_FILE" desc="Toast that appears when a downloaded file can't be opened."> + Can't open file + </message> <message name="IDS_DOWNLOAD_NOTIFICATION_PAUSE_BUTTON" desc="Text on the button that pauses a download."> Pause </message>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb index a0e369a..b7e6ef0 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_am.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_am.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="am"> -<translation id="1040144152982955218">መሣሪያዎችን በመፈለግ ላይ… <ph name="BEGIN_LINK" />እገዛ ያግኙ<ph name="END_LINK" /></translation> <translation id="1056898198331236512">ማስጠንቀቂያ</translation> <translation id="10614374240317010">በጭራሽ አልተቀመጠም</translation> <translation id="1061441684050139317">Chrome እሱን ለዚህ ጣቢያ ለማጋራት የማይክሮፎን መዳረሻ ያስፈልገዋል።</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">በአቅራቢያ ባሉ ነገሮች የተላኩ ድረ-ገጾችን ያግኙ። Chrome በእርስዎ ዙሪያ ካሉ ነገሮች ጋር ተያያዥነት ያላቸውን ድረ-ገጾችን ይሰበስባል፣ ለእርስዎ በጣም አስፈላጊ የሆነውን ለማግኘት ወደ Google አገልግሎት ስም-አልባ አድርጎ ይልካቸዋል፣ ከዚያ ያሳያቸዋል። አካላዊ ድርን ለመጠቀም ብሉቱዝ እና አካባቢን ማብራት አለብዎት።</translation> -<translation id="1250508505624960884">የChrome ቅድመ-ይሁንታ ዕልባቶች</translation> <translation id="1254090737195733114">ውሂብ ከውጭ ይምጣ?</translation> <translation id="1258753120186372309">Google doodle፦ <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">አቁም</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">ተቀባይነት ያገኙ ካርዶች</translation> <translation id="1966710179511230534">እባክዎ የመግቢያ ዝርዝሮችዎን ያዘምኑ።</translation> <translation id="1974060860693918893">የላቀ</translation> -<translation id="1984321224716884559">የChrome ገንቢ ዕልባቶች</translation> <translation id="1984937141057606926">የተፈቀደ፣ ከሶስተኛ ወገን በቀር</translation> <translation id="1994173015038366702">የጣቢያ ዩአርኤል</translation> <translation id="2001120796168634316">በኋላ ላይ ለመጠቀም የተገናኘ ገጽን አስቀምጥ</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">በጣቢያዎች ላይ የተቀመጡ ምርጫዎች ሊሰረዙ ይችላሉ</translation> <translation id="2748463065602559597">ደህንነቱ የተጠበቀ የGoogle Chrome ገጽ እያዩ ነው።</translation> <translation id="2762000892062317888">አሁን</translation> -<translation id="2770465223704140727">ከዝርዝር አስወግድ</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> ሰከንዶች ይቀራሉ</translation> -<translation id="278029852808208386">ምንም የብሉቱዝ መሳሪያዎች አልተገኙም። <ph name="BEGIN_LINK" />እንደገና ይፈልጉ<ph name="END_LINK" />።</translation> <translation id="2781151931089541271">1 ሰከንድ ይቀራል</translation> <translation id="2811892995384186721">መሣሪያዎ አይታየዎትም? <ph name="BEGIN_LINK" />እገዛ ያግኙ<ph name="END_LINK" />።</translation> <translation id="2836148919159985482">ከሙሉ ማያ ገጽ ለመውጣት የተመለስ አዝራሩን ይንኩ።</translation> @@ -232,7 +227,6 @@ የፍለጋ ቃልዎን ለማስተካከል ለመምረጥ በረዥሙ ይጫኑ። ፍለጋዎን ይበልጥ ለማጥራት መቃኑን እስከ ላይ ድረስ ያንሸራትቱት እና የፍለጋ ሳጥኑን ይንኩ።</translation> <translation id="3616113530831147358">ድምጽ</translation> -<translation id="3623048332793834136">የChrome Canary ዕልባቶች</translation> <translation id="3632295766818638029">የይለፍ ቃልን ግለጥ</translation> <translation id="363596933471559332">የተከማቹ ምስክርነቶችን በመጠቀም በራስ-ሰር ወደ የድር ጣቢያዎች መለያ ይግቡ። ባህሪው ሲጠፋ ወደ አንድ ድር ጣቢያ ከመግባትዎ በፊት ማረጋገጫ ይጠየቃሉ።</translation> <translation id="3656115297268584622">በ<ph name="BEGIN_LINK" />Android ቅንብሮች<ph name="END_LINK" /> ውስጥ አካባቢን ያብሩ።</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831"><ph name="LANGUAGE" />ን በጭራሽ አትተርጉም</translation> <translation id="4275663329226226506">ማህደረ መረጃ</translation> <translation id="4278390842282768270">ተፈቅዷል</translation> -<translation id="4297410240212242334">ትሮችን እና መተግበሪያዎችን ያለያዩ</translation> <translation id="4307992518367153382">መሠረታዊ</translation> <translation id="4334294535648607276">ማውረድ ተጠናቅቋል።</translation> <translation id="4351244548802238354">መገናኛ ዝጋ</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">በእርስዎ ወላጅ የሚቀናበር</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> ዕልባቶች ተሰርዘዋል</translation> <translation id="4665282149850138822"><ph name="NAME" /> ወደ እርስዎ መነሻ ገፅ ታክሏል</translation> -<translation id="4668044310199835006">የChrome ዕልባቶችን ይስሩ</translation> <translation id="4684427112815847243">ሁሉንም ያመሳስሉ</translation> <translation id="4686372254213217147">የመጀመሪያ መጠን</translation> -<translation id="4690286298542128877">ትሮች በChrome ውስጥ ወደሚገኝ የትር ቀያያሪ ይንቀሳቀሳሉ።</translation> <translation id="4698413471314543145">Chromeን ለማሄድ የሚያስፈልግ አንድ መሠረታዊ ተግበር ይጎድላል፤ ወይም Chrome ጭነትዎ ያልተሟላ ነው ወይም ከዚህ የAndroid ስሪት ጋር ተኳሃኝ አይደለም።</translation> <translation id="4699172675775169585">የተሸጎጡ ምስሎች እና ፋይሎች</translation> <translation id="4710672574193412565">በእርስዎ የመሣሪያ ቅንብሮች መተግበሪያ ውስጥ ካለው የመለያዎች ገጽ ላይ የGoogle መለያ ያክሉ።</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">አመሳስል ጠፍቷል</translation> <translation id="5131405117025179004">የተቀመጠ መለያን ያርትዑ</translation> <translation id="5138299137310274655">ይህ ገጽ በ<ph name="SOURCE_LANGUAGE" /> ነው። ወደ <ph name="TARGET_LANGUAGE" /> ይተርጎም?</translation> -<translation id="5150703642582475397">ትሮችን እና መተግበሪያዎችን ያዋህዱ</translation> <translation id="515227803646670480">የተከማቸ ውሂብን አጽዳ</translation> <translation id="5156656584247937086">ይህ የህጻን መለያ ነው</translation> <translation id="5161254044473106830">ርዕስ ያስፈልጋል</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">ዘግተህ ውጣ</translation> <translation id="5233638681132016545">አዲስ ትር</translation> <translation id="5271967389191913893">መሣሪያ የሚወርደውን ይዘት መክፈት አይችልም።</translation> -<translation id="5275558766013849309">ትሮች ከቅርብ ጊዜ መተግበሪያዎች ጋር አብረው ይኖራሉ።</translation> <translation id="528192093759286357">ከሙሉ ማያ ገጽ ለመውጣት ከላይ ይጎትቱ እና የተመለስ አዝራሩን ይንኩ።</translation> <translation id="5284584623296338184">በእርስዎ ዕልባቶች፣ ታሪክ፣ የይለፍ ቃላት እና ሌሎች ቅንብሮች ላይ የተደረጉ ለውጦች ከአሁን በኋላ ከእርስዎ የGoogle መለያ ጋር አይሠምሩም። ሆኖም ግን ነባር ውሂብዎ በእርስዎ የGoogle መለያ ላይ እንደተከማቸ ይቆያል።</translation> <translation id="5301954838959518834">እሺ፣ ገባኝ</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">ማዋቀር በሂደት ላይ…</translation> <translation id="6112702117600201073">ገጽ በማደስ ላይ</translation> <translation id="6127379762771434464">ንጥል ተወግዷል</translation> -<translation id="6134870457258083164">መሣሪያዎ አይታየዎትም? <ph name="BEGIN_LINK1" />እገዛ ያግኙ<ph name="END_LINK1" /> ወይም <ph name="BEGIN_LINK2" />እንደገና ይፈልጉ<ph name="END_LINK2" />።</translation> <translation id="6138140242378429169">ገጹ ለሞባይል-አመቺ እንዲሆን ያድርጉ</translation> <translation id="6140912465461743537">አገር/ክልል</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> የውሂብ ቁጠባዎች</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">«<ph name="VIDEO_TITLE" />»ን ለአፍታ ቆሟል</translation> <translation id="6477460825583319731">ልክ ያልሆነ የኢሜይል አድራሻ</translation> <translation id="6482749332252372425">በማከማቻ ቦታ ጥበት ምክንያት <ph name="FILE_NAME" />ን ማውረድ አልተሳካም።</translation> -<translation id="6541922744811587456">የChrome ዕልባቶች</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">በሞገድ የሚለቅቁት ትር ይምረጡ</translation> <translation id="6545017243486555795">ሁሉንም ውሂብ አጽዳ</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">በማስሄድ ላይ</translation> <translation id="7243308994586599757">አማራጮች ከማያ ገጹ ግርጌ አጠገብ ይገኛሉ</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> አካባቢያዊ የፍለጋ ውጤቶችን ለማሳየት የእርስዎን አካባቢ ይጠቀማል</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />እገዛ<ph name="END_LINK" /></translation> <translation id="7299721129597238157">ዕልባት ሰርዝ</translation> <translation id="7301833672208172928">የታሪክ ስምረትን አብራ</translation> <translation id="7327835590071894791">የእርስዎ ትር አሁን በበስተጀርባ ላይ ነው።</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">አይ</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">በጣቢያ ገደቦች ምክንያት ቪዲዮን መውሰድ አልተቻለም</translation> -<translation id="7408644312175185557">በስልክዎ የአጠቃላይ ዕይታ ማያ ገጽ ላይ የእርስዎን ትሮች ከሌሎች የቅርብ ጊዜ መተግበሪያዎች ጋር ይመልከቱ።</translation> <translation id="7423098979219808738">መጀመሪያ ጠይቅ</translation> <translation id="7437998757836447326">ዘግተው ከChrome ይውጡ</translation> <translation id="7445411102860286510">ጣቢያዎች ድምፀ-ከል የተደረገባቸው ቪዲዮዎችን በራስ-ሰር እንዲያጫውቱ ይፍቀዱላቸው (የሚመከር)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb index 9049f3a..c6459dee 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ar.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ar"> -<translation id="1040144152982955218">جارٍ البحث عن أجهزة... <ph name="BEGIN_LINK" />الحصول على مساعدة<ph name="END_LINK" /></translation> <translation id="1056898198331236512">تحذير</translation> <translation id="10614374240317010">لم يتم الحفظ مطلقًا</translation> <translation id="1061441684050139317">يحتاج Chrome إلى الحصول على حق الوصول إلى الميكرفون لمشاركته مع هذا الموقع.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">تعرَّف على صفحات الويب التي أرسلتها الأجهزة المجاورة. يُجمِّع Chrome صفحات الويب المرتبطة بالأجهزة حولك ويُرسلها دون الكشف عن هويتها إلى خدمة Google لمعرفة أكثرها نفعًا لك ثم يعرضها. يتعين عليك تشغيل خدمتى البلوتوث والموقع لاستخدام الشبكة المادية.</translation> -<translation id="1250508505624960884">الإشارات المرجعية للإصدار التجريبي من متصفح Chrome</translation> <translation id="1254090737195733114">هل تريد استيراد البيانات؟</translation> <translation id="1258753120186372309">رسم الشعار المبتكر من Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">إيقاف</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">البطاقات المقبولة</translation> <translation id="1966710179511230534">الرجاء تحديث تفاصيل تسجيل الدخول.</translation> <translation id="1974060860693918893">إعدادات متقدمة</translation> -<translation id="1984321224716884559">الإشارات المرجعية لإصدار مطوّري البرامج من Chrome</translation> <translation id="1984937141057606926">مسموح باستثناء الجهات الخارجية</translation> <translation id="1994173015038366702">عنوان URL للموقع</translation> <translation id="2001120796168634316">حفظ الصفحة المرتبطة لوقت لاحق</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">قد يتم حذف التفضيلات المحفوظة على المواقع</translation> <translation id="2748463065602559597">أنت تعرض صفحة Google Chrome آمنة.</translation> <translation id="2762000892062317888">الآن</translation> -<translation id="2770465223704140727">إزالة من القائمة</translation> <translation id="2777555524387840389">عدد الثواني المتبقية: <ph name="SECONDS" /></translation> -<translation id="278029852808208386">لم يتم العثور على أجهزة بلوتوث. <ph name="BEGIN_LINK" />ابحث مرة أخرى<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">يتبقى ثانية واحدة</translation> <translation id="2811892995384186721">ألا ترى جهازك؟ <ph name="BEGIN_LINK" />احصل على المساعدة<ph name="END_LINK" />.</translation> <translation id="2836148919159985482">المس زر الرجوع للخروج من وضع ملء الشاشة.</translation> @@ -230,7 +225,6 @@ لضبط عبارة البحث، اضغط مع الاستمرار للتحديد. لتحسين البحث، مرّر اللوحة للأعلى والمس مربع البحث.</translation> <translation id="3616113530831147358">الصوت</translation> -<translation id="3623048332793834136">الإشارات المرجعية لمتصفح Chrome Canary</translation> <translation id="3632295766818638029">كشف كلمة المرور</translation> <translation id="363596933471559332">يمكن تسجيل الدخول تلقائيًا إلى مواقع الويب باستخدم الاعتمادات المخزّنة. وعندما تكون الميزة معطّلة، فسيُطلب منك التحقق كل مرة قبل تسجيل الدخول إلى مواقع الويب.</translation> <translation id="3656115297268584622">تشغيل الموقع في <ph name="BEGIN_LINK" />إعدادات Android<ph name="END_LINK" />.</translation> @@ -283,7 +277,6 @@ <translation id="4271185234001491831">عدم الترجمة مطلقًا من اللغة <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">الوسائط</translation> <translation id="4278390842282768270">مسموح بها</translation> -<translation id="4297410240212242334">فصل علامات التبويب والتطبيقات</translation> <translation id="4307992518367153382">أساسيّات</translation> <translation id="4334294535648607276">اكتمل التنزيل.</translation> <translation id="4351244548802238354">إغلاق مربع الحوار</translation> @@ -308,10 +301,8 @@ <translation id="4645575059429386691">يديره والداك</translation> <translation id="4663756553811254707">تم حذف <ph name="NUMBER_OF_BOOKMARKS" /> من الإشارات المرجعية</translation> <translation id="4665282149850138822">تمت إضافة <ph name="NAME" /> إلى صفحتك الرئيسية</translation> -<translation id="4668044310199835006">الإشارات المرجعية لمتصفح Work Chrome</translation> <translation id="4684427112815847243">مزامنة كل شيء</translation> <translation id="4686372254213217147">الحجم الأصلي</translation> -<translation id="4690286298542128877">سيتم نقل علامات التبويب إلى مبدّل علامات التبويب في Chrome.</translation> <translation id="4698413471314543145">هناك وظائف مفقودة تعد ذات أهمية كبيرة لتشغيل Chrome؛ إما أن يكون الإصدار الذي تستخدمه من Chrome غير مكتمل، أو ليس متوافقًا مع هذا الإصدار من Android.</translation> <translation id="4699172675775169585">الصور والملفات المخزنة مؤقتًا</translation> <translation id="4710672574193412565">أضف حساب Google من صفحة "الحسابات" في تطبيق إعدادات جهازك.</translation> @@ -353,7 +344,6 @@ <translation id="5127805178023152808">المزامنة معطلة</translation> <translation id="5131405117025179004">تعديل حساب محفوظ</translation> <translation id="5138299137310274655">هذه الصفحة باللغة <ph name="SOURCE_LANGUAGE" /> هل تريد ترجمتها إلى اللغة <ph name="TARGET_LANGUAGE" />؟</translation> -<translation id="5150703642582475397">دمج علامات التبويب والتطبيقات</translation> <translation id="515227803646670480">محو البيانات المخزنة</translation> <translation id="5156656584247937086">هذا حساب طفل</translation> <translation id="5161254044473106830">العنوان مطلوب</translation> @@ -366,7 +356,6 @@ <translation id="5222676887888702881">الخروج</translation> <translation id="5233638681132016545">علامة تبويب جديدة</translation> <translation id="5271967389191913893">لا يمكن للجهاز فتح المحتوى لتنزيله</translation> -<translation id="5275558766013849309">ستوجد علامات التبويب مع التطبيقات الحديثة.</translation> <translation id="528192093759286357">اسحب من الجزء العلوي والمس زر الرجوع للخروج من وضع ملء الشاشة.</translation> <translation id="5284584623296338184">لن تتم مزامنة التغييرات الطارئة على الإشارات المرجعية والسجل وكلمات المرور وغيرها من الإعدادات بحسابك في Google. ومع ذلك، ستظل بياناتك الحالية مخزنة في حسابك في Google.</translation> <translation id="5301954838959518834">موافق وأعي ذلك</translation> @@ -449,7 +438,6 @@ <translation id="6108923351542677676">الإعداد قيد التقدّم…</translation> <translation id="6112702117600201073">يتم الآن تحديث الصفحة</translation> <translation id="6127379762771434464">أُزيلَ عنصر</translation> -<translation id="6134870457258083164">ألا ترى جهازك؟ <ph name="BEGIN_LINK1" />احصل على المساعدة<ph name="END_LINK1" /> أو <ph name="BEGIN_LINK2" />ابحث مرة أخرى<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">جعل الصفحة متوافقة مع الجوّال</translation> <translation id="6140912465461743537">الدولة/الإقليم</translation> <translation id="6159335304067198720">توفير البيانات بنسبة <ph name="PERCENT" /></translation> @@ -481,7 +469,6 @@ <translation id="6476911854266661814">تم إيقاف "<ph name="VIDEO_TITLE" />" مؤقتًا</translation> <translation id="6477460825583319731">عنوان البريد الإلكتروني غير صالح</translation> <translation id="6482749332252372425">أخفق تنزيل الملف <ph name="FILE_NAME" /> لعدم توفر مساحة لتخزين.</translation> -<translation id="6541922744811587456">الإشارات المرجعية لمتصفح Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">حدد علامة تبويب لإرسالها باستخدام الشعاع</translation> <translation id="6545017243486555795">مسح جميع البيانات</translation> @@ -553,7 +540,6 @@ <translation id="7220786058474068424">جارٍ المعالجة</translation> <translation id="7243308994586599757">الخيارات المتاحة بالقرب من الجزء السفلي من الشاشة</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> يستخدم موقعك لعرض نتائج البحث المحلي</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />مساعدة<ph name="END_LINK" /></translation> <translation id="7299721129597238157">حذف الإشارة المرجعية</translation> <translation id="7301833672208172928">تشغيل مزامنة السجل</translation> <translation id="7327835590071894791">توجد الآن علامة التبويب في الخلفية.</translation> @@ -564,7 +550,6 @@ <translation id="7378627244592794276">لا</translation> <translation id="7400418766976504921">عنوان URL</translation> <translation id="7400448254438078120">يتعذر إرسال مقطع الفيديو نظرًا لوجود قيود على الموقع</translation> -<translation id="7408644312175185557">يمكن عرض علامات التبويب بشأن التطبيقات الأخيرة الأخرى على شاشة النظرة العامة على الهاتف.</translation> <translation id="7423098979219808738">السؤال أولاً</translation> <translation id="7437998757836447326">الخروج من Chrome</translation> <translation id="7445411102860286510">السماح للمواقع بتشغيل مقاطع الفيديو مكتومة الصوت تلقائيًا (مُستحسن)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb index 34dc2b3d..3906421 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_bg.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="bg"> -<translation id="1040144152982955218">Търсят се устройства… <ph name="BEGIN_LINK" />Получете помощ<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Предупреждение</translation> <translation id="10614374240317010">Незапазвани никога</translation> <translation id="1061441684050139317">Chrome се нуждае от достъп до микрофона, за да го сподели с този сайт.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Откривайте уеб страници, изпращани от обекти в близост. Chrome събира съответните уеб страници, изпраща ги анонимно до услуга на Google, за да намери най-полезните за вас, и след това ви ги показва. Функциите за Bluetooth и местоположението трябва да са включени, за да използвате Физическата мрежа.</translation> -<translation id="1250508505624960884">Отметки от Chrome бета</translation> <translation id="1254090737195733114">Ще импорт. ли данните?</translation> <translation id="1258753120186372309">Драскулка на Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Стоп</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Приемани карти</translation> <translation id="1966710179511230534">Моля, актуализирайте данните си за вход.</translation> <translation id="1974060860693918893">Разширени</translation> -<translation id="1984321224716884559">Отметки от Chrome Dev</translation> <translation id="1984937141057606926">Разрешено, но не и за трети страни</translation> <translation id="1994173015038366702">URL адрес на сайт</translation> <translation id="2001120796168634316">Свързана страница: Запазване</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Запазените предпочитания за сайтове може да се изтрият</translation> <translation id="2748463065602559597">Преглеждате защитена страница в Google Chrome.</translation> <translation id="2762000892062317888">току-що</translation> -<translation id="2770465223704140727">Премахване от списъка</translation> <translation id="2777555524387840389">Остават <ph name="SECONDS" /> сек</translation> -<translation id="278029852808208386">Няма намерени устройства с Bluetooth. <ph name="BEGIN_LINK" />Потърсете отново<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Остава 1 сек</translation> <translation id="2811892995384186721">Не виждате устройството си? <ph name="BEGIN_LINK" />Получете помощ<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Докоснете бутона за връщане назад, за да излезете от режима на цял екран.</translation> @@ -232,7 +227,6 @@ За да коригирате думата си за търсене, натиснете продължително за избор. За да прецизирате заявката, плъзнете панела нагоре докрай и докоснете полето за търсене.</translation> <translation id="3616113530831147358">Аудио</translation> -<translation id="3623048332793834136">Отметки от Chrome Canary</translation> <translation id="3632295766818638029">Показване на паролата</translation> <translation id="363596933471559332">Автоматично влизане в уебсайтове посредством съхранявани идентификационни данни. Когато функцията е изключена, ще трябва да потвърждавате всяко влизане в профил в уебсайт.</translation> <translation id="3656115297268584622">Включете местоположението от <ph name="BEGIN_LINK" />настройките на Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Никога да не се превежда от <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Медия</translation> <translation id="4278390842282768270">Разрешено</translation> -<translation id="4297410240212242334">Разделяне на приложенията и разделите</translation> <translation id="4307992518367153382">Основни положения</translation> <translation id="4334294535648607276">Изтеглянето завърши.</translation> <translation id="4351244548802238354">Затваряне на диалоговия прозорец</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Управлява се от ваш родител</translation> <translation id="4663756553811254707">Изтрихте <ph name="NUMBER_OF_BOOKMARKS" /> отметки</translation> <translation id="4665282149850138822">Добавихте <ph name="NAME" /> към началния екран</translation> -<translation id="4668044310199835006">Отметки от Chrome for Work</translation> <translation id="4684427112815847243">Синхронизиране на всичко</translation> <translation id="4686372254213217147">Първоначален размер</translation> -<translation id="4690286298542128877">Разделите ще се преместят към предназначения за тях превключвател в Chrome.</translation> <translation id="4698413471314543145">Липсва необходима критична функционалност, за да се изпълнява Chrome. Инсталацията ви на браузъра не е завършена или не е съвместима с тази версия на Android.</translation> <translation id="4699172675775169585">Кеширани изображения и файлове</translation> <translation id="4710672574193412565">Добавете профил в Google от страницата „Профили“ в приложението „Настройки“ на устройството ви.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Синхронизирането е изключено</translation> <translation id="5131405117025179004">Редактиране на запазен профил</translation> <translation id="5138299137310274655">Тази страница е на <ph name="SOURCE_LANGUAGE" />. Да се преведе ли на <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Обединяване на разделите и приложенията</translation> <translation id="515227803646670480">Изчистване на съхраняваните данни</translation> <translation id="5156656584247937086">Това е профил на дете</translation> <translation id="5161254044473106830">Изисква се заглавие</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Изход</translation> <translation id="5233638681132016545">Нов раздел</translation> <translation id="5271967389191913893">Устройството не може да отвори съдържанието за изтегляне.</translation> -<translation id="5275558766013849309">Разделите и скорошните приложения ще са на едно място.</translation> <translation id="528192093759286357">Плъзнете пръст от горната част на екрана и докоснете бутона за връщане назад, за да излезете от режима на цял екран.</translation> <translation id="5284584623296338184">Промените в отметките, историята, паролите и другите ви настройки вече няма да се синхронизират с профила ви в Google. Съществуващите ви данни обаче ще продължат да се съхраняват в него.</translation> <translation id="5301954838959518834">Добре, разбрах</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Извършва се настройване…</translation> <translation id="6112702117600201073">Опресняване на страницата</translation> <translation id="6127379762771434464">Елементът бе премахнат</translation> -<translation id="6134870457258083164">Не виждате устройството си? <ph name="BEGIN_LINK1" />Получете помощ<ph name="END_LINK1" /> или <ph name="BEGIN_LINK2" />потърсете отново<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Направете страницата удобна за мобилни устройства</translation> <translation id="6140912465461743537">Държава/регион</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> икономия на данни</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">„<ph name="VIDEO_TITLE" />“ е на пауза</translation> <translation id="6477460825583319731">Имейл адресът е невалиден</translation> <translation id="6482749332252372425">Изтеглянето на „<ph name="FILE_NAME" />“ не бе успешно поради липса на място в хранилището.</translation> -<translation id="6541922744811587456">Отметки от Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Изберете раздел за излъчване</translation> <translation id="6545017243486555795">Изчистване на всички данни</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Обработва се</translation> <translation id="7243308994586599757">Опциите са в долната част на екрана</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> използва местоположението ви, за да показва резултати от местното търсене</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Помощ<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Изтриване на отметката</translation> <translation id="7301833672208172928">Включване на синхронизирането на историята</translation> <translation id="7327835590071894791">Разделът вече е на заден план.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Не</translation> <translation id="7400418766976504921">URL адрес</translation> <translation id="7400448254438078120">Видеоклипът не може да се предава поради ограничения от сайта</translation> -<translation id="7408644312175185557">Разделите ви и останалите скорошни приложения ще се показват на екрана за общ преглед на телефона ви.</translation> <translation id="7423098979219808738">Първо ще се извежда запитване</translation> <translation id="7437998757836447326">Изход от Chrome</translation> <translation id="7445411102860286510">Разрешаване на сайтовете автоматично да възпроизвеждат видеоклипове със заглушен звук (препоръчително)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb index f4e642d..4ae2960 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ca.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ca"> -<translation id="1040144152982955218">S'estan cercant dispositius… <ph name="BEGIN_LINK" />Obteniu ajuda<ph name="END_LINK" />.</translation> <translation id="1056898198331236512">Advertiment</translation> <translation id="10614374240317010">Contrasenyes que no es desen mai</translation> <translation id="1061441684050139317">Chrome necessita accés al micròfon per compartir-lo amb aquest lloc web.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Descobriu les pàgines web enviades pels objectes propers. Chrome recopila les pàgines web associades amb els objectes que us envolten, les envia de manera anònima a un servei de Google per trobar les que us resulten més útils i, a continuació, les mostra. Heu de tenir activats el Bluetooth i la ubicació per poder utilitzar el Web físic.</translation> -<translation id="1250508505624960884">Adreces d'interès de Chrome Beta</translation> <translation id="1254090737195733114">Voleu importar les dades?</translation> <translation id="1258753120186372309">Doodle de Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Atura</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Targetes acceptades</translation> <translation id="1966710179511230534">Actualitzeu les dades d'inici de sessió.</translation> <translation id="1974060860693918893">Configuració avançada</translation> -<translation id="1984321224716884559">Adreces d'interès de Chrome Dev</translation> <translation id="1984937141057606926">Permeses, excepte les de tercers</translation> <translation id="1994173015038366702">URL del lloc</translation> <translation id="2001120796168634316">Desa la pàgina per a més tard</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">És possible que se suprimeixin les preferències desades per als llocs web</translation> <translation id="2748463065602559597">Esteu visualitzant una pàgina segura de Google Chrome.</translation> <translation id="2762000892062317888">ara mateix</translation> -<translation id="2770465223704140727">Suprimeix de la llista</translation> <translation id="2777555524387840389">Queden <ph name="SECONDS" /> segons</translation> -<translation id="278029852808208386">No s'ha trobat cap dispositiu Bluetooth. <ph name="BEGIN_LINK" />Torneu a fer la cerca<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Queda 1 segon</translation> <translation id="2811892995384186721">No veieu el vostre dispositiu? <ph name="BEGIN_LINK" />Obteniu ajuda<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Toqueu el botó Enrere per sortir de la pantalla completa.</translation> @@ -232,8 +227,7 @@ Per ajustar el terme de la cerca, manteniu-lo premut per seleccionar-lo. Per definir millor la cerca, feu lliscar el tauler cap amunt tot el que pugueu i toqueu el quadre de cerca.</translation> <translation id="3616113530831147358">Àudio</translation> -<translation id="3623048332793834136">Adreces d'interès de Chrome Canary</translation> -<translation id="3632295766818638029">Desemmascara la contrasenya</translation> +<translation id="3632295766818638029">Mostra la contrasenya</translation> <translation id="363596933471559332">Inicia la sessió automàticament als llocs web amb les credencials emmagatzemades. Si la funció està desactivada, se us demana sempre que les verifiqueu per iniciar la sessió en un lloc web.</translation> <translation id="3656115297268584622">Activeu la ubicació a la <ph name="BEGIN_LINK" />configuració d'Android<ph name="END_LINK" />.</translation> <translation id="3661699943263275414">Els llocs web de tercers poden desar i llegir les dades de les galetes</translation> @@ -266,7 +260,7 @@ <translation id="4062305924942672200">Informació legal</translation> <translation id="4089831646916293264">És possible que aquesta funció interfereixi en l'accés als serveis de dades premium que us proporciona l'operador de telefonia mòbil.</translation> <translation id="4095146165863963773">Voleu esborrar les dades de l'aplicació?</translation> -<translation id="4099578267706723511">Ajudeu a millorar Chrome mitjançant l'enviament d'estadístiques d'ús i d'informes d'error a Google.</translation> +<translation id="4099578267706723511">Ajuda a millorar Chrome enviant estadístiques d'ús i d'informes d'error a Google.</translation> <translation id="410351446219883937">Reproducció automàtica</translation> <translation id="411254640334432676">S'ha produït un error durant la baixada.</translation> <translation id="4113030288477039509">Gestionat per l'administrador</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">No tradueixis mai de: <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Multimèdia</translation> <translation id="4278390842282768270">Permeses</translation> -<translation id="4297410240212242334">Separeu les pestanyes i les aplicacions</translation> <translation id="4307992518367153382">Bàsic</translation> <translation id="4334294535648607276">S'ha completat la baixada.</translation> <translation id="4351244548802238354">Tanca el quadre de diàleg</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Gestionat pels pares</translation> <translation id="4663756553811254707">S'han suprimit <ph name="NUMBER_OF_BOOKMARKS" /> adreces d'interès</translation> <translation id="4665282149850138822"><ph name="NAME" /> s'ha afegit a la pantalla d'inici</translation> -<translation id="4668044310199835006">Adreces d'interès de Chrome for Work</translation> <translation id="4684427112815847243">Sincronitza-ho tot</translation> <translation id="4686372254213217147">Mida original</translation> -<translation id="4690286298542128877">Les pestanyes es mouran a un selector de pestanyes a Chrome.</translation> <translation id="4698413471314543145">Falta una funcionalitat crítica necessària per executar Chrome; la vostra instal·lació de Chrome no està completa o bé no és compatible amb aquesta versió d'Android.</translation> <translation id="4699172675775169585">Imatges i fitxers emmagatzemats a la memòria cau</translation> <translation id="4710672574193412565">Afegiu un compte de Google des de la pàgina Comptes de l'aplicació Configuració del dispositiu.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Sincronització desactivada</translation> <translation id="5131405117025179004">Edita el compte desat</translation> <translation id="5138299137310274655">La pàgina està en <ph name="SOURCE_LANGUAGE" />. Voleu traduir-la i que es mostri en <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Combineu pestanyes i aplicacions</translation> <translation id="515227803646670480">Esborrar les dades emmagatzemades</translation> <translation id="5156656584247937086">Aquest és un compte infantil</translation> <translation id="5161254044473106830">Cal indicar un títol</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Tanca la sessió</translation> <translation id="5233638681132016545">Pestanya nova</translation> <translation id="5271967389191913893">El dispositiu no pot obrir el contingut que s'ha de baixar.</translation> -<translation id="5275558766013849309">Les pestanyes conviuran amb les aplicacions recents.</translation> <translation id="528192093759286357">Arrossegueu la pantalla des de la part superior i toqueu el botó Enrere per sortir de la pantalla completa.</translation> <translation id="5284584623296338184">Els canvis fets a les adreces d'interès, l'historial, les contrasenyes i altres opcions de configuració es deixaran de sincronitzar amb el vostre compte de Google. No obstant això, les dades actuals hi continuaran emmagatzemades.</translation> <translation id="5301954838959518834">D'acord</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Configuració en curs...</translation> <translation id="6112702117600201073">S'està actualitzant la pàgina</translation> <translation id="6127379762771434464">S'ha suprimit l'element</translation> -<translation id="6134870457258083164">No es mostra el vostre dispositiu? <ph name="BEGIN_LINK1" />Obteniu ajuda<ph name="END_LINK1" /> o <ph name="BEGIN_LINK2" />torneu a fer la cerca<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Adapta la pàgina per a mòbils</translation> <translation id="6140912465461743537">País/regió</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> de reducció de dades</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">"<ph name="VIDEO_TITLE" />" en pausa</translation> <translation id="6477460825583319731">L'adreça electrònica no és vàlida</translation> <translation id="6482749332252372425">No s'ha pogut baixar <ph name="FILE_NAME" /> perquè falta espai d'emmagatzematge.</translation> -<translation id="6541922744811587456">Adreces d'interès de Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Trieu una pestanya per compartir-la.</translation> <translation id="6545017243486555795">Esborra totes les dades</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">S'està processant</translation> <translation id="7243308994586599757">Opcions disponibles a la part inferior de la pantalla</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> utilitza la vostra ubicació per mostrar resultats de cerca locals</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ajuda<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Suprimeix l'adreça d'interès</translation> <translation id="7301833672208172928">Activa la sincronització de l'historial</translation> <translation id="7327835590071894791">La vostra pestanya ara està oberta en segon pla.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">No</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">No es pot emetre el vídeo perquè hi ha restriccions al lloc.</translation> -<translation id="7408644312175185557">A la pantalla Visió general del telèfon podeu veure les vostres pestanyes juntament amb altres aplicacions recents.</translation> <translation id="7423098979219808738">Demana primer</translation> <translation id="7437998757836447326">Tancar la sessió de Chrome</translation> <translation id="7445411102860286510">Permet que els llocs reprodueixin automàticament vídeos silenciats (opció recomanada)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb index c50b306..cbc8fe1b 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_cs.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="cs"> -<translation id="1040144152982955218">Vyhledávání zařízení… <ph name="BEGIN_LINK" />Zobrazit nápovědu<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Upozornění</translation> <translation id="10614374240317010">Nikdy se neukládají</translation> <translation id="1061441684050139317">Aby Chrome mohl s těmito webovými stránkami sdílet mikrofon, musí k němu mít přístup.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Objevujte webové stránky odesílané objekty v okolí. Chrome shromažďuje webové stránky přidružené k objektům v okolí a anonymně je odesílá do služby Google. Ta vyhodnotí, které z nich jsou pro vás užitečné, a zobrazí vám je. Chcete-li fyzický web používat, je třeba aktivovat Bluetooth a určování polohy.</translation> -<translation id="1250508505624960884">Záložky z Chrome Beta</translation> <translation id="1254090737195733114">Importovat data?</translation> <translation id="1258753120186372309">Sváteční logo Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Zastavit</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Přijímané karty</translation> <translation id="1966710179511230534">Aktualizujte prosím své přihlašovací údaje.</translation> <translation id="1974060860693918893">Rozšířená nastavení</translation> -<translation id="1984321224716884559">Záložky z Chrome Dev</translation> <translation id="1984937141057606926">Povoleno, s výjimkou souborů cookie třetí strany</translation> <translation id="1994173015038366702">Adresa URL webu</translation> <translation id="2001120796168634316">Uložit cílovou stránku offline</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Může dojít ke smazání uložených nastavení na webech</translation> <translation id="2748463065602559597">Zobrazujete zabezpečenou stránku Google Chrome.</translation> <translation id="2762000892062317888">právě teď</translation> -<translation id="2770465223704140727">Odstranit ze seznamu</translation> <translation id="2777555524387840389">Zbývá: <ph name="SECONDS" /> s</translation> -<translation id="278029852808208386">Nebyla nalezena žádná zařízení Bluetooth. <ph name="BEGIN_LINK" />Hledat znovu<ph name="END_LINK" /></translation> <translation id="2781151931089541271">Zbývá: 1 s</translation> <translation id="2811892995384186721">Nevidíte své zařízení? <ph name="BEGIN_LINK" />Prohlédněte si nápovědu<ph name="END_LINK" />.</translation> <translation id="2836148919159985482">Režim celé obrazovky ukončíte klepnutím na tlačítko Zpět.</translation> @@ -232,7 +227,6 @@ Chcete-li vyhledávací dotaz upravit, proveďte výběr dlouhým stisknutím. Chcete-li upřesnit vyhledávací dotaz, přejeďte po panelu až nahoru a klepněte na vyhledávací pole.</translation> <translation id="3616113530831147358">Zvuk</translation> -<translation id="3623048332793834136">Záložky z Chrome Canary</translation> <translation id="3632295766818638029">Zrušit maskování hesla</translation> <translation id="363596933471559332">Přihlašovat se na weby automaticky pomocí uložených identifikačních údajů. Když je tato funkce vypnutá, budete před každým přihlášením na web požádáni o ověření.</translation> <translation id="3656115297268584622">Zapněte v <ph name="BEGIN_LINK" />Nastavení Android<ph name="END_LINK" /> určování polohy.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Jazyk <ph name="LANGUAGE" /> nikdy nepřekládat</translation> <translation id="4275663329226226506">Média</translation> <translation id="4278390842282768270">Povoleno</translation> -<translation id="4297410240212242334">Oddělit karty a aplikace</translation> <translation id="4307992518367153382">Základy</translation> <translation id="4334294535648607276">Stahování bylo dokončeno.</translation> <translation id="4351244548802238354">Zavřít dialogové okno</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Spravováno vaším rodičem</translation> <translation id="4663756553811254707">Smazané záložky: <ph name="NUMBER_OF_BOOKMARKS" /></translation> <translation id="4665282149850138822">Na plochu byl přidán web <ph name="NAME" /></translation> -<translation id="4668044310199835006">Záložky z Work Chrome</translation> <translation id="4684427112815847243">Synchronizovat vše</translation> <translation id="4686372254213217147">Původní velikost</translation> -<translation id="4690286298542128877">Karty se přesunou do přepínače karet v Chromu.</translation> <translation id="4698413471314543145">Chybí nezbytná funkce pro spuštění aplikace Chrome. Instalace aplikace Chrome buď nebyla dokončena, nebo aplikace není kompatibilní s touto verzí platformy Android.</translation> <translation id="4699172675775169585">Obrázky a soubory v mezipaměti</translation> <translation id="4710672574193412565">Přidejte účet Google ze stránky Účty v aplikaci Nastavení svého zařízení.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synchronizace je vypnuta</translation> <translation id="5131405117025179004">Úprava uloženého účtu</translation> <translation id="5138299137310274655">Stránka je v jazyce <ph name="SOURCE_LANGUAGE" />. Chcete ji přeložit do jazyka <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Sloučit karty a aplikace</translation> <translation id="515227803646670480">Vymazat uložená data</translation> <translation id="5156656584247937086">Toto je dětský účet</translation> <translation id="5161254044473106830">Je požadován název</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Odhlásit se</translation> <translation id="5233638681132016545">Nová karta</translation> <translation id="5271967389191913893">Zařízení obsah ke stažení nemůže otevřít.</translation> -<translation id="5275558766013849309">Karty se budou zobrazovat vedle nedávných aplikací.</translation> <translation id="528192093759286357">Režim celé obrazovky ukončíte přetažením z horního okraje obrazovky a klepnutím na tlačítko Zpět.</translation> <translation id="5284584623296338184">Změny záložek, historie, hesel a dalších nastavení se již nebudou synchronizovat do vašeho účtu Google. Vaše existující data však v účtu Google uložena zůstanou.</translation> <translation id="5301954838959518834">Ano, chápu</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Probíhá nastavování…</translation> <translation id="6112702117600201073">Obnovování stránky</translation> <translation id="6127379762771434464">Položka byla odstraněna</translation> -<translation id="6134870457258083164">Nevidíte své zařízení? <ph name="BEGIN_LINK1" />Prohlédněte si nápovědu<ph name="END_LINK1" /> nebo <ph name="BEGIN_LINK2" />zopakujte vyhledávání<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Optimalizovat stránku pro mobily</translation> <translation id="6140912465461743537">Země/Region</translation> <translation id="6159335304067198720">Úspora dat: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Pozastaveno – <ph name="VIDEO_TITLE" /></translation> <translation id="6477460825583319731">Neplatná e-mailová adresa</translation> <translation id="6482749332252372425">Stažení souboru <ph name="FILE_NAME" /> se nezdařilo z důvodu nedostatku místa v úložišti.</translation> -<translation id="6541922744811587456">Záložky z Chromu</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Vyberte kartu, kterou chcete přenést</translation> <translation id="6545017243486555795">Vymazat všechna data</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Zpracovávání</translation> <translation id="7243308994586599757">Možnosti jsou k dispozici ve spodní části obrazovky</translation> <translation id="7244362611678346589">Stránky <ph name="SEARCH_ENGINE_URL" /> zobrazují lokální výsledky vyhledávání na základě vaší polohy</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Nápověda<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Smazat záložku</translation> <translation id="7301833672208172928">Zapnout synchronizaci historie</translation> <translation id="7327835590071894791">Karta nyní běží na pozadí.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Ne</translation> <translation id="7400418766976504921">Adresa URL</translation> <translation id="7400448254438078120">Video nelze odeslat z důvodu omezení webu.</translation> -<translation id="7408644312175185557">Zobrazovat v telefonu karty s dalšími nedávno použitými aplikacemi na obrazovce Přehled.</translation> <translation id="7423098979219808738">Nejprve se dotázat</translation> <translation id="7437998757836447326">Odhlášení z Chromu</translation> <translation id="7445411102860286510">Povolit webům automaticky přehrávat ztlumená videa (doporučeno)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb index bc9a800e..6d642c6c 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_da.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_da.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="da"> -<translation id="1040144152982955218">Søger efter enheder... <ph name="BEGIN_LINK" />få hjælp<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Advarsel</translation> <translation id="10614374240317010">Aldrig gemt</translation> <translation id="1061441684050139317">Chrome skal have adgang til mikrofonen for at kunne dele den med dette website.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Find websider, som genstande i nærheden sender. Chrome samler websider, der er tilknyttet genstande omkring dig, sender dem anonymt til en Google-tjeneste for at finde dem, der er mest nyttige for dig, og viser dem derefter. Du skal aktivere Bluetooth og Placering for at kunne bruge Fysisk web.</translation> -<translation id="1250508505624960884">Bogmærker fra betaversionen af Chrome</translation> <translation id="1254090737195733114">Vil du importere data?</translation> <translation id="1258753120186372309">Google-doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Stop</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Kort, der accepteres</translation> <translation id="1966710179511230534">Opdater dine loginoplysninger.</translation> <translation id="1974060860693918893">Avanceret</translation> -<translation id="1984321224716884559">Bogmærker fra udviklerversionen af Chrome</translation> <translation id="1984937141057606926">Tilladt, undtagen tredjepartscookies</translation> <translation id="1994173015038366702">Webadresse</translation> <translation id="2001120796168634316">Gem linkede side til senere</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Gemte indstillinger på website slettes muligvis</translation> <translation id="2748463065602559597">Du får vist en sikker Google Chrome-side.</translation> <translation id="2762000892062317888">lige nu</translation> -<translation id="2770465223704140727">Fjern fra listen</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder tilbage</translation> -<translation id="278029852808208386">Der blev ikke fundet nogen enheder. <ph name="BEGIN_LINK" />Søg igen<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 sekund tilbage</translation> <translation id="2811892995384186721">Kan du ikke se din enhed? <ph name="BEGIN_LINK" />Få hjælp<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Tryk på tilbageknappen for at afslutte fuld skærm.</translation> @@ -232,7 +227,6 @@ Tryk længe på din søgeterm for at vælge den og tilpasse den. Du kan afgrænse din søgning ved at skyde panelet hele vejen op og trykke på søgefeltet.</translation> <translation id="3616113530831147358">Lyd</translation> -<translation id="3623048332793834136">Bogmærker fra Chrome Canary</translation> <translation id="3632295766818638029">Vis adgangskoden</translation> <translation id="363596933471559332">Log automatisk ind på websites med gemte loginoplysninger. Når funktionen er slået fra, bliver du bedt om at bekræfte, hver gang du vil logge ind på et website.</translation> <translation id="3656115297268584622">Slå placering til i <ph name="BEGIN_LINK" />Android Indstillinger<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Oversæt aldrig <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Medier</translation> <translation id="4278390842282768270">Tilladt</translation> -<translation id="4297410240212242334">Adskil faner og apps</translation> <translation id="4307992518367153382">Grundlæggende valgmuligheder</translation> <translation id="4334294535648607276">Download gennemført.</translation> <translation id="4351244548802238354">Luk dialogboksen</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Administreret af en af dine forældre</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> bogmærker blev slettet</translation> <translation id="4665282149850138822"><ph name="NAME" /> blev føjet til din startskærm</translation> -<translation id="4668044310199835006">Bogmærker fra Work Chrome</translation> <translation id="4684427112815847243">Synkroniser alt</translation> <translation id="4686372254213217147">Oprindelig størrelse</translation> -<translation id="4690286298542128877">Fanerne flyttes til en faneskifter i Chrome.</translation> <translation id="4698413471314543145">Vigtig funktionalitet, som kræves for at køre Chrome, mangler. Enten er Chrome-installationen ufuldstændig eller ikke kompatibel med denne version af Android.</translation> <translation id="4699172675775169585">Cachelagrede billeder og filer</translation> <translation id="4710672574193412565">Tilføj en Google-konto fra siden Konti i appen Indstillinger på din enhed.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synkronisering er slået fra</translation> <translation id="5131405117025179004">Rediger gemt konto</translation> <translation id="5138299137310274655">Denne side er på <ph name="SOURCE_LANGUAGE" />. Vil du oversætte til <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Flet faner og apps</translation> <translation id="515227803646670480">Ryd lagrede data</translation> <translation id="5156656584247937086">Dette er et barns konto</translation> <translation id="5161254044473106830">Der skal angives en titel</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Log ud</translation> <translation id="5233638681132016545">Ny fane</translation> <translation id="5271967389191913893">Enheden kan ikke åbne det indhold, der skal downloades.</translation> -<translation id="5275558766013849309">Faner findes sammen med de seneste apps.</translation> <translation id="528192093759286357">Træk fra toppen, og tryk på tilbageknappen igen for at afslutte fuld skærm.</translation> <translation id="5284584623296338184">Ændringer i dine bogmærker, din historik, dine adgangskoder og andre indstillinger synkroniseres ikke længere til din Google-konto, men dine eksisterende data er stadig gemt på din Google-konto.</translation> <translation id="5301954838959518834">OK, det er forstået</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Konfigurationen er i gang...</translation> <translation id="6112702117600201073">Opdaterer siden</translation> <translation id="6127379762771434464">Elementet blev fjernet</translation> -<translation id="6134870457258083164">Kan du ikke se din enhed? <ph name="BEGIN_LINK1" />Få hjælp<ph name="END_LINK1" />, eller <ph name="BEGIN_LINK2" />søg igen<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Gør siden mobilvenlig</translation> <translation id="6140912465461743537">Land/region</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> sparet data</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">"<ph name="VIDEO_TITLE" />" er sat på pause</translation> <translation id="6477460825583319731">Ugyldig e-mailadresse</translation> <translation id="6482749332252372425">Download af <ph name="FILE_NAME" /> mislykkedes, fordi der ikke er nok lagerplads.</translation> -<translation id="6541922744811587456">Chrome-bogmærker</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Vælg en fane, der skal overføres</translation> <translation id="6545017243486555795">Ryd alle data</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Behandler</translation> <translation id="7243308994586599757">Du finder indstillingerne nederst på skærmen</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> anvender din placering til at vise lokale søgeresultater</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Hjælp<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Slet bogmærke</translation> <translation id="7301833672208172928">Aktivér synkronisering af historik</translation> <translation id="7327835590071894791">Fanen er nu i baggrunden.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nej</translation> <translation id="7400418766976504921">Webadresse</translation> <translation id="7400448254438078120">Det var ikke muligt at caste en video på grund af begrænsninger på websitet</translation> -<translation id="7408644312175185557">Se dine faner med andre apps, du har brugt for nylig, på skærmen Oversigt på din telefon.</translation> <translation id="7423098979219808738">Spørg først</translation> <translation id="7437998757836447326">Log ud af Chrome</translation> <translation id="7445411102860286510">Tillad, at websites automatisk afspiller videoer med lyden slået fra (anbefales)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb index 379edc9..553281c 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_de.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_de.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="de"> -<translation id="1040144152982955218">Es wird nach Geräten gesucht… <ph name="BEGIN_LINK" />Hilfe aufrufen<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Warnung</translation> <translation id="10614374240317010">Nie speichern für…</translation> <translation id="1061441684050139317">Chrome benötigt Zugriff auf das Mikrofon, um es für diese Website freizugeben.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Entdecken Sie Webseiten, die von Objekten in Ihrer Nähe übermittelt werden. Chrome trägt Webseiten zusammen, die sich auf Objekte in Ihrer Nähe beziehen, und schickt diese anonym an einen Google-Dienst. Die Webseiten, die für Sie besonders nützlich sind, werden Ihnen dann angezeigt. Zur Verwendung von Physical Web müssen Bluetooth und der Standortdienst aktiviert sein.</translation> -<translation id="1250508505624960884">Chrome Beta-Lesezeichen</translation> <translation id="1254090737195733114">Daten importieren?</translation> <translation id="1258753120186372309">Google-Doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Stopp</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Akzeptierte Karten</translation> <translation id="1966710179511230534">Bitte aktualisieren Sie Ihre Anmeldeinformationen.</translation> <translation id="1974060860693918893">Erweitert</translation> -<translation id="1984321224716884559">Chrome Dev-Lesezeichen</translation> <translation id="1984937141057606926">Zugelassen, außer Cookies Dritter</translation> <translation id="1994173015038366702">Website-URL</translation> <translation id="2001120796168634316">Verlinkte Seite für später speichern</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Auf Websites gespeicherte Einstellungen werden möglicherweise gelöscht</translation> <translation id="2748463065602559597">Dies ist eine sichere Google Chrome-Seite.</translation> <translation id="2762000892062317888">gerade eben</translation> -<translation id="2770465223704140727">Aus Liste entfernen</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> Sekunden übrig</translation> -<translation id="278029852808208386">Keine Bluetooth-Geräte gefunden. <ph name="BEGIN_LINK" />Wiederholen Sie die Suche.<ph name="END_LINK" /></translation> <translation id="2781151931089541271">1 Sekunde übrig</translation> <translation id="2811892995384186721">Ihr Gerät ist nicht zu sehen? <ph name="BEGIN_LINK" />Hilfe aufrufen<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Tippen Sie zum Beenden des Vollbildmodus auf die Zurück-Taste.</translation> @@ -232,7 +227,6 @@ Zur Anpassung des Suchbegriffs drücken Sie einige Sekunden lang auf den entsprechenden Begriff. Sie können Ihre Suche auch verfeinern, indem Sie das Feld ganz nach oben schieben und auf das Suchfeld tippen.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Chrome Canary-Lesezeichen</translation> <translation id="3632295766818638029">Passwort anzeigen</translation> <translation id="363596933471559332">Sie werden mit gespeicherten Anmeldedaten automatisch auf Websites angemeldet. Wenn das Kästchen nicht angeklickt ist, werden Sie jedes Mal aufgefordert, sich manuell auf einer Website anzumelden.</translation> <translation id="3656115297268584622">Aktivieren Sie den Standortdienst in den <ph name="BEGIN_LINK" />Android-Einstellungen<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831"><ph name="LANGUAGE" /> nie übersetzen</translation> <translation id="4275663329226226506">Medien</translation> <translation id="4278390842282768270">Zugelassen</translation> -<translation id="4297410240212242334">Tabs und Apps separat anzeigen</translation> <translation id="4307992518367153382">Grundeinstellungen</translation> <translation id="4334294535648607276">Download abgeschlossen.</translation> <translation id="4351244548802238354">Dialogfeld schließen</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Von deinen Eltern verwaltet</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> Lesezeichen gelöscht</translation> <translation id="4665282149850138822"><ph name="NAME" /> wurde Ihrem Startbildschirm hinzugefügt.</translation> -<translation id="4668044310199835006">Chrome for Work-Lesezeichen</translation> <translation id="4684427112815847243">Alles synchronisieren</translation> <translation id="4686372254213217147">Originalgröße</translation> -<translation id="4690286298542128877">Tabs werden in einen Tab-Wechsler in Chrome verschoben.</translation> <translation id="4698413471314543145">Es fehlen wichtige Funktionen zur Ausführung von Chrome. Ihre Chrome-Installation ist entweder unvollständig oder nicht mit dieser Android-Version kompatibel.</translation> <translation id="4699172675775169585">Bilder und Dateien im Cache</translation> <translation id="4710672574193412565">Fügen Sie ein Google-Konto über die Seite "Konten" der App "Einstellungen" Ihres Geräts hinzu.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synchronisierung ist deaktiviert</translation> <translation id="5131405117025179004">Gespeichertes Konto bearbeiten</translation> <translation id="5138299137310274655">Diese Seite ist auf <ph name="SOURCE_LANGUAGE" />. In <ph name="TARGET_LANGUAGE" /> übersetzen?</translation> -<translation id="5150703642582475397">Tabs und Apps zusammen anzeigen</translation> <translation id="515227803646670480">Gespeich. Daten löschen</translation> <translation id="5156656584247937086">Dies ist ein Kinderkonto.</translation> <translation id="5161254044473106830">Titel erforderlich</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Abmelden</translation> <translation id="5233638681132016545">Neuer Tab</translation> <translation id="5271967389191913893">Das Gerät kann den Inhalt, der heruntergeladen werden soll, nicht öffnen.</translation> -<translation id="5275558766013849309">Tabs und letzte Apps werden zusammengefasst.</translation> <translation id="528192093759286357">Ziehen Sie zum Beenden des Vollbildmodus von oben und tippen Sie auf die Zurück-Taste.</translation> <translation id="5284584623296338184">Änderungen an Ihren Lesezeichen, Ihrem Verlauf, Ihren Passwörtern und anderen Einstellungen werden nicht mehr mit Ihrem Google-Konto synchronisiert. Ihre vorhandenen Daten bleiben aber in Ihrem Google-Konto gespeichert.</translation> <translation id="5301954838959518834">OK</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Einrichtung läuft...</translation> <translation id="6112702117600201073">Aktualisierung der Seite</translation> <translation id="6127379762771434464">Eintrag entfernt</translation> -<translation id="6134870457258083164">Ihr Gerät ist nicht zu sehen? <ph name="BEGIN_LINK1" />Rufen Sie die Hilfe auf<ph name="END_LINK1" /> oder <ph name="BEGIN_LINK2" />wiederholen Sie die Suche<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Für Mobilgeräte optimierte Seite</translation> <translation id="6140912465461743537">Land/Region</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> Einsparungen bei der Datennutzung</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">"<ph name="VIDEO_TITLE" />" pausiert</translation> <translation id="6477460825583319731">Ungültige E-Mail-Adresse</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> konnte nicht heruntergeladen werden, weil nicht genügend Speicherplatz vorhanden ist.</translation> -<translation id="6541922744811587456">Chrome-Lesezeichen</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Tab zum Beamen auswählen</translation> <translation id="6545017243486555795">Alle Daten löschen</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Verarbeitung läuft</translation> <translation id="7243308994586599757">Optionen unten auf dem Bildschirm verfügbar</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> zeigt Ihnen lokale Suchergebnisse basierend auf Ihrem Standort.</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Hilfe<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Lesezeichen löschen</translation> <translation id="7301833672208172928">Synchronisierung des Verlaufs aktivieren</translation> <translation id="7327835590071894791">Ihr Tab ist jetzt im Hintergrund.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nein</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Das Video kann aufgrund von Websitebeschränkungen nicht übertragen werden.</translation> -<translation id="7408644312175185557">Auf dem Übersichtsbildschirm Ihres Smartphones sehen Sie Ihre Tabs mit anderen zuletzt verwendeten Apps.</translation> <translation id="7423098979219808738">Zuerst fragen</translation> <translation id="7437998757836447326">Von Chrome abmelden</translation> <translation id="7445411102860286510">Automatische Wiedergabe stummgeschalteter Videos auf Websites zulassen (empfohlen)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb index 3f4c2da0..089aa44 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_el.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_el.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="el"> -<translation id="1040144152982955218">Αναζήτηση συσκευών… <ph name="BEGIN_LINK" />λάβετε βοήθεια<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Προειδοποίηση</translation> <translation id="10614374240317010">Δεν έχει αποθηκευθεί ποτέ</translation> <translation id="1061441684050139317">Το Chrome χρειάζεται πρόσβαση στο μικρόφωνο προκειμένου να το μοιραστεί με αυτόν τον ιστότοπο.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Ανακαλύψτε ιστοσελίδες που στέλνουν κοντινά αντικείμενα. Το Chrome συγκεντρώνει ιστοσελίδες που σχετίζονται με αντικείμενα που βρίσκονται γύρω σας, τις στέλνει ανώνυμα σε μια υπηρεσία της Google για να εντοπίσει αυτές που είναι πιο χρήσιμες για εσάς και, στη συνέχεια, τις προβάλλει. Για να χρησιμοποιήσετε το Φυσικό δίκτυο, θα πρέπει να ενεργοποιήσετε το Bluetooth και την Τοποθεσία.</translation> -<translation id="1250508505624960884">Σελιδοδείκτες του Chrome Beta</translation> <translation id="1254090737195733114">Εισαγωγή δεδομένων;</translation> <translation id="1258753120186372309">Google doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Διακοπή</translation> @@ -88,12 +86,11 @@ <translation id="1946821392246652573">Αποδεκτές κάρτες</translation> <translation id="1966710179511230534">Ενημερώστε τα στοιχεία σύνδεσής σας.</translation> <translation id="1974060860693918893">Σύνθετες</translation> -<translation id="1984321224716884559">Σελιδοδείκτες του Chrome Dev</translation> <translation id="1984937141057606926">Να επιτρέπονται, εκτός από τα cookie τρίτου μέρους</translation> <translation id="1994173015038366702">URL ιστότοπου</translation> <translation id="2001120796168634316">Αποθ. συνδ. σελ. για αργότερα</translation> <translation id="200669432486043882">Αντικατάσταση αρχείου</translation> -<translation id="2020525020270327736">Αντιγραφή ιστότοπου</translation> +<translation id="2020525020270327736">Αντιγραφή ιστοτόπου</translation> <translation id="2038563949887743358">Ενεργοποίηση αιτήματος ιστότοπου για υπολογιστές</translation> <translation id="2073235970478114994">Φόρτωση εικόνων</translation> <translation id="2079545284768500474">Αναίρεση</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Οι αποθηκευμένες προτιμήσεις στους ιστότοπους ενδέχεται να διαγραφούν</translation> <translation id="2748463065602559597">Βλέπετε μια ασφαλή σελίδα του Google Chrome.</translation> <translation id="2762000892062317888">μόλις τώρα</translation> -<translation id="2770465223704140727">Κατάργηση από τη λίστα</translation> <translation id="2777555524387840389">Απομένουν <ph name="SECONDS" /> δευτερόλεπτα</translation> -<translation id="278029852808208386">Δεν βρέθηκαν συσκευές Bluetooth. <ph name="BEGIN_LINK" />Νέα αναζήτηση<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Απομένει 1 δευτερόλεπτο</translation> <translation id="2811892995384186721">Δεν βλέπετε τη συσκευή σας; <ph name="BEGIN_LINK" />Λάβετε βοήθεια<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Πατήστε το κουμπί επιστροφής για έξοδο από την πλήρη οθόνη.</translation> @@ -232,7 +227,6 @@ Για να τροποποιήσετε τον όρο αναζήτησης, πατήστε παρατεταμένα για να τον επιλέξετε. Για να κάνετε την αναζήτησή σας πιο συγκεκριμένη, σύρετε το παράθυρο εντελώς προς τα επάνω και αγγίξτε το πλαίσιο αναζήτησης.</translation> <translation id="3616113530831147358">Ήχος</translation> -<translation id="3623048332793834136">Σελιδοδείκτες του Chrome Canary</translation> <translation id="3632295766818638029">Αποκάλυψη κωδικού πρόσβασης</translation> <translation id="363596933471559332">Αυτόματη σύνδεση σε ιστότοπους με χρήση αποθηκευμένων διαπιστευτηρίων. Όταν η λειτουργία είναι απενεργοποιημένη, θα σας ζητείται επαλήθευση κάθε φορά πριν από τη σύνδεση σε έναν ιστότοπο.</translation> <translation id="3656115297268584622">Ενεργοποίηση της τοποθεσίας στις <ph name="BEGIN_LINK" />Ρυθμίσεις Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Να μην γίνεται ποτέ μετάφραση από <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Μέσα</translation> <translation id="4278390842282768270">Επιτρέπεται</translation> -<translation id="4297410240212242334">Ξεχωριστές καρτέλες και εφαρμογές</translation> <translation id="4307992518367153382">Βασικά στοιχεία</translation> <translation id="4334294535648607276">Η λήψη ολοκληρώθηκε.</translation> <translation id="4351244548802238354">Κλείσιμο παραθύρου διαλόγου</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Διαχειρίζεται από τους γονείς σου</translation> <translation id="4663756553811254707">Διαγράφηκαν <ph name="NUMBER_OF_BOOKMARKS" /> σελιδοδείκτες</translation> <translation id="4665282149850138822">Ο ιστότοπος <ph name="NAME" /> προστέθηκε στην αρχική οθόνη σας</translation> -<translation id="4668044310199835006">Σελιδοδείκτες του Work Chrome</translation> <translation id="4684427112815847243">Συγχρονισμός όλων</translation> <translation id="4686372254213217147">Αρχικό μέγεθος</translation> -<translation id="4690286298542128877">Οι καρτέλες θα μετακινηθούν σε ένα στοιχείο ελέγχου για την εναλλαγή καρτελών εντός του Chrome.</translation> <translation id="4698413471314543145">Λείπει μια κρίσιμης σημασίας λειτουργία που απαιτείται για την εκτέλεση του Chrome. Είτε η εγκατάσταση του Chrome δεν έχει ολοκληρωθεί είτε δεν είναι συμβατή με αυτήν την έκδοση του Android.</translation> <translation id="4699172675775169585">Εικόνες και αρχεία στην κρυφή μνήμη</translation> <translation id="4710672574193412565">Προσθέστε έναν Λογαριασμό Google από τη σελίδα "Λογαριασμοί" της εφαρμογής Ρυθμίσεις της συσκευής σας.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Ο συγχρονισμός είναι απενεργοποιημένος</translation> <translation id="5131405117025179004">Επεξεργασία αποθηκευμένου λογαριασμού</translation> <translation id="5138299137310274655">Αυτή η σελίδα είναι στα <ph name="SOURCE_LANGUAGE" />. Να μεταφραστεί στα <ph name="TARGET_LANGUAGE" />;</translation> -<translation id="5150703642582475397">Συγχώνευση καρτελών και εφαρμογών</translation> <translation id="515227803646670480">Διαγραφή αποθηκευμένων δεδομένων</translation> <translation id="5156656584247937086">Αυτός ο λογαριασμός είναι παιδικός</translation> <translation id="5161254044473106830">Απαιτείται τίτλος</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Έξοδος</translation> <translation id="5233638681132016545">Νέα καρτέλα</translation> <translation id="5271967389191913893">Η συσκευή δεν μπορεί να ανοίξει το περιεχόμενο προς λήψη.</translation> -<translation id="5275558766013849309">Οι καρτέλες θα συνυπάρχουν με τις πρόσφατες εφαρμογές.</translation> <translation id="528192093759286357">Σύρετε από το επάνω τμήμα και αγγίξτε το κουμπί επιστροφής για έξοδο από την πλήρη οθόνη.</translation> <translation id="5284584623296338184">Οι αλλαγές σε σελιδοδείκτες, ιστορικό, κωδικούς πρόσβασης και άλλες ρυθμίσεις δεν θα συγχρονίζονται πλέον με το Λογαριασμό σας Google. Ωστόσο, τα υπάρχοντα δεδομένα σας θα παραμείνουν αποθηκευμένα στο λογαριασμό σας Google.</translation> <translation id="5301954838959518834">Εντάξει, το κατάλαβα</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Ρύθμιση σε εξέλιξη…</translation> <translation id="6112702117600201073">Ανανέωση σελίδας</translation> <translation id="6127379762771434464">Το στοιχείο καταργήθηκε</translation> -<translation id="6134870457258083164">Δεν βλέπετε τη συσκευή σας; <ph name="BEGIN_LINK1" />Λάβετε βοήθεια<ph name="END_LINK1" /> ή <ph name="BEGIN_LINK2" />αναζητήστε την ξανά<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Ρύθμιση σελίδας ώστε να είναι φιλική προς κινητά</translation> <translation id="6140912465461743537">Χώρα/Περιοχή</translation> <translation id="6159335304067198720">Εξοικονόμηση δεδομένων κατά <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Παύση "<ph name="VIDEO_TITLE" />"</translation> <translation id="6477460825583319731">Μη έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου</translation> <translation id="6482749332252372425">Η λήψη του αρχείου <ph name="FILE_NAME" /> απέτυχε λόγω έλλειψης αποθηκευτικού χώρου.</translation> -<translation id="6541922744811587456">Σελιδοδείκτες του Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Επιλέξτε μια καρτέλα για ζεύξη</translation> <translation id="6545017243486555795">Διαγραφή όλων των δεδομένων</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Επεξεργασία</translation> <translation id="7243308994586599757">Διαθέσιμες επιλογές κοντά κάτω μέρος της οθόνης</translation> <translation id="7244362611678346589">Το <ph name="SEARCH_ENGINE_URL" /> χρησιμοποιεί την τοποθεσία σας για την εμφάνιση τοπικών αποτελεσμάτων αναζήτησης</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Βοήθεια<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Διαγραφή σελιδοδείκτη</translation> <translation id="7301833672208172928">Ενεργοποίηση συγχρονισμού ιστορικού</translation> <translation id="7327835590071894791">Η καρτέλα σας βρίσκεται πλέον στο παρασκήνιο.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Όχι</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Δεν είναι δυνατή η μετάδοση βίντεο λόγω περιορισμών ιστότοπου</translation> -<translation id="7408644312175185557">Δείτε τις καρτέλες σας με άλλες πρόσφατες εφαρμογές στην οθόνη "Επισκόπηση" του τηλεφώνου σας.</translation> <translation id="7423098979219808738">Να γίνεται ερώτηση πρώτα</translation> <translation id="7437998757836447326">Αποσύνδεση από το Chrome</translation> <translation id="7445411102860286510">Να επιτρέπεται στους ιστότοπους η αυτόματη αναπαραγωγή βίντεο σε σίγαση (συνιστάται)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb index 5d61fe8c..b9e2818 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_en-GB.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="en-GB"> -<translation id="1040144152982955218">Searching for devices… <ph name="BEGIN_LINK" />get help<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Warning</translation> <translation id="10614374240317010">Never saved</translation> <translation id="1061441684050139317">Chrome needs microphone access to share it with this site.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Discover web pages sent by nearby objects. Chrome gathers web pages associated with objects around you, sends them anonymously to a Google service to find the ones most useful to you, then displays them. You must have Bluetooth and Location turned on in order to use the Physical Web.</translation> -<translation id="1250508505624960884">Chrome Beta bookmarks</translation> <translation id="1254090737195733114">Import data?</translation> <translation id="1258753120186372309">Google doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Stop</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Cards accepted</translation> <translation id="1966710179511230534">Please update your sign-in details.</translation> <translation id="1974060860693918893">Advanced</translation> -<translation id="1984321224716884559">Chrome Dev bookmarks</translation> <translation id="1984937141057606926">Allowed, except third-party</translation> <translation id="1994173015038366702">Site URL</translation> <translation id="2001120796168634316">Save linked page for later</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Saved preferences on sites might get deleted</translation> <translation id="2748463065602559597">You are viewing a secure Google Chrome page.</translation> <translation id="2762000892062317888">just now</translation> -<translation id="2770465223704140727">Remove from list</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> secs left</translation> -<translation id="278029852808208386">No Bluetooth devices found. <ph name="BEGIN_LINK" />Search again<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 sec left</translation> <translation id="2811892995384186721">Not seeing your device? <ph name="BEGIN_LINK" />Get help<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Touch the back button to exit full screen.</translation> @@ -232,7 +227,6 @@ To adjust your search term, long press to select. To refine your search, slide the panel all the way up and touch the search box.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Chrome Canary bookmarks</translation> <translation id="3632295766818638029">Unmask password</translation> <translation id="363596933471559332">Automatically sign in to websites using stored credentials. When the feature is off, you’ll be asked for verification every time before signing in to a website.</translation> <translation id="3656115297268584622">Turn on location in <ph name="BEGIN_LINK" />Android Settings<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Never translate <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Allowed</translation> -<translation id="4297410240212242334">Separate tabs and apps</translation> <translation id="4307992518367153382">Basics</translation> <translation id="4334294535648607276">Download complete.</translation> <translation id="4351244548802238354">Close dialogue</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Managed by your parent</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> bookmarks deleted</translation> <translation id="4665282149850138822"><ph name="NAME" /> was added to your Home screen</translation> -<translation id="4668044310199835006">Work Chrome bookmarks</translation> <translation id="4684427112815847243">Sync everything</translation> <translation id="4686372254213217147">Original size</translation> -<translation id="4690286298542128877">Tabs will move to a tab switcher inside Chrome.</translation> <translation id="4698413471314543145">Critical functionality required to run Chrome is missing; either your Chrome installation is incomplete or not compatible with this version of Android.</translation> <translation id="4699172675775169585">Cached images and files</translation> <translation id="4710672574193412565">Add a Google account from the accounts page in your device's Settings app.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Sync is off</translation> <translation id="5131405117025179004">Edit saved account</translation> <translation id="5138299137310274655">This page is in <ph name="SOURCE_LANGUAGE" />. Translate it to <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Merge tabs and apps</translation> <translation id="515227803646670480">Clear stored data</translation> <translation id="5156656584247937086">This is a kid’s account</translation> <translation id="5161254044473106830">Title required</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Sign out</translation> <translation id="5233638681132016545">New tab</translation> <translation id="5271967389191913893">Device cannot open the content to be downloaded.</translation> -<translation id="5275558766013849309">Tabs will live together with recent apps.</translation> <translation id="528192093759286357">Drag from top and touch the back button to exit full screen.</translation> <translation id="5284584623296338184">Changes to your bookmarks, history, passwords and other settings will no longer be synced to your Google Account. However, your existing data will remain stored in your Google account.</translation> <translation id="5301954838959518834">OK, got it</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Setup in progress…</translation> <translation id="6112702117600201073">Refreshing page</translation> <translation id="6127379762771434464">Item removed</translation> -<translation id="6134870457258083164">Not seeing your device? <ph name="BEGIN_LINK1" />Get help<ph name="END_LINK1" /> or <ph name="BEGIN_LINK2" />search again<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Make page mobile-friendly</translation> <translation id="6140912465461743537">Country/Region</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> data savings</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Paused “<ph name="VIDEO_TITLE" />”</translation> <translation id="6477460825583319731">Invalid email address</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> download failed due to lack of storage space.</translation> -<translation id="6541922744811587456">Chrome bookmarks</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Select a tab to beam</translation> <translation id="6545017243486555795">Clear All Data</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Processing</translation> <translation id="7243308994586599757">Options available near bottom of the screen</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> uses your location to show local search results</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Help<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Delete bookmark</translation> <translation id="7301833672208172928">Turn on history sync</translation> <translation id="7327835590071894791">Your tab is now in the background.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nope</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Unable to cast video due to site restrictions</translation> -<translation id="7408644312175185557">See your tabs with other recent apps on your phone’s Overview screen.</translation> <translation id="7423098979219808738">Ask first</translation> <translation id="7437998757836447326">Sign out of Chrome</translation> <translation id="7445411102860286510">Allow sites to automatically play muted videos (recommended)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb index 580f98df..4cc52e5 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_es-419.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="es-419"> -<translation id="1040144152982955218">Buscando dispositivos… <ph name="BEGIN_LINK" />Obtener ayuda<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Advertencia</translation> <translation id="10614374240317010">Nunca guardado</translation> <translation id="1061441684050139317">Chrome necesita acceso al micrófono para compartirlo con este sitio.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Descubre las páginas web de los objetos cercanos. Chrome reúne páginas web asociadas con objetos que te rodean, las envía de forma anónima a un servicio de Google a fin de encontrar las que te pueden resultar más útiles y luego las muestra. Debes activar Bluetooth y la Ubicación para poder utilizar la Web física.</translation> -<translation id="1250508505624960884">Marcadores de Chrome Beta</translation> <translation id="1254090737195733114">¿Importar datos?</translation> <translation id="1258753120186372309">Doodle de Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Interrumpir</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Las tarjetas que se aceptan</translation> <translation id="1966710179511230534">Actualiza los datos de acceso.</translation> <translation id="1974060860693918893">Avanzada</translation> -<translation id="1984321224716884559">Marcadores de Chrome Dev</translation> <translation id="1984937141057606926">Permitidas, salvo de terceros</translation> <translation id="1994173015038366702">URL del sitio</translation> <translation id="2001120796168634316">Guardar la página vinculada</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Es posible que se borren las preferencias guardadas en sitios</translation> <translation id="2748463065602559597">Estás viendo una página segura de Google Chrome.</translation> <translation id="2762000892062317888">recién</translation> -<translation id="2770465223704140727">Eliminar de la lista</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> segundos restantes</translation> -<translation id="278029852808208386">No se encontraron dispositivos Bluetooth. <ph name="BEGIN_LINK" />Vuelve a buscar<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 segundo restante</translation> <translation id="2811892995384186721">¿No ves el dispositivo? <ph name="BEGIN_LINK" />Obtén ayuda<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Toca el botón Atrás para salir de la pantalla completa.</translation> @@ -232,7 +227,6 @@ Para ajustar el término de búsqueda, mantén presionado el texto y selecciónalo. Para perfeccionar la búsqueda, desliza el panel hacia arriba y toca el cuadro de búsqueda.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Marcadores de Chrome Canary</translation> <translation id="3632295766818638029">Quitar máscara de la contraseña</translation> <translation id="363596933471559332">Permite acceder automáticamente a los sitios web con las credenciales almacenadas Si la función está desactivada, siempre se solicitará verificación antes de acceder a un sitio web.</translation> <translation id="3656115297268584622">Activar ubicación en <ph name="BEGIN_LINK" />Configuración de Android<ph name="END_LINK" /></translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nunca traducir <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Multimedia</translation> <translation id="4278390842282768270">Permitido</translation> -<translation id="4297410240212242334">Separar pestañas y aplicaciones</translation> <translation id="4307992518367153382">Básicas</translation> <translation id="4334294535648607276">Descarga completa</translation> <translation id="4351244548802238354">Cerrar cuadro de diálogo</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Administrado por tus padres</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> marcadores eliminados</translation> <translation id="4665282149850138822">Se agregó <ph name="NAME" /> a la pantalla principal</translation> -<translation id="4668044310199835006">Marcadores de Work Chrome</translation> <translation id="4684427112815847243">Sincronizar todo</translation> <translation id="4686372254213217147">Tamaño original</translation> -<translation id="4690286298542128877">Las pestañas se trasladarán a un alternador de pestañas en Chrome.</translation> <translation id="4698413471314543145">Faltan funciones esenciales para que Chrome se ejecute. Es posible que no se haya completado la instalación de Chrome o que tu versión de Android no sea compatible.</translation> <translation id="4699172675775169585">Imágenes y archivos almacenados en caché</translation> <translation id="4710672574193412565">Agrega una cuenta de Google desde la página Cuentas en la app de Configuración del dispositivo.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">La sincronización está desactivada.</translation> <translation id="5131405117025179004">Editar cuenta guardada</translation> <translation id="5138299137310274655">Esta página está en <ph name="SOURCE_LANGUAGE" />. ¿Quieres traducirla al <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Combinar pestañas y aplicaciones</translation> <translation id="515227803646670480">Borrar datos almacenados</translation> <translation id="5156656584247937086">Esta cuenta pertenece a un niño</translation> <translation id="5161254044473106830">Se requiere un título</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Salir</translation> <translation id="5233638681132016545">Nueva pestaña</translation> <translation id="5271967389191913893">El dispositivo no puede abrir el contenido que se descargará.</translation> -<translation id="5275558766013849309">Las pestañas se encontrarán junto a las aplicaciones recientes.</translation> <translation id="528192093759286357">Arrastra el dedo desde la parte superior y toca el botón Atrás para salir de la pantalla completa.</translation> <translation id="5284584623296338184">Los cambios que hagas en tus marcadores, historial, contraseñas y otras opciones de configuración se seguirán sincronizando con tu cuenta de Google. Sin embargo, tus datos existentes seguirán almacenados en tu cuenta de Google.</translation> <translation id="5301954838959518834">Entendido</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Configuración en curso…</translation> <translation id="6112702117600201073">Actualizando la página</translation> <translation id="6127379762771434464">Se eliminó el elemento</translation> -<translation id="6134870457258083164">¿No ves el dispositivo? <ph name="BEGIN_LINK1" />Obtén ayuda<ph name="END_LINK1" /> o <ph name="BEGIN_LINK2" />vuelve a buscarlo<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Optimizar la página para celulares</translation> <translation id="6140912465461743537">País o región</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> de ahorro de datos</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Se pausó "<ph name="VIDEO_TITLE" />".</translation> <translation id="6477460825583319731">Dirección de correo electrónico no válida</translation> <translation id="6482749332252372425"><ph name="FILE_NAME" /> no se pudo descargar debido a la falta de espacio de almacenamiento.</translation> -<translation id="6541922744811587456">Marcadores de Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Elige una pestaña para transmitir.</translation> <translation id="6545017243486555795">Borrar todos los datos</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Procesando</translation> <translation id="7243308994586599757">Opciones disponibles junto a la parte inferior de la pantalla</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> usa tu ubicación para mostrar resultados de la búsqueda a nivel local.</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ayuda<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Eliminar marcador</translation> <translation id="7301833672208172928">Activar la sincronización del historial</translation> <translation id="7327835590071894791">La pestaña ahora está en segundo plano.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">No</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">No se puede transmitir el video debido a las restricciones del sitio.</translation> -<translation id="7408644312175185557">Consulta las pestañas con otras apps recientes en la pantalla Recientes del teléfono.</translation> <translation id="7423098979219808738">Preguntar primero</translation> <translation id="7437998757836447326">Salir de Chrome</translation> <translation id="7445411102860286510">Permitir que los sitios reproduzcan videos silenciados de forma automática (recomendado)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb index 35ba0b28..b15b598 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_es.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_es.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="es"> -<translation id="1040144152982955218">Buscando dispositivos… <ph name="BEGIN_LINK" />Obtener ayuda<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Advertencia</translation> <translation id="10614374240317010">Contraseñas que nunca se guardan</translation> <translation id="1061441684050139317">Chrome necesita acceder al micrófono para compartirlo con este sitio web.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Descubre páginas web enviadas por los objetos cercanos. Chrome recopila páginas web asociadas a los objetos que te rodean, las envía de forma anónima a un servicio de Google para seleccionar las que te puedan resultar más útiles y, a continuación, las muestra. Debes activar la ubicación y el Bluetooth para utilizar la Web física.</translation> -<translation id="1250508505624960884">Marcadores de Chrome Beta</translation> <translation id="1254090737195733114">¿Importar los datos?</translation> <translation id="1258753120186372309">Doodle de Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Interrumpir</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Tarjetas aceptadas</translation> <translation id="1966710179511230534">Actualiza tus datos de inicio de sesión.</translation> <translation id="1974060860693918893">Opciones avanzadas</translation> -<translation id="1984321224716884559">Marcadores del canal para desarrolladores de Chrome</translation> <translation id="1984937141057606926">Permitidas (excepto cookies de terceros)</translation> <translation id="1994173015038366702">URL del sitio</translation> <translation id="2001120796168634316">Guardar para más tarde</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Es posible que se eliminen las preferencias guardadas en sitios web</translation> <translation id="2748463065602559597">Estás viendo una página de Google Chrome segura.</translation> <translation id="2762000892062317888">ahora mismo</translation> -<translation id="2770465223704140727">Eliminar de la lista</translation> <translation id="2777555524387840389">Quedan <ph name="SECONDS" /> segundos</translation> -<translation id="278029852808208386">No se han encontrado dispositivos Bluetooth. <ph name="BEGIN_LINK" />Repite la búsqueda<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Queda 1 segundo</translation> <translation id="2811892995384186721">¿No aparece tu dispositivo? <ph name="BEGIN_LINK" />Obtén ayuda<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Toca el botón de retroceso para salir de la pantalla completa.</translation> @@ -232,7 +227,6 @@ Para ajustar el término de búsqueda, mantén pulsado el texto para seleccionarlo. Para restringir la búsqueda, desliza el panel hacia arriba y toca el cuadro de búsqueda.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Marcadores de Chrome Canary</translation> <translation id="3632295766818638029">Mostrar contraseña</translation> <translation id="363596933471559332">Permite iniciar sesión automáticamente en sitios web con credenciales almacenadas. Si esta función está desactivada, se solicitará la verificación cada vez que se intente iniciar sesión en un sitio web.</translation> <translation id="3656115297268584622">Activa la ubicación en los <ph name="BEGIN_LINK" />ajustes de Android<ph name="END_LINK" />.</translation> @@ -266,7 +260,7 @@ <translation id="4062305924942672200">Información legal</translation> <translation id="4089831646916293264">Esta función puede interferir con el acceso a servicios de datos premium ofrecidos por el operador.</translation> <translation id="4095146165863963773">¿Eliminar datos de la aplicación?</translation> -<translation id="4099578267706723511">Ayuda a mejorar Chrome enviando estadísticas de uso e informes sobre fallos.</translation> +<translation id="4099578267706723511">Ayudar a mejorar Chrome enviando estadísticas de uso e informes sobre fallos.</translation> <translation id="410351446219883937">Reproducción automática</translation> <translation id="411254640334432676">Error de descarga.</translation> <translation id="4113030288477039509">Administrado por tu administrador</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">No traducir nunca del <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Multimedia</translation> <translation id="4278390842282768270">Permitido</translation> -<translation id="4297410240212242334">Separar pestañas y aplicaciones</translation> <translation id="4307992518367153382">Básica</translation> <translation id="4334294535648607276">Descarga completa.</translation> <translation id="4351244548802238354">Cerrar cuadro de diálogo</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Administrado por uno de tus padres</translation> <translation id="4663756553811254707">Se han eliminado <ph name="NUMBER_OF_BOOKMARKS" /> marcadores</translation> <translation id="4665282149850138822">Se ha añadido <ph name="NAME" /> a la pantalla de inicio</translation> -<translation id="4668044310199835006">Marcadores de Chrome for Work</translation> <translation id="4684427112815847243">Sincronizar todo</translation> <translation id="4686372254213217147">Tamaño original</translation> -<translation id="4690286298542128877">Las pestañas se moverán a un menú de pestañas en Chrome.</translation> <translation id="4698413471314543145">Falta una función esencial obligatoria para ejecutar Chrome. Es posible que tu instalación de Chrome no esté completa o que no sea compatible con esta versión de Android.</translation> <translation id="4699172675775169585">Archivos e imágenes almacenados en caché</translation> <translation id="4710672574193412565">Añade una cuenta de Google desde la página para administrar cuentas de la aplicación de ajustes de tu dispositivo.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">La sincronización está desactivada</translation> <translation id="5131405117025179004">Editar cuenta guardada</translation> <translation id="5138299137310274655">Esta página está escrita en <ph name="SOURCE_LANGUAGE" />. ¿Quieres traducirla al <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Combinar pestañas y aplicaciones</translation> <translation id="515227803646670480">Borrar datos almacenados</translation> <translation id="5156656584247937086">Esta es una cuenta infantil</translation> <translation id="5161254044473106830">Título obligatorio</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Cerrar sesión</translation> <translation id="5233638681132016545">Nueva pestaña</translation> <translation id="5271967389191913893">El dispositivo no puede abrir el contenido para descargarlo.</translation> -<translation id="5275558766013849309">Las pestañas aparecerán junto a aplicaciones recientes.</translation> <translation id="528192093759286357">Arrastra el dedo desde la parte superior y toca el botón de retroceso para salir de la pantalla completa.</translation> <translation id="5284584623296338184">Los cambios que realices en los marcadores, el historial, las contraseñas y otras opciones no se sincronizarán con tu cuenta de Google. Sin embargo, tus datos actuales seguirán almacenados en tu cuenta.</translation> <translation id="5301954838959518834">Entendido</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Configuración en curso…</translation> <translation id="6112702117600201073">Actualizando página</translation> <translation id="6127379762771434464">Elemento quitado</translation> -<translation id="6134870457258083164">¿No aparece tu dispositivo? <ph name="BEGIN_LINK1" />Obtén ayuda<ph name="END_LINK1" /> o <ph name="BEGIN_LINK2" />repite la búsqueda<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Optimizar página para móviles</translation> <translation id="6140912465461743537">País/región</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> de ahorro de datos</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">"<ph name="VIDEO_TITLE" />" se ha pausado</translation> <translation id="6477460825583319731">Dirección de correo electrónico no válida</translation> <translation id="6482749332252372425">No se ha podido descargar <ph name="FILE_NAME" /> porque no hay suficiente espacio de almacenamiento.</translation> -<translation id="6541922744811587456">Marcadores de Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Selecciona una pestaña para compartir</translation> <translation id="6545017243486555795">Borrar todos los datos</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Procesando pago</translation> <translation id="7243308994586599757">Opciones disponibles cerca de la parte inferior de la pantalla</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> utiliza tu ubicación para mostrar resultados de búsqueda locales</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ayuda<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Eliminar marcador</translation> <translation id="7301833672208172928">Activar sincronización del historial</translation> <translation id="7327835590071894791">La pestaña está ahora en segundo plano.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">No</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">No se puede enviar el vídeo debido a las restricciones del sitio</translation> -<translation id="7408644312175185557">Consulta tus pestañas con otras aplicaciones recientes en la pantalla Visión general de tu teléfono.</translation> <translation id="7423098979219808738">Preguntar antes</translation> <translation id="7437998757836447326">Cerrar sesión en Chrome</translation> <translation id="7445411102860286510">Permite que los sitios web reproduzcan automáticamente los vídeos silenciados (recomendado)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb index b251e3e3..3afb866 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fa.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="fa"> -<translation id="1040144152982955218">در حال جستجوی دستگاهها… <ph name="BEGIN_LINK" />دریافت راهنمایی<ph name="END_LINK" /></translation> <translation id="1056898198331236512">اخطار</translation> <translation id="10614374240317010">هرگز ذخیره نمیشود</translation> <translation id="1061441684050139317">Chrome باید به میکروفون دسترسی داشته باشد تا آن را با این سایت به اشتراک بگذارد.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">صفحات وبی را که توسط اشیای اطراف ارسال میشوند کشف کنید. Chrome صفحات وب مرتبط با اشیای اطراف شما را جمعآوری میکند، آنها را بهصورت ناشناس به یک سرویس Google ارسال میکند تا مفیدترین آنها را برای شما پیدا کند، سپس آنها را نمایش میدهد. برای استفاده از «وب فیزیکی»، باید بلوتوث و «مکان» شما روشن باشد.</translation> -<translation id="1250508505624960884">نشانکهای Chrome بتا</translation> <translation id="1254090737195733114">دادهها وارد شوند؟</translation> <translation id="1258753120186372309">Google doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">توقف</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">کارتهای پذیرفتهشده</translation> <translation id="1966710179511230534">لطفاً جزئیات ورود به سیستم را بهروز کنید.</translation> <translation id="1974060860693918893">پیشرفته</translation> -<translation id="1984321224716884559">نشانکهای Chrome پیشرفته</translation> <translation id="1984937141057606926">مجاز، به غیر از طرف ثالث</translation> <translation id="1994173015038366702">نشانی وب سایت</translation> <translation id="2001120796168634316">ذخیره صفحه پیوند داده شده برای بعد</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">تنظیمات برگزیده ذخیرهشده در سایتها ممکن است حذف شوند</translation> <translation id="2748463065602559597">شما در حال مشاهده یک صفحه امن Google Chrome هستید.</translation> <translation id="2762000892062317888">هماکنون</translation> -<translation id="2770465223704140727">حذف از فهرست</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> ثانیه باقیمانده است</translation> -<translation id="278029852808208386">دستگاه بلوتوثی پیدا نشد. <ph name="BEGIN_LINK" />دوباره جستجو کنید<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">۱ ثانیه باقیمانده است</translation> <translation id="2811892995384186721">دستگاهتان را نمیبینید؟ <ph name="BEGIN_LINK" />دریافت راهنمایی<ph name="END_LINK" /></translation> <translation id="2836148919159985482">برای خروج از حالت تمام صفحه، دکمه برگشت را لمس کنید.</translation> @@ -232,7 +227,6 @@ برای تنظیم عبارت جستجویتان، به مدت طولانی فشار دهید تا انتخاب شود. برای تصحیح جستجویتان، پانل را بهطور کامل به بالا بلغزانید و کادر جستجو را لمس کنید.</translation> <translation id="3616113530831147358">صوتی</translation> -<translation id="3623048332793834136">نشانکهای Chrome Canary</translation> <translation id="3632295766818638029">نمایش گذرواژه</translation> <translation id="363596933471559332">با استفاده از اعتبارنامههای ذخیره شده، بهطور خودکار به سیستم وبسایتها وارد شوید. وقتی این قابلیت خاموش است، هر بار قبل از وارد شدن به سیستم وبسایت از شما خواسته میشود اطلاعات را تأیید کنید.</translation> <translation id="3656115297268584622">مکان را در <ph name="BEGIN_LINK" />تنظیمات Android<ph name="END_LINK" /> روشن کنید.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831"><ph name="LANGUAGE" /> هرگز ترجمه نشود</translation> <translation id="4275663329226226506">رسانه</translation> <translation id="4278390842282768270">مجاز است</translation> -<translation id="4297410240212242334">جدا کردن برگهها و برنامهها</translation> <translation id="4307992518367153382">موارد اصلی</translation> <translation id="4334294535648607276">دانلود کامل شد.</translation> <translation id="4351244548802238354">بستن کادر گفتگو</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">مدیریت شده توسط والدین شما</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> نشانک حذف شد</translation> <translation id="4665282149850138822"><ph name="NAME" /> به صفحه اصلی شما اضافه شد</translation> -<translation id="4668044310199835006">نشانکهای Chrome برای کار</translation> <translation id="4684427112815847243">همگامسازی همه</translation> <translation id="4686372254213217147">اندازه اصلی</translation> -<translation id="4690286298542128877">برگهها به جابهجاکننده برگه در Chrome منتقل میشوند.</translation> <translation id="4698413471314543145">یکی از قابلیتهای مهم برای اجرای Chrome موجود نیست؛ ممکن است نصب Chrome شما به صورت ناقص انجام شده باشد یا اینکه با این نسخه از Android سازگار نباشد.</translation> <translation id="4699172675775169585">تصاویر و فایلهای قرار گرفته در حافظه پنهان</translation> <translation id="4710672574193412565">از صفحه «حسابها» در برنامه «تنظیمات» دستگاه، یک حساب Google اضافه کنید.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">همگامسازی خاموش است</translation> <translation id="5131405117025179004">ویرایش حساب ذخیرهشده</translation> <translation id="5138299137310274655">این صفحه به زبان <ph name="SOURCE_LANGUAGE" /> است. به <ph name="TARGET_LANGUAGE" /> ترجمه شود؟</translation> -<translation id="5150703642582475397">ادغام برگهها و برنامهها</translation> <translation id="515227803646670480">پاک کردن داده ذخیره شده</translation> <translation id="5156656584247937086">این یک حساب کودک است</translation> <translation id="5161254044473106830">عنوان مورد نیاز است</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">خروج از سیستم</translation> <translation id="5233638681132016545">برگه جدید</translation> <translation id="5271967389191913893">دستگاه نمیتواند محتوا را برای بارگیری باز کند.</translation> -<translation id="5275558766013849309">زبانهها و برنامههای اخیر در یکجا قرار میگیرند.</translation> <translation id="528192093759286357">برای خروج از حالت تمام صفحه، از بالا صفحه را بکشید و دکمه برگشت را لمس کنید.</translation> <translation id="5284584623296338184">تغییرات در نشانکها، سابقه، گذرواژه و سایر تنظیمات دیگر با حساب Google شما همگامسازی نخواهد شد. با این حال، دادههای موجودتان در حساب Google شما باقی خواهند ماند.</translation> <translation id="5301954838959518834">بله، متوجه شدم</translation> @@ -449,7 +438,6 @@ <translation id="6108923351542677676">تنظیم در حال انجام است...</translation> <translation id="6112702117600201073">درحال بازخوانی صفحه</translation> <translation id="6127379762771434464">مورد برداشته شد</translation> -<translation id="6134870457258083164">دستگاهتان را نمیبینید؟ <ph name="BEGIN_LINK1" />راهنمایی دریافت کنید<ph name="END_LINK1" /> یا <ph name="BEGIN_LINK2" />دوباره جستجو کنید<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">تبدیل صفحه به حالت مناسب دستگاه همراه</translation> <translation id="6140912465461743537">کشور/منطقه</translation> <translation id="6159335304067198720">ذخیره دادهها: <ph name="PERCENT" /></translation> @@ -481,7 +469,6 @@ <translation id="6476911854266661814">«<ph name="VIDEO_TITLE" />» موقتاً متوقف است</translation> <translation id="6477460825583319731">آدرس رایانامه نامعتبر</translation> <translation id="6482749332252372425">بهدلیل نبودن فضای ذخیرهسازی، بارگیری <ph name="FILE_NAME" /> انجام نشد.</translation> -<translation id="6541922744811587456">نشانکهای Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">برگهای برای انتقال با پرتو انتخاب کنید</translation> <translation id="6545017243486555795">پاک کردن همه دادهها</translation> @@ -553,7 +540,6 @@ <translation id="7220786058474068424">درحال پردازش</translation> <translation id="7243308994586599757">گزینهها در نزدیک پایین صفحه نمایش در دسترس هستند</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> از موقعیت مکانی شما برای نمایش نتایج جستجوی محلی استفاده میکند</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />راهنما<ph name="END_LINK" /></translation> <translation id="7299721129597238157">حذف نشانک</translation> <translation id="7301833672208172928">روشن کردن همگامسازی سابقه</translation> <translation id="7327835590071894791">اکنون برگهتان در پسزمینه قرار دارد.</translation> @@ -564,7 +550,6 @@ <translation id="7378627244592794276">نه</translation> <translation id="7400418766976504921">نشانی وب</translation> <translation id="7400448254438078120">به دلیل محدودیتهای سایت فرستادن ویدیو ممکن نبود</translation> -<translation id="7408644312175185557">برگهها و سایر برنامههای اخیرتان را در صفحه نمای کلی تلفن ببینید.</translation> <translation id="7423098979219808738">ابتدا سؤال شود</translation> <translation id="7437998757836447326">خروج از سیستم Chrome</translation> <translation id="7445411102860286510">اجازه به سایتها برای پخش خودکار ویدیوهای صامتشده (توصیه میشود)</translation> @@ -705,7 +690,7 @@ <translation id="8959122750345127698">پیمایش غیرقابل دسترسی است: <ph name="URL" /></translation> <translation id="8979340629087822094">روز گذشته</translation> <translation id="8981454092730389528">کنترلهای فعالیت Google</translation> -<translation id="8986494364107987395">ارسال خودکار آمار مصرف و گزارشهای خرابی به Google</translation> +<translation id="8986494364107987395">ارسال خودکار آمار کاربرد و گزارشهای خرابی به Google</translation> <translation id="8987061207681586800">Chrome را برای خود اختصاصی کنید</translation> <translation id="8998729206196772491">هماکنون درحال ورود به سیستم با یک حساب مدیریتشده توسط <ph name="MANAGED_DOMAIN" /> و ارائه کنترل دادههای Chrome خودتان به سرپرست این حساب هستید. دادههایتان بهطور دائم به این حساب مرتبط میشوند. با خروج از Chrome، دادههایتان از این دستگاه حذف میشوند اما همچنان در حساب Google شما باقی میماند.</translation> <translation id="9019902583201351841">مدیریت شده توسط والدین شما</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb index 2313ad8..0ac45cb 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fi.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="fi"> -<translation id="1040144152982955218">Haetaan laitteita… <ph name="BEGIN_LINK" />Tutustu ohjeisiin<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Varoitus</translation> <translation id="10614374240317010">Ei tallenneta</translation> <translation id="1061441684050139317">Chrome tarvitsee mikrofonin käyttöoikeuden voidakseen jakaa sen tämän sivuston kanssa.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Katsele lähistöllä olevien esineiden lähettämiä verkkosivuja. Chrome kerää ympärilläsi oleviin esineisiin liittyviä verkkosivuja, lähettää ne nimettöminä Googlen palveluun osuvimpien sivujen valintaa varten ja näyttää nämä sitten sinulle. Bluetooothin ja sijaintipalvelun on oltava päällä, jotta Fyysistä webiä voidaan käyttää.</translation> -<translation id="1250508505624960884">Chromen betaversion kirjanmerkit</translation> <translation id="1254090737195733114">Tuodaanko tiedot?</translation> <translation id="1258753120186372309">Google-piirros: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Pysäytä</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Hyväksytyt kortit</translation> <translation id="1966710179511230534">Päivitä kirjautumistietosi.</translation> <translation id="1974060860693918893">Lisäasetukset</translation> -<translation id="1984321224716884559">Chromen kehittäjäversion kirjanmerkit</translation> <translation id="1984937141057606926">Sallittu, paitsi kolmannen osapuolen evästeet</translation> <translation id="1994173015038366702">Sivuston URL-osoite</translation> <translation id="2001120796168634316">Tallenna linkitetty sivu</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Sivustojen tallennetut asetukset saatetaan tyhjentää.</translation> <translation id="2748463065602559597">Katselet suojattua Google Chrome -sivua.</translation> <translation id="2762000892062317888">äsken</translation> -<translation id="2770465223704140727">Poista luettelosta</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekuntia jäljellä</translation> -<translation id="278029852808208386">Bluetooth-laitteita ei löytynyt. <ph name="BEGIN_LINK" />Hae uudelleen<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 sekunti jäljellä</translation> <translation id="2811892995384186721">Etkö näe laitettasi? <ph name="BEGIN_LINK" />Tutustu ohjeisiin.<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Poistu koko näytön tilasta Takaisin-painikkeella.</translation> @@ -232,7 +227,6 @@ Muokkaa hakutermiä valitsemalla se pitkällä painalluksella. Tarkenna hakua liu'uttamalla paneeli yläasentoon ja koskettamalla hakukenttää.</translation> <translation id="3616113530831147358">Ääni</translation> -<translation id="3623048332793834136">Chrome Canaryn kirjanmerkit</translation> <translation id="3632295766818638029">Paljasta salasana</translation> <translation id="363596933471559332">Kirjaudu automaattisesti verkkosivustoille käyttämällä tallennettuja kirjautumistietoja. Jos tämä toiminto ei ole käytössä, sinua pyydetään vahvistamaan kirjautuminen aina, kun kirjaudut sivustolle.</translation> <translation id="3656115297268584622">Ota sijainti käyttöön <ph name="BEGIN_LINK" />Android-asetuksissa<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Älä koskaan käännä kieltä <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Sallittu</translation> -<translation id="4297410240212242334">Erota välilehdet ja sovellukset</translation> <translation id="4307992518367153382">Perustiedot</translation> <translation id="4334294535648607276">Lataus on valmis.</translation> <translation id="4351244548802238354">Sulje ikkuna</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Vanhempasi hallinnoima</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> kirjanmerkkiä poistettiin</translation> <translation id="4665282149850138822"><ph name="NAME" /> lisättiin aloitusnäytölle.</translation> -<translation id="4668044310199835006">Work Chromen kirjanmerkit</translation> <translation id="4684427112815847243">Synkronoi kaikki</translation> <translation id="4686372254213217147">Alkuperäinen koko</translation> -<translation id="4690286298542128877">Välilehdet muuttavat Chromen sisäiseen välilehtien vaihtajaan.</translation> <translation id="4698413471314543145">Chromen suorittamiseen tarvittava kriittinen toiminto puuttuu. Joko Chromea ei ole asennettu loppuun tai selain ei sovi yhteen tämän Android-version kanssa.</translation> <translation id="4699172675775169585">Välimuistissa olevat kuvat ja tiedostot</translation> <translation id="4710672574193412565">Lisää Google-tili sovelluksen Asetukset-sovelluksen Tilit-sivulla.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synkronointi ei ole käytössä</translation> <translation id="5131405117025179004">Tallennetun tilin muokkaaminen</translation> <translation id="5138299137310274655">Sivu on kirjoitettu kielellä <ph name="SOURCE_LANGUAGE" />. Haluatko kääntää sen kielelle <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Yhdistä välilehdet ja sovellukset</translation> <translation id="515227803646670480">Poista tallennetut tiedot</translation> <translation id="5156656584247937086">Tämä on lapsen tili.</translation> <translation id="5161254044473106830">Nimike vaaditaan</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Kirjaudu ulos</translation> <translation id="5233638681132016545">Uusi välilehti</translation> <translation id="5271967389191913893">Laite ei voi avata ladattavaa sisältöä.</translation> -<translation id="5275558766013849309">Välilehdet asustavat tämän jälkeen yhdessä viimeaikaisten sovelluksien kanssa.</translation> <translation id="528192093759286357">Poistu koko näytön tilasta vetämällä näytön yläreunasta ja koskettamalla Takaisin-painiketta.</translation> <translation id="5284584623296338184">Kirjanmerkkeihin, historiaan, salasanoihin ja muihin asetuksiin tehtäviä muutoksia ei enää synkronoida Google-tilillesi. Olemassa olevia tietojasi säilytetään kuitenkin Google-tililläsi.</translation> <translation id="5301954838959518834">Selvä</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Synkronointia valmistellaan…</translation> <translation id="6112702117600201073">Sivun päivittäminen</translation> <translation id="6127379762771434464">Kohde poistettu</translation> -<translation id="6134870457258083164">Etkö näe laitettasi? <ph name="BEGIN_LINK1" />Tutustu ohjeisiin<ph name="END_LINK1" /> tai <ph name="BEGIN_LINK2" />hae uudelleen<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Tee sivusta mobiililaitteisiin sopiva</translation> <translation id="6140912465461743537">Maa/alue</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> vähemmän tiedonsiirtoa</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814"><ph name="VIDEO_TITLE" /> keskeytettiin.</translation> <translation id="6477460825583319731">Virheellinen sähköpostiosoite</translation> <translation id="6482749332252372425">Tiedoston <ph name="FILE_NAME" /> lataus epäonnistui, koska tallennustila ei riitä.</translation> -<translation id="6541922744811587456">Chromen kirjanmerkit</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Valitse siirrettävä välilehti</translation> <translation id="6545017243486555795">Poista kaikki tiedot</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Käsitellään.</translation> <translation id="7243308994586599757">Asetukset löytyvät näytön alalaidasta.</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> käyttää sijaintiasi paikallisten hakutulosten näyttämiseen.</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ohjeita<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Poista kirjanmerkki</translation> <translation id="7301833672208172928">Ota historian synkronointi käyttöön</translation> <translation id="7327835590071894791">Välilehti on nyt taustalla.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Ei</translation> <translation id="7400418766976504921">URL-osoite</translation> <translation id="7400448254438078120">Videota ei voi suoratoistaa sivuston rajoitusten vuoksi.</translation> -<translation id="7408644312175185557">Näet välilehdet ja viimeksi käytetyt sovellukset puhelimen Viimeisimmät-näkymässä.</translation> <translation id="7423098979219808738">Kysy ensin</translation> <translation id="7437998757836447326">Uloskirjautuminen Chromesta</translation> <translation id="7445411102860286510">Salli sivustoille mykistettyjen videoiden automaattinen toisto (suositus)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb index 7e4548a..a334106e 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fil.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="fil"> -<translation id="1040144152982955218">Naghahanap ng mga device… <ph name="BEGIN_LINK" />humingi ng tulong<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Babala</translation> <translation id="10614374240317010">Hindi kailanman nag-save</translation> <translation id="1061441684050139317">Kailangan ng Chrome ng access sa mikropono upang maibahagi ito sa site na ito.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Tuklasin ang mga web page na ipinadala ng mga kalapit na bagay. Iniipon ng Chrome ang mga web page na nauugnay sa mga bagay sa paligid mo, ipinapadala ang mga iyon nang anonymous sa isang serbisyo ng Google upang makita ang mga pinakakapaki-pakinabang isa iyo, pagkatapos ay ipinapakita ang mga iyon. Dapat na na-on mo ang Bluetooth at Lokasyon upang magamit ang Pisikal na Web.</translation> -<translation id="1250508505624960884">Mga bookmark ng Chrome Beta</translation> <translation id="1254090737195733114">I-import ang data?</translation> <translation id="1258753120186372309">Google doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Stop</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Mga tinatanggap na card</translation> <translation id="1966710179511230534">Paki-update ang iyong mga detalye sa pag-sign in.</translation> <translation id="1974060860693918893">Advanced</translation> -<translation id="1984321224716884559">Mga bookmark ng Chrome Dev</translation> <translation id="1984937141057606926">Pinapayagan, maliban ang third-party</translation> <translation id="1994173015038366702">URL ng site</translation> <translation id="2001120796168634316">I-save linked page para mamaya</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Maaaring ma-delete ang mga naka-save na kagustuhan sa mga site</translation> <translation id="2748463065602559597">Tumitingin ka sa isang secure na pahina ng Google Chrome.</translation> <translation id="2762000892062317888">ngayon lang</translation> -<translation id="2770465223704140727">Alisin sa listahan</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> (na) segundo na lang ang natitira</translation> -<translation id="278029852808208386">Walang nakitang mga bluetooth device. <ph name="BEGIN_LINK" />Muling maghanap<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 segundo na lang ang natitira</translation> <translation id="2811892995384186721">Hindi mo ba nakikita ang iyong device? <ph name="BEGIN_LINK" />Humingi ng tulong<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Pindutin ang button na bumalik upang lumabas sa full screen.</translation> @@ -232,7 +227,6 @@ Upang baguhin ang iyong termino para sa paghahanap, pindutin ito nang matagal upang mapili ito. Upang pinuhin ang iyong paghahanap, i-slide ang panel hanggang sa pinakaitaas at pindutin ang box para sa paghahanap.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Mga bookmark ng Chrome Canary</translation> <translation id="3632295766818638029">I-unmask ang password</translation> <translation id="363596933471559332">Awtomatikong mag-sign in sa mga website gamit ang mga nakaimbak na kredensyal. Kapag naka-off ang feature, hihilingin sa iyong mag-verify sa tuwing magsa-sign in ka sa isang website.</translation> <translation id="3656115297268584622">I-on ang lokasyon sa <ph name="BEGIN_LINK" />Mga Setting ng Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Huwag isalin kailanman ang <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Pinapayagan</translation> -<translation id="4297410240212242334">Paghiwalayin ang mga tab at apps</translation> <translation id="4307992518367153382">Mga Pangunahing Kaalaman</translation> <translation id="4334294535648607276">Tapos na ang pag-download.</translation> <translation id="4351244548802238354">Isara ang dialog</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Pinamamahalaan ng iyong magulang</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> (na) bookmark ang na-delete</translation> <translation id="4665282149850138822">Idinagdag ang <ph name="NAME" /> sa iyong Home screen</translation> -<translation id="4668044310199835006">Mga bookmark ng Work Chrome</translation> <translation id="4684427112815847243">I-sync lahat</translation> <translation id="4686372254213217147">Orihinal na laki</translation> -<translation id="4690286298542128877">Malilipat ang mga tab sa isang tagalipat ng tab sa Chrome.</translation> <translation id="4698413471314543145">Wala ang mahalagang functionality na kinakailangan upang patakbuhin ang Chrome; maaaring hindi natapos ang pag-install sa iyong Chrome o hindi ito tugma sa bersyong ito ng Android.</translation> <translation id="4699172675775169585">Mga naka-cache na larawan at file</translation> <translation id="4710672574193412565">Magdagdag ng Google Account mula sa page na Mga Account sa app na Mga Setting ng iyong device.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Naka-off ang pag-sync</translation> <translation id="5131405117025179004">I-edit ang naka-save na account</translation> <translation id="5138299137310274655">Nasa <ph name="SOURCE_LANGUAGE" /> ang page na ito. Isalin ito sa <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">I-merge ang mga tab at apps</translation> <translation id="515227803646670480">I-clear ang nakaimbak na data</translation> <translation id="5156656584247937086">Account ito ng isang bata</translation> <translation id="5161254044473106830">Kailangan ng pamagat</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Mag-sign out</translation> <translation id="5233638681132016545">Bagong tab</translation> <translation id="5271967389191913893">Hindi mabuksan ng device ang content na ida-download.</translation> -<translation id="5275558766013849309">Magsasama-sama ang mga tab at kamakailang app.</translation> <translation id="528192093759286357">I-drag mula sa itaas at pindutin ang button na bumalik upang lumabas sa full screen.</translation> <translation id="5284584623296338184">Hindi na masi-sync sa iyong Google Account ang mga pagbabago sa iyong mga bookmark, history, password at iba pang mga setting. Gayunpaman, mananatiling nakaimbak sa iyong Google account ang iyong kasalukuyang data.</translation> <translation id="5301954838959518834">OK, nakuha ko na</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Kasalukuyang sine-setup…</translation> <translation id="6112702117600201073">Nire-refresh ang page</translation> <translation id="6127379762771434464">Inalis ang item</translation> -<translation id="6134870457258083164">Hindi mo ba nakikita ang iyong device? <ph name="BEGIN_LINK1" />Humingi ng tulong<ph name="END_LINK1" /> o <ph name="BEGIN_LINK2" />muling maghanap<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Gawing pang-mobile ang page</translation> <translation id="6140912465461743537">Bansa/Rehiyon</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> natipid sa data</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Na-pause ang “<ph name="VIDEO_TITLE" />”</translation> <translation id="6477460825583319731">Hindi wasto ang email address</translation> <translation id="6482749332252372425">Hindi na-download ang <ph name="FILE_NAME" /> dahil kulang ang espasyo sa storage.</translation> -<translation id="6541922744811587456">Mga bookmark ng Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Pumili ng tab upang mag-beam</translation> <translation id="6545017243486555795">I-clear ang Lahat ng Data</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Pinoproseso</translation> <translation id="7243308994586599757">May mga opsyon malapit sa ibaba ng screen</translation> <translation id="7244362611678346589">Ginagamit ng <ph name="SEARCH_ENGINE_URL" /> ang iyong lokasyon upang magpakita ng mga lokal na resulta ng paghahanap</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Tulong<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Tanggalin ang bookmark</translation> <translation id="7301833672208172928">I-on ang pag-sync ng history</translation> <translation id="7327835590071894791">Nasa background na ngayon ang iyong tab.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Hindi</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Hindi ma-cast ang video dahil sa mga paghihigpit sa site</translation> -<translation id="7408644312175185557">Tingnan ang iyong mga tab sa iba pang mga kamakailang app sa screen na Pangkalahatang-ideya ng iyong telepono.</translation> <translation id="7423098979219808738">Magtanong muna</translation> <translation id="7437998757836447326">Mag-sign out sa Chrome</translation> <translation id="7445411102860286510">Payagan ang mga site na awtomatikong mag-play ng mga naka-mute na video (inirerekomenda)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb index 9dd81a00..5515979 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_fr.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="fr"> -<translation id="1040144152982955218">Recherche d'appareils… <ph name="BEGIN_LINK" />Obtenir de l'aide<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Avertissement</translation> <translation id="10614374240317010">Jamais enregistrés</translation> <translation id="1061441684050139317">Chrome doit disposer de l'accès au micro pour le partager avec ce site.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Découvrez des pages Web envoyées par des objets à proximité. Chrome réunit les pages Web associées aux objets qui vous entourent, les envoie de manière anonyme à un service Google pour déterminer celles qui vous sont les plus utiles, puis les affiche. Vous devez activer le Bluetooth et les services de localisation pour utiliser le Web physique.</translation> -<translation id="1250508505624960884">Favoris de la version bêta de Chrome</translation> <translation id="1254090737195733114">Importer les données ?</translation> <translation id="1258753120186372309">Doodle : <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Arrêter</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Cartes acceptées</translation> <translation id="1966710179511230534">Veuillez mettre à jour vos informations de connexion.</translation> <translation id="1974060860693918893">Paramètres avancés</translation> -<translation id="1984321224716884559">Favoris de la version en développement de Chrome</translation> <translation id="1984937141057606926">Autorisés, sauf cookies tiers</translation> <translation id="1994173015038366702">URL du site</translation> <translation id="2001120796168634316">Page liée à consulter plus tard</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Les préférences enregistrées sur les sites sont susceptibles d'être supprimées.</translation> <translation id="2748463065602559597">Cette page Google Chrome est sécurisée.</translation> <translation id="2762000892062317888">à l'instant</translation> -<translation id="2770465223704140727">Retirer de la liste</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> secondes restantes</translation> -<translation id="278029852808208386">Aucun appareil Bluetooth trouvé. <ph name="BEGIN_LINK" />Relancez la recherche<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 seconde restante</translation> <translation id="2811892995384186721">Votre appareil ne s'affiche pas ? <ph name="BEGIN_LINK" />Obtenir de l'aide<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Appuyez sur le bouton Retour pour quitter le mode plein écran.</translation> @@ -232,8 +227,7 @@ Pour modifier le terme de recherche, appuyez sur celui-ci de manière prolongée afin de le sélectionner. Pour affiner la recherche, faites glisser le panneau jusqu'en haut et appuyez sur le champ de recherche.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Favoris de Chrome Canary</translation> -<translation id="3632295766818638029">Annuler le masquage du mot de passe</translation> +<translation id="3632295766818638029">Afficher le mot de passe</translation> <translation id="363596933471559332">Connexion automatique aux sites Web à l'aide des identifiants enregistrés. Lorsque la fonctionnalité est désactivée, vous êtes invité à effectuer la validation avant chaque connexion à un site Web.</translation> <translation id="3656115297268584622">Activez le service de localisation dans les <ph name="BEGIN_LINK" />paramètres Android<ph name="END_LINK" />.</translation> <translation id="3661699943263275414">Les sites tiers peuvent enregistrer et lire les données des cookies.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Ne jamais traduire les pages rédigées en <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Médias</translation> <translation id="4278390842282768270">Autorisé</translation> -<translation id="4297410240212242334">Séparer les onglets et les applications</translation> <translation id="4307992518367153382">Options de base</translation> <translation id="4334294535648607276">Le téléchargement a bien été effectué.</translation> <translation id="4351244548802238354">Fermer la boîte de dialogue</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Géré par ton papa/ta maman</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> favoris ont été supprimés.</translation> <translation id="4665282149850138822">Le site "<ph name="NAME" />" a bien été ajouté à votre écran d'accueil.</translation> -<translation id="4668044310199835006">Favoris de Work Chrome</translation> <translation id="4684427112815847243">Tout synchroniser</translation> <translation id="4686372254213217147">Taille initiale</translation> -<translation id="4690286298542128877">Les onglets vont être déplacés dans un sélecteur d'onglets au sein de Chrome.</translation> <translation id="4698413471314543145">Une fonctionnalité essentielle à l'exécution de Google Chrome est manquante. Soit vous n'avez pas terminé d'installer Google Chrome, soit la version installée n'est pas compatible avec cette version d'Android.</translation> <translation id="4699172675775169585">Images et fichiers en cache</translation> <translation id="4710672574193412565">Ajoutez un compte Google depuis la page "Comptes" dans l'application Paramètres de votre appareil.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">La synchronisation est désactivée.</translation> <translation id="5131405117025179004">Modifier un compte enregistré</translation> <translation id="5138299137310274655">Cette page est rédigée en <ph name="SOURCE_LANGUAGE" />. Voulez-vous la traduire en <ph name="TARGET_LANGUAGE" /> ?</translation> -<translation id="5150703642582475397">Fusionner les onglets et les applications</translation> <translation id="515227803646670480">Effacer les données stockées</translation> <translation id="5156656584247937086">Ce compte appartient à un enfant.</translation> <translation id="5161254044473106830">Veuillez saisir un titre.</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Déconnexion</translation> <translation id="5233638681132016545">Nouvel onglet</translation> <translation id="5271967389191913893">Impossible d'ouvrir le contenu à télécharger sur l'appareil.</translation> -<translation id="5275558766013849309">Les onglets figureront aux côtés des applications récentes.</translation> <translation id="528192093759286357">Pour quitter le mode plein écran, faites glisser un doigt du haut vers le bas, puis appuyez sur le bouton Retour.</translation> <translation id="5284584623296338184">Les modifications apportées à vos favoris, votre historique, vos mots de passe et d'autres paramètres ne seront plus synchronisées avec votre compte Google. Vos données resteront cependant conservées dans votre compte Google.</translation> <translation id="5301954838959518834">OK</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Configuration en cours…</translation> <translation id="6112702117600201073">Actualisation de la page</translation> <translation id="6127379762771434464">Élément supprimé</translation> -<translation id="6134870457258083164">Votre appareil ne s'affiche pas ? <ph name="BEGIN_LINK1" />Obtenez de l'aide<ph name="END_LINK1" /> ou <ph name="BEGIN_LINK2" />effectuez une nouvelle recherche<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Ouvrir la page adaptée aux mobiles</translation> <translation id="6140912465461743537">Pays/Région</translation> <translation id="6159335304067198720">Économies de données de <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">La vidéo "<ph name="VIDEO_TITLE" />" a été mise en pause.</translation> <translation id="6477460825583319731">Adresse e-mail non valide</translation> <translation id="6482749332252372425">Échec du téléchargement du fichier "<ph name="FILE_NAME" />" en raison de l'espace de stockage insuffisant.</translation> -<translation id="6541922744811587456">Favoris de Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Sélectionnez un onglet à partager.</translation> <translation id="6545017243486555795">Supprimer toutes les données</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Traitement en cours</translation> <translation id="7243308994586599757">Options disponibles au bas de l'écran</translation> <translation id="7244362611678346589">Le site <ph name="SEARCH_ENGINE_URL" /> utilise votre position pour afficher les résultats de recherche à proximité.</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Aide<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Supprimer le favori</translation> <translation id="7301833672208172928">Activer la synchronisation de l'historique</translation> <translation id="7327835590071894791">L'onglet est maintenant affiché en arrière-plan.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Non</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Impossible de caster la vidéo en raison de restrictions liées au site.</translation> -<translation id="7408644312175185557">Affichez vos onglets ainsi que d'autres applications récemment utilisées sur l'écran "Aperçu" de votre téléphone.</translation> <translation id="7423098979219808738">Demander d'abord</translation> <translation id="7437998757836447326">Se déconnecter de Chrome</translation> <translation id="7445411102860286510">Autoriser les sites à lire automatiquement des vidéos dont le son est coupé (recommandé)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb index 58fb060..02394a25 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hi.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="hi"> -<translation id="1040144152982955218">डिवाइस खोजे जा रहे हैं… <ph name="BEGIN_LINK" />सहायता प्राप्त करें<ph name="END_LINK" /></translation> <translation id="1056898198331236512">चेतावनी</translation> <translation id="10614374240317010">कभी नहीं सहेजा गया</translation> <translation id="1061441684050139317">Chrome को माइक्रोफ़ोन ऐक्सेस की आवश्यकता है ताकि माइक्रोफ़ोन को इस साइट के साथ साझा किया जा सके.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">आस-पास के ऑब्जेक्ट द्वारा भेजे गए वेब पृष्ठ खोजें. Chrome आपके आस-पास मौजूद ऑब्जेक्ट से संबद्ध वेब पृष्ठ एकत्र करता है, उन्हें अनाम रूप से किसी Google सेवा पर भेजता है ताकि उनमें से आपके लिए सर्वाधिक उपयोगी पृष्ठ खोजे जा सकें, फिर उन्हें प्रदर्शित करता है. जीते-जागते वेब का उपयोग करने के लिए आपके पास ब्लूटूथ और स्थान चालू किया हुआ होना चाहिए.</translation> -<translation id="1250508505624960884">Chrome बीटा बुकमार्क</translation> <translation id="1254090737195733114">डेटा आयात करें?</translation> <translation id="1258753120186372309">Google doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">रोकें</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">स्वीकृत कार्ड</translation> <translation id="1966710179511230534">कृपया अपने प्रवेश विवरण अपडेट करें.</translation> <translation id="1974060860693918893">उन्नत</translation> -<translation id="1984321224716884559">Chrome डेवपलर बुकमार्क</translation> <translation id="1984937141057606926">तृतीय-पक्ष को छोड़कर अनुमति है</translation> <translation id="1994173015038366702">साइट URL</translation> <translation id="2001120796168634316">लिंक किया गया पृष्ठ बाद के लिए सहेजें</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">साइट पर सहेजी गईं प्राथमिकताएं हटाई जा सकती हैं</translation> <translation id="2748463065602559597">आप एक सुरक्षित Google Chrome पृष्ठ देख रहे हैं.</translation> <translation id="2762000892062317888">अभी-अभी</translation> -<translation id="2770465223704140727">सूची से निकालें</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> सेकंड शेष</translation> -<translation id="278029852808208386">कोई ब्लूटूथ डिवाइस नहीं मिला. <ph name="BEGIN_LINK" />फिर से खोजें<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 सेकंड शेष</translation> <translation id="2811892995384186721">आपका डिवाइस दिखाई नहीं दे रहा है? <ph name="BEGIN_LINK" />सहायता प्राप्त करें<ph name="END_LINK" /></translation> <translation id="2836148919159985482">पूर्ण स्क्रीन से बाहर निकलने के लिए वापस जाएं बटन स्पर्श करें.</translation> @@ -232,7 +227,6 @@ अपने खोज शब्द को एडजस्ट करने के लिए, चुनने हेतु देर तक दबाएं. अपनी खोज को परिष्कृत करने के लिए, फलक को सीधे ऊपर स्लाइड करें और खोज बॉक्स को स्पर्श करें.</translation> <translation id="3616113530831147358">ऑडियो</translation> -<translation id="3623048332793834136">Chrome कैनेरी बुकमार्क</translation> <translation id="3632295766818638029">पासवर्ड दिखाएं</translation> <translation id="363596933471559332">संग्रहीत क्रेडेंशियल का उपयोग करके वेबसाइटों में अपने आप प्रवेश करें. सुविधा के बंद होने पर, किसी वेबसाइट में प्रवेश करने से पहले आपसे हर बार सत्यापन के लिए कहा जाएगा.</translation> <translation id="3656115297268584622"><ph name="BEGIN_LINK" />Android सेटिंग<ph name="END_LINK" /> में स्थान चालू करें.</translation> @@ -266,7 +260,7 @@ <translation id="4062305924942672200">वैधानिक जानकारी</translation> <translation id="4089831646916293264">यह सुविधा आपके वाहक द्वारा प्रदान की जाने वाली प्रीमियम डेटा सुविधाओं की ऐक्सेस में हस्तक्षेप कर सकती है.</translation> <translation id="4095146165863963773">ऐप्लिकेशन डेटा हटाएं?</translation> -<translation id="4099578267706723511">Google को उपयोग के आंकड़े और क्रैश रिपोर्ट भेजकर Chrome को बेहतर बनाने में सहायता करें.</translation> +<translation id="4099578267706723511">Google को उपयोग के आंकड़े और क्रैश रिपोर्ट भेजने की अनुमति देकर Chrome को बेहतर बनाने में सहायता करें.</translation> <translation id="410351446219883937">स्वतः चलाएं</translation> <translation id="411254640334432676">डाउनलोड विफल रहा.</translation> <translation id="4113030288477039509">आपके व्यवस्थापक द्वारा प्रबंधित</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">कभी भी <ph name="LANGUAGE" /> का अनुवाद न करें</translation> <translation id="4275663329226226506">मीडिया</translation> <translation id="4278390842282768270">अनुमति है</translation> -<translation id="4297410240212242334">टैब और ऐप्स अलग करें</translation> <translation id="4307992518367153382">आधारभूत बातें</translation> <translation id="4334294535648607276">डाउनलोड पूर्ण.</translation> <translation id="4351244548802238354">संवाद बंद करें</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">आपके अभिभावक द्वारा प्रबंधित</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> बुकमार्क का पता लगा</translation> <translation id="4665282149850138822"><ph name="NAME" /> को आपकी होम स्क्रीन में जोड़ा गया था</translation> -<translation id="4668044310199835006">Work Chrome बुकमार्क</translation> <translation id="4684427112815847243">सब कुछ समन्वयित करें</translation> <translation id="4686372254213217147">मूल आकार</translation> -<translation id="4690286298542128877">टैब, Chrome के अंदर एक टैब स्विचर पर चले जाएंगे.</translation> <translation id="4698413471314543145">Chrome चलाने के लिए आवश्यक जटिल कार्यक्षमता अनुबलब्ध है; या तो आपका Chrome इंस्टॉलेशन अपूर्ण है, या वह Android के इस वर्शन के साथ संगत नहीं है.</translation> <translation id="4699172675775169585">संचय चित्र और फ़ाइलें</translation> <translation id="4710672574193412565">अपने डिवाइस के सेटिंग ऐप्लिकेशन में खाते पृष्ठ से कोई Google खाता जोड़ें.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">समन्वयन बंद है</translation> <translation id="5131405117025179004">सहेजा गया खाता संपादित करें</translation> <translation id="5138299137310274655">यह पृष्ठ <ph name="SOURCE_LANGUAGE" /> में है. इसका <ph name="TARGET_LANGUAGE" /> में अनुवाद करें?</translation> -<translation id="5150703642582475397">टैब और ऐप्स मर्ज करें</translation> <translation id="515227803646670480">संग्रहीत डेटा साफ़ करें</translation> <translation id="5156656584247937086">यह बच्चे का खाता है</translation> <translation id="5161254044473106830">शीर्षक आवश्यक</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">प्रस्थान करें</translation> <translation id="5233638681132016545">नया टैब</translation> <translation id="5271967389191913893">डाउनलोड की जाने वाली सामग्री को डिवाइस नहीं खोल सकता.</translation> -<translation id="5275558766013849309">टैब, हाल ही के ऐप्स के साथ रहेंगे.</translation> <translation id="528192093759286357">पूर्ण स्क्रीन से बाहर निकलने के लिए ऊपर से खींचें और वापस जाएं स्पर्श करें.</translation> <translation id="5284584623296338184">आपके बुकमार्क, इतिहास, पासवर्ड और अन्य सेटिंग में किए गए बदलाव अब आपके Google खाते में समन्वयित नहीं किए जाएंगे. हालांकि, आपका मौजूदा डेटा आपके Google खाते में संग्रहीत रहेगा.</translation> <translation id="5301954838959518834">ठीक है, समझ गया/गई</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">सेटअप प्रगति में है…</translation> <translation id="6112702117600201073">पृष्ठ रीफ्रेश किया जा रहा है</translation> <translation id="6127379762771434464">आइटम निकाला गया</translation> -<translation id="6134870457258083164">आपका डिवाइस नहीं दिखाई दे रहा है? <ph name="BEGIN_LINK1" />सहायता प्राप्त करें<ph name="END_LINK1" /> या <ph name="BEGIN_LINK2" />पुन: खोजें<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">पृष्ठ को मोबाइल के अनुकूल बनाएं</translation> <translation id="6140912465461743537">देश/क्षेत्र</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> डेटा बचत</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">“<ph name="VIDEO_TITLE" />” रोका गया</translation> <translation id="6477460825583319731">अमान्य ईमेल पता</translation> <translation id="6482749332252372425">मेमोरी स्थान कम होने के कारण <ph name="FILE_NAME" /> डाउनलोड विफल रहा.</translation> -<translation id="6541922744811587456">Chrome बुकमार्क</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">बीम के लिए टैब को चुनें</translation> <translation id="6545017243486555795">सभी डेटा साफ़ करें</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">संसाधित हो रहा है</translation> <translation id="7243308994586599757">विकल्प स्क्रीन के नीचे उपलब्ध हैं</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" />, स्थानीय खोज परिणाम दिखाने के लिए आपके स्थान का उपयोग करता है</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />सहायता<ph name="END_LINK" /></translation> <translation id="7299721129597238157">बुकमार्क हटाएं</translation> <translation id="7301833672208172928">इतिहास समन्वयन चालू करें</translation> <translation id="7327835590071894791">आपका टैब अब पृष्ठभूमि में चला गया है.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">नहीं</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">साइट प्रतिबंधों के कारण वीडियो कास्ट करने में असमर्थ</translation> -<translation id="7408644312175185557">अपने फ़ोन की अवलोकन स्क्रीन पर हाल ही के अन्य ऐप्स के साथ अपने टैब देखें.</translation> <translation id="7423098979219808738">पहले पूछें</translation> <translation id="7437998757836447326">Chrome से प्रस्थान करें</translation> <translation id="7445411102860286510">साइटों को म्यूट किए गए वीडियो अपने आप चलाने की अनुमति दें (अनुशंसित)</translation> @@ -706,7 +691,7 @@ <translation id="8959122750345127698">मार्गदर्शक तक नहीं पहुंचा जा सकता: <ph name="URL" /></translation> <translation id="8979340629087822094">पिछला दिन</translation> <translation id="8981454092730389528">Google गतिविधि नियंत्रण</translation> -<translation id="8986494364107987395">Google को उपयोग के आंकड़े और क्रैश रिपोर्ट अपने आप भेजें</translation> +<translation id="8986494364107987395">उपयोग संबंधी आंकड़े और क्रैश रिपोर्ट अपने आप Google को भेजने की अनुमति दें</translation> <translation id="8987061207681586800">Chrome को अपना बनाएं</translation> <translation id="8998729206196772491">आप <ph name="MANAGED_DOMAIN" /> द्वारा प्रबंधित खाते में प्रवेश कर रहे हैं और उसके व्यवस्थापक को आपके Chrome डेटा पर नियंत्रण दे रहे हैं. आपका डेटा स्थायी रूप से इस खाते से संबद्ध हो जाएगा. Chrome से प्रस्थान करने से आपका डेटा इस डिवाइस से हट जाएगा, लेकिन वह आपके Google खाते में संग्रहीत रहेगा.</translation> <translation id="9019902583201351841">आपके अभिभावकों द्वारा प्रबंधित</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb index 4e63804..15dc8dd 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hr.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="hr"> -<translation id="1040144152982955218">Traženje uređaja… <ph name="BEGIN_LINK" />Potražite pomoć<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Upozorenje</translation> <translation id="10614374240317010">Zaporke se nikad ne spremaju</translation> <translation id="1061441684050139317">Chrome treba imati pristup mikrofonu da bi ga dijelio s ovom web-lokacijom.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Otkrijte web-stranice koje šalju objekti u blizini. Chrome prikuplja web-stranice koje su povezane s objektima oko vas, anonimno ih šalje Googleovoj usluzi kako bi pronašao one koje su vam najkorisnije, a zatim ih prikazuje. Da biste upotrebljavali Fizički web, morate uključiti Bluetooth i Lokaciju.</translation> -<translation id="1250508505624960884">Oznake iz preglednika Chrome Beta</translation> <translation id="1254090737195733114">Uvesti podatke?</translation> <translation id="1258753120186372309">Googleov doodle logotip: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Zaustavi</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Prihvaćene kartice</translation> <translation id="1966710179511230534">Ažurirajte pojedinosti prijave.</translation> <translation id="1974060860693918893">Napredno</translation> -<translation id="1984321224716884559">Oznake iz preglednika Chrome Dev</translation> <translation id="1984937141057606926">Dopušteno, osim treće strane</translation> <translation id="1994173015038366702">URL web-lokacije</translation> <translation id="2001120796168634316">Spremi povezanu stranicu</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Spremljene postavke na web-lokacijama možda će se izbrisati</translation> <translation id="2748463065602559597">Gledate sigurnu stranicu Google Chrome.</translation> <translation id="2762000892062317888">upravo sada</translation> -<translation id="2770465223704140727">Ukloni s popisa</translation> <translation id="2777555524387840389">Preostalo sekundi: <ph name="SECONDS" /></translation> -<translation id="278029852808208386">Nije pronađen nijedan Bluetooth uređaj. <ph name="BEGIN_LINK" />Pretražite ponovo<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Još 1 s</translation> <translation id="2811892995384186721">Ne vidite svoj uređaj? <ph name="BEGIN_LINK" />Potražite pomoć<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Dodirnite gumb Natrag da biste zatvorili prikaz na cijelom zaslonu.</translation> @@ -232,7 +227,6 @@ Da biste prilagodili pojam za pretraživanje, dugo pritisnite za odabir. Da biste precizirali pretraživanje, kliznite ploču prema gore do vrha i dodirnite okvir za pretraživanje.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Oznake iz preglednika Chrome Canary</translation> <translation id="3632295766818638029">Prikaži zaporku</translation> <translation id="363596933471559332">Automatski se prijavite na web-lokacije pomoću spremljenih vjerodajnica. Kada je ta značajka isključena, tražit će se potvrda prije svakog prijavljivanja na web-lokaciju.</translation> <translation id="3656115297268584622">Uključite lokaciju u <ph name="BEGIN_LINK" />Postavkama Androida<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nikad ne prevodi <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Mediji</translation> <translation id="4278390842282768270">Dopušteno</translation> -<translation id="4297410240212242334">Odvojite kartice i aplikacije</translation> <translation id="4307992518367153382">Osnove</translation> <translation id="4334294535648607276">Preuzimanje je dovršeno.</translation> <translation id="4351244548802238354">Zatvori dijaloški okvir</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Upravlja tvoj roditelj</translation> <translation id="4663756553811254707">Oznake su izbrisane (<ph name="NUMBER_OF_BOOKMARKS" />)</translation> <translation id="4665282149850138822">Web-lokacija <ph name="NAME" /> dodana je na početni zaslon</translation> -<translation id="4668044310199835006">Oznake iz preglednika Chrome for Work</translation> <translation id="4684427112815847243">Sinkroniziraj sve</translation> <translation id="4686372254213217147">Izvorna veličina</translation> -<translation id="4690286298542128877">Kartice će se premjestiti na izmjenjivač kartica u Chromeu.</translation> <translation id="4698413471314543145">Nedostaje ključna funkcija potrebna za izvođenje preglednika Chrome; instalacija Chromea nije potpuna ili Chrome nije kompatibilan s tom verzijom Androida.</translation> <translation id="4699172675775169585">Predmemorirane slike i datoteke</translation> <translation id="4710672574193412565">Dodajte Google račun putem stranice Računi u aplikaciji Postavke na uređaju.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Sinkronizacija je isključena</translation> <translation id="5131405117025179004">Uređivanje spremljenog računa</translation> <translation id="5138299137310274655">Jezik ove stranice je <ph name="SOURCE_LANGUAGE" />. Želite li je prevesti na <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Spojite kartice i aplikacije</translation> <translation id="515227803646670480">Brisanje pohranjenih podataka</translation> <translation id="5156656584247937086">Ovo je račun za dijete</translation> <translation id="5161254044473106830">Naslov je obavezan</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Odjava</translation> <translation id="5233638681132016545">Nova kartica</translation> <translation id="5271967389191913893">Uređaj ne može otvoriti sadržaj za preuzimanje.</translation> -<translation id="5275558766013849309">Kartice će biti navedene zajedno s nedavnim aplikacijama.</translation> <translation id="528192093759286357">Povucite od vrha zaslona i dodirnite gumb Natrag da biste zatvorili prikaz na cijelom zaslonu.</translation> <translation id="5284584623296338184">Promjene oznaka, povijesti, zaporki i drugih postavki više se neće sinkronizirati s vašim Google računom. No vaši postojeći podaci ostat će pohranjeni na vašem Google računu.</translation> <translation id="5301954838959518834">U redu, shvaćam</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Postavljanje je u tijeku…</translation> <translation id="6112702117600201073">Osvježavanje stranice</translation> <translation id="6127379762771434464">Stavka je uklonjena</translation> -<translation id="6134870457258083164">Ne vidite svoj uređaj? <ph name="BEGIN_LINK1" />Potražite pomoć<ph name="END_LINK1" /> ili <ph name="BEGIN_LINK2" />pretražite ponovo<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Prilagodite stranicu mobilnim uređajima</translation> <translation id="6140912465461743537">Država/regija</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> manji podatkovni promet</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Videozapis "<ph name="VIDEO_TITLE" />" je pauziran</translation> <translation id="6477460825583319731">Nevažeća e-adresa</translation> <translation id="6482749332252372425">Preuzimanje datoteke <ph name="FILE_NAME" /> nije uspjelo zbog nedostatka prostora.</translation> -<translation id="6541922744811587456">Oznake iz Chromea</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Odaberite karticu za emitiranje</translation> <translation id="6545017243486555795">Izbriši sve podatke</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Obrada</translation> <translation id="7243308994586599757">Opcije dostupne pri dnu zaslona</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> upotrebljava vašu lokaciju za prikazivanje lokalnih rezultata pretraživanja</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pomoć<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Izbriši oznaku</translation> <translation id="7301833672208172928">Uključi sinkronizaciju povijesti</translation> <translation id="7327835590071894791">Kartica je sada u pozadini.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Ne</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Videozapis nije moguće emitirati zbog ograničenja web-lokacije</translation> -<translation id="7408644312175185557">Prikažite kartice s ostalim nedavnim aplikacijama na zaslonu Pregled na telefonu.</translation> <translation id="7423098979219808738">Prvo pitaj</translation> <translation id="7437998757836447326">Odjava s Chromea</translation> <translation id="7445411102860286510">Web-lokacije mogu automatski reproducirati zanemarene videozapise (preporučeno)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb index 79681c8f..d294fa2 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_hu.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="hu"> -<translation id="1040144152982955218">Eszközök keresése… <ph name="BEGIN_LINK" />Kérjen segítséget<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Figyelmeztetés</translation> <translation id="10614374240317010">Az alábbi oldalakról soha ne mentsen jelszavakat</translation> <translation id="1061441684050139317">A Chrome-nak rendelkeznie kell hozzáféréssel a mikrofonhoz, hogy megoszthassa ezzel a webhellyel.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Közeli objektumok által küldött weboldalak felfedezése. A Chrome összegyűjti az Ön közelében található objektumokhoz társított weboldalakat, névtelenül elküldi őket egy Google-szolgáltatásnak, hogy megtalálja az Ön számára leghasznosabbakat, majd megjeleníti az oldalakat. A Fizikai web használatához be kell kapcsolnia a Bluetooth funkciót és a helyszolgáltatást.</translation> -<translation id="1250508505624960884">A Chrome bétaverziójának könyvjelzői</translation> <translation id="1254090737195733114">Importálja az adatokat?</translation> <translation id="1258753120186372309">Google ünnepi embléma: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Leállítás</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Elfogadott kártyák</translation> <translation id="1966710179511230534">Kérjük, frissítse bejelentkezési adatait.</translation> <translation id="1974060860693918893">Speciális</translation> -<translation id="1984321224716884559">Chrome Dev-könyvjelzők</translation> <translation id="1984937141057606926">Engedélyezve, kivéve a harmadik felektől származó cookie-kat</translation> <translation id="1994173015038366702">Webhely URL-je</translation> <translation id="2001120796168634316">Linkelt oldal mentése későbbre</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">A webhelyeken megadott beállítások is törlődhetnek</translation> <translation id="2748463065602559597">Ön egy biztonságos Google Chrome-oldalt lát.</translation> <translation id="2762000892062317888">éppen most</translation> -<translation id="2770465223704140727">Eltávolítás a listából</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> másodperc van hátra</translation> -<translation id="278029852808208386">Nem találhatók Bluetooth-eszközök. <ph name="BEGIN_LINK" />Újbóli keresés<ph name="END_LINK" /></translation> <translation id="2781151931089541271">1 másodperc van hátra</translation> <translation id="2811892995384186721">Nem látja eszközét? <ph name="BEGIN_LINK" />Kérjen segítséget<ph name="END_LINK" />.</translation> <translation id="2836148919159985482">A teljes képernyős megjelenítésből való kilépéshez koppintson a vissza gombra.</translation> @@ -232,7 +227,6 @@ A keresési kifejezés módosításához hosszú nyomva tartással hajthat végre kiválasztást. A keresés finomításához csúsztassa a panelt teljesen fel, majd érintse meg a keresőmezőt.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Chrome Canary-könyvjelzők</translation> <translation id="3632295766818638029">Jelszó megjelenítése</translation> <translation id="363596933471559332">Automatikus bejelentkezés webhelyekre a tárolt hitelesítő adatokkal. Ha ez a funkció ki van kapcsolva, mindig meg kell adnia hitelesítő adatait, amikor egy webhelyre szeretne bejelentkezni.</translation> <translation id="3656115297268584622">Kapcsolja be a helyszolgáltatást az <ph name="BEGIN_LINK" />Android-beállításokban<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Soha ne fordítsa le a(z) <ph name="LANGUAGE" /> nyelvű szöveget</translation> <translation id="4275663329226226506">Média</translation> <translation id="4278390842282768270">Engedélyezve</translation> -<translation id="4297410240212242334">Lapok és alkalmazások elkülönítése</translation> <translation id="4307992518367153382">Alapok</translation> <translation id="4334294535648607276">A letöltés befejeződött.</translation> <translation id="4351244548802238354">Párbeszédablak bezárása</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">A szülő kezeli</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> könyvjelző törölve</translation> <translation id="4665282149850138822">A(z) <ph name="NAME" /> felkerült a kezdőképernyőre</translation> -<translation id="4668044310199835006">Chrome for Work-könyvjelzők</translation> <translation id="4684427112815847243">Minden szinkronizálása</translation> <translation id="4686372254213217147">Eredeti méret</translation> -<translation id="4690286298542128877">A lapok a Chrome-on belüli lapváltóba kerülnek.</translation> <translation id="4698413471314543145">A Chrome futtatásához szükséges kritikus funkció hiányzik: vagy nem fejezte be a Chrome telepítését, vagy a Chrome nem kompatibilis az Android ezen verziójával.</translation> <translation id="4699172675775169585">A gyorsítótárban szereplő képek és fájlok</translation> <translation id="4710672574193412565">Adjon meg egy Google-fiókot eszköze Beállítások alkalmazásának Fiókok oldalán.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Szinkronizálás kikapcsolva</translation> <translation id="5131405117025179004">A mentett fiók módosítása</translation> <translation id="5138299137310274655">Ez az oldal <ph name="SOURCE_LANGUAGE" /> nyelven van. Lefordítja <ph name="TARGET_LANGUAGE" /> nyelvre?</translation> -<translation id="5150703642582475397">Lapok és alkalmazások egyesítése</translation> <translation id="515227803646670480">Tárolt adatok törlése</translation> <translation id="5156656584247937086">Ez egy gyermek fiókja</translation> <translation id="5161254044473106830">Cím megadása kötelező</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Kijelentkezés</translation> <translation id="5233638681132016545">Új lap</translation> <translation id="5271967389191913893">Az eszköz nem tudja megnyitni a letölteni kívánt tartalmat.</translation> -<translation id="5275558766013849309">A lapok együtt fognak szerepelni a legutóbbi alkalmazásokkal.</translation> <translation id="528192093759286357">A teljes képernyős megjelenítésből való kilépéshez húzza le felülről, majd koppintson a vissza gombra.</translation> <translation id="5284584623296338184">Könyvjelzői, előzményei, jelszavai és más beállításai a továbbiakban már nem lesznek szinkronizálva Google-fiókjával. Meglévő adatainak tárolása azonban továbbra is megmarad Google-fiókjában.</translation> <translation id="5301954838959518834">Rendben, értem</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">A telepítés folyamatban...</translation> <translation id="6112702117600201073">Oldal frissítése</translation> <translation id="6127379762771434464">Elem eltávolítva</translation> -<translation id="6134870457258083164">Nem látja eszközét? <ph name="BEGIN_LINK1" />Kérjen segítséget<ph name="END_LINK1" />, vagy <ph name="BEGIN_LINK2" />végezzen új keresést<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Az oldal mobilbaráttá alakítása</translation> <translation id="6140912465461743537">Ország/régió</translation> <translation id="6159335304067198720"><ph name="PERCENT" />-os adatmegtakarítás</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">„<ph name="VIDEO_TITLE" />” szüneteltetve</translation> <translation id="6477460825583319731">Érvénytelen e-mail-cím</translation> <translation id="6482749332252372425">A következő fájl letöltése tárhelyhiány miatt nem sikerült: <ph name="FILE_NAME" />.</translation> -<translation id="6541922744811587456">Chrome-könyvjelzők</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Válassza ki a sugározni kívánt lapot</translation> <translation id="6545017243486555795">Összes adat törlése</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Feldolgozás alatt</translation> <translation id="7243308994586599757">A beállítások a képernyő alsó részén találhatók</translation> <translation id="7244362611678346589">A(z) <ph name="SEARCH_ENGINE_URL" /> az Ön tartózkodási helye alapján jelenít meg helyi keresési eredményeket</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Súgó<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Könyvjelző törlése</translation> <translation id="7301833672208172928">Az előzmények szinkronizálásának bekapcsolása</translation> <translation id="7327835590071894791">A lap most a háttérben van.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nem</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">A webhely korlátozásai miatt nem lehet videót átküldeni</translation> -<translation id="7408644312175185557">Telefonja Áttekintés képernyőjén a lapokat láthatja a legutóbbi alkalmazásokkal együtt.</translation> <translation id="7423098979219808738">Kérdezzen rá</translation> <translation id="7437998757836447326">Kijelentkezés a Chrome-ból</translation> <translation id="7445411102860286510">Lehetővé teszi a webhelyek számára a némított videók automatikus lejátszását (ajánlott)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb index 212d5dc4..cccb1ff 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_id.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_id.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="id"> -<translation id="1040144152982955218">Mencari perangkat… <ph name="BEGIN_LINK" />dapatkan bantuan<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Peringatan</translation> <translation id="10614374240317010">Jangan pernah disimpan</translation> <translation id="1061441684050139317">Chrome memerlukan akses mikrofon untuk berbagi dengan situs ini.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Temukan laman web yang dikirim oleh objek di sekitar. Chrome mengumpulkan laman web yang terkait dengan objek di sekitar Anda, mengirimkannya secara anonim ke layanan Google untuk menemukan laman web yang paling bermanfaat untuk Anda, kemudian menampilkan laman web tersebut. Anda harus mengaktifkan Bluetooth dan Lokasi agar dapat menggunakan Web Fisik.</translation> -<translation id="1250508505624960884">Bookmark Chrome Beta</translation> <translation id="1254090737195733114">Impor data?</translation> <translation id="1258753120186372309">Google doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Berhenti</translation> @@ -51,7 +49,7 @@ <translation id="1546112724822176246">Tidak melihat perangkat Anda? <ph name="BEGIN_LINK" />Dapatkan bantuan<ph name="END_LINK" />.</translation> <translation id="1549000191223877751">Beralih ke jendela lain</translation> <translation id="1553358976309200471">Perbarui browser Chrome</translation> -<translation id="1571304935088121812">Menyalin nama pengguna</translation> +<translation id="1571304935088121812">Salin nama pengguna</translation> <translation id="1612196535745283361">Chrome memerlukan akses lokasi untuk memindai perangkat. Akses lokasi <ph name="BEGIN_LINK" />dinonaktifkan untuk perangkat ini<ph name="END_LINK" />.</translation> <translation id="1620510694547887537">Kamera</translation> <translation id="1623104350909869708">Cegah dialog lain dari laman ini.</translation> @@ -88,12 +86,11 @@ <translation id="1946821392246652573">Kartu diterima</translation> <translation id="1966710179511230534">Perbarui detail ID masuk Anda.</translation> <translation id="1974060860693918893">Lanjutan</translation> -<translation id="1984321224716884559">Bookmark Chrome Dev</translation> <translation id="1984937141057606926">Diizinkan, kecuali pihak ketiga</translation> <translation id="1994173015038366702">URL situs</translation> <translation id="2001120796168634316">Simpan laman tautan untuk nanti</translation> <translation id="200669432486043882">Ganti file</translation> -<translation id="2020525020270327736">Menyalin situs</translation> +<translation id="2020525020270327736">Salin situs</translation> <translation id="2038563949887743358">Aktifkan Ubah situs desktop</translation> <translation id="2073235970478114994">Muat gambar</translation> <translation id="2079545284768500474">Batalkan</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Preferensi yang disimpan di situs mungkin terhapus</translation> <translation id="2748463065602559597">Anda sedang melihat laman Google Chrome yang aman.</translation> <translation id="2762000892062317888">baru saja</translation> -<translation id="2770465223704140727">Hapus dari daftar</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> detik lagi</translation> -<translation id="278029852808208386">Tidak ditemukan perangkat bluetooth. <ph name="BEGIN_LINK" />Telusuri lagi<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 detik lagi</translation> <translation id="2811892995384186721">Tidak melihat perangkat? <ph name="BEGIN_LINK" />Dapatkan bantuan<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Ketuk tombol kembali untuk keluar dari mode layar penuh.</translation> @@ -232,8 +227,7 @@ Untuk menyesuaikan istilah penelusuran, tekan lama untuk memilih. Untuk menyaring penelusuran, geser panel ke atas kemudian sentuh kotak telusur.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Bookmark Chrome Canary</translation> -<translation id="3632295766818638029">Menampilkan sandi</translation> +<translation id="3632295766818638029">Tampilkan sandi</translation> <translation id="363596933471559332">Otomatis masuk ke situs web menggunakan kredensial yang tersimpan. Saat fitur dinonaktifkan, Anda akan diminta untuk memverifikasi setiap kali hendak masuk ke situs web.</translation> <translation id="3656115297268584622">Aktifkan lokasi di <ph name="BEGIN_LINK" />Setelan Android<ph name="END_LINK" />.</translation> <translation id="3661699943263275414">Situs web pihak ketiga dapat menyimpan dan membaca data cookie</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Jangan pernah terjemahkan bahasa <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Diizinkan</translation> -<translation id="4297410240212242334">Pisahkan tab dan aplikasi</translation> <translation id="4307992518367153382">Dasar-Dasar</translation> <translation id="4334294535648607276">Unduhan selesai.</translation> <translation id="4351244548802238354">Tutup dialog</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Dikelola oleh orang tua Anda</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> bookmark dihapus</translation> <translation id="4665282149850138822"><ph name="NAME" /> telah ditambahkan ke layar Utama</translation> -<translation id="4668044310199835006">Bookmark Work Chrome</translation> <translation id="4684427112815847243">Sinkronkan semua</translation> <translation id="4686372254213217147">Ukuran asli</translation> -<translation id="4690286298542128877">Tab akan dipindahkan ke pengganti tab di dalam Chrome.</translation> <translation id="4698413471314543145">Fungsi penting yang diperlukan untuk menjalankan Chrome tidak ada; bisa jadi karena pemasangan Chrome Anda tidak lengkap, atau tidak kompatibel dengan versi Android ini.</translation> <translation id="4699172675775169585">File dan gambar yang disimpan dalam cache</translation> <translation id="4710672574193412565">Tambahkan Akun Google dari laman Akun di aplikasi Setelan perangkat.</translation> @@ -352,9 +343,8 @@ <translation id="5107381076085091558">Unduhan dijeda.</translation> <translation id="5118713593561876160">Minat</translation> <translation id="5127805178023152808">Sinkronisasi nonaktif</translation> -<translation id="5131405117025179004">Mengedit akun tersimpan</translation> +<translation id="5131405117025179004">Edit akun tersimpan</translation> <translation id="5138299137310274655">Laman ini berbahasa <ph name="SOURCE_LANGUAGE" />. Terjemahkan ke <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Gabungkan tab dan aplikasi</translation> <translation id="515227803646670480">Hapus data tersimpan</translation> <translation id="5156656584247937086">Ini akun anak</translation> <translation id="5161254044473106830">Perlu judul</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Keluar</translation> <translation id="5233638681132016545">Tab baru</translation> <translation id="5271967389191913893">Perangkat tidak dapat membuka konten untuk diunduh.</translation> -<translation id="5275558766013849309">Tab akan ditampilkan dengan aplikasi terkini.</translation> <translation id="528192093759286357">Seret dari atas dan ketuk tombol kembali untuk keluar dari mode layar penuh.</translation> <translation id="5284584623296338184">Perubahan pada bookmark, riwayat, sandi, dan setelan lainnya tidak akan disinkronkan lagi dengan Akun Google Anda. Namun, data yang sudah ada akan tetap disimpan di akun Google Anda.</translation> <translation id="5301954838959518834">Oke, paham</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Penyiapan sedang berlangsung...</translation> <translation id="6112702117600201073">Menyegarkan laman</translation> <translation id="6127379762771434464">Item dihapus</translation> -<translation id="6134870457258083164">Tidak melihat perangkat Anda? <ph name="BEGIN_LINK1" />Dapatkan bantuan<ph name="END_LINK1" /> atau <ph name="BEGIN_LINK2" />telusuri lagi<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Buat laman mobile-friendly</translation> <translation id="6140912465461743537">Negara/Wilayah</translation> <translation id="6159335304067198720">Penghematan data <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">“<ph name="VIDEO_TITLE" />” dijeda</translation> <translation id="6477460825583319731">Alamat email tidak valid</translation> <translation id="6482749332252372425">Unduhan <ph name="FILE_NAME" /> gagal karena ruang penyimpanan tidak cukup.</translation> -<translation id="6541922744811587456">Bookmark Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Pilih tab untuk dipancarkan</translation> <translation id="6545017243486555795">Hapus Semua Data</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Dalam proses</translation> <translation id="7243308994586599757">Opsi terdapat di dekat bagian bawah layar</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> menggunakan lokasi Anda untuk menampilkan hasil penelusuran lokal</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Bantuan<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Hapus bookmark</translation> <translation id="7301833672208172928">Aktifkan sinkronisasi riwayat</translation> <translation id="7327835590071894791">Tab Anda kini berjalan di latar belakang.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Tidak</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Tidak dapat mentransmisi video karena pembatasan situs</translation> -<translation id="7408644312175185557">Lihat tab Chrome dan aplikasi lainnya di layar Tampilan perangkat.</translation> <translation id="7423098979219808738">Tanyakan terlebih dahulu</translation> <translation id="7437998757836447326">Keluar dari Chrome</translation> <translation id="7445411102860286510">Izinkan situs untuk otomatis memutar video yang dibisukan (disarankan)</translation> @@ -657,7 +642,7 @@ <translation id="8413126021676339697">Tampilkan riwayat lengkap</translation> <translation id="8428213095426709021">Setelan</translation> <translation id="8433057134996913067">Tindakan ini akan mengeluarkan Anda dari sebagian besar situs web.</translation> -<translation id="8447861592752582886">Mencabut izin perangkat</translation> +<translation id="8447861592752582886">Cabut izin perangkat</translation> <translation id="8481940801237642152">Sambungan Anda ke situs ini bersifat pribadi, namun seseorang yang berada dalam jaringan Anda mungkin dapat mengubah tampilan laman.</translation> <translation id="8493948351860045254">Kosongkan ruang</translation> <translation id="8497726226069778601">Belum ada yang dapat dilihat di sini…</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb index acb82f5c..ef09e90 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_it.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_it.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="it"> -<translation id="1040144152982955218">Ricerca di dispositivi… <ph name="BEGIN_LINK" />Richiedi assistenza<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Avviso</translation> <translation id="10614374240317010">Mai salvate</translation> <translation id="1061441684050139317">Chrome deve avere accesso al microfono per condividerla con questo sito.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Consente di trovare le pagine web inviate da oggetti vicini. Chrome raccoglie le pagine web associate agli oggetti nelle vicinanze, le invia in forma anonima a un servizio di Google per individuare le pagine più utili a te, quindi le visualizza. Per poter utilizzare il Physical Web, devi attivare il Bluetooth e la geolocalizzazione.</translation> -<translation id="1250508505624960884">Preferiti di Chrome Beta</translation> <translation id="1254090737195733114">Importare i dati?</translation> <translation id="1258753120186372309">Doodle di Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Interrompi</translation> @@ -76,7 +74,7 @@ <translation id="1825719650605518411">Esperienza prima esecuzione</translation> <translation id="1826516787628120939">Verifica in corso...</translation> <translation id="1829244130665387512">Trova nella pagina</translation> -<translation id="1832521218263067499">Incidenti di sicurezza</translation> +<translation id="1832521218263067499">Problemi di sicurezza</translation> <translation id="1842969606798536927">Paga</translation> <translation id="1853692000353488670">Nuova scheda in incognito</translation> <translation id="1871284979644508959">Campo obbligatorio</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Carte accettate</translation> <translation id="1966710179511230534">Aggiorna i dati di accesso.</translation> <translation id="1974060860693918893">Avanzate</translation> -<translation id="1984321224716884559">Preferiti di Chrome Dev</translation> <translation id="1984937141057606926">Consentiti, tranne i cookie di terze parti</translation> <translation id="1994173015038366702">URL sito</translation> <translation id="2001120796168634316">Salva pagina collegata per dopo</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Le preferenze salvate sui siti potrebbero essere eliminate.</translation> <translation id="2748463065602559597">È visualizzata una pagina sicura di Google Chrome.</translation> <translation id="2762000892062317888">in questo istante</translation> -<translation id="2770465223704140727">Rimuovi dall'elenco</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sec rimanenti</translation> -<translation id="278029852808208386">Nessun dispositivo Bluetooth trovato. <ph name="BEGIN_LINK" />Esegui di nuovo la ricerca<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 sec rimanente</translation> <translation id="2811892995384186721">Non trovi il tuo dispositivo? <ph name="BEGIN_LINK" />Ricevi assistenza<ph name="END_LINK" />.</translation> <translation id="2836148919159985482">Tocca il pulsante Indietro per uscire dalla modalità a schermo intero.</translation> @@ -232,7 +227,6 @@ Per modificare il termine di ricerca, premi a lungo per selezionarlo. Per perfezionare la ricerca, fai scorrere completamente il riquadro verso l'alto e tocca la casella di ricerca.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Preferiti di Chrome Canary</translation> <translation id="3632295766818638029">Visualizza password</translation> <translation id="363596933471559332">Accedi automaticamente ai siti web utilizzando credenziali memorizzate. Quando la funzione non è attiva, ti viene chiesta la verifica prima di ogni accesso ai siti web.</translation> <translation id="3656115297268584622">Attiva la geolocalizzazione nelle <ph name="BEGIN_LINK" />Impostazioni Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Non tradurre mai: <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Multimediali</translation> <translation id="4278390842282768270">Consentiti</translation> -<translation id="4297410240212242334">Separa schede e app</translation> <translation id="4307992518367153382">Impostazioni di base</translation> <translation id="4334294535648607276">Download completato.</translation> <translation id="4351244548802238354">Chiudi finestra di dialogo</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Gestito da un genitore</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> Preferiti eliminati</translation> <translation id="4665282149850138822">Il sito <ph name="NAME" /> è stato aggiunto alla schermata Home</translation> -<translation id="4668044310199835006">Preferiti di Chrome for Work</translation> <translation id="4684427112815847243">Sincronizza tutto</translation> <translation id="4686372254213217147">Dimensione originale</translation> -<translation id="4690286298542128877">Le schede verranno spostate in un selettore di schede all'interno di Chrome.</translation> <translation id="4698413471314543145">Manca una funzionalità fondamentale per l'esecuzione di Chrome; l'installazione di Chrome è incompleta oppure non è compatibile con la versione di Android installata.</translation> <translation id="4699172675775169585">Immagini e file memorizzati nella cache</translation> <translation id="4710672574193412565">Aggiungi un account Google dalla pagina Account nell'app Impostazioni del dispositivo.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">La sincronizzazione è disattivata</translation> <translation id="5131405117025179004">Modifica l'account salvato</translation> <translation id="5138299137310274655">Questa pagina è in <ph name="SOURCE_LANGUAGE" />. Tradurla in <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Unisci schede e app</translation> <translation id="515227803646670480">Cancella dati memorizzati</translation> <translation id="5156656584247937086">Questo è l'account di un bambino</translation> <translation id="5161254044473106830">Titolo obbligatorio</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Esci</translation> <translation id="5233638681132016545">Nuova scheda</translation> <translation id="5271967389191913893">Non è possibile aprire i contenuti da scaricare sul dispositivo.</translation> -<translation id="5275558766013849309">Le schede saranno insieme alle app recenti.</translation> <translation id="528192093759286357">Trascina dall'alto e tocca il pulsante Indietro per uscire dalla modalità a schermo intero.</translation> <translation id="5284584623296338184">Le modifiche ai preferiti, alla cronologia, alle password e ad altre impostazioni non verranno più sincronizzate con il tuo account Google. Tuttavia, i dati esistenti rimarranno memorizzati.</translation> <translation id="5301954838959518834">OK</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Configurazione in corso…</translation> <translation id="6112702117600201073">Aggiornamento della pagina in corso</translation> <translation id="6127379762771434464">Elemento rimosso</translation> -<translation id="6134870457258083164">Non trovi il tuo dispositivo? <ph name="BEGIN_LINK1" />Richiedi assistenza<ph name="END_LINK1" /> o <ph name="BEGIN_LINK2" />esegui di nuovo la ricerca<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Ottimizza la pagina per i dispositivi mobili</translation> <translation id="6140912465461743537">Paese/regione</translation> <translation id="6159335304067198720">Riduzioni dei dati: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">"<ph name="VIDEO_TITLE" />" in pausa</translation> <translation id="6477460825583319731">Indirizzo email non valido</translation> <translation id="6482749332252372425">Download di <ph name="FILE_NAME" /> non riuscito a causa dello spazio di archiviazione insufficiente.</translation> -<translation id="6541922744811587456">Preferiti di Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Seleziona una scheda da trasmettere</translation> <translation id="6545017243486555795">Cancella tutti i dati</translation> @@ -527,7 +514,7 @@ <translation id="6978479750597523876">Reimposta impostazioni traduzione</translation> <translation id="6981982820502123353">Accessibilità</translation> <translation id="6990079615885386641">Scarica l'app dal Google Play Store: <ph name="APP_ACTION" /></translation> -<translation id="699220179437400583">Segnala automaticamente a Google dettagli dei possibili incidenti di sicurezza</translation> +<translation id="699220179437400583">Segnala automaticamente a Google i dettagli dei possibili problemi di sicurezza</translation> <translation id="6992289844737586249">Chiedi conferma prima di consentire ai siti di utilizzare il microfono (opzione consigliata)</translation> <translation id="6999892069268112724">Conferma account Google</translation> <translation id="7021515813996758557"><ph name="FILE_NAME" /> scaricato</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Elaborazione in corso</translation> <translation id="7243308994586599757">Opzioni disponibili nella parte inferiore dello schermo</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> utilizza la tua posizione per mostrare i risultati della ricerca locale.</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Guida<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Elimina preferito</translation> <translation id="7301833672208172928">Attiva sincronizzazione della cronologia</translation> <translation id="7327835590071894791">La scheda è ora in secondo piano.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">No</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Impossibile trasmettere il video a causa delle restrizioni del sito</translation> -<translation id="7408644312175185557">Visualizza le tue schede insieme ad altre app recenti nella schermata Panoramica del telefono.</translation> <translation id="7423098979219808738">Chiedi prima</translation> <translation id="7437998757836447326">Esci da Chrome</translation> <translation id="7445411102860286510">Consenti ai siti di riprodurre automaticamente i video con audio disattivato (opzione consigliata)</translation> @@ -706,7 +691,7 @@ <translation id="8959122750345127698">Navigazione inaccessibile: <ph name="URL" /></translation> <translation id="8979340629087822094">ultimo giorno</translation> <translation id="8981454092730389528">Gestione attività di Google</translation> -<translation id="8986494364107987395">Invia automaticamente a Google statistiche sull'utilizzo e segnalazioni sugli arresti anomali</translation> +<translation id="8986494364107987395">Invia automaticamente a Google statistiche sull'utilizzo e rapporti sugli arresti anomali</translation> <translation id="8987061207681586800">Personalizza Chrome</translation> <translation id="8998729206196772491">Stai per eseguire l'accesso con un account gestito da <ph name="MANAGED_DOMAIN" /> e consentire al relativo amministratore di avere il controllo dei tuoi dati di Chrome. I tuoi dati verranno associati definitivamente a questo account. Se esci da Chrome, i dati verranno eliminati da questo dispositivo, ma rimarranno memorizzati nel tuo account Google.</translation> <translation id="9019902583201351841">Gestito dai genitori</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb index 6c159ac..6a76d87 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_iw.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="iw"> -<translation id="1040144152982955218">מחפש מכשירים… <ph name="BEGIN_LINK" />קבל עזרה<ph name="END_LINK" /></translation> <translation id="1056898198331236512">אזהרה</translation> <translation id="10614374240317010">פריטים שאף פעם לא נשמרו</translation> <translation id="1061441684050139317">Chrome זקוק לגישה למיקרופון כדי לשתף אותו עם האתר הזה.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">תוכל לגלות דפי אינטרנט שנשלחו על ידי אובייקטים בקרבת מקום. Chrome אוסף דפי אינטרנט המשויכים לאובייקטים בסביבה, ושולח אותם בצורה אנונימית לשירות של Google כדי למצוא את הדפים המועילים ביותר עבורך. לאחר מכן הוא מציג אותם. כדי להשתמש באינטרנט הווירטופיזי, עליך להפעיל את Bluetooth ואת שירותי המיקום.</translation> -<translation id="1250508505624960884">סימניות של Chrome בגירסת ביטא</translation> <translation id="1254090737195733114">האם לייבא נתונים?</translation> <translation id="1258753120186372309">דודל של Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">הפסק</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">כרטיסים מורשים</translation> <translation id="1966710179511230534">עדכן את פרטי הכניסה שלך.</translation> <translation id="1974060860693918893">מתקדם</translation> -<translation id="1984321224716884559">סימניות של Chrome בגירסת הפיתוח</translation> <translation id="1984937141057606926">מותר, מלבד צד שלישי</translation> <translation id="1994173015038366702">כתובת אתר</translation> <translation id="2001120796168634316">שמור דף מקושר למועד מאוחר יותר</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">ייתכן שהעדפות ששמרת לאתרים יימחקו</translation> <translation id="2748463065602559597">אתה מציג דף Google Chrome מאובטח.</translation> <translation id="2762000892062317888">ברגע זה</translation> -<translation id="2770465223704140727">הסר מהרשימה</translation> <translation id="2777555524387840389">נותרו <ph name="SECONDS" /> שניות</translation> -<translation id="278029852808208386">לא נמצאו מכשירי Bluetooth. <ph name="BEGIN_LINK" />חפש שוב<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">נותרה שניה אחת</translation> <translation id="2811892995384186721">אינך רואה את המכשיר? <ph name="BEGIN_LINK" />קבל עזרה<ph name="END_LINK" /></translation> <translation id="2836148919159985482">כדי לצאת ממסך מלא, גע בלחצן 'הקודם'.</translation> @@ -232,13 +227,12 @@ כדי לשנות את מונח החיפוש, גע נגיעה ארוכה במונח כדי לבחור בו. כדי לצמצם את החיפוש, הסט את החלונית עד למעלה וגע בתיבת החיפוש.</translation> <translation id="3616113530831147358">אודיו</translation> -<translation id="3623048332793834136">סימניות של Chrome בגירסה הניסיונית</translation> <translation id="3632295766818638029">חשוף סיסמה</translation> <translation id="363596933471559332">היכנס באופן אוטומטי לאתרים באמצעות פרטי כניסה מאוחסנים. כשתכונה זו כבויה, תתבקש לבצע אימות לפני כל כניסה לאתר.</translation> <translation id="3656115297268584622">הפעל מיקום ב<ph name="BEGIN_LINK" />הגדרות Android<ph name="END_LINK" />.</translation> <translation id="3661699943263275414">אתרים של צד שלישי יוכלו לשמור ולקרוא נתונים של קובצי Cookie</translation> <translation id="3672452749423051839">הצעות לשגיאת ניווט</translation> -<translation id="3706658020782046159">בחר כתובת למשלוח כדי לבדוק את אמצעי המשלוח והדרישות למשלוח.</translation> +<translation id="3706658020782046159">בחר כתובת למשלוח כדי לבדוק את אמצעי המשלוח ואת הדרישות למשלוח.</translation> <translation id="3716158070938632480">יש דפי אינטרנט בסביבה הקרובה</translation> <translation id="3732088672634061408">לא ניתן היה לאחזר את תחומי העניין.</translation> <translation id="3738139272394829648">גע כדי לחפש</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">אל תתרגם <ph name="LANGUAGE" /> אף פעם</translation> <translation id="4275663329226226506">מדיה</translation> <translation id="4278390842282768270">מותר</translation> -<translation id="4297410240212242334">הפרדה בין כרטיסיות ואפליקציות</translation> <translation id="4307992518367153382">היסודות</translation> <translation id="4334294535648607276">ההורדה הושלמה.</translation> <translation id="4351244548802238354">סגור את תיבת הדו-שיח</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">מנוהל על-ידי ההורה שלך</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> סימניות נמחקו</translation> <translation id="4665282149850138822">האתר <ph name="NAME" /> נוסף למסך דף הבית שלך</translation> -<translation id="4668044310199835006">סימניות של Work Chrome</translation> <translation id="4684427112815847243">סנכרן הכל</translation> <translation id="4686372254213217147">גודל מקורי</translation> -<translation id="4690286298542128877">כרטיסיות יועברו למחליף כרטיסיות בתוך Chrome.</translation> <translation id="4698413471314543145">חסרה פונקציונליות קריטית הנדרשת להפעלת Chrome. התקנת Chrome אינה מלאה, או שאינה תואמת לגרסה הזו של Android.</translation> <translation id="4699172675775169585">תמונות וקבצים בזכרון השמור</translation> <translation id="4710672574193412565">הוסף חשבון Google מהדף 'חשבונות' שבאפליקציית ההגדרות של המכשיר שלך.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">סנכרון כבוי</translation> <translation id="5131405117025179004">עריכת חשבון שמור</translation> <translation id="5138299137310274655">דף זה מוצג ב<ph name="SOURCE_LANGUAGE" />. האם לתרגם אותו ל<ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">מיזוג בין כרטיסיות ואפליקציות</translation> <translation id="515227803646670480">נקה נתונים מאוחסנים</translation> <translation id="5156656584247937086">זהו חשבון של ילד</translation> <translation id="5161254044473106830">יש להזין כותרת</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">יציאה</translation> <translation id="5233638681132016545">כרטיסייה חדשה</translation> <translation id="5271967389191913893">המכשיר לא מצליח לפתוח את התוכן להורדה.</translation> -<translation id="5275558766013849309">כרטיסיות יאוחסנו ביחד עם יישומים אחרונים.</translation> <translation id="528192093759286357">כדי לצאת ממסך מלא, גרור מלמעלה וגע בלחצן 'הקודם'.</translation> <translation id="5284584623296338184">שינויים בסימניות, בהיסטוריה, בסיסמאות ובהגדרות נוספות לא יסונכרנו עוד עם חשבון Google. עם זאת, הנתונים הקיימים עדיין יאוחסנו בחשבון Google שלך.</translation> <translation id="5301954838959518834">בסדר גמור, הבנתי</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">ההגדרה מתבצעת…</translation> <translation id="6112702117600201073">מרענן את הדף</translation> <translation id="6127379762771434464">הפריט הוסר</translation> -<translation id="6134870457258083164">אינך רואה את המכשיר? <ph name="BEGIN_LINK1" />קבל עזרה<ph name="END_LINK1" /> או <ph name="BEGIN_LINK2" />חפש שוב<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">הפוך את הדף לידידותי לנייד</translation> <translation id="6140912465461743537">ארץ/אזור</translation> <translation id="6159335304067198720">חיסכון בצריכת נתונים בשיעור של <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">"<ph name="VIDEO_TITLE" />" מושהה</translation> <translation id="6477460825583319731">כתובת אימייל לא חוקית</translation> <translation id="6482749332252372425">הורדת <ph name="FILE_NAME" /> נכשלה מאחר שחסר מקום אחסון.</translation> -<translation id="6541922744811587456">סימניות Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">בחר כרטיסייה להעברת התוכן שלה</translation> <translation id="6545017243486555795">נקה את כל הנתונים</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">מעבד</translation> <translation id="7243308994586599757">אפשרויות הזמינות באזור החלק התחתון של המסך</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> משתמש במיקום שלך כדי להציג תוצאות חיפוש מקומיות</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />עזרה<ph name="END_LINK" /></translation> <translation id="7299721129597238157">מחק סימניה</translation> <translation id="7301833672208172928">הפעל סינכרון היסטוריה</translation> <translation id="7327835590071894791">הכרטיסייה שלך פועלת עכשיו ברקע.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">לא</translation> <translation id="7400418766976504921">כתובת אתר</translation> <translation id="7400448254438078120">לא ניתן להעביר וידאו עקב הגבלות האתר</translation> -<translation id="7408644312175185557">במסך הסקירה של הטלפון יוצגו הכרטיסיות יחד עם האפליקציות האחרונות האחרות שבהן השתמשת.</translation> <translation id="7423098979219808738">בקש אישור</translation> <translation id="7437998757836447326">יציאה מ-Chrome</translation> <translation id="7445411102860286510">התר לאתרים להפעיל באופן אוטומטי סרטונים מושתקים (מומלץ)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb index 6c3018f2..21a27b304 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ja.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ja"> -<translation id="1040144152982955218">デバイスを検索しています… <ph name="BEGIN_LINK" />ヘルプ<ph name="END_LINK" /></translation> <translation id="1056898198331236512">警告</translation> <translation id="10614374240317010">未保存</translation> <translation id="1061441684050139317">このサイトとマイクを共有するには Chrome にマイクへのアクセスを許可する必要があります。</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">近くのオブジェクトから送信されているウェブページを検出します。Chrome はあなたの周囲のオブジェクトに関連付けられたウェブページを収集し、匿名でそのウェブページを Google サービスに送り、そこであなたに最も役立つと判断されたウェブページを表示します。 フィジカル ウェブを使用するには、Bluetooth と現在地機能をオンにする必要があります。</translation> -<translation id="1250508505624960884">Chrome ベータ版のブックマーク</translation> <translation id="1254090737195733114">データをインポートしますか?</translation> <translation id="1258753120186372309">Google Doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">中止</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">利用可能なカード</translation> <translation id="1966710179511230534">ログイン情報を更新してください。</translation> <translation id="1974060860693918893">詳細設定</translation> -<translation id="1984321224716884559">Chrome Dev のブックマーク</translation> <translation id="1984937141057606926">サードパーティを除いて許可する</translation> <translation id="1994173015038366702">サイトの URL</translation> <translation id="2001120796168634316">リンク先のページを保存しておく</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">サイトで保存した設定が削除されることがあります</translation> <translation id="2748463065602559597">Google Chrome の安全なページを表示しています。</translation> <translation id="2762000892062317888">たった今</translation> -<translation id="2770465223704140727">リストから削除</translation> <translation id="2777555524387840389">残り <ph name="SECONDS" /> 秒</translation> -<translation id="278029852808208386">Bluetooth デバイスが見つかりませんでした。<ph name="BEGIN_LINK" />もう一度検索してください<ph name="END_LINK" />。</translation> <translation id="2781151931089541271">残り 1 秒</translation> <translation id="2811892995384186721">お使いの端末が表示されない場合は、<ph name="BEGIN_LINK" />ヘルプ<ph name="END_LINK" />をご覧ください。</translation> <translation id="2836148919159985482">全画面表示を終了するには戻るボタンをタップします。</translation> @@ -232,7 +227,6 @@ 検索用語を押し続けるとその用語が選択され、選択範囲を調整できます。検索結果を絞り込むには、パネルを上にスライドして検索ボックスをタップします。</translation> <translation id="3616113530831147358">音声</translation> -<translation id="3623048332793834136">Chrome Canary のブックマーク</translation> <translation id="3632295766818638029">パスワードを表示</translation> <translation id="363596933471559332">保存されている認証情報を使用してウェブサイトに自動的にログインします。この機能がオフの場合は、ウェブサイトにログインするときに毎回確認を求められます。</translation> <translation id="3656115297268584622"><ph name="BEGIN_LINK" />Android 設定<ph name="END_LINK" />で位置情報サービスを有効にしてください。</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831"><ph name="LANGUAGE" />を翻訳しない</translation> <translation id="4275663329226226506">メディア</translation> <translation id="4278390842282768270">許可</translation> -<translation id="4297410240212242334">タブとアプリの分離</translation> <translation id="4307992518367153382">基本設定</translation> <translation id="4334294535648607276">ダウンロードが完了しました。</translation> <translation id="4351244548802238354">ダイアログを閉じる</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">保護者により管理されています</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> 件のブックマークを削除しました</translation> <translation id="4665282149850138822">「<ph name="NAME" />」がホーム画面に追加されました</translation> -<translation id="4668044310199835006">Work Chrome のブックマーク</translation> <translation id="4684427112815847243">すべてを同期する</translation> <translation id="4686372254213217147">元のサイズ</translation> -<translation id="4690286298542128877">タブは Chrome 内のタブ切り替えに表示されます。</translation> <translation id="4698413471314543145">Chrome の実行に必須の機能が見つかりません。Chrome のインストールが完了していないか、Chrome がこのバージョンの Android と互換性がないことが原因です。</translation> <translation id="4699172675775169585">キャッシュされた画像とファイル</translation> <translation id="4710672574193412565">端末の設定アプリのアカウント ページで Google アカウントを追加してください。</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">同期は無効です</translation> <translation id="5131405117025179004">保存されているアカウントの編集</translation> <translation id="5138299137310274655"><ph name="SOURCE_LANGUAGE" />のページです。<ph name="TARGET_LANGUAGE" />に翻訳しますか?</translation> -<translation id="5150703642582475397">タブとアプリの統合</translation> <translation id="515227803646670480">保存したデータの消去</translation> <translation id="5156656584247937086">これは子供向けのアカウントです</translation> <translation id="5161254044473106830">タイトルが必要です</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">ログアウト</translation> <translation id="5233638681132016545">新しいタブ</translation> <translation id="5271967389191913893">デバイスでダウンロード コンテンツを開くことができません。</translation> -<translation id="5275558766013849309">タブは最近使ったアプリと一緒に表示されます。</translation> <translation id="528192093759286357">全画面表示を終了するには、上からドラッグして、戻るボタンをタップします。</translation> <translation id="5284584623296338184">今後、ブックマーク、履歴、パスワードなどの設定への変更は Google アカウントに同期されません。ただし、既存のデータは Google アカウントに保存されたままとなります。</translation> <translation id="5301954838959518834">OK</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">設定しています...</translation> <translation id="6112702117600201073">ページを更新しています</translation> <translation id="6127379762771434464">アイテムを削除しました</translation> -<translation id="6134870457258083164">お使いの端末が表示されない場合は、<ph name="BEGIN_LINK1" />ヘルプ<ph name="END_LINK1" />をご覧になるか、<ph name="BEGIN_LINK2" />もう一度検索<ph name="END_LINK2" />してください。</translation> <translation id="6138140242378429169">ページをモバイル向け画面で表示</translation> <translation id="6140912465461743537">国 / 地域</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> のデータを削減</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">「<ph name="VIDEO_TITLE" />」を一時停止しました</translation> <translation id="6477460825583319731">無効なメールアドレスです</translation> <translation id="6482749332252372425">ストレージの空き容量が不足しているため、<ph name="FILE_NAME" /> をダウンロードできませんでした。</translation> -<translation id="6541922744811587456">Chrome のブックマーク</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">ビームするにはタブを選択してください</translation> <translation id="6545017243486555795">すべてのデータを消去</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">処理しています</translation> <translation id="7243308994586599757">画面の下の方にオプションがあります</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> では地域の検索結果を表示するためにユーザーの位置情報が使用されます</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />ヘルプ<ph name="END_LINK" /></translation> <translation id="7299721129597238157">ブックマークを削除</translation> <translation id="7301833672208172928">履歴の同期を有効にする</translation> <translation id="7327835590071894791">タブをバックグラウンドに保存しました。</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">いいえ</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">サイトの制限のため動画をキャストできません</translation> -<translation id="7408644312175185557">スマートフォンの [概要] 画面にタブと最近使ったアプリを表示します。</translation> <translation id="7423098979219808738">最初に確認する</translation> <translation id="7437998757836447326">Chromeからログアウト</translation> <translation id="7445411102860286510">ミュートされた動画の自動再生をサイトに許可する(推奨)</translation> @@ -706,7 +691,7 @@ <translation id="8959122750345127698"><ph name="URL" /> にアクセスできません</translation> <translation id="8979340629087822094">過去 1 日</translation> <translation id="8981454092730389528">Google アクティビティ管理</translation> -<translation id="8986494364107987395">使用統計データや障害レポートを自動的に Google に送信する</translation> +<translation id="8986494364107987395">使用統計データと障害レポートを Google に自動送信する</translation> <translation id="8987061207681586800">自分だけの Chrome を</translation> <translation id="8998729206196772491"><ph name="MANAGED_DOMAIN" /> で管理されているアカウントでログインして、Chrome データの管理を管理者に委ねようとしています。この操作を行うと、データはこのアカウントに恒久的に関連付けられます。Chrome からログアウトすると、データはこの端末から削除されますが、Google アカウントには残ります。</translation> <translation id="9019902583201351841">保護者により管理されています</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb index 9ae7d41..28ff1b5 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ko.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ko"> -<translation id="1040144152982955218">기기 검색 중… <ph name="BEGIN_LINK" />도움 받기<ph name="END_LINK" /></translation> <translation id="1056898198331236512">경고</translation> <translation id="10614374240317010">비밀번호를 저장하지 않은 사이트</translation> <translation id="1061441684050139317">이 사이트에 공유하려면 Chrome에 마이크 액세스 권한이 있어야 합니다.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">근처 사물에서 전송한 웹페이지를 탐색하세요. Chrome은 근처 사물과 관련된 웹페이지를 수집한 후 익명으로 Google 서비스로 전달하여 사용자에게 가장 유용한 항목을 검색하여 표시합니다. 피지컬 웹을 사용하려면 블루투스와 위치를 사용하도록 설정해야 합니다.</translation> -<translation id="1250508505624960884">Chrome 베타 북마크</translation> <translation id="1254090737195733114">데이터를 가져오시겠습니까?</translation> <translation id="1258753120186372309">Google 기념일 로고: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">중지</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">카드 사용 가능</translation> <translation id="1966710179511230534">로그인 세부정보를 업데이트하세요.</translation> <translation id="1974060860693918893">고급</translation> -<translation id="1984321224716884559">Chrome 개발자 북마크</translation> <translation id="1984937141057606926">타사 쿠키만 제외하고 허용</translation> <translation id="1994173015038366702">사이트 URL</translation> <translation id="2001120796168634316">링크된 페이지 저장</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">사이트에 저장된 환경설정이 삭제될 수 있습니다.</translation> <translation id="2748463065602559597">지금 안전한 Chrome 페이지를 보고 계십니다.</translation> <translation id="2762000892062317888">방금 전</translation> -<translation id="2770465223704140727">목록에서 삭제</translation> <translation id="2777555524387840389"><ph name="SECONDS" />초 남음</translation> -<translation id="278029852808208386">블루투스 기기를 찾을 수 없습니다. <ph name="BEGIN_LINK" />다시 검색하세요<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1초 남음</translation> <translation id="2811892995384186721">기기가 표시되지 않나요? <ph name="BEGIN_LINK" />도움 받기<ph name="END_LINK" /></translation> <translation id="2836148919159985482">전체화면을 종료하려면 뒤로 버튼을 터치하세요.</translation> @@ -232,13 +227,12 @@ 검색어를 조정하려면 길게 눌러 선택하세요. 검색을 세분화하려면 패널을 위로 끝까지 슬라이드하여 검색창을 터치합니다.</translation> <translation id="3616113530831147358">오디오</translation> -<translation id="3623048332793834136">Chrome Canary 북마크</translation> <translation id="3632295766818638029">비밀번호 공개</translation> <translation id="363596933471559332">저장된 사용자 인증 정보를 사용하여 자동으로 웹사이트에 로그인합니다. 이 기능이 꺼져 있는 경우에는 웹사이트에 로그인할 때마다 인증 요청 메시지가 표시됩니다.</translation> <translation id="3656115297268584622"><ph name="BEGIN_LINK" />Android 설정<ph name="END_LINK" />에서 위치를 사용 설정하세요.</translation> <translation id="3661699943263275414">타사 웹사이트에서 쿠키 데이터를 저장하고 읽을 수 있도록 허용</translation> <translation id="3672452749423051839">탐색 오류 시 추천사항 표시</translation> -<translation id="3706658020782046159">배송 방법 및 요구사항을 확인할 수 있도록 배송지 주소를 선택하세요.</translation> +<translation id="3706658020782046159">배송 방법과 요건을 확인할 수 있도록 배송지 주소를 선택하세요.</translation> <translation id="3716158070938632480">주변에 웹페이지 있음</translation> <translation id="3732088672634061408">관심분야를 검색하지 못했습니다.</translation> <translation id="3738139272394829648">터치하여 검색</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831"><ph name="LANGUAGE" /> 번역 안함</translation> <translation id="4275663329226226506">미디어</translation> <translation id="4278390842282768270">허용됨</translation> -<translation id="4297410240212242334">탭과 앱 따로 표시</translation> <translation id="4307992518367153382">기본설정</translation> <translation id="4334294535648607276">다운로드가 완료되었습니다.</translation> <translation id="4351244548802238354">대화상자 닫기</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">부모님이 관리합니다.</translation> <translation id="4663756553811254707">북마크 <ph name="NUMBER_OF_BOOKMARKS" />개 삭제됨</translation> <translation id="4665282149850138822"><ph name="NAME" />이(가) 메인 스크린에 추가됨</translation> -<translation id="4668044310199835006">Work Chrome 북마크</translation> <translation id="4684427112815847243">모두 동기화</translation> <translation id="4686372254213217147">원래 크기</translation> -<translation id="4690286298542128877">탭이 Chrome 내부의 탭 전환으로 이동합니다.</translation> <translation id="4698413471314543145">Chrome 실행에 필요한 중요한 기능이 없습니다. Chrome 설치가 제대로 완료되지 않았거나 사용 중인 Android 버전과 호환되지 않습니다.</translation> <translation id="4699172675775169585">캐시된 이미지 또는 파일</translation> <translation id="4710672574193412565">기기 설정 앱의 계정 페이지에서 Google 계정을 추가하세요.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">동기화 사용 안함</translation> <translation id="5131405117025179004">저장된 계정 수정</translation> <translation id="5138299137310274655">이 페이지는 <ph name="SOURCE_LANGUAGE" />로 되어 있습니다. <ph name="TARGET_LANGUAGE" />로 번역할까요?</translation> -<translation id="5150703642582475397">탭과 앱 함께 표시</translation> <translation id="515227803646670480">저장된 데이터 삭제</translation> <translation id="5156656584247937086">자녀 계정입니다.</translation> <translation id="5161254044473106830">제목이 필요합니다.</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">로그아웃</translation> <translation id="5233638681132016545">새 탭</translation> <translation id="5271967389191913893">기기에서 다운로드하려는 콘텐츠를 열 수 없습니다.</translation> -<translation id="5275558766013849309">탭은 최근 앱과 함께 보유할 수 있습니다.</translation> <translation id="528192093759286357">전체화면을 종료하려면 상단에서 드래그하여 뒤로 버튼을 터치하세요.</translation> <translation id="5284584623296338184">북마크, 방문 기록, 비밀번호, 기타 설정이 더 이상 Google 계정에 동기화되지 않습니다. 하지만 기존 데이터는 Google 계정에 계속 저장됩니다.</translation> <translation id="5301954838959518834">확인</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">설정 진행 중...</translation> <translation id="6112702117600201073">페이지 새로고침</translation> <translation id="6127379762771434464">항목 삭제됨</translation> -<translation id="6134870457258083164">기기가 표시되지 않나요? <ph name="BEGIN_LINK1" />도움 받기<ph name="END_LINK1" /> 또는 <ph name="BEGIN_LINK2" />다시 검색<ph name="END_LINK2" /></translation> <translation id="6138140242378429169">페이지를 모바일 친화적으로 바꾸세요.</translation> <translation id="6140912465461743537">국가/지역</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> 데이터 절약</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">'<ph name="VIDEO_TITLE" />' 일시중지됨</translation> <translation id="6477460825583319731">잘못된 이메일 주소</translation> <translation id="6482749332252372425">저장공간이 부족하여 <ph name="FILE_NAME" />을(를) 다운로드할 수 없습니다.</translation> -<translation id="6541922744811587456">Chrome 북마크</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">공유할 탭을 선택하세요.</translation> <translation id="6545017243486555795">모든 데이터 삭제</translation> @@ -527,7 +514,7 @@ <translation id="6978479750597523876">번역 설정 재설정</translation> <translation id="6981982820502123353">접근성</translation> <translation id="6990079615885386641">Google Play 스토어에서 앱 다운로드: <ph name="APP_ACTION" /></translation> -<translation id="699220179437400583">발생 가능성이 있는 보안 문제의 세부정보를 자동으로 Google에 보고합니다.</translation> +<translation id="699220179437400583">발생 가능성이 있는 보안 문제의 세부정보를 자동으로 Google에 신고합니다.</translation> <translation id="6992289844737586249">사이트에서 마이크를 사용하기 전에 확인(권장)</translation> <translation id="6999892069268112724">Google 계정 확인</translation> <translation id="7021515813996758557"><ph name="FILE_NAME" />(이)가 다운로드됨</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">처리 중</translation> <translation id="7243308994586599757">화면 하단에서 옵션 선택 가능</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" />이(가) 사용자 위치 정보를 사용하여 지역 검색결과 표시</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />도움말<ph name="END_LINK" /></translation> <translation id="7299721129597238157">북마크 삭제</translation> <translation id="7301833672208172928">기록 동기화 사용</translation> <translation id="7327835590071894791">이제 탭이 백그라운드에 표시됩니다.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">안함</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">사이트 제한으로 동영상을 전송할 수 없음</translation> -<translation id="7408644312175185557">휴대전화의 최근 사용 화면에서 최근에 사용한 앱과 탭을 확인할 수 있습니다.</translation> <translation id="7423098979219808738">우선 확인</translation> <translation id="7437998757836447326">Chrome에서 로그아웃</translation> <translation id="7445411102860286510">사이트에서 음소거된 동영상을 자동재생하도록 허용(권장)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb index 2d06917a..d437182c 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_lt.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="lt"> -<translation id="1040144152982955218">Ieškoma įrenginių… <ph name="BEGIN_LINK" />Gaukite pagalbos<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Įspėjimas</translation> <translation id="10614374240317010">Niekada neišsaugota</translation> <translation id="1061441684050139317">„Chrome“ reikia galimybės pasiekti mikrofoną, kad jį būtų galima bendrinti su šia svetaine.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Atraskite netoliese esančių objektų siunčiamus tinklalapius. „Chrome“ renka tinklalapius, susijusius su netoli jūsų esančiais objektais, anonimiškai siunčia juos „Google“ paslaugai, kad būtų rasti naudingiausi tinklalapiai, ir tada juos pateikia. Kad galėtumėte naudoti Fizinį žiniatinklį, būtina įgalinti „Bluetooth“ ir Vietovę.</translation> -<translation id="1250508505624960884">Beta versijos „Chrome“ žymės</translation> <translation id="1254090737195733114">Importuoti duomenis?</translation> <translation id="1258753120186372309">„Google“ papuoštas logotipas: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Sustabdyti</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Kortelės priimtos</translation> <translation id="1966710179511230534">Atnaujinkite išsamią prisijungimo informaciją.</translation> <translation id="1974060860693918893">Išplėstiniai</translation> -<translation id="1984321224716884559">Kuriamos versijos „Chrome“ žymės</translation> <translation id="1984937141057606926">Leidžiama (išskyrus trečiąsias šalis)</translation> <translation id="1994173015038366702">Svetainės URL</translation> <translation id="2001120796168634316">Išs. sus. psl. ir naud. vėliau</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Svetainėse išsaugotos nuostatos gali būti ištrintos</translation> <translation id="2748463065602559597">Žiūrite saugų „Google Chrome“ puslapį.</translation> <translation id="2762000892062317888">ką tik</translation> -<translation id="2770465223704140727">Pašalinti iš sąrašo</translation> <translation id="2777555524387840389">Liko <ph name="SECONDS" /> sek.</translation> -<translation id="278029852808208386">Nerasta „Bluetooth“ įrenginių. <ph name="BEGIN_LINK" />Ieškokite dar kartą<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Liko 1 sek.</translation> <translation id="2811892995384186721">Nematote savo įrenginio? <ph name="BEGIN_LINK" />Gaukite pagalbos<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Palieskite mygtuką „Atgal“, kad išeitumėte iš viso ekrano režimo.</translation> @@ -232,7 +227,6 @@ Jei norite koreguoti paieškos terminą, paspauskite ir laikykite, kad jį pasirinktumėte. Kad patikslintumėte paiešką, slinkite skydeliu į viršų ir palieskite paieškos laukelį.</translation> <translation id="3616113530831147358">Garsas</translation> -<translation id="3623048332793834136">„Chrome Canary“ žymės</translation> <translation id="3632295766818638029">Rodyti slaptažodį</translation> <translation id="363596933471559332">Automatiškai prisijungti prie svetainių naudojant išsaugotus prisijungimo duomenis. Kai funkcija išjungta, kaskart prisijungiant prie svetainės prašoma patvirtinti.</translation> <translation id="3656115297268584622">Įjunkite vietovę <ph name="BEGIN_LINK" />„Android“ nustatymuose<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Niekada neversti <ph name="LANGUAGE" /> k.</translation> <translation id="4275663329226226506">Medija</translation> <translation id="4278390842282768270">Leidžiama</translation> -<translation id="4297410240212242334">Atskirti skirtukus ir programas</translation> <translation id="4307992518367153382">Pagrindai</translation> <translation id="4334294535648607276">Atsisiuntimas baigtas.</translation> <translation id="4351244548802238354">Uždaryti dialogo langą</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Tvarko vienas iš jūsų tėvų</translation> <translation id="4663756553811254707">Ištrinta žymių: <ph name="NUMBER_OF_BOOKMARKS" /></translation> <translation id="4665282149850138822">Svetainė „<ph name="NAME" />“ pridėta prie pagrindinio ekrano</translation> -<translation id="4668044310199835006">„Work Chrome“ žymės</translation> <translation id="4684427112815847243">Viską sinchronizuoti</translation> <translation id="4686372254213217147">Pradinis dydis</translation> -<translation id="4690286298542128877">Skirtukai bus perkelti į skirtukų jungiklį, esantį „Chrome“.</translation> <translation id="4698413471314543145">Trūksta svarbios funkcijos, būtinos paleisti „Chrome“: „Chrome“ įdiegimas neužbaigtas arba nesuderinamas su šia „Android“ versija.</translation> <translation id="4699172675775169585">Talpykloje esantys vaizdai ir failai</translation> <translation id="4710672574193412565">Pridėkite „Google“ paskyrą iš įrenginio „Nustatymų“ programos puslapio „Paskyros“.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Sinchronizavimas išjungtas</translation> <translation id="5131405117025179004">Redaguoti išsaugotą paskyrą</translation> <translation id="5138299137310274655">Šis puslapis pateikiamas <ph name="SOURCE_LANGUAGE" />. Išversti į <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Rodyti skirtukus ir programas kartu</translation> <translation id="515227803646670480">Valyti išsaugotus duomenis</translation> <translation id="5156656584247937086">Tai vaiko paskyra</translation> <translation id="5161254044473106830">Būtina nurodyti pavadinimą</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Atsijungti</translation> <translation id="5233638681132016545">Naujas skirtukas</translation> <translation id="5271967389191913893">Įrenginyje nepavyksta atidaryti norimo atsisiųsti turinio.</translation> -<translation id="5275558766013849309">Skirtukai bus pateikti su naujausiomis programomis.</translation> <translation id="528192093759286357">Vilkite žymeklį nuo viršaus ir palieskite mygtuką „Atgal“, kad išeitumėte iš viso ekrano režimo.</translation> <translation id="5284584623296338184">Žymių, istorijos, slaptažodžių ir kitų nustatymų pakeitimai nebebus sinchronizuojami su „Google“ paskyra. Tačiau esami duomenys ir toliau bus saugomi „Google“ paskyroje.</translation> <translation id="5301954838959518834">Gerai, supratau</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Nustatoma…</translation> <translation id="6112702117600201073">Puslapio atnaujinimas</translation> <translation id="6127379762771434464">Elementas pašalintas</translation> -<translation id="6134870457258083164">Nematote įrenginio? <ph name="BEGIN_LINK1" />Gaukite pagalbos<ph name="END_LINK1" /> arba <ph name="BEGIN_LINK2" />ieškokite dar kartą<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Pritaikykite puslapį mobiliesiems</translation> <translation id="6140912465461743537">Šalis / regionas</translation> <translation id="6159335304067198720">Sutaupyta duomenų: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">„<ph name="VIDEO_TITLE" />“ pristabdytas</translation> <translation id="6477460825583319731">Netinkamas el. pašto adresas</translation> <translation id="6482749332252372425">Nepavyko atsisiųsti „<ph name="FILE_NAME" />“ dėl trūkstamos vietos saugykloje.</translation> -<translation id="6541922744811587456">„Chrome“ žymės</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Kad perduotumėte, pasirinkite skirtuką</translation> <translation id="6545017243486555795">Išvalyti visus duomenis</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Apdorojama</translation> <translation id="7243308994586599757">Parinktys pasiekiamos netoli ekrano apačios</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> naudoja vietovės informaciją vietinės paieškos rezultatams rodyti</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pagalba<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Ištrinti žymę</translation> <translation id="7301833672208172928">Įjungti istorijos sinchronizavimą</translation> <translation id="7327835590071894791">Skirtukas dabar įjungtas fone.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Ne</translation> <translation id="7400418766976504921">URL adresas</translation> <translation id="7400448254438078120">Negalima perduoti vaizdo įrašo dėl svetainės apribojimų.</translation> -<translation id="7408644312175185557">Peržiūrėkite skirtukų lapus naudodami kitas naujausias programas telefono „Apžvalgos“ ekrane.</translation> <translation id="7423098979219808738">Pirmiausia paklausti</translation> <translation id="7437998757836447326">Atsijungimas nuo „Chrome“</translation> <translation id="7445411102860286510">Leisti svetainėms automatiškai leisti nutildytus vaizdo įrašus (rekomenduojama)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb index aaff946a..97086b22 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_lv.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="lv"> -<translation id="1040144152982955218">Notiek ierīču meklēšana… <ph name="BEGIN_LINK" />Saņemt palīdzību<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Brīdinājums</translation> <translation id="10614374240317010">Netiek saglabātas</translation> <translation id="1061441684050139317">Pārlūkam Chrome ir nepieciešama piekļuve mikrofonam, lai kopīgotu to ar šo vietni.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Atklājiet tīmekļa lapas, ko nosūtījuši tuvumā esoši objekti. Chrome apkopo tīmekļa lapas, kas ir saistītas ar jums apkārt esošajiem objektiem, un anonīmi nosūta tās uz Google pakalpojumu, lai noskaidrotu jums visnoderīgākās lapas, un pēc tam tās parāda. Lai izmantotu fizisko tīmekli, ir jābūt ieslēgtam Bluetooth savienojumam un atrašanās vietas noteikšanai.</translation> -<translation id="1250508505624960884">Chrome beta versijas grāmatzīmes</translation> <translation id="1254090737195733114">Vai importēt datus?</translation> <translation id="1258753120186372309">Google svētku logotips: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Apturēt</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Pieņemtās kartes</translation> <translation id="1966710179511230534">Lūdzu, atjauniniet pierakstīšanās informāciju.</translation> <translation id="1974060860693918893">Papildu</translation> -<translation id="1984321224716884559">Chrome izstrādātāju versijas grāmatzīmes</translation> <translation id="1984937141057606926">Atļauti, izņemot trešo pušu sīkfailus</translation> <translation id="1994173015038366702">Vietnes URL</translation> <translation id="2001120796168634316">Saglabāt lapu ar saitēm</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Var tikt dzēstas vietnēs saglabātās preferences</translation> <translation id="2748463065602559597">Jūs skatāt drošu Google Chrome lapu.</translation> <translation id="2762000892062317888">tikko</translation> -<translation id="2770465223704140727">Noņemt no saraksta</translation> <translation id="2777555524387840389">Atlikušas <ph name="SECONDS" /> s</translation> -<translation id="278029852808208386">Netika atrasta neviena Bluetooth ierīce. <ph name="BEGIN_LINK" />Meklējiet vēlreiz<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Atlikusi 1 s</translation> <translation id="2811892995384186721">Vai jūsu ierīce netiek rādīta? <ph name="BEGIN_LINK" />Saņemiet palīdzību<ph name="END_LINK" />.</translation> <translation id="2836148919159985482">Lai izietu no pilnekrāna režīma, pieskarieties pogai Atpakaļ.</translation> @@ -232,7 +227,6 @@ Lai pielāgotu meklēšanas vienumu, nospiediet un turiet to. Lai veiktu precīzāku meklēšanu, velciet paneli augšup līdz galam un pieskarieties meklēšanas lodziņam.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Chrome Canary grāmatzīmes</translation> <translation id="3632295766818638029">Parādīt paroli</translation> <translation id="363596933471559332">Automātiski pierakstīties vietnēs, izmantojot saglabātos akreditācijas datus. Ja funkcija ir izslēgta, verifikācija būs jāveic ikreiz, kad pierakstīsieties vietnē.</translation> <translation id="3656115297268584622">Ieslēdziet atrašanās vietas pakalpojumu <ph name="BEGIN_LINK" />Android iestatījumos<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nekad netulkot šādā valodā: <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Multivide</translation> <translation id="4278390842282768270">Atļauts</translation> -<translation id="4297410240212242334">Ciļņu un lietotņu atdalīšana</translation> <translation id="4307992518367153382">Pamata</translation> <translation id="4334294535648607276">Lejupielāde pabeigta.</translation> <translation id="4351244548802238354">Aizvērt dialoglodziņu</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Pārvalda viens no jūsu vecākiem</translation> <translation id="4663756553811254707">Dzēstas <ph name="NUMBER_OF_BOOKMARKS" /> grāmatzīmes</translation> <translation id="4665282149850138822">Vietne <ph name="NAME" /> tika pievienota sākuma ekrānam.</translation> -<translation id="4668044310199835006">Work Chrome grāmatzīmes</translation> <translation id="4684427112815847243">Sinhronizēt visu</translation> <translation id="4686372254213217147">Sākotnējais lielums</translation> -<translation id="4690286298542128877">Cilnes tiks pārvietotas uz ciļņu pārslēdzēju pārlūkā Chrome.</translation> <translation id="4698413471314543145">Trūkst būtiskas funkcionalitātes, kas nepieciešama pārlūka Chrome palaišanai. Vai nu jūsu pārlūka Chrome instalācija ir nepilnīga, vai arī pārlūks nav saderīgs ar Android versiju.</translation> <translation id="4699172675775169585">Kešatmiņā ievietotie attēli un faili</translation> <translation id="4710672574193412565">Pievienojiet Google kontu no lapas Konti savas ierīces lietotnē Iestatījumi.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Sinhronizācija izslēgta</translation> <translation id="5131405117025179004">Saglabātā konta rediģēšana</translation> <translation id="5138299137310274655">Šī lapas saturs ir šādā valodā: <ph name="SOURCE_LANGUAGE" />. Vai tulkot to šādā valodā: <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Ciļņu un lietotņu apvienošana</translation> <translation id="515227803646670480">Saglabāto datu notīrīšana</translation> <translation id="5156656584247937086">Šis ir bērna konts</translation> <translation id="5161254044473106830">Jānorāda nosaukums</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Izrakstīties</translation> <translation id="5233638681132016545">Jauna cilne</translation> <translation id="5271967389191913893">Ierīcē nevar atvērt lejupielādējamo saturu.</translation> -<translation id="5275558766013849309">Cilnes tiks rādītas kopā ar pēdējām izmantotajām lietotnēm.</translation> <translation id="528192093759286357">Lai izietu no pilnekrāna režīma, velciet no augšas un pieskarieties pogai Atpakaļ.</translation> <translation id="5284584623296338184">Grāmatzīmju, vēstures, paroļu un citu iestatījumu izmaiņas vairs netiks sinhronizētas ar jūsu Google kontu. Tomēr esošie dati joprojām tiks glabāti jūsu Google kontā.</translation> <translation id="5301954838959518834">Es sapratu</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Notiek iestatīšana...</translation> <translation id="6112702117600201073">Lapas atsvaidzināšana</translation> <translation id="6127379762771434464">Vienums ir noņemts</translation> -<translation id="6134870457258083164">Vai jūsu ierīce netiek rādīta? <ph name="BEGIN_LINK1" />Saņemiet palīdzību<ph name="END_LINK1" /> vai <ph name="BEGIN_LINK2" />meklējiet vēlreiz<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Padarīt lapu piemērotu mobilajām ierīcēm</translation> <translation id="6140912465461743537">Valsts/reģions</translation> <translation id="6159335304067198720">Datu lietojuma samazinājums: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Videoklipa “<ph name="VIDEO_TITLE" />” atskaņošana ir pārtraukta.</translation> <translation id="6477460825583319731">Nederīga e-pasta adrese</translation> <translation id="6482749332252372425">Neizdevās lejupielādēt failu <ph name="FILE_NAME" />, jo krātuvē nav pietiekami daudz vietas.</translation> -<translation id="6541922744811587456">Chrome grāmatzīmes</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Atlasiet cilni, ko kopīgot.</translation> <translation id="6545017243486555795">Notīrīt visus datus</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Notiek apstrāde</translation> <translation id="7243308994586599757">Opcijas, kas pieejamas ekrāna apakšējā daļā</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> izmanto jūsu atrašanās vietas informāciju, lai rādītu vietējās meklēšanas rezultātus</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Palīdzība<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Dzēst grāmatzīmi</translation> <translation id="7301833672208172928">Ieslēgt vēstures sinhronizēšanu</translation> <translation id="7327835590071894791">Cilne tagad darbojas fonā.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nē</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Vietnes ierobežojumu dēļ videoklipu nevar apraidīt.</translation> -<translation id="7408644312175185557">Skatiet cilnes ar citām jaunākajām lietotnēm tālruņa ekrānā Pārskats.</translation> <translation id="7423098979219808738">Vispirms jautāt</translation> <translation id="7437998757836447326">Izrakstīšanās no pārlūka Chrome</translation> <translation id="7445411102860286510">Atļaut vietnēm automātiski atskaņot videoklipus ar izslēgtu skaņu (ieteicams)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb index 4ecc4c2c..5abf6a56 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_nl.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="nl"> -<translation id="1040144152982955218">Zoeken naar apparaten… <ph name="BEGIN_LINK" />Hulp krijgen<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Waarschuwing</translation> <translation id="10614374240317010">Nooit opgeslagen</translation> <translation id="1061441684050139317">Chrome heeft microfoontoegang nodig om het item te delen met deze site.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Ontdek webpagina's die worden verzonden door objecten in de buurt. Chrome verzamelt webpagina's die zijn gekoppeld aan objecten om je heen, stuurt ze anoniem naar een Google-service om de nuttigste pagina's voor jou te vinden en geeft ze aan je weer. Je moet Bluetooth en Locatie hebben ingeschakeld om het Fysieke web te gebruiken.</translation> -<translation id="1250508505624960884">Chrome Bèta-bladwijzers</translation> <translation id="1254090737195733114">Gegevens importeren?</translation> <translation id="1258753120186372309">Google-doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Stop</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Geaccepteerde creditcards</translation> <translation id="1966710179511230534">Update je inloggegevens.</translation> <translation id="1974060860693918893">Geavanceerd</translation> -<translation id="1984321224716884559">Chrome Dev-bladwijzers</translation> <translation id="1984937141057606926">Toegestaan, behalve van derden</translation> <translation id="1994173015038366702">Site-URL</translation> <translation id="2001120796168634316">Gelinkte pagina opslaan voor later</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Opgeslagen voorkeuren op sites kunnen worden verwijderd</translation> <translation id="2748463065602559597">Je bekijkt een veilige Google Chrome-pagina.</translation> <translation id="2762000892062317888">zojuist</translation> -<translation id="2770465223704140727">Verwijderen uit lijst</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> seconden resterend</translation> -<translation id="278029852808208386">Geen Bluetooth-apparaten gevonden. <ph name="BEGIN_LINK" />Zoek nogmaals<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 seconde resterend</translation> <translation id="2811892995384186721">Wordt je apparaat niet weergegeven? <ph name="BEGIN_LINK" />Raadpleeg de Help<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Tik op de knop Terug om het volledige scherm te sluiten.</translation> @@ -232,7 +227,6 @@ Als je de zoekterm wilt aanpassen, houd je deze aangeraakt om de term te selecteren. Als je je zoekopdracht wilt verfijnen, veeg je het deelvenster helemaal naar boven en tik je op het zoekvak.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Chrome Canary-bladwijzers</translation> <translation id="3632295766818638029">Maskering van wachtwoord ongedaan maken</translation> <translation id="363596933471559332">Automatisch inloggen bij websites met de opgeslagen inloggegevens. Wanneer de functie is uitgeschakeld, word je elke keer om verificatie gevraagd voordat je wordt ingelogd bij een website.</translation> <translation id="3656115297268584622">Schakel de locatie in de <ph name="BEGIN_LINK" />Android-instellingen<ph name="END_LINK" /> in.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831"><ph name="LANGUAGE" /> nooit vertalen</translation> <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Toegestaan</translation> -<translation id="4297410240212242334">Tabbladen en apps van elkaar scheiden</translation> <translation id="4307992518367153382">Basisinstellingen</translation> <translation id="4334294535648607276">Downloaden voltooid.</translation> <translation id="4351244548802238354">Dialoogvenster sluiten</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Beheerd door je ouder</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> bladwijzers verwijderd</translation> <translation id="4665282149850138822"><ph name="NAME" /> is toegevoegd aan je startscherm</translation> -<translation id="4668044310199835006">Work Chrome-bladwijzers</translation> <translation id="4684427112815847243">Alles synchroniseren</translation> <translation id="4686372254213217147">Oorspronkelijke grootte</translation> -<translation id="4690286298542128877">Tabbladen worden verplaatst naar een tabbladschakelaar in Chrome.</translation> <translation id="4698413471314543145">Er ontbreekt essentiële functionaliteit voor het uitvoeren van Chrome. Je Chrome-installatie is onvolledig of niet compatibel met deze versie van Android.</translation> <translation id="4699172675775169585">Gecachte afbeeldingen en bestanden</translation> <translation id="4710672574193412565">Voeg een Google-account toe via de pagina Accounts in de app Instellingen van je apparaat.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synchronisatie is uitgeschakeld</translation> <translation id="5131405117025179004">Opgeslagen account bewerken</translation> <translation id="5138299137310274655">Deze pagina is in het <ph name="SOURCE_LANGUAGE" />. Vertalen naar het <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Tabbladen en apps samenvoegen</translation> <translation id="515227803646670480">Opgeslagen gegevens wissen</translation> <translation id="5156656584247937086">Dit is een kinderaccount</translation> <translation id="5161254044473106830">Titel is vereist</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Uitloggen</translation> <translation id="5233638681132016545">Nieuw tabblad</translation> <translation id="5271967389191913893">Het apparaat kan de inhoud niet openen die moet worden gedownload.</translation> -<translation id="5275558766013849309">Tabbladen worden samen bewaard met recent gebruikte apps.</translation> <translation id="528192093759286357">Sleep vanaf de bovenkant en tik op de knop Terug om het volledige scherm te sluiten.</translation> <translation id="5284584623296338184">Wijzigingen in je bladwijzers, geschiedenis, wachtwoorden en andere instellingen worden niet meer gesynchroniseerd met je Google-account. Je bestaande gegevens blijven echter opgeslagen in je Google-account.</translation> <translation id="5301954838959518834">OK</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Instellen wordt uitgevoerd...</translation> <translation id="6112702117600201073">Pagina vernieuwen</translation> <translation id="6127379762771434464">Item verwijderd</translation> -<translation id="6134870457258083164">Wordt je apparaat niet weergegeven? <ph name="BEGIN_LINK1" />Raadpleeg de Help<ph name="END_LINK1" /> of <ph name="BEGIN_LINK2" />zoek nogmaals<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Pagina geschikt maken voor mobiele apparaten</translation> <translation id="6140912465461743537">Land/regio</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> besparing van data</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">'<ph name="VIDEO_TITLE" />' onderbroken</translation> <translation id="6477460825583319731">Ongeldig e-mailadres</translation> <translation id="6482749332252372425">Downloaden van <ph name="FILE_NAME" /> is mislukt door te weinig opslagruimte.</translation> -<translation id="6541922744811587456">Chrome-bladwijzers</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Selecteer een tabblad om te beamen</translation> <translation id="6545017243486555795">Alle gegevens wissen</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Verwerken</translation> <translation id="7243308994586599757">Opties beschikbaar onder aan het scherm</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> gebruikt je locatie om lokale zoekresultaten weer te geven</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Help<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Bladwijzer verwijderen</translation> <translation id="7301833672208172928">Synchronisatie van geschiedenis inschakelen</translation> <translation id="7327835590071894791">Je tabblad bevindt zich nu op de achtergrond.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nee</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Kan video niet casten wegens sitebeperkingen</translation> -<translation id="7408644312175185557">Bekijk je tabbladen met andere recente apps op het overzichtsscherm van je telefoon.</translation> <translation id="7423098979219808738">Eerst vragen</translation> <translation id="7437998757836447326">Uitloggen bij Chrome</translation> <translation id="7445411102860286510">Sites toestaan gedempte video's automatisch af te spelen (aanbevolen)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb index 77231c36..865bdfa 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_no.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_no.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="no"> -<translation id="1040144152982955218">Søker etter enheter … <ph name="BEGIN_LINK" />Få hjelp<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Advarsel</translation> <translation id="10614374240317010">Aldri lagret</translation> <translation id="1061441684050139317">Chrome må ha tilgang til mikrofonen for å kunne dele den med dette nettstedet.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Oppdag nettsider som sendes av objekter i nærheten. Chrome samler nettsidene som er tilknyttet objektene rundt deg, og sender dem anonymt til en Google-tjeneste for å finne ut hvilke som har mest nytteverdi for deg. Deretter vises disse. Du må ha slått på Bluetooth og Posisjon for å bruke det fysiske nettet.</translation> -<translation id="1250508505624960884">Bokmerker fra betaversjonen av Chrome</translation> <translation id="1254090737195733114">Vil du importere data?</translation> <translation id="1258753120186372309">Google-doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Stopp</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Kort som godtas</translation> <translation id="1966710179511230534">Oppdater påloggingsinformasjonen din.</translation> <translation id="1974060860693918893">Avansert</translation> -<translation id="1984321224716884559">Bokmerker fra Chrome Dev</translation> <translation id="1984937141057606926">Tillatt – unntatt fra tredjeparter.</translation> <translation id="1994173015038366702">Nettadressen til nettstedet</translation> <translation id="2001120796168634316">Lagre koblngssiden til senere</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">De lagrede innstillingene på nettsteder kan bli slettet</translation> <translation id="2748463065602559597">Du ser på en sikker Google Chrome-side.</translation> <translation id="2762000892062317888">akkurat nå</translation> -<translation id="2770465223704140727">Fjern fra listen</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder igjen</translation> -<translation id="278029852808208386">Ingen Bluetooth-enheter ble funnet. <ph name="BEGIN_LINK" />Søk igjen<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 sekund igjen</translation> <translation id="2811892995384186721">Ser du ikke enheten din? <ph name="BEGIN_LINK" />Få hjelp<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Trykk på tilbakeknappen for å avslutte fullskjerm.</translation> @@ -232,7 +227,6 @@ Hvis du vil endre søkeordet, kan du trykke på det og holde for å merke det. Hvis du vil finstemme søket, kan du dra panelet helt opp til toppen og trykke på søkefeltet.</translation> <translation id="3616113530831147358">Lyd</translation> -<translation id="3623048332793834136">Bokmerker fra Chrome Canary</translation> <translation id="3632295766818638029">Vis passordet</translation> <translation id="363596933471559332">Du logges på nettsteder automatisk ved hjelp av lagret legitimasjon. Når funksjonen er slått av, blir du bedt om å oppgi legitimasjonen din hver gang du logger på et nettsted.</translation> <translation id="3656115297268584622">Slå på posisjonstjenesten i <ph name="BEGIN_LINK" />Android-innstillingene<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Oversett aldri <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Medier</translation> <translation id="4278390842282768270">Tillatt</translation> -<translation id="4297410240212242334">Skill faner og apper</translation> <translation id="4307992518367153382">Generelt</translation> <translation id="4334294535648607276">Nedlastingen er fullført.</translation> <translation id="4351244548802238354">Lukk dialogboks</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Administreres av foreldrene dine</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> bokmerker ble slettet</translation> <translation id="4665282149850138822"><ph name="NAME" /> ble lagt til på startskjermen</translation> -<translation id="4668044310199835006">Bokmerker fra Chrome på jobben</translation> <translation id="4684427112815847243">Synkroniser alt</translation> <translation id="4686372254213217147">Opprinnelig størrelse</translation> -<translation id="4690286298542128877">Fanene flyttes til en fanevelger i Chrome.</translation> <translation id="4698413471314543145">En avgjørende funksjon som kreves for å kjøre Chrome, mangler. Chrome-installasjonen er enten ufullstendig eller ikke kompatibel med denne versjonen av Android.</translation> <translation id="4699172675775169585">Bufrede bilder og filer</translation> <translation id="4710672574193412565">Legg til en Google-konto på Kontoer-siden i Innstillinger-appen på enheten din.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synkronisering er slått av</translation> <translation id="5131405117025179004">Endre den lagrede kontoen</translation> <translation id="5138299137310274655">Denne siden er på <ph name="SOURCE_LANGUAGE" />. Vil du oversette den til <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Slå sammen faner og apper</translation> <translation id="515227803646670480">Sletting av alle lagrede data</translation> <translation id="5156656584247937086">Dette er en barnekonto</translation> <translation id="5161254044473106830">Du må oppgi en tittel</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Logg av</translation> <translation id="5233638681132016545">Ny fane</translation> <translation id="5271967389191913893">Enheten kan ikke åpne innholdet som skal lastes ned.</translation> -<translation id="5275558766013849309">Nylig brukte faner og apper vises sammen.</translation> <translation id="528192093759286357">Dra ned fra toppen og trykk på tilbakeknappen for å avslutte fullskjerm.</translation> <translation id="5284584623296338184">Endringer i bokmerker, loggoppføringer, passord og andre innstillinger blir ikke synkronisert med Google-kontoen din lenger. Data som allerede er lagret i Google-kontoen din, blir imidlertid ikke fjernet.</translation> <translation id="5301954838959518834">OK, skjønner</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Konfigurasjon pågår …</translation> <translation id="6112702117600201073">Oppdaterer siden.</translation> <translation id="6127379762771434464">Elementet ble fjernet</translation> -<translation id="6134870457258083164">Ser du ikke enheten din? <ph name="BEGIN_LINK1" />Få hjelp<ph name="END_LINK1" /> eller <ph name="BEGIN_LINK2" />søk igjen<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Gjør siden mobilvennlig</translation> <translation id="6140912465461743537">Land/område</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> datasparing</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">«<ph name="VIDEO_TITLE" />» er satt på pause</translation> <translation id="6477460825583319731">Ugyldig e-postadresse</translation> <translation id="6482749332252372425">Nedlastingen av <ph name="FILE_NAME" /> ble avbrutt på grunn av mangel på lagringsplass.</translation> -<translation id="6541922744811587456">Bokmerker fra Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Velg en fane for beaming</translation> <translation id="6545017243486555795">Slett alle data</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Behandler</translation> <translation id="7243308994586599757">Du finner alternativer ved bunnen av skjermen</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> bruker posisjonen din for å vise lokale søkeresultater</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Hjelp<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Slett bokmerket</translation> <translation id="7301833672208172928">Slå på synkronisering av loggen</translation> <translation id="7327835590071894791">Fanen din er nå i bakgrunnen.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nei takk</translation> <translation id="7400418766976504921">Nettadresse</translation> <translation id="7400448254438078120">Videoen kan ikke castes på grunn av restriksjoner på nettstedet.</translation> -<translation id="7408644312175185557">Se fanene dine sammen med andre nylig brukte apper på oversiktsskjermen på telefonen.</translation> <translation id="7423098979219808738">Spør først.</translation> <translation id="7437998757836447326">Logg av Chrome</translation> <translation id="7445411102860286510">Gi nettsteder tillatelse til automatisk avspilling av videoer med kuttet lyd (anbefales)</translation> @@ -657,7 +642,7 @@ <translation id="8413126021676339697">Vis fullstendig logg</translation> <translation id="8428213095426709021">Innstillinger</translation> <translation id="8433057134996913067">Dette logger deg av de fleste nettsteder.</translation> -<translation id="8447861592752582886">Opphev enhetstillatelsen</translation> +<translation id="8447861592752582886">Opphev tillatelsen til enhetstilgang</translation> <translation id="8481940801237642152">Tilkoblingen til dette området er privat, men det kan hende at noen på nettverket kan endre utseendet på siden.</translation> <translation id="8493948351860045254">Frigjør plass</translation> <translation id="8497726226069778601">Det er ikke noe her foreløpig</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb index fef89f90..1ffc666 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pl.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pl"> -<translation id="1040144152982955218">Wyszukuję urządzenia… <ph name="BEGIN_LINK" />poproś o pomoc<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Ostrzeżenie</translation> <translation id="10614374240317010">Nigdy nie zapisane</translation> <translation id="1061441684050139317">Aby zezwolić stronie na wykorzystanie mikrofonu, Chrome musi mieć do niego dostęp.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Odkrywaj strony internetowe wysyłane przez obiekty w pobliżu. Chrome gromadzi strony internetowe powiązane z obiektami wokół Ciebie, wysyła je anonimowo do usługi Google, by wybrać te, które najbardziej mogą Ci się przydać, i wyświetla je. Aby korzystać z internetu rzeczy, musisz włączyć Bluetooth i Lokalizację.</translation> -<translation id="1250508505624960884">Zakładki z Chrome w wersji beta</translation> <translation id="1254090737195733114">Zaimportować dane?</translation> <translation id="1258753120186372309">Doodle Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Zatrzymaj</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Akceptowane karty</translation> <translation id="1966710179511230534">Zaktualizuj swoje dane logowania.</translation> <translation id="1974060860693918893">Zaawansowane</translation> -<translation id="1984321224716884559">Zakładki z Chrome Dev</translation> <translation id="1984937141057606926">Dozwolone, z wyjątkiem witryn innych firm</translation> <translation id="1994173015038366702">URL strony</translation> <translation id="2001120796168634316">Zapisz linkowaną stronę na później</translation> @@ -126,7 +123,7 @@ <translation id="2346253980530904022">Serwery Google będą optymalizować odwiedzane witryny, z wyjątkiem połączeń przez HTTPS i stron otwieranych w trybie incognito.</translation> <translation id="2349710944427398404">Łączna ilość danych używanych przez Chrome, w tym konta, zakładki i zapisane ustawienia</translation> <translation id="2351097562818989364">Ustawienia tłumaczenia zostały zresetowane.</translation> -<translation id="2359808026110333948">Kontynuuj</translation> +<translation id="2359808026110333948">Dalej</translation> <translation id="2385560268894525395">z ostatniego tygodnia</translation> <translation id="2387895666653383613">Skalowanie tekstu</translation> <translation id="238909021488141516">Podczas pobierania treści wystąpił błąd.</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Możesz stracić zapisane ustawienia dotyczące witryn</translation> <translation id="2748463065602559597">Przeglądasz bezpieczną stronę Google Chrome.</translation> <translation id="2762000892062317888">przed chwilą</translation> -<translation id="2770465223704140727">Usuń z listy</translation> <translation id="2777555524387840389">Pozostało: <ph name="SECONDS" /> s</translation> -<translation id="278029852808208386">Nie znaleziono urządzeń Bluetooth. <ph name="BEGIN_LINK" />Wyszukaj ponownie<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Pozostała sekunda</translation> <translation id="2811892995384186721">Nie widzisz swojego urządzenia? <ph name="BEGIN_LINK" />Skorzystaj z pomocy<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Kliknij przycisk Wstecz, by wyjść z trybu pełnoekranowego.</translation> @@ -232,7 +227,6 @@ Aby dostosować wyszukiwane hasło, naciśnij je i przytrzymaj, by je zaznaczyć. Aby doprecyzować wyszukiwanie, przesuń panel do samej góry i kliknij pole wyszukiwania.</translation> <translation id="3616113530831147358">Dźwięk</translation> -<translation id="3623048332793834136">Zakładki z Chrome Canary</translation> <translation id="3632295766818638029">Pokaż hasło</translation> <translation id="363596933471559332">Automatycznie loguj się na stronach, używając zapisanych danych logowania. Gdy ta funkcja jest wyłączona, przed każdym zalogowaniem się zobaczysz prośbę o weryfikację.</translation> <translation id="3656115297268584622">Włącz lokalizację w <ph name="BEGIN_LINK" />ustawieniach Androida<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nigdy nie tłumacz z języka: <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Multimedia</translation> <translation id="4278390842282768270">Dopuszczone</translation> -<translation id="4297410240212242334">Rozdziel karty i aplikacje</translation> <translation id="4307992518367153382">Podstawy</translation> <translation id="4334294535648607276">Pobieranie ukończone.</translation> <translation id="4351244548802238354">Zamknij okno</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Zarządzany przez Twojego rodzica</translation> <translation id="4663756553811254707">Usunięte zakładki: <ph name="NUMBER_OF_BOOKMARKS" /></translation> <translation id="4665282149850138822">Strona <ph name="NAME" /> została dodana do ekranu głównego</translation> -<translation id="4668044310199835006">Zakładki z Work Chrome</translation> <translation id="4684427112815847243">Synchronizuj wszystko</translation> <translation id="4686372254213217147">Rozmiar pierwotny</translation> -<translation id="4690286298542128877">Karty zostaną przeniesione do przełącznika kart w Chrome.</translation> <translation id="4698413471314543145">Brak ważnych funkcji wymaganych do uruchomienia Chrome. Instalacja Chrome jest niekompletna lub niezgodna z tą wersją Androida.</translation> <translation id="4699172675775169585">Obrazy i pliki zapisane w pamięci podręcznej</translation> <translation id="4710672574193412565">Otwórz aplikację Ustawienia na urządzeniu, przejdź na stronę Konta i dodaj konto Google.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synchronizacja jest wyłączona</translation> <translation id="5131405117025179004">Edycja zapisanego konta</translation> <translation id="5138299137310274655">Język tej strony to <ph name="SOURCE_LANGUAGE" />. Przetłumaczyć ją na <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Połącz karty i aplikacje</translation> <translation id="515227803646670480">Wyczyść zapisane dane</translation> <translation id="5156656584247937086">To jest konto dziecka</translation> <translation id="5161254044473106830">Tytuł jest wymagany</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Wyloguj się</translation> <translation id="5233638681132016545">Nowa karta</translation> <translation id="5271967389191913893">Na tym urządzeniu nie można otworzyć treści, które chcesz pobrać.</translation> -<translation id="5275558766013849309">Karty będą uruchomione razem z ostatnimi aplikacjami.</translation> <translation id="528192093759286357">Przeciągnij od góry i kliknij przycisk Wstecz, by wyjść z trybu pełnoekranowego.</translation> <translation id="5284584623296338184">Zmiany w zakładkach, historii, hasłach i innych ustawieniach nie będą już synchronizowane z kontem Google. Twoje istniejące dane będą jednak nadal na nim przechowywane.</translation> <translation id="5301954838959518834">OK, rozumiem</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Trwa konfigurowanie…</translation> <translation id="6112702117600201073">Odświeżam stronę</translation> <translation id="6127379762771434464">Element został usunięty</translation> -<translation id="6134870457258083164">Nie widzisz swojego urządzenia? <ph name="BEGIN_LINK1" />Skorzystaj z pomocy<ph name="END_LINK1" /> lub <ph name="BEGIN_LINK2" />wyszukaj ponownie<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Otwórz wersję na urządzenia mobilne</translation> <translation id="6140912465461743537">Kraj/region</translation> <translation id="6159335304067198720">Oszczędność danych: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Wstrzymano odtwarzanie „<ph name="VIDEO_TITLE" />”</translation> <translation id="6477460825583319731">Nieprawidłowy adres e-mail</translation> <translation id="6482749332252372425">Nie udało się pobrać pliku <ph name="FILE_NAME" /> z powodu braku miejsca.</translation> -<translation id="6541922744811587456">Zakładki z Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Wybierz kartę do przesłania</translation> <translation id="6545017243486555795">Wyczyść wszystkie dane</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Przetwarzanie</translation> <translation id="7243308994586599757">Opcje dostępne u dołu ekranu</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> korzysta z danych o Twojej lokalizacji, by pokazywać lokalne wyniki wyszukiwania</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pomoc<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Usuń zakładkę</translation> <translation id="7301833672208172928">Włącz synchronizację historii</translation> <translation id="7327835590071894791">Karta jest obecnie w tle.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nie</translation> <translation id="7400418766976504921">Adres URL</translation> <translation id="7400448254438078120">Nie można przesyłać filmu z powodu ograniczeń na stronie</translation> -<translation id="7408644312175185557">Pokazuj karty razem z ostatnio używanymi aplikacjami na ekranie Przegląd na telefonie.</translation> <translation id="7423098979219808738">Najpierw zapytaj</translation> <translation id="7437998757836447326">Wyloguj się z Chrome</translation> <translation id="7445411102860286510">Zezwalaj witrynom na automatyczne odtwarzanie wyciszonych filmów (zalecane)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb index 642fb2cd..6dcacf8 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pt-BR"> -<translation id="1040144152982955218">Procurando dispositivos… <ph name="BEGIN_LINK" />receber ajuda<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Aviso</translation> <translation id="10614374240317010">Nunca salvam</translation> <translation id="1061441684050139317">O Chrome precisa ter acesso ao microfone para compartilhá-lo com este site.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Descubra páginas da Web enviadas por objetos nas proximidades. O Chrome reúne páginas da Web associadas a objetos ao seu redor, envia-as anonimamente para um serviço do Google para encontrar as mais úteis para você e as exibe. É necessário que o Bluetooth e o Local estejam ativados para usar a Web física.</translation> -<translation id="1250508505624960884">Favoritos do Chrome Beta</translation> <translation id="1254090737195733114">Importar dados?</translation> <translation id="1258753120186372309">Doodle do Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Parar</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Cartões aceitos</translation> <translation id="1966710179511230534">Atualize seus detalhes de login.</translation> <translation id="1974060860693918893">Avançado</translation> -<translation id="1984321224716884559">Favoritos do Chrome Dev</translation> <translation id="1984937141057606926">Permitidos, exceto de terceiros</translation> <translation id="1994173015038366702">URL do site</translation> <translation id="2001120796168634316">Salvar página vinculada para mais tarde</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">É possível que as preferências salvas em sites sejam excluídas</translation> <translation id="2748463065602559597">Você está em uma página segura do Google Chrome.</translation> <translation id="2762000892062317888">agora mesmo</translation> -<translation id="2770465223704140727">Remover da lista</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> segundos restantes</translation> -<translation id="278029852808208386">Nenhum dispositivo Bluetooth foi encontrado. <ph name="BEGIN_LINK" />Pesquisar novamente<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Um segundo restante</translation> <translation id="2811892995384186721">Não está vendo seu dispositivo? <ph name="BEGIN_LINK" />Receba ajuda<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Toque no botão "Voltar" para sair da tela cheia.</translation> @@ -232,8 +227,7 @@ Para ajustar seu termo de pesquisa, mantenha-o pressionado para selecionar. Para refinar sua pesquisa, deslize o painel totalmente para cima e toque na caixa de pesquisa.</translation> <translation id="3616113530831147358">Áudio</translation> -<translation id="3623048332793834136">Favoritos do Chrome Canary</translation> -<translation id="3632295766818638029">Desmascarar senha</translation> +<translation id="3632295766818638029">Reautenticar para ver senha</translation> <translation id="363596933471559332">Faça login automaticamente nos websites usando as credenciais armazenadas. Se o recurso estiver desativado, será preciso fazer a verificação sempre antes de fazer login em um website.</translation> <translation id="3656115297268584622">Ative o local nas <ph name="BEGIN_LINK" />Configurações do Android<ph name="END_LINK" />.</translation> <translation id="3661699943263275414">Websites de terceiros podem salvar e ler dados de cookies</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nunca traduzir <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Mídia</translation> <translation id="4278390842282768270">Permitido</translation> -<translation id="4297410240212242334">Separar guias e apps</translation> <translation id="4307992518367153382">Básicas</translation> <translation id="4334294535648607276">Download concluído</translation> <translation id="4351244548802238354">Fechar caixa de diálogo</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Gerenciado pelos seus pais</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> favoritos excluídos</translation> <translation id="4665282149850138822"><ph name="NAME" /> foi adicionado à sua tela inicial</translation> -<translation id="4668044310199835006">Favoritos do Work Chrome</translation> <translation id="4684427112815847243">Sincronizar tudo</translation> <translation id="4686372254213217147">Tamanho original</translation> -<translation id="4690286298542128877">As guias serão movidas para um alternador de guias dentro do Google Chrome.</translation> <translation id="4698413471314543145">Um recurso importante e necessário para a execução do Google Chrome está ausente. Isso acontece porque a instalação do Google Chrome não foi concluída ou porque ele não é compatível com esta versão do Android.</translation> <translation id="4699172675775169585">Imagens e arquivos armazenados em cache</translation> <translation id="4710672574193412565">Adicione uma Conta do Google na página de Contas do app Config. do seu dispositivo.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">A sincronização está desativada</translation> <translation id="5131405117025179004">Editar conta salva</translation> <translation id="5138299137310274655">Esta página está escrita em <ph name="SOURCE_LANGUAGE" />. Deseja traduzi-la para <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Mesclar guias e apps</translation> <translation id="515227803646670480">Limpar dados armazenados</translation> <translation id="5156656584247937086">Esta conta é de uma criança</translation> <translation id="5161254044473106830">O título é obrigatório</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Sair</translation> <translation id="5233638681132016545">Nova guia</translation> <translation id="5271967389191913893">Não é possível abrir no dispositivo o conteúdo a ser transferido por download.</translation> -<translation id="5275558766013849309">As guias serão mantidas com os aplicativos recentes.</translation> <translation id="528192093759286357">Arraste a partir da parte superior e toque no botão "Voltar" para sair da tela cheia.</translation> <translation id="5284584623296338184">Alterações feitas nos seus favoritos, histórico, senhas e outras configurações não serão mais sincronizadas com sua Conta do Google. No entanto, os dados já existentes permanecerão armazenados na Conta do Google.</translation> <translation id="5301954838959518834">Entendi</translation> @@ -449,7 +438,6 @@ <translation id="6108923351542677676">Configuração em andamento...</translation> <translation id="6112702117600201073">Atualizando página</translation> <translation id="6127379762771434464">Item removido</translation> -<translation id="6134870457258083164">Não está vendo seu dispositivo? <ph name="BEGIN_LINK1" />Receba ajuda<ph name="END_LINK1" /> ou <ph name="BEGIN_LINK2" />procure novamente<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Tornar a página otimizada para dispositivos móveis</translation> <translation id="6140912465461743537">País/região</translation> <translation id="6159335304067198720">Economia de dados de <ph name="PERCENT" /></translation> @@ -481,7 +469,6 @@ <translation id="6476911854266661814">“<ph name="VIDEO_TITLE" />” pausado</translation> <translation id="6477460825583319731">Endereço de e-mail inválido</translation> <translation id="6482749332252372425">Falha no download do arquivo <ph name="FILE_NAME" /> devido à falta de espaço de armazenamento.</translation> -<translation id="6541922744811587456">Favoritos do Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Selecione uma guia para transferir</translation> <translation id="6545017243486555795">Limpar todos os dados</translation> @@ -526,7 +513,7 @@ <translation id="6978479750597523876">Redefinir configurações do Google Tradutor</translation> <translation id="6981982820502123353">Acessibilidade</translation> <translation id="6990079615885386641">Comprar aplicativo na Google Play Store: <ph name="APP_ACTION" /></translation> -<translation id="699220179437400583">Informar automaticamente ao Google detalhes de possíveis incidentes de segurança.</translation> +<translation id="699220179437400583">Informar ao Google detalhes de possíveis incidentes de segurança automaticamente.</translation> <translation id="6992289844737586249">Perguntar antes de permitir que sites usem o microfone (recomendado)</translation> <translation id="6999892069268112724">Confirmar Conta do Google</translation> <translation id="7021515813996758557">O download de <ph name="FILE_NAME" /> foi concluído</translation> @@ -553,7 +540,6 @@ <translation id="7220786058474068424">Processando</translation> <translation id="7243308994586599757">Opções disponíveis perto da parte inferior da tela</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> usa sua localização para mostrar resultados de pesquisa locais</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ajuda<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Excluir favorito</translation> <translation id="7301833672208172928">Ativar a sincronização de históricos</translation> <translation id="7327835590071894791">Sua guia agora está em segundo plano.</translation> @@ -564,7 +550,6 @@ <translation id="7378627244592794276">Não</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Não é possível transmitir vídeo devido a restrições do site</translation> -<translation id="7408644312175185557">Veja as abas e telas de outros apps na Visão Geral do aparelho. Acesse as Configurações para controlar como isso funciona.</translation> <translation id="7423098979219808738">Perguntar primeiro</translation> <translation id="7437998757836447326">Sair do Google Chrome</translation> <translation id="7445411102860286510">Permite que os sites reproduzam automaticamente vídeos silenciados (recomendado)</translation> @@ -704,7 +689,7 @@ <translation id="8959122750345127698">A Navegação GPS está inacessível: <ph name="URL" /></translation> <translation id="8979340629087822094">do dia anterior</translation> <translation id="8981454092730389528">Controles de atividades do Google</translation> -<translation id="8986494364107987395">Enviar automaticamente estatísticas de uso e relatórios de erros ao Google</translation> +<translation id="8986494364107987395">Enviar estatísticas de uso e relatórios de erros ao Google automaticamente</translation> <translation id="8987061207681586800">O Chrome é seu</translation> <translation id="8998729206196772491">Você está fazendo login com uma conta gerenciada por <ph name="MANAGED_DOMAIN" /> e dando ao administrador dela o controle sobre seus dados do Chrome, os quais ficarão permanentemente vinculados a essa conta. Se você sair do Chrome, seus dados serão excluídos desse dispositivo, mas permanecerão armazenados na sua Conta do Google.</translation> <translation id="9019902583201351841">Gerenciado pelos seus pais</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb index 89536d2..966b142f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="pt-PT"> -<translation id="1040144152982955218">A procurar dispositivos… <ph name="BEGIN_LINK" />obter ajuda<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Aviso</translation> <translation id="10614374240317010">Nunca guardadas</translation> <translation id="1061441684050139317">O Chrome necessita de acesso ao microfone para o partilhar com este site.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Descubra páginas Web enviadas por objetos próximos. O Chrome reúne páginas Web associadas a objetos à sua volta, envia-as anonimamente para um serviço Google para procurar as que lhe são mais úteis e, em seguida, apresenta-as. Tem de ter a Localização e o Bluetooth ativados para poder utilizar a Web física.</translation> -<translation id="1250508505624960884">Marcadores do Chrome Beta</translation> <translation id="1254090737195733114">Pretende importar dados?</translation> <translation id="1258753120186372309">Doodle da Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Parar</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Cartões aceites</translation> <translation id="1966710179511230534">Atualize os detalhes de início de sessão.</translation> <translation id="1974060860693918893">Avançadas</translation> -<translation id="1984321224716884559">Marcadores do Chrome Dev</translation> <translation id="1984937141057606926">Permitidos, exceto de terceiros</translation> <translation id="1994173015038366702">URL do site</translation> <translation id="2001120796168634316">Guardar pág. ligação p/ depois</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">As preferências guardadas nos sites podem ser eliminadas</translation> <translation id="2748463065602559597">Está a ver uma página segura do Google Chrome.</translation> <translation id="2762000892062317888">agora mesmo</translation> -<translation id="2770465223704140727">Remover da lista</translation> <translation id="2777555524387840389">Faltam <ph name="SECONDS" /> segundos</translation> -<translation id="278029852808208386">Não foram encontrados dispositivos Bluetooth. <ph name="BEGIN_LINK" />Procure novamente<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Falta 1 segundo</translation> <translation id="2811892995384186721">Não vê o seu dispositivo? <ph name="BEGIN_LINK" />Obter ajuda<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Toque no botão de retrocesso para sair do ecrã inteiro.</translation> @@ -232,7 +227,6 @@ Para ajustar o termo de pesquisa, prima continuamente para selecionar. Para refinar a sua pesquisa, deslize lentamente o painel totalmente para cima e toque na caixa de pesquisa.</translation> <translation id="3616113530831147358">Áudio</translation> -<translation id="3623048332793834136">Marcadores do Chrome Canary</translation> <translation id="3632295766818638029">Desmascarar palavra-passe</translation> <translation id="363596933471559332">Inicie automaticamente sessão em Websites com as credenciais armazenadas. Quando a funcionalidade está desativada, é-lhe sempre pedida validação antes de iniciar sessão num Website.</translation> <translation id="3656115297268584622">Ative a localização nas <ph name="BEGIN_LINK" />Definições do Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nunca traduzir de <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Multimédia</translation> <translation id="4278390842282768270">Permitidos:</translation> -<translation id="4297410240212242334">Separar separadores e aplicações</translation> <translation id="4307992518367153382">Noções básicas</translation> <translation id="4334294535648607276">Transferência concluída.</translation> <translation id="4351244548802238354">Fechar caixa de diálogo</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Gerido pelos teus pais</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> marcadores eliminados</translation> <translation id="4665282149850138822"><ph name="NAME" /> foi adicionado ao seu Ecrã principal</translation> -<translation id="4668044310199835006">Marcadores do Work Chrome</translation> <translation id="4684427112815847243">Sincronizar tudo</translation> <translation id="4686372254213217147">Tamanho original</translation> -<translation id="4690286298542128877">Os separadores são movidos para um comutador de separadores no Chrome.</translation> <translation id="4698413471314543145">Uma funcionalidade crítica, necessária para executar o Chrome, está em falta. A instalação do Chrome pode estar incompleta ou não ser compatível com esta versão do Android.</translation> <translation id="4699172675775169585">Imagens e ficheiros em cache</translation> <translation id="4710672574193412565">Adicione uma Conta Google na página Contas na aplicação Definições do dispositivo.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">A sincronização está desativada</translation> <translation id="5131405117025179004">Editar conta guardada</translation> <translation id="5138299137310274655">Esta página está em <ph name="SOURCE_LANGUAGE" />. Pretende traduzi-la para <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Unir separadores e aplicações</translation> <translation id="515227803646670480">Limpar dados armazenados</translation> <translation id="5156656584247937086">Esta conta pertence a uma criança</translation> <translation id="5161254044473106830">Título obrigatório</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Terminar sessão</translation> <translation id="5233638681132016545">Novo separador</translation> <translation id="5271967389191913893">O dispositivo não consegue abrir o conteúdo a transferir.</translation> -<translation id="5275558766013849309">Os separadores são apresentados em conjunto com as aplicações recentes.</translation> <translation id="528192093759286357">Arraste a partir da parte superior e toque no botão de retrocesso para sair do ecrã inteiro.</translation> <translation id="5284584623296338184">As alterações aos marcadores, ao histórico, às palavras-passe e a outras definições deixam de ser sincronizadas com a Conta Google. Contudo, os dados existentes permanecem armazenados na Conta Google.</translation> <translation id="5301954838959518834">OK, já percebi</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Configuração em curso…</translation> <translation id="6112702117600201073">A atualizar a página</translation> <translation id="6127379762771434464">Item removido</translation> -<translation id="6134870457258083164">Não vê o seu dispositivo? <ph name="BEGIN_LINK1" />Obtenha ajuda<ph name="END_LINK1" /> ou <ph name="BEGIN_LINK2" />pesquise novamente<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Tornar a página compatível com dispositivos móveis</translation> <translation id="6140912465461743537">País/região</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> de poupança de dados</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">"<ph name="VIDEO_TITLE" />" em pausa</translation> <translation id="6477460825583319731">Endereço de email inválido</translation> <translation id="6482749332252372425">A transferência de <ph name="FILE_NAME" /> falhou devido à falta de espaço de armazenamento.</translation> -<translation id="6541922744811587456">Marcadores do Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Selecione um separador a transmitir</translation> <translation id="6545017243486555795">Limpar todos os dados</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">A processar</translation> <translation id="7243308994586599757">Opções disponíveis junto à parte inferior do ecrã</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> utiliza a sua localização para mostrar resultados da pesquisa locais</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ajuda<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Eliminar marcador</translation> <translation id="7301833672208172928">Ativar sincronização do histórico</translation> <translation id="7327835590071894791">O separador está agora em segundo plano.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Não</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Não é possível transmitir vídeo devido a restrições do site</translation> -<translation id="7408644312175185557">Veja os separadores com outras aplicações recentes no ecrã Vista geral do telemóvel.</translation> <translation id="7423098979219808738">Perguntar primeiro</translation> <translation id="7437998757836447326">Terminar sessão no Chrome</translation> <translation id="7445411102860286510">Permitir que os sites reproduzam automaticamente vídeos com o som desativado (recomendado)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb index 389caba..99ab423f 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ro.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ro"> -<translation id="1040144152982955218">Se caută dispozitive… <ph name="BEGIN_LINK" />obține ajutor<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Avertisment</translation> <translation id="10614374240317010">Nu se salvează niciodată</translation> <translation id="1061441684050139317">Chrome are nevoie de acces la microfon pentru a-l acorda acestui site.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Descoperă paginile web trimise de obiectele din apropiere. Chrome preia paginile web asociate cu obiectele din jurul tău, le trimite anonim la un serviciu Google pentru a afla care sunt cele mai utile pentru tine, apoi le afișează. Pentru a folosi Webul material, trebuie să activezi Bluetooth și Locația.</translation> -<translation id="1250508505624960884">Marcaje Chrome Beta</translation> <translation id="1254090737195733114">Imporți datele?</translation> <translation id="1258753120186372309">Doodle Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Oprește</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Carduri acceptate</translation> <translation id="1966710179511230534">Actualizați detaliile de conectare.</translation> <translation id="1974060860693918893">Avansate</translation> -<translation id="1984321224716884559">Marcaje Chrome Dev</translation> <translation id="1984937141057606926">Permise, cu excepția celor terță parte</translation> <translation id="1994173015038366702">Adresa URL a site-ului</translation> <translation id="2001120796168634316">Salvează pagina asociată pentru mai târziu</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Este posibil ca preferințele salvate pe site-uri să fie șterse</translation> <translation id="2748463065602559597">Acum afișează o pagină Google Chrome securizată.</translation> <translation id="2762000892062317888">adineauri</translation> -<translation id="2770465223704140727">Elimină din listă</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sec. rămase</translation> -<translation id="278029852808208386">Nu s-a găsit niciun dispozitiv Bluetooth. <ph name="BEGIN_LINK" />Caută din nou<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 sec. rămasă</translation> <translation id="2811892995384186721">Dispozitivul nu apare? <ph name="BEGIN_LINK" />Obține ajutor<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Atinge butonul Înapoi pentru a ieși din ecranul complet.</translation> @@ -232,7 +227,6 @@ Pentru a ajusta termenii căutării, apasă lung pentru a selecta. Pentru a rafina căutarea, glisează panoul până în partea de sus și atinge caseta de căutare.</translation> <translation id="3616113530831147358">Audio</translation> -<translation id="3623048332793834136">Marcaje Chrome Canary</translation> <translation id="3632295766818638029">Afișează parola</translation> <translation id="363596933471559332">Te conectezi automat la site-uri folosind datele de conectare stocate. Când funcția este dezactivată, ți se va solicita verificarea de fiecare dată înainte de a te conecta la un site.</translation> <translation id="3656115297268584622">Activează localizarea din <ph name="BEGIN_LINK" />Setările Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nu traduce niciodată din <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Se permite</translation> -<translation id="4297410240212242334">Separă filele și aplicațiile</translation> <translation id="4307992518367153382">Elemente de bază</translation> <translation id="4334294535648607276">Descărcarea a fost finalizată.</translation> <translation id="4351244548802238354">Închide caseta de dialog</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Gestionat de părintele tău</translation> <translation id="4663756553811254707">S-au șters <ph name="NUMBER_OF_BOOKMARKS" /> (de) marcaje</translation> <translation id="4665282149850138822">Site-ul <ph name="NAME" /> a fost adăugat pe ecranul de pornire</translation> -<translation id="4668044310199835006">Marcaje Work Chrome</translation> <translation id="4684427112815847243">Sincronizare totală</translation> <translation id="4686372254213217147">Dimensiune inițială</translation> -<translation id="4690286298542128877">Filele vor fi mutate într-un comutator de file din Chrome.</translation> <translation id="4698413471314543145">Lipsește o funcție esențială pentru a rula Chrome; fie instalarea Chrome este incompletă, fie nu este compatibilă cu această versiune de Android.</translation> <translation id="4699172675775169585">Imaginile și fișierele memorate în cache</translation> <translation id="4710672574193412565">Adaugă un Cont Google din pagina Conturi din aplicația Setări a dispozitivului.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Sincronizarea este dezactivată</translation> <translation id="5131405117025179004">Editează contul salvat</translation> <translation id="5138299137310274655">Această pagină este în <ph name="SOURCE_LANGUAGE" />. Vrei să fie tradusă în <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Îmbină filele și aplicațiile</translation> <translation id="515227803646670480">Șterge datele stocate</translation> <translation id="5156656584247937086">Acesta este contul unui copil</translation> <translation id="5161254044473106830">Titlul este obligatoriu</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Deconectează-te</translation> <translation id="5233638681132016545">Filă nouă</translation> <translation id="5271967389191913893">Dispozitivul nu poate deschide conținutul de descărcat.</translation> -<translation id="5275558766013849309">Filele se vor afla în același loc ca aplicațiile recente.</translation> <translation id="528192093759286357">Trage din partea de sus și atinge butonul Înapoi pentru a ieși din ecranul complet.</translation> <translation id="5284584623296338184">Modificările marcajelor, istoricului, parolelor sau ale altor setări nu vor mai fi sincronizate cu Contul Google. Totuși, datele existente vor rămâne stocate în Contul Google.</translation> <translation id="5301954838959518834">OK, am înțeles</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Configurare în curs...</translation> <translation id="6112702117600201073">Se actualizează pagina</translation> <translation id="6127379762771434464">Elementul a fost eliminat</translation> -<translation id="6134870457258083164">Dispozitivul nu apare? <ph name="BEGIN_LINK1" />Obține ajutor<ph name="END_LINK1" /> sau <ph name="BEGIN_LINK2" />caută din nou<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Fă pagina adecvată pentru mobil</translation> <translation id="6140912465461743537">Țară/Regiune</translation> <translation id="6159335304067198720">Economie de date de <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Videoclipul „<ph name="VIDEO_TITLE" />” a fost întrerupt</translation> <translation id="6477460825583319731">Adresă de e-mail nevalidă</translation> <translation id="6482749332252372425">Descărcarea fișierului <ph name="FILE_NAME" /> nu a reușit din cauza spațiului de stocare insuficient.</translation> -<translation id="6541922744811587456">Marcaje Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Selectează o filă pentru transmitere</translation> <translation id="6545017243486555795">Șterge toate datele</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Se procesează</translation> <translation id="7243308994586599757">Opțiuni disponibile în partea de jos a ecranului</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> folosește locația ta pentru a afișa rezultate locale ale căutării</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Ajutor<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Ștergeți marcajul</translation> <translation id="7301833672208172928">Activează sincronizarea istoricului</translation> <translation id="7327835590071894791">Fila se află în fundal.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nu</translation> <translation id="7400418766976504921">Adresă URL</translation> <translation id="7400448254438078120">Nu se poate proiecta videoclipul din cauza restricțiilor site-ului</translation> -<translation id="7408644312175185557">Vezi filele împreună cu alte aplicații recente pe ecranul Recente de pe telefon.</translation> <translation id="7423098979219808738">Mai întâi întreabă</translation> <translation id="7437998757836447326">Deconectează-te de la Chrome</translation> <translation id="7445411102860286510">Permite site-urilor să redea automat videoclipuri cu sunetul dezactivat (recomandat)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb index 3ba2bcc..2310c885 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_ru.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="ru"> -<translation id="1040144152982955218">Поиск устройств… <ph name="BEGIN_LINK" />Справка<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Внимание</translation> <translation id="10614374240317010">Сайты, пароли для которых не сохраняются</translation> <translation id="1061441684050139317">Предоставьте браузеру Chrome доступ к микрофону, чтобы пользоваться им на этом сайте.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">"Интернет вокруг нас" – это новый способ познавать мир. Chrome находит и анонимно отправляет в сервис Google веб-страницы, связанные с находящимися рядом объектами, а затем предлагает вам самые интересные и полезные ресурсы. Чтобы использовать эту функцию, необходимо включить Bluetooth и доступ к геоданным.</translation> -<translation id="1250508505624960884">Закладки Chrome (бета)</translation> <translation id="1254090737195733114">Импорт данных</translation> <translation id="1258753120186372309">Дудл Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Остановить</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Поддерживаемые типы карт</translation> <translation id="1966710179511230534">Обновите учетные данные</translation> <translation id="1974060860693918893">Дополнительные</translation> -<translation id="1984321224716884559">Закладки Chrome для разработчиков</translation> <translation id="1984937141057606926">Разрешено, кроме сторонних сайтов</translation> <translation id="1994173015038366702">Адрес сайта</translation> <translation id="2001120796168634316">Сохранить страницу офлайн</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Пользовательские настройки сайтов будут удалены.</translation> <translation id="2748463065602559597">Вы просматриваете безопасную страницу Google Chrome.</translation> <translation id="2762000892062317888">только что</translation> -<translation id="2770465223704140727">Удалить из списка</translation> <translation id="2777555524387840389">Осталось <ph name="SECONDS" /> сек.</translation> -<translation id="278029852808208386">Устройства Bluetooth не обнаружены. <ph name="BEGIN_LINK" />Повторите попытку<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Осталась 1 сек.</translation> <translation id="2811892995384186721">Не можете найти устройство? <ph name="BEGIN_LINK" />Узнайте<ph name="END_LINK" />, как это исправить.</translation> <translation id="2836148919159985482">Чтобы выйти из полноэкранного режима, нажмите кнопку "Назад".</translation> @@ -232,7 +227,6 @@ Чтобы задать новый поисковый запрос, нажмите на нужное слово и не отпускайте палец. Чтобы уточнить запрос, прокрутите панель вверх и коснитесь поисковой строки.</translation> <translation id="3616113530831147358">Аудио</translation> -<translation id="3623048332793834136">Закладки Chrome Canary</translation> <translation id="3632295766818638029">Показать пароль</translation> <translation id="363596933471559332">Входить на веб-сайты с помощью сохраненного имени пользователя и пароля. Когда функция отключена, эти данные нужно указывать при каждом входе.</translation> <translation id="3656115297268584622">Включите определение местоположения в <ph name="BEGIN_LINK" />настройках Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Никогда не переводить <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Камера и микрофон </translation> <translation id="4278390842282768270">Разрешены</translation> -<translation id="4297410240212242334">Вкладки внутри Chrome</translation> <translation id="4307992518367153382">Основные</translation> <translation id="4334294535648607276">Скачивание завершено.</translation> <translation id="4351244548802238354">Закрыть</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Управляется вашими родителями</translation> <translation id="4663756553811254707">Удалено закладок: <ph name="NUMBER_OF_BOOKMARKS" /></translation> <translation id="4665282149850138822">Сайт <ph name="NAME" /> добавлен на главный экран</translation> -<translation id="4668044310199835006">Закладки Work Chrome</translation> <translation id="4684427112815847243">Синхронизировать все</translation> <translation id="4686372254213217147">Исходный размер</translation> -<translation id="4690286298542128877">Каждая вкладка будет отображаться внутри Chrome, а не в виде отдельных окон в списке приложений.</translation> <translation id="4698413471314543145">Отсутствует функция, необходимая для работы Chrome. Возможно, установка не была завершена или вы используете несовместимую версию Android.</translation> <translation id="4699172675775169585">Изображения и другие файлы, сохраненные в кеше</translation> <translation id="4710672574193412565">Добавьте аккаунт Google в соответствующем разделе настроек устройства.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Синхронизация выключена</translation> <translation id="5131405117025179004">Изменить настройки аккаунта</translation> <translation id="5138299137310274655">Язык этой страницы – <ph name="SOURCE_LANGUAGE" />. Перевести ее на <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Вкладки в списке приложений</translation> <translation id="515227803646670480">Удаление данных</translation> <translation id="5156656584247937086">Это аккаунт ребенка</translation> <translation id="5161254044473106830">Введите название</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Выйти</translation> <translation id="5233638681132016545">Новая вкладка</translation> <translation id="5271967389191913893">Не удается открыть скачанный контент.</translation> -<translation id="5275558766013849309">Каждая вкладка будет отображаться в виде отдельного окна в списке открытых приложений.</translation> <translation id="528192093759286357">Чтобы выйти из полноэкранного режима, проведите по экрану сверху вниз и нажмите кнопку "Назад".</translation> <translation id="5284584623296338184">Изменения в ваших закладках, паролях, истории и других настройках больше не будут синхронизироваться с аккаунтом Google. Это изменение не затронет данные, сохраненные в аккаунте ранее.</translation> <translation id="5301954838959518834">ОК</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Настройка…</translation> <translation id="6112702117600201073">Обновление страницы</translation> <translation id="6127379762771434464">Быстрая ссылка удалена</translation> -<translation id="6134870457258083164">Не можете найти свое устройство? <ph name="BEGIN_LINK1" />Узнайте<ph name="END_LINK1" />, как это исправить, или запустите поиск <ph name="BEGIN_LINK2" />ещё раз<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Адаптировать страницу для мобильных устройств</translation> <translation id="6140912465461743537">Страна/регион</translation> <translation id="6159335304067198720">Сжатие данных: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Воспроизведение видео "<ph name="VIDEO_TITLE" />" приостановлено</translation> <translation id="6477460825583319731">Неверный адрес электронной почты</translation> <translation id="6482749332252372425">Не удалось скачать файл <ph name="FILE_NAME" />, так как места для хранения данных недостаточно.</translation> -<translation id="6541922744811587456">Закладки Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Выберите вкладку для передачи</translation> <translation id="6545017243486555795">Удалить все данные</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Подождите…</translation> <translation id="7243308994586599757">Доступные параметры указаны в нижней части экрана</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> использует ваше местоположение, чтобы показывать результаты поиска по адресам.</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Справка<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Удалить закладку</translation> <translation id="7301833672208172928">Включить</translation> <translation id="7327835590071894791">Вкладка переведена в фоновый режим.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Нет</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Не удается начать трансляцию видео из-за ограничений на сайте</translation> -<translation id="7408644312175185557">Просматривайте вкладки в списке недавно использованных приложений, нажав значок "Обзор" на устройстве.</translation> <translation id="7423098979219808738">Всегда спрашивать</translation> <translation id="7437998757836447326">Выход из Chrome</translation> <translation id="7445411102860286510">Разрешить сайтам автоматически воспроизводить видео без звука (рекомендуется)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb index 90966d1c..530ef77 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sk.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sk"> -<translation id="1040144152982955218">Hľadajú sa zariadenia… <ph name="BEGIN_LINK" />získať pomoc<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Upozornenie</translation> <translation id="10614374240317010">Neuložené</translation> <translation id="1061441684050139317">Na to, aby Chrome mohol s týmito webovými stránkami zdieľať mikrofón, musí mať k nemu prístup.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Objavte webové stránky odosielané objektmi v okolí. Chrome zhromažďuje webové stránky týkajúce sa objektov okolo vás, odosiela ich anonymne do služby Google, aby tak našiel tie, ktoré sú pre vás najužitočnejšie. Následne ich zobrazí. Ak chcete používať Fyzický web, musíte mať zapnuté rozhranie Bluetooth a sledovanie polohy.</translation> -<translation id="1250508505624960884">Záložky Chrome Beta</translation> <translation id="1254090737195733114">Importovať údaje?</translation> <translation id="1258753120186372309">Sviatočné logo Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Zastaviť</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Prijímame karty</translation> <translation id="1966710179511230534">Aktualizujte svoje prihlasovacie údaje.</translation> <translation id="1974060860693918893">Rozšírené</translation> -<translation id="1984321224716884559">Záložky Chrome Dev</translation> <translation id="1984937141057606926">Povolené (okrem tretích strán)</translation> <translation id="1994173015038366702">Webová adresa stránok</translation> <translation id="2001120796168634316">Uložiť prepojenú stránku na neskôr</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Uložené predvoľby webov môžu byť vymazané</translation> <translation id="2748463065602559597">Práve si prezeráte zabezpečenú stránku prehliadača Google Chrome.</translation> <translation id="2762000892062317888">práve teraz</translation> -<translation id="2770465223704140727">Odstrániť zo zoznamu</translation> <translation id="2777555524387840389">Zostáva: <ph name="SECONDS" /> s</translation> -<translation id="278029852808208386">Nenašli sa žiadne zariadenia Bluetooth. <ph name="BEGIN_LINK" />Vyhľadať znova<ph name="END_LINK" /></translation> <translation id="2781151931089541271">Zostáva: 1 s</translation> <translation id="2811892995384186721">Nezobrazuje sa vaše zariadenie? <ph name="BEGIN_LINK" />Získať pomoc<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Ukončite režim celej obrazovky klepnutím na tlačidlo Späť.</translation> @@ -232,7 +227,6 @@ Ak chcete upraviť hľadaný výraz, vyberte ho dlhým stlačením. Ak chcete vyhľadávanie spresniť, posuňte panel úplne hore a klepnite na vyhľadávacie pole.</translation> <translation id="3616113530831147358">Zvuk</translation> -<translation id="3623048332793834136">Záložky Chrome Canary</translation> <translation id="3632295766818638029">Odhaliť heslo</translation> <translation id="363596933471559332">Povolí automatické prihlasovanie na webové stránky pomocou uložených poverení. Keď je funkcia vypnutá, zobrazí sa výzva na overenie vždy pred prihlásením na web.</translation> <translation id="3656115297268584622">Zapnúť polohu v <ph name="BEGIN_LINK" />nastaveniach systému Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nikdy neprekladať jazyk <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Médiá</translation> <translation id="4278390842282768270">Povolené</translation> -<translation id="4297410240212242334">Oddelenie kariet a aplikácií</translation> <translation id="4307992518367153382">Základy</translation> <translation id="4334294535648607276">Sťahovanie bolo dokončené.</translation> <translation id="4351244548802238354">Zavrieť dialógové okno</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Spravované vaším rodičom</translation> <translation id="4663756553811254707">Počet odstránených záložiek: <ph name="NUMBER_OF_BOOKMARKS" /></translation> <translation id="4665282149850138822">Stránky <ph name="NAME" /> boli pridané na plochu</translation> -<translation id="4668044310199835006">Záložky Work Chrome</translation> <translation id="4684427112815847243">Synchronizovať všetko</translation> <translation id="4686372254213217147">Pôvodná veľkosť</translation> -<translation id="4690286298542128877">Karty sa presunú na prepínač kariet v prehliadači Chrome.</translation> <translation id="4698413471314543145">Chýba nevyhnutná funkcia na spustenie aplikácie Chrome. Inštalácia aplikácie Chrome sa nedokončila alebo aplikácia nie je kompatibilná s touto verziou Androidu.</translation> <translation id="4699172675775169585">Obrázky a súbory vo vyrovnávacej pamäti</translation> <translation id="4710672574193412565">Pridajte účet Google zo stránky Účty v aplikácii Nastavenia na vašom zariadení.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synchronizácia je vypnutá.</translation> <translation id="5131405117025179004">Úprava uloženého účtu</translation> <translation id="5138299137310274655">Táto stránka je v jazyku <ph name="SOURCE_LANGUAGE" />. Chcete ju preložiť do jazyka <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Zlúčenie kariet a aplikácií</translation> <translation id="515227803646670480">Vymazanie uložených údajov</translation> <translation id="5156656584247937086">Toto je detský účet</translation> <translation id="5161254044473106830">Musíte zadať názov</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Odhlásiť sa</translation> <translation id="5233638681132016545">Nová karta</translation> <translation id="5271967389191913893">Zariadenie nemôže otvoriť obsah na stiahnutie</translation> -<translation id="5275558766013849309">Karty sa budú zobrazovať spolu s nedávnymi aplikáciami.</translation> <translation id="528192093759286357">Režim celej obrazovky ukončíte potiahnutím z hornej časti a klepnutím na tlačidlo Späť.</translation> <translation id="5284584623296338184">Záložky, história, heslá a ďalšie nastavenia sa už nebudú ďalej synchronizovať do vášho účtu Google. Vaše súčasné údaje však zostanú v účte Google zachované.</translation> <translation id="5301954838959518834">Áno, rozumiem</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Inštaluje sa...</translation> <translation id="6112702117600201073">Obnovenie stránky</translation> <translation id="6127379762771434464">Položka bola odstránená</translation> -<translation id="6134870457258083164">Nezobrazuje sa vaše zariadenie? <ph name="BEGIN_LINK1" />Získajte pomoc<ph name="END_LINK1" /> alebo <ph name="BEGIN_LINK2" />spustite znova vyhľadávanie<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Upravte stránku, aby bola vhodná pre mobilné zariadenia</translation> <translation id="6140912465461743537">Krajina alebo oblasť</translation> <translation id="6159335304067198720">Úspora dát: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Pozastavené: <ph name="VIDEO_TITLE" /></translation> <translation id="6477460825583319731">Neplatná e-mailová adresa</translation> <translation id="6482749332252372425">Súbor <ph name="FILE_NAME" /> sa nepodarilo stiahnuť z dôvodu nedostatku voľného miesta v úložisku.</translation> -<translation id="6541922744811587456">Záložky Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Vyberte kartu, ktorú chcete preniesť</translation> <translation id="6545017243486555795">Vymazať všetky dáta</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Spracováva sa</translation> <translation id="7243308994586599757">Možnosti sú k dispozícii v dolnej časti obrazovky</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> používa vašu polohu na zobrazovanie miestnych výsledkov vyhľadávania.</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pomocník<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Odstrániť záložku</translation> <translation id="7301833672208172928">Zapnúť synchronizáciu histórie</translation> <translation id="7327835590071894791">Karta je teraz spustená na pozadí.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nie</translation> <translation id="7400418766976504921">Webová adresa</translation> <translation id="7400448254438078120">Video nie je možné prenášať z dôvodu obmedzení stránok</translation> -<translation id="7408644312175185557">Zobrazte si svoje karty spolu s ostatnými nedávnymi aplikáciami na telefóne na obrazovke Prehľad.</translation> <translation id="7423098979219808738">Najprv sa spýtať</translation> <translation id="7437998757836447326">Odhlásenie z prehliadača Chrome</translation> <translation id="7445411102860286510">Povoliť webom automaticky prehrávať stlmené videá (odporúča sa)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb index 5a6fcbd9..92b7508 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sl.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sl"> -<translation id="1040144152982955218">Iskanje naprav … <ph name="BEGIN_LINK" />Poiščite pomoč<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Opozorilo</translation> <translation id="10614374240317010">Nikoli shranjeno</translation> <translation id="1061441684050139317">Chrome potrebuje dostop do mikrofona, če želite, da temu spletnemu mestu omogoči dostop do njega.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Odkrivanje spletnih strani, ki jih pošljejo predmeti v bližini. Chrome zbira spletne strani, povezane s predmeti okoli vas, jih anonimno pošlje Googlovi storitvi, ki poišče tiste, ki so za vas najuporabnejše, nato pa jih prikaže. Če želite uporabljati Fizični splet, morata biti vklopljeni povezava Bluetooth in lokacijska storitev.</translation> -<translation id="1250508505624960884">Zaznamki iz Chroma Beta</translation> <translation id="1254090737195733114">Želite uvoziti podatke?</translation> <translation id="1258753120186372309">Googlov priložnostni logotip: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Ustavi</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Dovoljene kartice</translation> <translation id="1966710179511230534">Posodobite podrobnosti prijave.</translation> <translation id="1974060860693918893">Dodatno</translation> -<translation id="1984321224716884559">Zaznamki iz Chroma Dev</translation> <translation id="1984937141057606926">Dovoljeno, razen za druga spletna mesta</translation> <translation id="1994173015038366702">URL spletnega mesta</translation> <translation id="2001120796168634316">Shrani stran s povezave</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Morda bodo izbrisane shranjene nastavitve na spletnih mestih</translation> <translation id="2748463065602559597">Ogledujete si varno stran Google Chrome.</translation> <translation id="2762000892062317888">pravkar</translation> -<translation id="2770465223704140727">Odstrani s seznama</translation> <translation id="2777555524387840389">Še <ph name="SECONDS" /> s</translation> -<translation id="278029852808208386">Najdena ni bila nobena naprava Bluetooth. <ph name="BEGIN_LINK" />Iščite znova<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Še 1 s</translation> <translation id="2811892995384186721">Vaša naprava ni prikazana? <ph name="BEGIN_LINK" />Poiščite pomoč<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Dotaknite se gumba za nazaj, če želite zapreti celozaslonski način.</translation> @@ -232,7 +227,6 @@ Če želite prilagoditi iskalno poizvedbo, jo izberite z daljšim dotikom. Če želite podrobneje nastaviti iskanje, potisnite podokno povsem navzgor in se dotaknite iskalnega polja.</translation> <translation id="3616113530831147358">Zvok</translation> -<translation id="3623048332793834136">Zaznamki iz Chroma Canary</translation> <translation id="3632295766818638029">Razkritje gesla</translation> <translation id="363596933471559332">Samodejna prijava v spletna mesta s shranjenimi poverilnicami. Ko je ta funkcija izklopljena, bo pri vsaki prijavi v spletno mesto potrebno preverjanje.</translation> <translation id="3656115297268584622">Lokacijsko storitev vklopite v <ph name="BEGIN_LINK" />nastavitvah sistema Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Nikoli ne prevedi iz jezika <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Predstavnosti</translation> <translation id="4278390842282768270">Dovoljeno</translation> -<translation id="4297410240212242334">Loči zavihke in aplikacije</translation> <translation id="4307992518367153382">Osnove</translation> <translation id="4334294535648607276">Prenos končan.</translation> <translation id="4351244548802238354">Zapri pogovorno okno</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Upravlja starš</translation> <translation id="4663756553811254707">Št. izbrisanih zaznamkov: <ph name="NUMBER_OF_BOOKMARKS" /></translation> <translation id="4665282149850138822">Spletno mesto <ph name="NAME" /> je bilo dodano na začetni zaslon</translation> -<translation id="4668044310199835006">Zaznamki iz Chroma za podjetja</translation> <translation id="4684427112815847243">Sinhroniziraj vse</translation> <translation id="4686372254213217147">Prvotna velikost</translation> -<translation id="4690286298542128877">Zavihki bodo premaknjeni v orodje za preklapljanje med zavihki v Chromu.</translation> <translation id="4698413471314543145">Ni funkcije, ki je nujno potrebna za izvajanje Chroma. Namestitev Chroma je nepopolna ali ni združljiva s to različico Androida.</translation> <translation id="4699172675775169585">Predpomnjene slike in datoteke</translation> <translation id="4710672574193412565">Na strani za račune v aplikaciji Nastavitve dodajte Google Račun.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Sinhroniziranje je izklopljeno</translation> <translation id="5131405117025179004">Urejanje shranjenega računa</translation> <translation id="5138299137310274655">Jezik te strani je <ph name="SOURCE_LANGUAGE" />. Jo želite prevesti v jezik <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Združi zavihke in aplikacije</translation> <translation id="515227803646670480">Izbris shranjenih podatkov</translation> <translation id="5156656584247937086">To je račun otroka</translation> <translation id="5161254044473106830">Naslov je obvezen</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Odjava</translation> <translation id="5233638681132016545">Nov zavihek</translation> <translation id="5271967389191913893">Naprava ne more odpreti vsebine za prenos.</translation> -<translation id="5275558766013849309">Zavihki bodo prikazani skupaj z nedavno uporabljenimi aplikacijami.</translation> <translation id="528192093759286357">Povlecite z vrha in se dotaknite gumba za nazaj, če želite zapreti celozaslonski način.</translation> <translation id="5284584623296338184">Spremembe zaznamkov, zgodovine, gesel in drugih nastavitev ne bodo več sinhronizirane z Google Računom. Obstoječi podatki bodo še naprej shranjeni v Google Računu.</translation> <translation id="5301954838959518834">V redu, razumem</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Poteka nastavitev …</translation> <translation id="6112702117600201073">Osveževanje strani</translation> <translation id="6127379762771434464">Element odstranjen</translation> -<translation id="6134870457258083164">Vaša naprava ni prikazana? <ph name="BEGIN_LINK1" />Poiščite pomoč<ph name="END_LINK1" /> ali <ph name="BEGIN_LINK2" />iščite znova<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Prikaži stran v pogledu, prilagojenem mobilnim napravam</translation> <translation id="6140912465461743537">Država/regija</translation> <translation id="6159335304067198720">Prihranek pri prenosu podatkov: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Začasno ustavljeno: »<ph name="VIDEO_TITLE" />«</translation> <translation id="6477460825583319731">Neveljaven e-poštni naslov</translation> <translation id="6482749332252372425">Prenos datoteke <ph name="FILE_NAME" /> ni uspel zaradi pomanjkanja prostora za shranjevanje.</translation> -<translation id="6541922744811587456">Zaznamki iz Chroma</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Izberite zavihek za prenos</translation> <translation id="6545017243486555795">Izbris vseh podatkov</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Obdelovanje</translation> <translation id="7243308994586599757">Možnosti so na voljo pri dnu zaslona</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> uporablja vašo lokacijo za prikaz lokalnih rezultatov iskanja</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Pomoč<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Izbriši zaznamek</translation> <translation id="7301833672208172928">Vklop sinhronizacije zgodovine</translation> <translation id="7327835590071894791">Zavihek je zdaj v ozadju.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Ne</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Zaradi omejitev spletnega mesta ni mogoče predvajati videoposnetkov</translation> -<translation id="7408644312175185557">Oglejte si zavihke z drugimi nedavnimi aplikacijami na zaslonu za pregled v telefonu.</translation> <translation id="7423098979219808738">Najprej vprašaj</translation> <translation id="7437998757836447326">Odjava iz Google Chroma</translation> <translation id="7445411102860286510">Dovoli spletnim mestom samodejno predvajanje videoposnetkov z izklopljenim zvokom (priporočljivo)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb index 9213d79..cf5b524 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sr.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sr"> -<translation id="1040144152982955218">Тражимо уређаје… <ph name="BEGIN_LINK" />Потражите помоћ<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Упозорење</translation> <translation id="10614374240317010">Никада се не чува</translation> <translation id="1061441684050139317">Chrome-у је потребан приступ за микрофон да би га делио са овим сајтом.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Откријте веб-странице које шаљу објекти у околини. Chrome прикупља веб-странице повезане са објектима у околини, анонимно их шаље Google услузи да би пронашао оне које су вам најкорисније и приказује их. Морате да укључите Bluetooth и Локацију да бисте користили Интернет око нас.</translation> -<translation id="1250508505624960884">Chrome бета обележивачи</translation> <translation id="1254090737195733114">Желите ли увоз података?</translation> <translation id="1258753120186372309">Google дудл логотип: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Заустави</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Прихваћене картице</translation> <translation id="1966710179511230534">Ажурирајте податке за пријављивање.</translation> <translation id="1974060860693918893">Напредне опције</translation> -<translation id="1984321224716884559">Chrome Dev обележивачи</translation> <translation id="1984937141057606926">Дозвољени, осим треће стране</translation> <translation id="1994173015038366702">URL сајта</translation> <translation id="2001120796168634316">Сачувај страницу са везама за касније</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Сачувана подешавања на сајтовима ће можда бити избрисана</translation> <translation id="2748463065602559597">Прегледате безбедну Google Chrome страницу.</translation> <translation id="2762000892062317888">малопре</translation> -<translation id="2770465223704140727">Уклони са листе</translation> <translation id="2777555524387840389">Још <ph name="SECONDS" /> сек</translation> -<translation id="278029852808208386">Није пронађен ниједан Bluetooth уређај. <ph name="BEGIN_LINK" />Претражите поново<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Још 1 сек</translation> <translation id="2811892995384186721">Не видите уређај? <ph name="BEGIN_LINK" />Потражите помоћ<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Додирните дугме Назад да бисте изашли из режима целог екрана.</translation> @@ -232,7 +227,6 @@ Да бисте прилагодили термин за претрагу, притисните и задржите да бисте га изабрали. Да бисте прецизирали претрагу, превуците таблу нагоре до краја и додирните оквир за претрагу.</translation> <translation id="3616113530831147358">Аудио</translation> -<translation id="3623048332793834136">Chrome Canary обележивачи</translation> <translation id="3632295766818638029">Откриј лозинку</translation> <translation id="363596933471559332">Аутоматски се пријављујте на веб-сајтове помоћу сачуваних акредитива. Када је ова функција искључена, тражићемо вам да се верификујете пре сваког пријављивања на веб-сајт.</translation> <translation id="3656115297268584622">Укључите локацију у <ph name="BEGIN_LINK" />Android подешавањима<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Никада не преводи <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Медији</translation> <translation id="4278390842282768270">Дозвољено</translation> -<translation id="4297410240212242334">Раздвојите картице и апликације</translation> <translation id="4307992518367153382">Основне</translation> <translation id="4334294535648607276">Преузимање је довршено.</translation> <translation id="4351244548802238354">Затвори дијалог</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Овим управља твој родитељ</translation> <translation id="4663756553811254707">Избрисали сте <ph name="NUMBER_OF_BOOKMARKS" /> обележивача</translation> <translation id="4665282149850138822"><ph name="NAME" /> је додат на почетни екран</translation> -<translation id="4668044310199835006">Chrome for Work прегледачи</translation> <translation id="4684427112815847243">Синхронизуј све</translation> <translation id="4686372254213217147">Оригинална величина</translation> -<translation id="4690286298542128877">Картице ће бити премештене у пребацивач картица у оквиру Chrome-а.</translation> <translation id="4698413471314543145">Недостаје функција од критичне важности потребна за покретање Chrome-а; или инсталација Chrome-а није комплетна или није компатибилна са овом верзијом Android-а.</translation> <translation id="4699172675775169585">Кеширане слике и датотеке</translation> <translation id="4710672574193412565">Додајте Google налог са странице Налози у апликацији Подешавања на уређају.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Синхронизација је искључена</translation> <translation id="5131405117025179004">Измените сачувани налог</translation> <translation id="5138299137310274655">Језик ове странице је <ph name="SOURCE_LANGUAGE" />. Желите ли да преведете страницу на <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Спојите картице и апликације</translation> <translation id="515227803646670480">Обришите сачуване податке</translation> <translation id="5156656584247937086">Ово је дететов налог</translation> <translation id="5161254044473106830">Наслов је обавезан</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Одјави ме</translation> <translation id="5233638681132016545">Нова картица</translation> <translation id="5271967389191913893">Уређај не може да отвори садржај за преузимање.</translation> -<translation id="5275558766013849309">Картице ће се приказивати заједно са недавним апликацијама.</translation> <translation id="528192093759286357">Превуците од врха екрана и додирните дугме Назад да бисте изашли из режима целог екрана.</translation> <translation id="5284584623296338184">Промене обележивача, историје, лозинки и других подешавања се више неће синхронизовати са Google налогом. Међутим, постојећи подаци ће остати сачувани на Google налогу.</translation> <translation id="5301954838959518834">Важи</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Подешавање је у току...</translation> <translation id="6112702117600201073">Освежавање странице</translation> <translation id="6127379762771434464">Уклонили сте ставку</translation> -<translation id="6134870457258083164">Не видите уређај? <ph name="BEGIN_LINK1" />Потражите помоћ<ph name="END_LINK1" /> или <ph name="BEGIN_LINK2" />претражите поново<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Прилагодите страницу мобилним уређајима</translation> <translation id="6140912465461743537">Земља/регија</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> уштеде података</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">„<ph name="VIDEO_TITLE" />“ је паузиран</translation> <translation id="6477460825583319731">Неважећа имејл адреса</translation> <translation id="6482749332252372425">Преузимање датотеке <ph name="FILE_NAME" /> није успело због недостатка меморијског простора.</translation> -<translation id="6541922744811587456">Chrome обележивачи</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Изаберите картицу за пребацивање</translation> <translation id="6545017243486555795">Обриши све податке</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Обрада</translation> <translation id="7243308994586599757">Опције су доступне у дну екрана</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> користи локацију да би приказао локалне резултате претраге</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Помоћ<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Брисање обележивача</translation> <translation id="7301833672208172928">Укључи синхронизацију историје</translation> <translation id="7327835590071894791">Картица је сада у позадини.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Не</translation> <translation id="7400418766976504921">URL адреса</translation> <translation id="7400448254438078120">Није могуће пребацити видео због ограничења сајта</translation> -<translation id="7408644312175185557">Погледајте картице са другим недавним апликацијама на екрану Преглед на телефону.</translation> <translation id="7423098979219808738">Прво питај</translation> <translation id="7437998757836447326">Одјављивање из Chrome-а</translation> <translation id="7445411102860286510">Дозволи сајтовима да аутоматски пуштају видео снимке са искљученим звуком (препоручено)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb index 1bad51b6..2432a43 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sv.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sv"> -<translation id="1040144152982955218">Söker efter enheter … <ph name="BEGIN_LINK" />få hjälp<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Varning</translation> <translation id="10614374240317010">Aldrig sparad</translation> <translation id="1061441684050139317">Chrome behöver tillgång till mikrofonen för att kunna dela den på den här webbplatsen.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Upptäck webbsidor som skickats av enheter i närheten. Chrome samlar webbsidor som är kopplade till enheter i din omgivning, skickar de sedan anonymt till en av Googles tjänster och väljer de som är mest användbara för dig och visar dem sedan. Bluetooth och Plats måste vara aktiverade om du vill använda Physical Web-tjänster.</translation> -<translation id="1250508505624960884">Bokmärken i Chrome Beta</translation> <translation id="1254090737195733114">Vill du importera data?</translation> <translation id="1258753120186372309">Googles doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Stopp</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Godkända kort</translation> <translation id="1966710179511230534">Uppdatera dina inloggningsuppgifter.</translation> <translation id="1974060860693918893">Avancerat</translation> -<translation id="1984321224716884559">Bokmärken i Chrome Dev</translation> <translation id="1984937141057606926">Tillåts, men inte från tredje part</translation> <translation id="1994173015038366702">Webbadress</translation> <translation id="2001120796168634316">Spara den länkade sidan</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Sparade inställningar på webbplatser kanske raderas</translation> <translation id="2748463065602559597">Du tittar på en säker Google Chrome-sida.</translation> <translation id="2762000892062317888">nyss</translation> -<translation id="2770465223704140727">Ta bort från listan</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sekunder kvar</translation> -<translation id="278029852808208386">Inga Bluetooth-enheter hittades. <ph name="BEGIN_LINK" />Gör om sökningen<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 sekund kvar</translation> <translation id="2811892995384186721">Visas inte enheten? <ph name="BEGIN_LINK" />Få hjälp<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Tryck på bakåtknappen för att lämna helskärmsläget.</translation> @@ -232,7 +227,6 @@ Om du vill ändra söktermen trycker du länge för att välja. Om du vill förfina sökningen drar du panelen ända upp och trycker på sökrutan.</translation> <translation id="3616113530831147358">Ljud</translation> -<translation id="3623048332793834136">Bokmärken i Chrome Canary</translation> <translation id="3632295766818638029">Visa lösenord</translation> <translation id="363596933471559332">Logga in automatiskt på webbplatser med hjälp av lagrade inloggningsuppgifter. När funktionen är inaktiverad måste du verifiera dina uppgifter varje gång du besöker webbplatsen innan du kan logga in.</translation> <translation id="3656115297268584622">Aktivera plats i <ph name="BEGIN_LINK" />Android-inställningarna<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Översätt aldrig från <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Media</translation> <translation id="4278390842282768270">Tillåtet</translation> -<translation id="4297410240212242334">Separera flikar och appar</translation> <translation id="4307992518367153382">Grunderna</translation> <translation id="4334294535648607276">Nedladdningen har slutförts.</translation> <translation id="4351244548802238354">Stäng dialogrutan</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Hanteras av din förälder</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> bokmärken har raderats</translation> <translation id="4665282149850138822"><ph name="NAME" /> har lagts till på startskärmen.</translation> -<translation id="4668044310199835006">Bokmärken i Work Chrome</translation> <translation id="4684427112815847243">Synkronisera allt</translation> <translation id="4686372254213217147">Originalstorlek</translation> -<translation id="4690286298542128877">Flikar flyttas till en funktion för flikbyte i Chrome.</translation> <translation id="4698413471314543145">Det saknas viktiga funktioner i din version som krävs för att Chrome ska kunna köras. Antingen har installationen av Chrome inte slutförts eller så är Chrome och den här versionen av Android inte kompatibla.</translation> <translation id="4699172675775169585">Cachade bilder och filer</translation> <translation id="4710672574193412565">Lägg till ett Google-konto från kontosidan i appen Inställningar på enheten.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Synkronisering är av</translation> <translation id="5131405117025179004">Redigera sparat konto</translation> <translation id="5138299137310274655">Den här sidan är skriven på <ph name="SOURCE_LANGUAGE" />. Vill du översätta den till <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Sammanfoga flikar och appar</translation> <translation id="515227803646670480">Ta bort sparad data</translation> <translation id="5156656584247937086">Det här är ett barnkonto</translation> <translation id="5161254044473106830">Titel krävs</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Logga ut</translation> <translation id="5233638681132016545">Ny flik</translation> <translation id="5271967389191913893">Innehållet som skulle laddas ned gick inte att öppna på enheten.</translation> -<translation id="5275558766013849309">Flikarna visas tillsammans med aktuella appar.</translation> <translation id="528192093759286357">Dra uppifrån och tryck på bakåtknappen för att lämna helskärmsläget.</translation> <translation id="5284584623296338184">Ändringar i bokmärken, historik, lösenord och andra inställningar synkroniseras inte längre med ditt Google-konto. Befintlig data fortsätter dock att lagras i Google-kontot.</translation> <translation id="5301954838959518834">OK, jag fattar</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Konfigurationen pågår ...</translation> <translation id="6112702117600201073">Uppdaterar sidan</translation> <translation id="6127379762771434464">Objektet har tagits bort</translation> -<translation id="6134870457258083164">Visas inte enheten? <ph name="BEGIN_LINK1" />Få hjälp<ph name="END_LINK1" /> eller <ph name="BEGIN_LINK2" />sök igen<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Mobilanpassa sidan</translation> <translation id="6140912465461743537">Land/region</translation> <translation id="6159335304067198720">Sparat utrymme: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814"><ph name="VIDEO_TITLE" /> har pausats</translation> <translation id="6477460825583319731">Ogiltig e-postadress</translation> <translation id="6482749332252372425">Det gick inte att ladda ned <ph name="FILE_NAME" /> eftersom det inte finns tillräckligt med lagringsutrymme.</translation> -<translation id="6541922744811587456">Bokmärken i Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Välj en flik som du vill överföra</translation> <translation id="6545017243486555795">Rensa all data</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Bearbetning pågår</translation> <translation id="7243308994586599757">Alternativ visas nära skärmens nedre kant</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> använder din platsinformation för att visa lokala sökresultat</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Hjälp<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Ta bort bokmärke</translation> <translation id="7301833672208172928">Aktivera historiksynkronisering</translation> <translation id="7327835590071894791">Fliken är nu i bakgrunden.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Nej</translation> <translation id="7400418766976504921">Webbadress</translation> <translation id="7400448254438078120">Det går inte att casta video på grund av begränsningar på webbplatsen</translation> -<translation id="7408644312175185557">Visa flikar tillsammans med de senaste apparna på skärmen Översikt på mobilen.</translation> <translation id="7423098979219808738">Fråga först</translation> <translation id="7437998757836447326">Logga ut från Chrome</translation> <translation id="7445411102860286510">Tillåt att webbplatser automatiskt spelar upp videor utan ljud (rekommenderas)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb index 67ad638..16936e7 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_sw.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="sw"> -<translation id="1040144152982955218">Inatafuta vifaa… <ph name="BEGIN_LINK" />pata usaidizi<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Ilani</translation> <translation id="10614374240317010">Haijahifadhiwa kamwe</translation> <translation id="1061441684050139317">Chrome inahitaji idhini ya kufikia maikrofoni ili iishiriki na tovuti hii.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Gundua kurasa za wavuti zinazotumwa na vifaa vilivyo karibu. Chrome hukusanya kurasa za wavuti zinazohusishwa na vifaa vilivyo karibu nawe, huzituma bila maelezo yanayoweza kukutambulisha kwenye huduma za Google ili kupata kurasa muhimu zaidi kwako, kisha huzionyesha. Lazima uwashe Bluetooth na kipengele cha Mahali ili uweze kutumia Wavuti Kila Mahali.</translation> -<translation id="1250508505624960884">Alamisho za Chrome Beta</translation> <translation id="1254090737195733114">Ungependa kuleta data?</translation> <translation id="1258753120186372309">Google doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Simamisha</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Kadi zinazokubaliwa</translation> <translation id="1966710179511230534">Tafadhali sasisha maelezo yako ya kuingia katika akaunti.</translation> <translation id="1974060860693918893">Mipangilio ya kina</translation> -<translation id="1984321224716884559">Alamisho za Chrome Dev</translation> <translation id="1984937141057606926">Inaruhusiwa, isipokuwa vidakuzi vingine</translation> <translation id="1994173015038366702">URL ya Tovuti</translation> <translation id="2001120796168634316">Hifadhi ukurasa uliounganishwa kwa matumizi ya baadaye</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Huenda mapendeleo yaliyohifadhiwa kwenye tovuti yatafutwa</translation> <translation id="2748463065602559597">Unautazama ukurasa salama wa Google Chrome.</translation> <translation id="2762000892062317888">sasa hivi tu</translation> -<translation id="2770465223704140727">Ondoa kwenye orodha</translation> <translation id="2777555524387840389">Zimesalia sekunde <ph name="SECONDS" /></translation> -<translation id="278029852808208386">Hakuna vifaa vya bluetooth vilivyopatikana. <ph name="BEGIN_LINK" />Tafuta tena<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Imesalia sekunde 1</translation> <translation id="2811892995384186721">Je, huoni kifaa chako? <ph name="BEGIN_LINK" />Pata usaidizi<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Gusa kitufe cha kurudi nyuma ili uondoke kwenye skrini nzima.</translation> @@ -232,7 +227,6 @@ Ili kurekebisha hoja yako ya utafutaji, bonyeza kwa muda mrefu ili kuchagua. Ili kuchuja utafutaji wako, telezesha paneli hadi juu na uguse kisanduku cha utafutaji.</translation> <translation id="3616113530831147358">Sauti</translation> -<translation id="3623048332793834136">Alamisho za Chrome Canary</translation> <translation id="3632295766818638029">Onyesha nenosiri</translation> <translation id="363596933471559332">Ingia katika tovuti kiotomatiki kwa kutumia kitambulisho kilichohifadhiwa. Kipengele kikiwa kimezimwa, utaombwa kuthibitisha kila wakati kabla ya kuingia katika tovuti.</translation> <translation id="3656115297268584622">Washa eneo katika <ph name="BEGIN_LINK" />Mipangilio ya Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Kamwe usitafsiri <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Vyombo vya Habari</translation> <translation id="4278390842282768270">Vilivyoruhusiwa</translation> -<translation id="4297410240212242334">Tenganisha vichupo na programu</translation> <translation id="4307992518367153382">Mambo Msingi</translation> <translation id="4334294535648607276">Upakuaji umekamilika.</translation> <translation id="4351244548802238354">Funga kidirisha</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Inadhibitiwa na wazazi wako</translation> <translation id="4663756553811254707">Alamisho <ph name="NUMBER_OF_BOOKMARKS" /> zimefutwa</translation> <translation id="4665282149850138822"><ph name="NAME" /> iliongezwa kwenye Skrini yako ya kwanza</translation> -<translation id="4668044310199835006">Alamisho za Chrome ya Kazi</translation> <translation id="4684427112815847243">Sawazisha kila kitu</translation> <translation id="4686372254213217147">Ukubwa wa Asili</translation> -<translation id="4690286298542128877">Vichupo vitasonga kwenye kibadilishaji cha kichupo ndani ya Chrome.</translation> <translation id="4698413471314543145">Utendaji muhimu unahitajika kuendesha Chrome zinakosekana; huenda usakinishaji wako wa Chrome haujakamilika, au hauoani na toleo hili la Android.</translation> <translation id="4699172675775169585">Picha na faili zilizoakibishwa</translation> <translation id="4710672574193412565">Ongeza Akaunti ya Google kutoka kwenye ukurasa wa Akaunti katika programu ya Mipangilio ya kifaa chako.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Usawazishaji umezimwa</translation> <translation id="5131405117025179004">Badilisha akaunti iliyohifadhiwa</translation> <translation id="5138299137310274655">Ukurasa huu ni wa <ph name="SOURCE_LANGUAGE" />. Ungependa kuutafsiri kuwa <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Unganisha vichupo na programu</translation> <translation id="515227803646670480">Futa data iliyohifadhiwa</translation> <translation id="5156656584247937086">Hii ni akaunti ya mtoto</translation> <translation id="5161254044473106830">Kichwa kinahitajika</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Ondoka</translation> <translation id="5233638681132016545">Kichupo kipya</translation> <translation id="5271967389191913893">Kifaa hakiwezi kufungua maudhui yanayopaswa kupakuliwa.</translation> -<translation id="5275558766013849309">Vichupo vitakaa pamoja na programu za hivi majuzi.</translation> <translation id="528192093759286357">Buruta kutoka juu na uguse kitufe cha kurudi nyuma ili uondoke kwenye skrini nzima.</translation> <translation id="5284584623296338184">Mabadiliko kwenye alamisho, historia, manenosiri na mipangilio yako mingine haitasawazishwa tena kwenye Akaunti yako ya Google. Hata hivyo, data yako iliyopo itaendelea kuhifadhiwa katika akaunti yako ya Google.</translation> <translation id="5301954838959518834">Sawa, nimeelewa</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Usanidi unaendelea...</translation> <translation id="6112702117600201073">Inaonyesha upya ukurasa</translation> <translation id="6127379762771434464">Kipengee kimeondolewa</translation> -<translation id="6134870457258083164">Je, huoni kifaa chako? <ph name="BEGIN_LINK1" />Pata usaidizi<ph name="END_LINK1" /> au <ph name="BEGIN_LINK2" />tafuta tena<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Fanya ukurasa usomeke vizuri kwenye kifaa cha mkononi</translation> <translation id="6140912465461743537">Nchi/Eneo</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> ya data imeokolewa</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Imesitisha “<ph name="VIDEO_TITLE" />”</translation> <translation id="6477460825583319731">Anwani ya barua pepe si sahihi</translation> <translation id="6482749332252372425">Kipakuliwa cha <ph name="FILE_NAME" /> hakijafaulu kwa sababu hakuna nafasi ya hifadhi ya kutosha.</translation> -<translation id="6541922744811587456">Alamisho za Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Chagua kichupo cha kusambaza</translation> <translation id="6545017243486555795">Futa Data Yote</translation> @@ -527,7 +514,7 @@ <translation id="6978479750597523876">Weka upya mipangilio ya kutafsiri</translation> <translation id="6981982820502123353">Upatikanaji</translation> <translation id="6990079615885386641">Pata programu kutoka kwenye Duka la Google Play: <ph name="APP_ACTION" /></translation> -<translation id="699220179437400583">Ripoti maelezo ya uwezekano wa matukio yasiyo salama kwa Google kiotomatiki</translation> +<translation id="699220179437400583">Tumia Google ripoti ya matukio yanayotishia usalama mtandaoni, kiotomatiki</translation> <translation id="6992289844737586249">Uliza kwanza kabla ya kuruhusu tovuti zitumie maikrofoni yako (inapendekezwa)</translation> <translation id="6999892069268112724">Thibitisha Akaunti ya Google</translation> <translation id="7021515813996758557"><ph name="FILE_NAME" /> imepakuliwa</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Malipo yanashughulikiwa</translation> <translation id="7243308994586599757">Chaguo zinapatikana karibu na sehemu ya chini ya skrini</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> hutumia mahali ulipo ili kuonyesha matokeo ya utafutaji wa karibu</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Usaidizi<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Futa alamisho</translation> <translation id="7301833672208172928">Washa kipengele cha usawazishaji wa historia</translation> <translation id="7327835590071894791">Kichupo chako sasa kiko chini chini.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">La</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Haikuweza kutuma video kutokana na vikwazo vya tovuti</translation> -<translation id="7408644312175185557">Angalia vichupo vyako pamoja na programu nyingine za hivi majuzi kwenye skrini ya simu ya Muhtasari.</translation> <translation id="7423098979219808738">Uliza kwanza</translation> <translation id="7437998757836447326">Ondoka kwenye Chrome</translation> <translation id="7445411102860286510">Ruhusu tovuti zicheze video kiotomatiki bila sauti (inapendekezwa)</translation> @@ -706,7 +691,7 @@ <translation id="8959122750345127698">Kudurusu hakufikiki: <ph name="URL" /></translation> <translation id="8979340629087822094">siku iliyopita</translation> <translation id="8981454092730389528">Vidhibiti vya Shughuli za Google</translation> -<translation id="8986494364107987395">Tumia Google, moja kwa moja, takwimu za matumizi na ripoti za mara ambazo kivinjari kinaacha kufanya kazi</translation> +<translation id="8986494364107987395">Tumia Google takwimu za matumizi na ripoti za mara ambazo kivinjari kinaacha kufanya kazi, moja kwa moja</translation> <translation id="8987061207681586800">Ifanye Chrome kuwa yako</translation> <translation id="8998729206196772491">Unaingia kwa kutumia akaunti inayodhibitiwa na <ph name="MANAGED_DOMAIN" /> na kumpa msimamizi wa kikoa hicho udhibiti wa data yako ya Chrome. Data yako ya Chrome itahusishwa na akaunti hii daima. Kuondoka kwenye Chrome kutafuta data yako kwenye kifaa hiki, lakini itaendelea kuhifadhiwa katika Akaunti yako ya Google.</translation> <translation id="9019902583201351841">Inadhibitiwa na wazazi wako</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb index 5815557..7477634 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_th.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_th.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="th"> -<translation id="1040144152982955218">กำลังค้นหาอุปกรณ์… <ph name="BEGIN_LINK" />ขอความช่วยเหลือ<ph name="END_LINK" /></translation> <translation id="1056898198331236512">คำเตือน</translation> <translation id="10614374240317010">ไม่เคยบันทึก</translation> <translation id="1061441684050139317">Chrome ต้องการเข้าถึงไมโครโฟนเพื่อแชร์กับเว็บไซต์นี้</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">ค้นพบหน้าเว็บที่ส่งมาจากออบเจ็กต์ใกล้เคียง Chrome รวบรวมหน้าเว็บที่เชื่อมโยงกับออบเจ็กต์รอบตัวคุณ ส่งหน้าเว็บดังกล่าวแบบไม่ระบุตัวตนไปยังบริการของ Google เพื่อค้นหาสิ่งที่มีประโยชน์ต่อคุณมากที่สุด แล้วแสดงขึ้นมา คุณต้องเปิดใช้บลูทูธและตำแหน่งเพื่อที่จะใช้ Physical Web</translation> -<translation id="1250508505624960884">บุ๊กมาร์กของ Chrome เบต้า</translation> <translation id="1254090737195733114">นำเข้าข้อมูลไหม</translation> <translation id="1258753120186372309">Google doodle: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">หยุด</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">บัตรที่รับ</translation> <translation id="1966710179511230534">โปรดอัปเดตรายละเอียดการลงชื่อเข้าใช้ของคุณ</translation> <translation id="1974060860693918893">ขั้นสูง</translation> -<translation id="1984321224716884559">บุ๊กมาร์กของ Chrome Dev</translation> <translation id="1984937141057606926">อนุญาต ยกเว้นบุคคลที่สาม</translation> <translation id="1994173015038366702">URL ของเว็บไซต์</translation> <translation id="2001120796168634316">เก็บหน้าที่ลิงก์ไว้ดูทีหลัง</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">ค่ากำหนดที่บันทึกไว้บนเว็บไซต์อาจถูกลบ</translation> <translation id="2748463065602559597">คุณกำลังดูหน้าเว็บ Google Chrome ที่ปลอดภัย</translation> <translation id="2762000892062317888">เมื่อสักครู่</translation> -<translation id="2770465223704140727">ลบจากรายการ</translation> <translation id="2777555524387840389">เหลือ <ph name="SECONDS" /> วิ</translation> -<translation id="278029852808208386">ไม่พบอุปกรณ์บลูทูธ โปรด<ph name="BEGIN_LINK" />ค้นหาอีกครั้ง<ph name="END_LINK" /></translation> <translation id="2781151931089541271">เหลือ 1 วิ</translation> <translation id="2811892995384186721">หากไม่เห็นอุปกรณ์ของคุณ โปรด<ph name="BEGIN_LINK" />ขอความช่วยเหลือ<ph name="END_LINK" /></translation> <translation id="2836148919159985482">แตะปุ่มกลับเพื่อออกจากโหมดเต็มหน้าจอ</translation> @@ -232,7 +227,6 @@ หากต้องการแก้ไขข้อความค้นหา ให้กดค้างไว้เพื่อเลือก หากต้องการปรับการค้นหา ให้เลื่อนแผงขึ้นและแตะช่องค้นหา</translation> <translation id="3616113530831147358">เสียง</translation> -<translation id="3623048332793834136">บุ๊กมาร์กของ Chrome Canary</translation> <translation id="3632295766818638029">เปิดเผยรหัสผ่าน</translation> <translation id="363596933471559332">ลงชื่อเข้าใช้เว็บไซต์โดยอัตโนมัติโดยใช้ข้อมูลรับรองที่เก็บไว้ เมื่อคุณลักษณะนี้ปิดอยู่ ระบบจะขอให้คุณยืนยันทุกครั้งก่อนที่จะลงชื่อเข้าใช้เว็บไซต์</translation> <translation id="3656115297268584622">เปิดตำแหน่งใน<ph name="BEGIN_LINK" />การตั้งค่า Android<ph name="END_LINK" /></translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">ไม่ต้องแปลภาษา<ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">สื่อ</translation> <translation id="4278390842282768270">อนุญาตแล้ว</translation> -<translation id="4297410240212242334">แยกแท็บและแอป</translation> <translation id="4307992518367153382">พื้นฐาน</translation> <translation id="4334294535648607276">ดาวน์โหลดเสร็จสมบูรณ์</translation> <translation id="4351244548802238354">ปิดหน้าต่างโต้ตอบ</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">มีการจัดการโดยผู้ปกครอง</translation> <translation id="4663756553811254707">ลบบุ๊กมาร์ก <ph name="NUMBER_OF_BOOKMARKS" /> รายการแล้ว</translation> <translation id="4665282149850138822">เพิ่ม <ph name="NAME" /> ลงในหน้าแรกแล้ว</translation> -<translation id="4668044310199835006">บุ๊กมาร์กของ Work Chrome</translation> <translation id="4684427112815847243">ซิงค์ทุกอย่าง</translation> <translation id="4686372254213217147">ขนาดต้นฉบับ</translation> -<translation id="4690286298542128877">แท็บจะย้ายไปยังตัวเปิดปิดแท็บใน Chrome</translation> <translation id="4698413471314543145">ฟังก์ชันที่จำเป็นต่อการเรียกใช้ Chrome ขาดหายไป อาจเป็นเพราะการติดตั้ง Chrome ของคุณไม่สมบูรณ์หรือไม่สามารถทำงานร่วมกับ Android เวอร์ชันนี้ได้</translation> <translation id="4699172675775169585">รูปภาพและไฟล์ในแคช</translation> <translation id="4710672574193412565">เพิ่มบัญชี Google จากหน้า "บัญชี" ในแอปการตั้งค่าของอุปกรณ์</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">การซิงค์ปิดอยู่</translation> <translation id="5131405117025179004">แก้ไขบัญชีที่บันทึก</translation> <translation id="5138299137310274655">หน้านี้อยู่ในภาษา<ph name="SOURCE_LANGUAGE" /> ต้องการแปลเป็นภาษา<ph name="TARGET_LANGUAGE" />ไหม</translation> -<translation id="5150703642582475397">รวมแท็บและแอป</translation> <translation id="515227803646670480">ล้างข้อมูลที่เก็บไว้</translation> <translation id="5156656584247937086">นี่เป็นบัญชีของเด็ก</translation> <translation id="5161254044473106830">ต้องระบุชื่อ</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">ออกจากระบบ</translation> <translation id="5233638681132016545">แท็บใหม่</translation> <translation id="5271967389191913893">อุปกรณ์ไม่สามารถเปิดเนื้อหาที่จะดาวน์โหลดได้</translation> -<translation id="5275558766013849309">แท็บจะแสดงร่วมกับแอปล่าสุด</translation> <translation id="528192093759286357">ลากจากด้านบน แล้วแตะปุ่มกลับเพื่อออกจากโหมดเต็มหน้าจอ</translation> <translation id="5284584623296338184">การเปลี่ยนแปลงบุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ จะไม่ซิงค์กับบัญชี Google ของคุณอีกต่อไป อย่างไรก็ตาม ข้อมูลที่คุณมีจะยังคงจัดเก็บอยู่ในบัญชี Google ของคุณ</translation> <translation id="5301954838959518834">ตกลง เข้าใจแล้ว</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">กำลังดำเนินการตั้งค่า…</translation> <translation id="6112702117600201073">กำลังรีเฟรชหน้า</translation> <translation id="6127379762771434464">นำรายการออกแล้ว</translation> -<translation id="6134870457258083164">หากไม่เห็นอุปกรณ์ของคุณ โปรด<ph name="BEGIN_LINK1" />ขอความช่วยเหลือ<ph name="END_LINK1" />หรือ<ph name="BEGIN_LINK2" />ค้นหาอีกครั้ง<ph name="END_LINK2" /></translation> <translation id="6138140242378429169">ทำให้หน้าเหมาะกับอุปกรณ์เคลื่อนที่</translation> <translation id="6140912465461743537">ประเทศ/ภูมิภาค</translation> <translation id="6159335304067198720">ประหยัดอินเทอร์เน็ต <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">หยุด “<ph name="VIDEO_TITLE" />” ชั่วคราวแล้ว</translation> <translation id="6477460825583319731">ที่อยู่อีเมลไม่ถูกต้อง</translation> <translation id="6482749332252372425">การดาวน์โหลด <ph name="FILE_NAME" /> ล้มเหลวเพราะพื้นที่เก็บข้อมูลไม่เพียงพอ</translation> -<translation id="6541922744811587456">บุ๊กมาร์กของ Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">เลือกแท็บที่จะบีม</translation> <translation id="6545017243486555795">ล้างข้อมูลทั้งหมด</translation> @@ -527,7 +514,7 @@ <translation id="6978479750597523876">รีเซ็ตการตั้งค่าการแปล</translation> <translation id="6981982820502123353">การเข้าถึง</translation> <translation id="6990079615885386641">รับแอปจาก Google Play สโตร์: <ph name="APP_ACTION" /></translation> -<translation id="699220179437400583">รายงานรายละเอียดของเหตุการณ์ความปลอดภัยที่เป็นไปได้ต่อ Google โดยอัตโนมัติ</translation> +<translation id="699220179437400583">รายงานรายละเอียดของเหตุการณ์ด้านความปลอดภัยที่อาจจะเกิดขึ้นต่อ Google โดยอัตโนมัติ</translation> <translation id="6992289844737586249">ถามก่อน ก่อนที่จะอนุญาตให้เว็บไซต์ใช้ไมโครโฟน (แนะนำ)</translation> <translation id="6999892069268112724">ยืนยันบัญชี Google</translation> <translation id="7021515813996758557">ดาวน์โหลด <ph name="FILE_NAME" /> แล้ว</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">กำลังดำเนินการ</translation> <translation id="7243308994586599757">มีตัวเลือกอยู่ทางด้านล่างของหน้าจอ</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> ใช้ตำแหน่งเพื่อแสดงผลการค้นหาในท้องถิ่น</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />ความช่วยเหลือ<ph name="END_LINK" /></translation> <translation id="7299721129597238157">นำออกบุ๊กมาร์ก</translation> <translation id="7301833672208172928">เปิดการซิงค์ประวัติการเข้าชม</translation> <translation id="7327835590071894791">ตอนนี้แท็บของคุณอยู่ในพื้นหลัง</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">ไม่</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">ไม่สามารถส่งวิดีโอเนื่องจากข้อจำกัดของเว็บไซต์</translation> -<translation id="7408644312175185557">ดูแท็บด้วยแอปล่าสุดอื่นๆ บนหน้าจอภาพรวมของโทรศัพท์</translation> <translation id="7423098979219808738">ถามก่อน</translation> <translation id="7437998757836447326">ออกจากระบบ Chrome</translation> <translation id="7445411102860286510">อนุญาตให้เว็บไซต์เล่นวิดีโอที่ปิดเสียงโดยอัตโนมัติ (แนะนำ)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb index b68186a..d291f6db 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_tr.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="tr"> -<translation id="1040144152982955218">Cihazlar aranıyor… <ph name="BEGIN_LINK" />yardım alın<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Uyarı</translation> <translation id="10614374240317010">Hiç kaydedilmeyecekler</translation> <translation id="1061441684050139317">Chrome'un mikrofonu bu siteyle paylaşması için mikrofon erişimine ihtiyacı var.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Yakındaki nesneler tarafından gönderilen web sayfalarını keşfedin. Chrome, çevrenizdeki nesnelerle ilişkilendirilen web sayfalarını toplar, sizin için en faydalı olanlarını bulmak üzere bunları anonim bir şekilde Google hizmetine gönderir ve ardından görüntüler. Fiziksel Web'i kullanabilmeniz için Bluetooth ve Konum özelliklerinin açık olması gerekir.</translation> -<translation id="1250508505624960884">Chrome Beta yer işaretleri</translation> <translation id="1254090737195733114">Veriler içe aktarılsın mı?</translation> <translation id="1258753120186372309">Google doodle'ı: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Durdur</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Kabul edilen kartlar</translation> <translation id="1966710179511230534">Lütfen oturum açma ayrıntılarınızı güncelleyin.</translation> <translation id="1974060860693918893">Gelişmiş</translation> -<translation id="1984321224716884559">Chrome Dev yer işaretleri</translation> <translation id="1984937141057606926">Üçüncü taraf hariç izin verildi</translation> <translation id="1994173015038366702">Site URL'si</translation> <translation id="2001120796168634316">Bağlantılı sayfayı sonrası için kaydet</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Sitelerde kaydedilen tercihler silinebilir</translation> <translation id="2748463065602559597">Güvenli bir Google Chrome sayfasını görüntülüyorsunuz.</translation> <translation id="2762000892062317888">az önce</translation> -<translation id="2770465223704140727">Listeden kaldır</translation> <translation id="2777555524387840389"><ph name="SECONDS" /> sn. kaldı</translation> -<translation id="278029852808208386">Bluetooth cihaz bulunamadı. <ph name="BEGIN_LINK" />Tekrar arayın<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">1 sn. kaldı</translation> <translation id="2811892995384186721">Cihazınızı görmüyor musunuz? <ph name="BEGIN_LINK" />Yardım alın<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Tam ekrandan çıkmak için geri düğmesine dokunun.</translation> @@ -232,7 +227,6 @@ Arama teriminizi düzeltmek için uzun basarak terimi seçin. Aramanızı ayrıntılı hale getirmek için paneli tümüyle yukarı kaydırın ve arama kutusuna dokunun.</translation> <translation id="3616113530831147358">Ses</translation> -<translation id="3623048332793834136">Chrome Canary yer işaretleri</translation> <translation id="3632295766818638029">Şifreyi göster</translation> <translation id="363596933471559332">Depolanmış kimlik bilgileriyle web sitelerinde otomatik olarak oturum açın. Bu özellik kapatıldığında, bir web sitesinde oturum açmadan önce her defasında doğrulama yapmanız istenir.</translation> <translation id="3656115297268584622"><ph name="BEGIN_LINK" />Android Ayarları<ph name="END_LINK" />'nda konumu açın.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831"><ph name="LANGUAGE" /> dilini asla çevirme</translation> <translation id="4275663329226226506">Medya</translation> <translation id="4278390842282768270">İzin verildi</translation> -<translation id="4297410240212242334">Sekmeleri ve uygulamaları ayır</translation> <translation id="4307992518367153382">Temel Bilgiler</translation> <translation id="4334294535648607276">İndirme işlemi tamamlandı.</translation> <translation id="4351244548802238354">İletişim kutusunu kapat</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Ebeveyniniz tarafından yönetiliyor</translation> <translation id="4663756553811254707"><ph name="NUMBER_OF_BOOKMARKS" /> yer işareti silindi</translation> <translation id="4665282149850138822"><ph name="NAME" />, Ana ekranınıza eklendi</translation> -<translation id="4668044310199835006">Work Chrome yer işaretleri</translation> <translation id="4684427112815847243">Her şeyi senkronize et</translation> <translation id="4686372254213217147">Orijinal boyut</translation> -<translation id="4690286298542128877">Sekmeler Chrome'un içindeki bir sekme değiştiriciye taşınacak.</translation> <translation id="4698413471314543145">Chrome'un çalışması için gereken çok önemli bir işlev eksik; Chrome yüklemeniz eksik olabilir ya da Android'in bu sürümü ile uyumlu olmayabilir.</translation> <translation id="4699172675775169585">Önbelleğe alınan resimler ve dosyalar</translation> <translation id="4710672574193412565">Cihazınızın Ayarlar uygulamasındaki Hesaplar sayfasından bir Google Hesabı ekleyin.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Senkronizasyon kapalı</translation> <translation id="5131405117025179004">Kayıtlı hesabı düzenleyin</translation> <translation id="5138299137310274655">Bu sayfa <ph name="SOURCE_LANGUAGE" /> dilinde. <ph name="TARGET_LANGUAGE" /> diline çevrilsin mi?</translation> -<translation id="5150703642582475397">Sekmeleri ve uygulamaları birleştirin</translation> <translation id="515227803646670480">Depolanmış verileri sil</translation> <translation id="5156656584247937086">Bu bir çocuk hesabıdır</translation> <translation id="5161254044473106830">Başlık gerekiyor</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Çıkış</translation> <translation id="5233638681132016545">Yeni sekme</translation> <translation id="5271967389191913893">Cihaz, indirilecek içeriği açamıyor.</translation> -<translation id="5275558766013849309">Sekmeler son kullanılan uygulamalarla birlikte görüntülenecek.</translation> <translation id="528192093759286357">Tam ekrandan çıkmak için yukarıdan sürükleyin ve geri düğmesine dokunun.</translation> <translation id="5284584623296338184">Yer işaretleri, geçmiş, şifreler ve diğer ayarlarınızda yaptığınız değişiklikler artık Google Hesabınız ile senkronize edilmeyecek. Ancak, mevcut verileriniz Google hesabınızda saklanmaya devam edecek.</translation> <translation id="5301954838959518834">Evet, anladım</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Kurulum devam ediyor…</translation> <translation id="6112702117600201073">Sayfa yenileniyor</translation> <translation id="6127379762771434464">Öğe kaldırıldı</translation> -<translation id="6134870457258083164">Cihazınızı görmüyor musunuz? <ph name="BEGIN_LINK1" />Yardım alın<ph name="END_LINK1" /> veya <ph name="BEGIN_LINK2" />tekrar arayın<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Sayfayı mobil uyumlu hale getir</translation> <translation id="6140912465461743537">Ülke/Bölge</translation> <translation id="6159335304067198720"><ph name="PERCENT" /> veri tasarrufu</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">“<ph name="VIDEO_TITLE" />” duraklatıldı</translation> <translation id="6477460825583319731">Geçersiz e-posta adresi</translation> <translation id="6482749332252372425">Depolama alanı yetersiz olduğu için <ph name="FILE_NAME" /> dosyası indirilemedi.</translation> -<translation id="6541922744811587456">Chrome yer işaretleri</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Işınlamak için bir sekme seçin</translation> <translation id="6545017243486555795">Tüm Verileri Temizle</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">İşleme koyuluyor</translation> <translation id="7243308994586599757">Sayfanın altına yakın bir yerde kullanılabilen seçenekler</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" />, yerel arama sonuçlarını göstermek için konumunuzu kullanır</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Yardım<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Yer işaretini sil</translation> <translation id="7301833672208172928">Geçmiş senkronizasyonunu aç</translation> <translation id="7327835590071894791">Sekmeniz şimdi arka planda.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Hayır</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Site kısıtlamaları nedeniyle video yayınlanamıyor</translation> -<translation id="7408644312175185557">Telefonunuzun Genel Bakış ekranında, son kullanılan diğer uygulamalarla birlikte sekmelerinizi görün.</translation> <translation id="7423098979219808738">Önce sor</translation> <translation id="7437998757836447326">Chrome oturumunu kapatma</translation> <translation id="7445411102860286510">Sitelerin, sesi kapatılmış videoları otomatik olarak oynatmasına izin ver (önerilen)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb index a603426..c3d240f2 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_uk.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="uk"> -<translation id="1040144152982955218">Пошук пристроїв… <ph name="BEGIN_LINK" />Довідка<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Застереження</translation> <translation id="10614374240317010">Ніколи не зберігалося</translation> <translation id="1061441684050139317">Chrome потрібен доступ до мікрофона, щоб дозволити цьому сайту використовувати його.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Переглядайте веб-сторінки, надіслані об’єктами поблизу. Chrome збирає веб-сторінки, пов’язані з об’єктами поблизу вас, і анонімно надсилає їх службі Google, щоб показувати вам найцікавіші. Увімкніть Bluetooth і службу локації, щоб користуватися сервісом "Інтернет навколо нас".</translation> -<translation id="1250508505624960884">Закладки з бета-версії Chrome</translation> <translation id="1254090737195733114">Імпортувати дані?</translation> <translation id="1258753120186372309">Дудл Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Зупинити</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Підтримувані типи карток</translation> <translation id="1966710179511230534">Оновіть свої дані для входу.</translation> <translation id="1974060860693918893">Розширені</translation> -<translation id="1984321224716884559">Закладки з Chrome для розробників</translation> <translation id="1984937141057606926">Заборонено лише сторонні файли cookie</translation> <translation id="1994173015038366702">URL-адреса сайту</translation> <translation id="2001120796168634316">Зберегти пов’язану сторінку</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Також може бути видалено збережені налаштування для сайтів</translation> <translation id="2748463065602559597">Ви переглядаєте безпечну сторінку Google Chrome.</translation> <translation id="2762000892062317888">щойно</translation> -<translation id="2770465223704140727">Видалити зі списку</translation> <translation id="2777555524387840389">Залишилося <ph name="SECONDS" /> с</translation> -<translation id="278029852808208386">Пристроїв Bluetooth не знайдено. <ph name="BEGIN_LINK" />Пошукайте ще раз<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Залишилась 1 с</translation> <translation id="2811892995384186721">Немає вашого пристрою? <ph name="BEGIN_LINK" />Перегляньте довідку<ph name="END_LINK" />.</translation> <translation id="2836148919159985482">Щоб вийти з повноекранного режиму, торкніться кнопки "Назад".</translation> @@ -232,7 +227,6 @@ Щоб змінити пошуковий термін, натисніть і утримуйте його. Щоб уточнити пошуковий запит, пересуньте панель угору та торкніться вікна пошуку.</translation> <translation id="3616113530831147358">Звук</translation> -<translation id="3623048332793834136">Закладки з Chrome Canary</translation> <translation id="3632295766818638029">Показати пароль</translation> <translation id="363596933471559332">Автоматично входити в облікові записи на веб-сайтах за допомогою збережених даних. Якщо цю функцію вимкнено, потрібно вводити облікові дані під час кожного входу на сайтах.</translation> <translation id="3656115297268584622">Увімкніть службу локації в <ph name="BEGIN_LINK" />налаштуваннях Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Ніколи не перекладати з такої мови: <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Медіа-дані</translation> <translation id="4278390842282768270">Дозволено</translation> -<translation id="4297410240212242334">Розділити вкладки та додатки</translation> <translation id="4307992518367153382">Основні</translation> <translation id="4334294535648607276">Завантажено.</translation> <translation id="4351244548802238354">Закрити діалогове вікно</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Керується одним із батьків</translation> <translation id="4663756553811254707">Видалено закладок: <ph name="NUMBER_OF_BOOKMARKS" /></translation> <translation id="4665282149850138822">Веб-сайт <ph name="NAME" /> додано на головний екран</translation> -<translation id="4668044310199835006">Закладки з Work Chrome</translation> <translation id="4684427112815847243">Синхронізувати все</translation> <translation id="4686372254213217147">Оригінальний розмір</translation> -<translation id="4690286298542128877">Вкладки буде переміщено в перемикач вкладок у Chrome.</translation> <translation id="4698413471314543145">Немає важливого компонента, який потрібний для роботи Chrome. Встановлення Chrome не завершено або веб-переглядач не сумісний із цією версією Android.</translation> <translation id="4699172675775169585">Кешовані зображення та файли</translation> <translation id="4710672574193412565">Додайте обліковий запис Google зі сторінки "Облікові записи" в додатку Налаштування на пристрої.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Синхронізацію вимкнено</translation> <translation id="5131405117025179004">Редагування збережених облікових даних</translation> <translation id="5138299137310274655">Мова цієї сторінки: <ph name="SOURCE_LANGUAGE" />. Перекласти її такою мовою: <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Об’єднати вкладки та додатки</translation> <translation id="515227803646670480">Очистити збережені дані</translation> <translation id="5156656584247937086">Це обліковий запис дитини</translation> <translation id="5161254044473106830">Введіть назву</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Вийти</translation> <translation id="5233638681132016545">Нова вкладка</translation> <translation id="5271967389191913893">Вміст, який ви хочете завантажити, не можна відкрити на цьому пристрої.</translation> -<translation id="5275558766013849309">Вкладки відображатимуться разом із нещодавно відкритими додатками.</translation> <translation id="528192093759286357">Щоб вийти з повноекранного режиму, проведіть пальцем по екрану згори вниз і торкніться кнопки "Назад".</translation> <translation id="5284584623296338184">Зміни в закладках, історії, паролях та інших налаштуваннях більше не синхронізуватимуться з вашим обліковим записом Google. Однак наявні дані залишаться у вашому обліковому записі Google.</translation> <translation id="5301954838959518834">OK</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Виконується налаштування…</translation> <translation id="6112702117600201073">Оновлення сторінки</translation> <translation id="6127379762771434464">Веб-сайт видалено</translation> -<translation id="6134870457258083164">Не бачите свого пристрою? <ph name="BEGIN_LINK1" />Перегляньте довідку<ph name="END_LINK1" /> або <ph name="BEGIN_LINK2" />пошукайте ще раз<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Налаштувати сторінку для мобільних пристроїв</translation> <translation id="6140912465461743537">Країна або регіон</translation> <translation id="6159335304067198720">Заощадження даних: <ph name="PERCENT" /></translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Відео "<ph name="VIDEO_TITLE" />" призупинено</translation> <translation id="6477460825583319731">Недійсна електронна адреса</translation> <translation id="6482749332252372425">Не вдалося завантажити файл <ph name="FILE_NAME" />. Замало місця.</translation> -<translation id="6541922744811587456">Закладки з Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Виберіть вкладку для передавання даних</translation> <translation id="6545017243486555795">Видалити всі дані</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Обробка</translation> <translation id="7243308994586599757">Опції можна знайти внизу екрана</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> використовує ваші геодані, щоб показувати результати місцевого пошуку</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Довідка<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Видалити закладку</translation> <translation id="7301833672208172928">Увімкнути синхронізацію історії</translation> <translation id="7327835590071894791">Ваша вкладка тепер у фоновому режимі.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Ні</translation> <translation id="7400418766976504921">URL-адреса</translation> <translation id="7400448254438078120">Не вдається транслювати відео через обмеження для сайту</translation> -<translation id="7408644312175185557">Переглядайте вкладки та нещодавно відкриті додатки на екрані огляду свого телефона.</translation> <translation id="7423098979219808738">Спершу запитувати</translation> <translation id="7437998757836447326">Вихід із Chrome</translation> <translation id="7445411102860286510">Дозволити сайтам автоматично відтворювати відео з вимкненим звуком (рекомендується)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb index 3ebe9340..73a1357c 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_vi.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="vi"> -<translation id="1040144152982955218">Đang tìm kiếm thiết bị… <ph name="BEGIN_LINK" />nhận trợ giúp<ph name="END_LINK" /></translation> <translation id="1056898198331236512">Cảnh báo</translation> <translation id="10614374240317010">Không bao giờ được lưu</translation> <translation id="1061441684050139317">Chrome cần quyền truy cập micrô để chia sẻ micrô với trang web này.</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">Khám phá trang web do các đối tượng lân cận gửi. Chrome tập hợp các trang web được liên kết với các đối tượng xung quanh bạn, chuyển chúng một cách ẩn danh tới dịch vụ của Google để tìm những trang web hữu ích nhất cho bạn, sau đó hiển thị các trang đó. Bạn phải bật Bluetooth và Vị trí để sử dụng Web trong cuộc sống.</translation> -<translation id="1250508505624960884">Dấu trang Chrome Beta</translation> <translation id="1254090737195733114">Nhập dữ liệu?</translation> <translation id="1258753120186372309">Hình tượng trưng của Google: <ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">Dừng</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">Thẻ được chấp nhận</translation> <translation id="1966710179511230534">Vui lòng cập nhật chi tiết đăng nhập của bạn.</translation> <translation id="1974060860693918893">Nâng cao</translation> -<translation id="1984321224716884559">Dấu trang Chrome Dev</translation> <translation id="1984937141057606926">Được cho phép, ngoại trừ cookie của bên thứ ba</translation> <translation id="1994173015038366702">URL trang web</translation> <translation id="2001120796168634316">Lưu trang liên kết để xem sau</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">Tùy chọn đã lưu trên trang web có thể bị xóa</translation> <translation id="2748463065602559597">Bạn đang xem trang Google Chrome an toàn.</translation> <translation id="2762000892062317888">vừa xong</translation> -<translation id="2770465223704140727">Xóa khỏi danh sách</translation> <translation id="2777555524387840389">Còn <ph name="SECONDS" /> giây</translation> -<translation id="278029852808208386">Không tìm thấy thiết bị bluetooth. <ph name="BEGIN_LINK" />Tìm kiếm lại<ph name="END_LINK" />.</translation> <translation id="2781151931089541271">Còn 1 giây</translation> <translation id="2811892995384186721">Không thấy thiết bị của bạn? <ph name="BEGIN_LINK" />Nhận trợ giúp<ph name="END_LINK" /></translation> <translation id="2836148919159985482">Chạm vào nút quay lại để thoát khỏi chế độ toàn màn hình.</translation> @@ -232,7 +227,6 @@ Để điều chỉnh cụm từ tìm kiếm của bạn, nhấn và giữ để chọn. Để tinh chỉnh tìm kiếm của bạn, trượt bảng điều khiển theo mọi hướng lên trên rồi chạm vào hộp tìm kiếm.</translation> <translation id="3616113530831147358">Âm thanh</translation> -<translation id="3623048332793834136">Dấu trang Chrome Canary</translation> <translation id="3632295766818638029">Hiển thị mật khẩu</translation> <translation id="363596933471559332">Tự động đăng nhập vào các trang web bằng thông tin đăng nhập được lưu trữ. Khi tính năng này tắt, bạn sẽ luôn được yêu cầu xác minh trước khi đăng nhập vào trang web.</translation> <translation id="3656115297268584622">Bật vị trí trong <ph name="BEGIN_LINK" />Cài đặt Android<ph name="END_LINK" />.</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">Không bao giờ dịch <ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">Truyền thông</translation> <translation id="4278390842282768270">Được cho phép</translation> -<translation id="4297410240212242334">Phân tách tab và ứng dụng</translation> <translation id="4307992518367153382">Cơ bản</translation> <translation id="4334294535648607276">Quá trình tải xuống hoàn tất.</translation> <translation id="4351244548802238354">Đóng hộp thoại</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">Do cha mẹ của bạn quản lý</translation> <translation id="4663756553811254707">Đã xóa <ph name="NUMBER_OF_BOOKMARKS" /> dấu trang</translation> <translation id="4665282149850138822">Đã thêm <ph name="NAME" /> vào Màn hình chính của bạn</translation> -<translation id="4668044310199835006">Dấu trang Chrome Work</translation> <translation id="4684427112815847243">Đồng bộ hóa tất cả</translation> <translation id="4686372254213217147">Kích thước ban đầu</translation> -<translation id="4690286298542128877">Tab sẽ chuyển sang trình chuyển đổi tab bên trong Chrome.</translation> <translation id="4698413471314543145">Chức năng quan trọng cần có để chạy Chrome bị thiếu; quá trình cài đặt Chrome của bạn chưa hoàn tất hoặc không tương thích với phiên bản Android này.</translation> <translation id="4699172675775169585">Tệp và hình ảnh được lưu trong bộ nhớ cache</translation> <translation id="4710672574193412565">Thêm Tài khoản Google từ trang Tài khoản trong ứng dụng Cài đặt trên thiết bị của bạn.</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">Đồng bộ hóa đã tắt</translation> <translation id="5131405117025179004">Chỉnh sửa tài khoản đã lưu</translation> <translation id="5138299137310274655">Trang này bằng <ph name="SOURCE_LANGUAGE" />. Dịch sang <ph name="TARGET_LANGUAGE" />?</translation> -<translation id="5150703642582475397">Kết hợp tab và ứng dụng</translation> <translation id="515227803646670480">Xóa dữ liệu đã lưu trữ</translation> <translation id="5156656584247937086">Đây là tài khoản của trẻ em</translation> <translation id="5161254044473106830">Cần có tiêu đề</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">Đăng xuất</translation> <translation id="5233638681132016545">Tab mới</translation> <translation id="5271967389191913893">Thiết bị không thể mở nội dung được tải xuống.</translation> -<translation id="5275558766013849309">Tab sẽ hoạt động cùng với các ứng dụng gần đây.</translation> <translation id="528192093759286357">Kéo từ trên xuống và chạm vào nút quay lại để thoát khỏi chế độ toàn màn hình.</translation> <translation id="5284584623296338184">Các thay đổi đối với dấu trang, lịch sử, mật khẩu và cài đặt khác sẽ không còn được đồng bộ hóa với Tài khoản Google của bạn. Tuy nhiên, dữ liệu hiện có của bạn sẽ vẫn được lưu trữ trong tài khoản Google của bạn.</translation> <translation id="5301954838959518834">OK</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">Đang thiết lập…</translation> <translation id="6112702117600201073">Làm mới trang</translation> <translation id="6127379762771434464">Đã xóa mục</translation> -<translation id="6134870457258083164">Không thấy thiết bị của bạn? <ph name="BEGIN_LINK1" />Nhận trợ giúp<ph name="END_LINK1" /> hoặc <ph name="BEGIN_LINK2" />tìm kiếm lại<ph name="END_LINK2" />.</translation> <translation id="6138140242378429169">Đặt trang ở chế độ thân thiện với thiết bị di động</translation> <translation id="6140912465461743537">Quốc gia/Vùng</translation> <translation id="6159335304067198720">Tiết kiệm <ph name="PERCENT" /> dữ liệu</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">Đã tạm dừng “<ph name="VIDEO_TITLE" />”</translation> <translation id="6477460825583319731">Địa chỉ email không hợp lệ</translation> <translation id="6482749332252372425">Tải xuống <ph name="FILE_NAME" /> không thành công do thiếu dung lượng bộ nhớ.</translation> -<translation id="6541922744811587456">Dấu trang Chrome</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">Chọn một tab để chiếu</translation> <translation id="6545017243486555795">Xóa tất cả dữ liệu</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">Đang xử lý</translation> <translation id="7243308994586599757">Có các tùy chọn ở gần cuối màn hình</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> sử dụng vị trí của bạn để hiển thị kết quả tìm kiếm địa phương</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />Trợ giúp<ph name="END_LINK" /></translation> <translation id="7299721129597238157">Xóa dấu trang</translation> <translation id="7301833672208172928">Bật đồng bộ hóa lịch sử</translation> <translation id="7327835590071894791">Hiện tab của bạn đã ở trong nền.</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">Không</translation> <translation id="7400418766976504921">URL</translation> <translation id="7400448254438078120">Không thể truyền video do giới hạn trang web</translation> -<translation id="7408644312175185557">Xem các tab của bạn với các ứng dụng gần đây khác trên màn hình Tổng quan của điện thoại.</translation> <translation id="7423098979219808738">Hỏi trước</translation> <translation id="7437998757836447326">Đăng xuất khỏi Chrome</translation> <translation id="7445411102860286510">Cho phép trang web tự động phát video tắt tiếng (được đề xuất)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb index a38859ec..1ec18a8 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-CN"> -<translation id="1040144152982955218">正在搜索设备…<ph name="BEGIN_LINK" />获取帮助<ph name="END_LINK" /></translation> <translation id="1056898198331236512">警告</translation> <translation id="10614374240317010">一律不保存</translation> <translation id="1061441684050139317">Chrome 需要具有麦克风使用权限,才能批准此网站的分享请求。</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">发现附近物体发送的网页。Chrome 会收集与您附近物体相关联的网页,并将这些网页以匿名方式发送给 Google 服务,以找到并显示对您而言最实用的网页。 您必须开启蓝牙和位置信息功能才能使用实物网。</translation> -<translation id="1250508505624960884">Chrome 测试版书签</translation> <translation id="1254090737195733114">要导入数据吗?</translation> <translation id="1258753120186372309">Google 涂鸦:<ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">停止</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">接受的信用卡</translation> <translation id="1966710179511230534">请更新您的登录详细信息。</translation> <translation id="1974060860693918893">高级</translation> -<translation id="1984321224716884559">Chrome Dev 版书签</translation> <translation id="1984937141057606926">允许(第三方除外)</translation> <translation id="1994173015038366702">网站网址</translation> <translation id="2001120796168634316">保存链接页以备后用</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">已保存的网站偏好设置可能会被删除</translation> <translation id="2748463065602559597">您正在查看的是安全的 Google Chrome 浏览器网页。</translation> <translation id="2762000892062317888">刚刚</translation> -<translation id="2770465223704140727">从列表中移除</translation> <translation id="2777555524387840389">还剩 <ph name="SECONDS" /> 秒</translation> -<translation id="278029852808208386">未发现任何蓝牙设备。<ph name="BEGIN_LINK" />重新搜索<ph name="END_LINK" />。</translation> <translation id="2781151931089541271">还剩 1 秒</translation> <translation id="2811892995384186721">没看到您的设备?<ph name="BEGIN_LINK" />寻求帮助<ph name="END_LINK" /></translation> <translation id="2836148919159985482">触摸“返回”按钮即可退出全屏模式。</translation> @@ -232,7 +227,6 @@ 要调整搜索字词,请长按将其选中。要缩小搜索范围,请将面板向上滑动到顶部,然后触摸搜索框。</translation> <translation id="3616113530831147358">音频</translation> -<translation id="3623048332793834136">Chrome Canary 版书签</translation> <translation id="3632295766818638029">显示密码</translation> <translation id="363596933471559332">使用存储的凭据自动登录网站。当该功能处于停用状态时,系统会在您每次登录网站之前要求您进行验证。</translation> <translation id="3656115297268584622">在 <ph name="BEGIN_LINK" />Android 设置<ph name="END_LINK" />部分开启位置信息服务。</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">一律不翻译<ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">媒体</translation> <translation id="4278390842282768270">允许的 Cookie</translation> -<translation id="4297410240212242334">分开显示标签页和应用</translation> <translation id="4307992518367153382">基本设置</translation> <translation id="4334294535648607276">下载完毕。</translation> <translation id="4351244548802238354">关闭对话框</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">由您父母管理</translation> <translation id="4663756553811254707">已删除 <ph name="NUMBER_OF_BOOKMARKS" /> 个书签</translation> <translation id="4665282149850138822"><ph name="NAME" />已添加到您的主屏幕</translation> -<translation id="4668044310199835006">Chrome for Work 书签</translation> <translation id="4684427112815847243">同步所有数据类型</translation> <translation id="4686372254213217147">原始大小</translation> -<translation id="4690286298542128877">标签页将移到 Chrome 内的标签页切换器中。</translation> <translation id="4698413471314543145">缺少运行 Chrome 所需的关键功能;您可能未完成 Chrome 安装过程,或者 Chrome 与此版本的 Android 不兼容。</translation> <translation id="4699172675775169585">缓存的图片和文件</translation> <translation id="4710672574193412565">在您设备的“设置”应用中,通过“帐户”页面添加 Google 帐户。</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">同步功能已关闭</translation> <translation id="5131405117025179004">修改已保存的帐户</translation> <translation id="5138299137310274655">这是<ph name="SOURCE_LANGUAGE" />网页,要将其翻译成<ph name="TARGET_LANGUAGE" />吗?</translation> -<translation id="5150703642582475397">一并显示标签页和应用</translation> <translation id="515227803646670480">清除存储的数据</translation> <translation id="5156656584247937086">这是一个未成年人帐户</translation> <translation id="5161254044473106830">必须提供标题</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">退出</translation> <translation id="5233638681132016545">打开新的标签页</translation> <translation id="5271967389191913893">设备无法打开要下载的内容。</translation> -<translation id="5275558766013849309">标签页将与最近用过的应用一起显示。</translation> <translation id="528192093759286357">从顶部向下拖动并触摸“返回”按钮,即可退出全屏模式。</translation> <translation id="5284584623296338184">对您的书签、历史记录、密码和其他设置所做的更改将不再同步到您的 Google 帐户。但是,您的现有数据将继续存储在您的 Google 帐户中。</translation> <translation id="5301954838959518834">知道了</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">正在设置…</translation> <translation id="6112702117600201073">正在刷新页面</translation> <translation id="6127379762771434464">该项已移除</translation> -<translation id="6134870457258083164">没看到您的设备?<ph name="BEGIN_LINK1" />寻求帮助<ph name="END_LINK1" />或<ph name="BEGIN_LINK2" />重新搜索<ph name="END_LINK2" />。</translation> <translation id="6138140242378429169">使网页适合移动设备</translation> <translation id="6140912465461743537">国家/地区</translation> <translation id="6159335304067198720">节省 <ph name="PERCENT" /> 的数据流量</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">“<ph name="VIDEO_TITLE" />”已暂停播放</translation> <translation id="6477460825583319731">电子邮件地址无效</translation> <translation id="6482749332252372425">未能成功下载 <ph name="FILE_NAME" />,因为存储空间不足。</translation> -<translation id="6541922744811587456">Chrome 书签</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">选择要传输的标签页</translation> <translation id="6545017243486555795">清除所有数据</translation> @@ -527,7 +514,7 @@ <translation id="6978479750597523876">重置翻译设置</translation> <translation id="6981982820502123353">无障碍</translation> <translation id="6990079615885386641">从 Google Play 商店下载应用:<ph name="APP_ACTION" /></translation> -<translation id="699220179437400583">自动向Google报告可能出现的安全事件详情</translation> +<translation id="699220179437400583">自动向 Google 报告可能出现的安全事件详情</translation> <translation id="6992289844737586249">在允许网站使用您的麦克风前先询问(推荐)</translation> <translation id="6999892069268112724">确认 Google 帐户</translation> <translation id="7021515813996758557"><ph name="FILE_NAME" /> 已下载完毕</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">正在处理</translation> <translation id="7243308994586599757">选项在靠近屏幕底部的位置</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> 将根据您的位置信息显示本地搜索结果</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />帮助<ph name="END_LINK" /></translation> <translation id="7299721129597238157">删除书签</translation> <translation id="7301833672208172928">开启历史记录同步功能</translation> <translation id="7327835590071894791">您的标签页现已在后台。</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">否</translation> <translation id="7400418766976504921">网址</translation> <translation id="7400448254438078120">由于网站限制,无法投射视频</translation> -<translation id="7408644312175185557">您目前打开的标签页和最近用过的其他应用都会显示在您手机的“概览”屏幕上。</translation> <translation id="7423098979219808738">先询问</translation> <translation id="7437998757836447326">退出 Chrome</translation> <translation id="7445411102860286510">允许网站自动播放静音的视频(推荐)</translation>
diff --git a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb index 1677723..0897961 100644 --- a/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb +++ b/chrome/android/java/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -1,7 +1,6 @@ <?xml version="1.0" ?> <!DOCTYPE translationbundle> <translationbundle lang="zh-TW"> -<translation id="1040144152982955218">正在搜尋裝置… <ph name="BEGIN_LINK" />取得說明<ph name="END_LINK" /></translation> <translation id="1056898198331236512">警告</translation> <translation id="10614374240317010">一律不儲存</translation> <translation id="1061441684050139317">Chrome 需要存取麥克風,才能與這個網站分享。</translation> @@ -19,7 +18,6 @@ <translation id="1240668123557180468">探索附近物件傳送的網頁。Chrome 會收集與您附近物件相關聯的網頁,將這些資訊以匿名方式傳送給 Google 服務,藉此找出並顯示對您最實用的資訊。 您必須開啟藍牙和定位功能,才能使用實體化網路。</translation> -<translation id="1250508505624960884">Chrome 測試版書籤</translation> <translation id="1254090737195733114">要匯入資料嗎?</translation> <translation id="1258753120186372309">Google Doodle:<ph name="DOODLE_DESCRIPTION" /></translation> <translation id="1272079795634619415">停止</translation> @@ -88,7 +86,6 @@ <translation id="1946821392246652573">接受的信用卡</translation> <translation id="1966710179511230534">請更新您的登入詳細資料。</translation> <translation id="1974060860693918893">進階</translation> -<translation id="1984321224716884559">Chrome 開發版書籤</translation> <translation id="1984937141057606926">允許 (第三方網站除外)</translation> <translation id="1994173015038366702">網站網址</translation> <translation id="2001120796168634316">儲存連結的網頁以供日後使用</translation> @@ -159,9 +156,7 @@ <translation id="2742271047622814453">已儲存的網站偏好設定可能會遭到刪除</translation> <translation id="2748463065602559597">您正在瀏覽安全型 Google Chrome 網頁。</translation> <translation id="2762000892062317888">剛剛</translation> -<translation id="2770465223704140727">從清單中移除</translation> <translation id="2777555524387840389">還剩 <ph name="SECONDS" /> 秒</translation> -<translation id="278029852808208386">找不到藍牙裝置,請<ph name="BEGIN_LINK" />重新搜尋<ph name="END_LINK" />。</translation> <translation id="2781151931089541271">還剩 1 秒</translation> <translation id="2811892995384186721">找不到您的裝置嗎?<ph name="BEGIN_LINK" />尋求協助<ph name="END_LINK" /></translation> <translation id="2836148919159985482">輕觸返回按鈕即可結束全螢幕模式。</translation> @@ -232,7 +227,6 @@ 如要調整搜尋字詞,直接長按即可選取。如要修正搜尋,請將面板滑動到最上方,再輕觸搜尋框。</translation> <translation id="3616113530831147358">音訊</translation> -<translation id="3623048332793834136">Chrome Canary 版書籤</translation> <translation id="3632295766818638029">取消密碼遮罩</translation> <translation id="363596933471559332">自動使用已儲存的憑證登入網站。如果關閉這項功能,每次在您登入網站之前,網站一律會要求驗證。</translation> <translation id="3656115297268584622">前往 <ph name="BEGIN_LINK" />Android 設定<ph name="END_LINK" />開啟位置資訊設定。</translation> @@ -285,7 +279,6 @@ <translation id="4271185234001491831">一律不翻譯<ph name="LANGUAGE" /></translation> <translation id="4275663329226226506">媒體</translation> <translation id="4278390842282768270">允許</translation> -<translation id="4297410240212242334">區隔分頁與應用程式</translation> <translation id="4307992518367153382">基本選項</translation> <translation id="4334294535648607276">下載完成。</translation> <translation id="4351244548802238354">關閉對話方塊</translation> @@ -309,10 +302,8 @@ <translation id="4645575059429386691">您的家長已停用這項功能</translation> <translation id="4663756553811254707">已刪除 <ph name="NUMBER_OF_BOOKMARKS" /> 個書籤</translation> <translation id="4665282149850138822">「<ph name="NAME" />」已加入您的主畫面</translation> -<translation id="4668044310199835006">Chrome for Work 版書籤</translation> <translation id="4684427112815847243">同步處理所有資料</translation> <translation id="4686372254213217147">原始大小</translation> -<translation id="4690286298542128877">分頁將改為顯示在 Chrome 的分頁切換選項中。</translation> <translation id="4698413471314543145">找不到執行 Chrome 所需的重要功能;Chrome 安裝程序可能未完成,或是 Chrome 與這個 Android 版本不相容。</translation> <translation id="4699172675775169585">快取圖片和檔案</translation> <translation id="4710672574193412565">在裝置的「設定」應用程式中開啟「帳戶」頁面,從中新增 Google 帳戶。</translation> @@ -354,7 +345,6 @@ <translation id="5127805178023152808">同步功能已停用</translation> <translation id="5131405117025179004">編輯已儲存的帳戶</translation> <translation id="5138299137310274655">這是<ph name="SOURCE_LANGUAGE" />網頁,需要翻譯成<ph name="TARGET_LANGUAGE" />嗎?</translation> -<translation id="5150703642582475397">合併分頁與應用程式</translation> <translation id="515227803646670480">清除儲存的資料</translation> <translation id="5156656584247937086">這是兒童帳戶</translation> <translation id="5161254044473106830">請輸入標題</translation> @@ -367,7 +357,6 @@ <translation id="5222676887888702881">登出</translation> <translation id="5233638681132016545">新增分頁</translation> <translation id="5271967389191913893">裝置無法開啟您要下載的這項內容。</translation> -<translation id="5275558766013849309">分頁和最近使用的應用程式將會並列顯示。</translation> <translation id="528192093759286357">從頂端拖曳並輕觸返回按鈕即可結束全螢幕模式。</translation> <translation id="5284584623296338184">您更改過的書籤、歷史紀錄、密碼和其他設定不會繼續與您 Google 帳戶中的資料保持同步,但是您 Google 帳戶現有的資料仍會保留。</translation> <translation id="5301954838959518834">好,我瞭解了</translation> @@ -450,7 +439,6 @@ <translation id="6108923351542677676">設定中…</translation> <translation id="6112702117600201073">重新整理網頁</translation> <translation id="6127379762771434464">已移除項目</translation> -<translation id="6134870457258083164">找不到您的裝置嗎?建議您<ph name="BEGIN_LINK1" />尋求協助<ph name="END_LINK1" />或<ph name="BEGIN_LINK2" />重新搜尋<ph name="END_LINK2" />。</translation> <translation id="6138140242378429169">讓網頁適合透過行動裝置瀏覽</translation> <translation id="6140912465461743537">國家/地區</translation> <translation id="6159335304067198720">節省 <ph name="PERCENT" /> 的數據流量</translation> @@ -482,7 +470,6 @@ <translation id="6476911854266661814">「<ph name="VIDEO_TITLE" />」已暫停</translation> <translation id="6477460825583319731">電子郵件地址無效</translation> <translation id="6482749332252372425">儲存空間不足,因此無法下載 <ph name="FILE_NAME" />。</translation> -<translation id="6541922744811587456">Chrome 書籤</translation> <translation id="654278619399546675">passwords.google.com</translation> <translation id="654446541061731451">選取要傳輸的分頁</translation> <translation id="6545017243486555795">清除所有資料</translation> @@ -554,7 +541,6 @@ <translation id="7220786058474068424">處理中</translation> <translation id="7243308994586599757">選項在接近畫面底部的位置</translation> <translation id="7244362611678346589"><ph name="SEARCH_ENGINE_URL" /> 會使用您的位置資訊來顯示當地搜尋結果</translation> -<translation id="7299441085833132046"><ph name="BEGIN_LINK" />說明<ph name="END_LINK" /></translation> <translation id="7299721129597238157">刪除書籤</translation> <translation id="7301833672208172928">開啟歷史紀錄同步處理功能</translation> <translation id="7327835590071894791">您的分頁現已傳送到背景了。</translation> @@ -565,7 +551,6 @@ <translation id="7378627244592794276">不需要</translation> <translation id="7400418766976504921">網址</translation> <translation id="7400448254438078120">由於網站設有限制,因此無法投放影片</translation> -<translation id="7408644312175185557">手機的「總覽」畫面會顯示您的分頁和其他最近使用過的應用程式。</translation> <translation id="7423098979219808738">先詢問我</translation> <translation id="7437998757836447326">登出 Chrome</translation> <translation id="7445411102860286510">允許網站自動播放靜音的影片 (建議)</translation>
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni index da0846e..9042411 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni
@@ -11,6 +11,7 @@ "java/src/org/chromium/chrome/browser/ApplicationLifetime.java", "java/src/org/chromium/chrome/browser/AssistStatusHandler.java", "java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java", + "java/src/org/chromium/chrome/browser/BasicNativePage.java", "java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java", "java/src/org/chromium/chrome/browser/BrowserRestartActivity.java", "java/src/org/chromium/chrome/browser/ChromeActivity.java", @@ -310,15 +311,19 @@ "java/src/org/chromium/chrome/browser/download/DownloadManagerService.java", "java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java", "java/src/org/chromium/chrome/browser/download/DownloadNotifier.java", + "java/src/org/chromium/chrome/browser/download/DownloadPage.java", "java/src/org/chromium/chrome/browser/download/DownloadResumptionScheduler.java", "java/src/org/chromium/chrome/browser/download/DownloadSharedPreferenceEntry.java", "java/src/org/chromium/chrome/browser/download/DownloadSnackbarController.java", "java/src/org/chromium/chrome/browser/download/DownloadUmaStatsEntry.java", "java/src/org/chromium/chrome/browser/download/OMADownloadHandler.java", "java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java", + "java/src/org/chromium/chrome/browser/download/ui/DownloadFilter.java", "java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java", "java/src/org/chromium/chrome/browser/download/ui/DownloadManagerUi.java", "java/src/org/chromium/chrome/browser/download/ui/DownloadManagerToolbar.java", + "java/src/org/chromium/chrome/browser/download/ui/FilterAdapter.java", + "java/src/org/chromium/chrome/browser/download/ui/SpaceDisplay.java", "java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java", "java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java", "java/src/org/chromium/chrome/browser/externalauth/VerifiedHandler.java",
diff --git a/chrome/android/javatests/AndroidManifest.xml b/chrome/android/javatests/AndroidManifest.xml index 25a3a1bf..12d8f45 100644 --- a/chrome/android/javatests/AndroidManifest.xml +++ b/chrome/android/javatests/AndroidManifest.xml
@@ -52,13 +52,6 @@ <activity android:name="org.chromium.test.broker.OnDeviceInstrumentationBroker" android:exported="true"/> - <!--suppress ExportedReceiver --> - <receiver android:name="org.chromium.chrome.browser.customtabs.CustomTabsActivityTest$DummyBroadcastReceiver"> - <intent-filter> - <action android:name="org.chromium.chrome.browser.customtabs.TEST_PENDING_INTENT_SENT" > - </action> - </intent-filter> - </receiver> <service android:name="org.chromium.chrome.test.webapk.TestWebApkServiceImplWrapper" android:exported="true">
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java index f1ef9b6..2e5b34c 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
@@ -12,7 +12,6 @@ import android.app.Instrumentation.ActivityMonitor; import android.app.Instrumentation.ActivityResult; import android.app.PendingIntent; -import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -90,25 +89,6 @@ * Instrumentation tests for app menu, context menu, and toolbar of a {@link CustomTabActivity}. */ public class CustomTabActivityTest extends CustomTabActivityTestBase { - - /** - * An empty {@link BroadcastReceiver} that exists only to make the PendingIntent to carry an - * explicit intent. Otherwise the framework will not send it after {@link PendingIntent#send()}. - */ - public class DummyBroadcastReceiver extends BroadcastReceiver { - // The url has to be copied from the instrumentation class, because a BroadcastReceiver is - // deployed as a different package, and it cannot get access to data from the - // instrumentation package. - private static final String TEST_PAGE_COPY = "/chrome/test/data/android/google.html"; - - @Override - public void onReceive(Context context, Intent intent) { - // Note: even if this assertion fails, the test might still pass, because - // BroadcastReceiver is not treated as part of the instrumentation test. - assertEquals(mTestServer.getURL(TEST_PAGE_COPY), intent.getDataString()); - } - } - private static final String READ_IT_LATER_FEATURE = "ReadItLaterInMenu"; private static final int MAX_MENU_CUSTOM_ITEMS = 5; private static final int NUM_CHROME_MENU_ITEMS = 2; @@ -182,11 +162,8 @@ * @return The pending intent associated with the menu entry. */ private PendingIntent addMenuEntriesToIntent(Intent intent, int numEntries) { - Intent menuIntent = new Intent(); - menuIntent.setClass(getInstrumentation().getContext(), DummyBroadcastReceiver.class); - menuIntent.setAction(TEST_ACTION); PendingIntent pi = PendingIntent.getBroadcast(getInstrumentation().getTargetContext(), 0, - menuIntent, 0); + new Intent(), 0); ArrayList<Bundle> menuItems = new ArrayList<Bundle>(); for (int i = 0; i < numEntries; i++) { Bundle bundle = new Bundle(); @@ -207,15 +184,11 @@ * @return The {@link PendingIntent} that will be triggered when the action button is clicked. */ private PendingIntent addActionButtonToIntent(Intent intent, Bitmap icon, String description) { - Intent actionIntent = new Intent(); - actionIntent.setClass(getInstrumentation().getContext(), DummyBroadcastReceiver.class); - actionIntent.setAction(TEST_ACTION); - Bundle bundle = new Bundle(); bundle.putParcelable(CustomTabsIntent.KEY_ICON, icon); bundle.putString(CustomTabsIntent.KEY_DESCRIPTION, description); PendingIntent pi = PendingIntent.getBroadcast(getInstrumentation().getTargetContext(), 0, - actionIntent, 0); + new Intent(), 0); bundle.putParcelable(CustomTabsIntent.KEY_PENDING_INTENT, pi); intent.putExtra(CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE, bundle); @@ -224,11 +197,8 @@ private Bundle makeBottomBarBundle(int id, Bitmap icon, String description) { Bundle bundle = new Bundle(); - Intent testIntent = new Intent(); - testIntent.setClass(getInstrumentation().getContext(), DummyBroadcastReceiver.class); - testIntent.setAction(TEST_ACTION); PendingIntent pi = PendingIntent.getBroadcast(getInstrumentation().getTargetContext(), 0, - testIntent, 0); + new Intent(), 0); bundle.putInt(CustomTabsIntent.KEY_ID, sIdToIncrement++); bundle.putString(CustomTabsIntent.KEY_DESCRIPTION, description);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/share/ShareUrlTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/share/ShareUrlTest.java index b2ace64..ba4ddcb6 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/share/ShareUrlTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/share/ShareUrlTest.java
@@ -25,7 +25,7 @@ } private void assertCorrectUrl(String originalUrl, String sharedUrl) { - Intent intent = ShareHelper.getShareIntent(new Activity(), "", sharedUrl, null); + Intent intent = ShareHelper.getShareIntent(new Activity(), "", "", sharedUrl, null); assert (intent.hasExtra(Intent.EXTRA_TEXT)); String url = intent.getStringExtra(Intent.EXTRA_TEXT); assertEquals(originalUrl, url);
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 61bbab31..9d4dfcd 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -5865,12 +5865,6 @@ Allow a download button to show up when opening a page with media url. </message> </if> - <message name="IDS_FLAGS_DOWNLOAD_NOTIFICATION_NAME" desc="Title for the flag to enable experimental download notification feature."> - Download Status in Notification Center - </message> - <message name="IDS_FLAGS_DOWNLOAD_NOTIFICATION_DESCRIPTION" desc="Description for the flag to enable experimental download notification feature."> - Download status is displayed as a notification, instead of an item in download bar. - </message> <message name="IDS_FLAGS_SOFTWARE_RASTERIZER_NAME" desc="Title for the flag for using a software rasterizer."> 3D software rasterizer </message>
diff --git a/chrome/app/resources/chromium_strings_am.xtb b/chrome/app/resources/chromium_strings_am.xtb index 12ae75d..6d27b72 100644 --- a/chrome/app/resources/chromium_strings_am.xtb +++ b/chrome/app/resources/chromium_strings_am.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">የመለያ መግቢያ ዝርዝሮችዎ ጊዜ ያለፈባቸው ስለሆኑ Chromium OS ውሂብዎን ማመሳሰል አልቻለም።</translation> <translation id="2558641060352364164">ይህ ጣቢያ በቅርቡ የማይደገፍ የሚሆን የChromium ክፈፍ ተሰኪውን እየተጠቀመ ነው። እባክዎ ያራግፉትና ወደ ዘመናዊ አሳሽ ያሻሽሉ።</translation> <translation id="2572494885440352020">Chromium አጋዥ</translation> +<translation id="2587578672395088481">Chromium OS ዝማኔውን ለመተግበር ዳግም መጀመር አለበት።</translation> <translation id="2595977381794111014">መተግበሪያዎችዎን መድረሱን ለመቀጠል በChromium ዕልባቶች አሞሌ ውስጥ የ<ph name="APPS_ICON_IMAGE" /> አቋራጩን ይጠቀሙ።</translation> <translation id="2605472041568654097">የአሁኖቹን ቅንብሮች ሪፖርት በማድረግ Chromium የተሻለ እንዲሆን ያግዙ።</translation> <translation id="2636877269779209383">Chromium ይህን ለዚህ ጣቢያ ለማጋራት የካሜራ መዳረሻ ያስፈልገዋል።</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">ይህ ሞዱል ከChromium ጋር የሚጋጭ መሆኑ ይታወቃል።</translation> <translation id="4423735387467980091">Chromiumን ያብጁ እና ይቆጣጠሩ</translation> <translation id="4458285410772214805">ይሄ ለውጥ እንዲተገበር እባክዎ ይውጡ እና እንደገና ይግቡ።</translation> +<translation id="4469812139324097969">Chromium ለሆነ ጊዜ ያህል ዳግም ስላልተጀመረ ጊዜው አልፎበታል። አንድ ዝማኔ አለ እና ልክ ዳግም ሲያስጀምሩት ይተገበራል።</translation> <translation id="4549794359424059447">የወደፊት የChromium ስሪቶች ከአሁን በኋላ Windows XP ወይም Windows Vistaን አይደግፉም።</translation> <translation id="4567424176335768812">እንደ <ph name="USER_EMAIL_ADDRESS" /> ሆነው ገብተዋል። አሁን የእርስዎን ዕልባቶች፣ ታሪክ እና ሌሎች ቅንብሮች በመለያ በገቡ ሁሉም መሣሪያዎችዎ ላይ መድረስ ይችላሉ።</translation> <translation id="457845228957001925">የChromium ውሂብዎን በተመለከተ አስፈላጊ መረጃ</translation>
diff --git a/chrome/app/resources/chromium_strings_ar.xtb b/chrome/app/resources/chromium_strings_ar.xtb index 4ba29d1..18165cc 100644 --- a/chrome/app/resources/chromium_strings_ar.xtb +++ b/chrome/app/resources/chromium_strings_ar.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">تعذر على نظام التشغيل Chromium مزامنة البيانات نظرًا لأن تفاصيل تسجيل الدخول إلى حسابك قديمة.</translation> <translation id="2558641060352364164">هذا الموقع يستخدم المكون الإضافي Chromium Frame والذي سيصبح غير معتمد قريبًا. يُرجى إلغاء تثبيته والترقية إلى متصفّح حديث.</translation> <translation id="2572494885440352020">أداة مساعدة Chromium</translation> +<translation id="2587578672395088481">يلزم إعادة تشغيل نظام التشغيل Chromium حتى يتم تطبيق التحديث.</translation> <translation id="2595977381794111014">استخدام الاختصار <ph name="APPS_ICON_IMAGE" /> في شريط الإشارات المرجعية لـ Chromium لمواصلة الدخول إلى تطبيقاتك.</translation> <translation id="2605472041568654097">ساعد في تحسين Chromium من خلال الإبلاغ عن الإعدادات الحالية.</translation> <translation id="2636877269779209383">يحتاج Chromium الوصول إلى الكاميرا لمشاركتها مع هذا الموقع.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">هذه الوحدة معروف أنها تتعارض مع Chromium.</translation> <translation id="4423735387467980091">تخصيص Chromium والتحكم فيه</translation> <translation id="4458285410772214805">الرجاء الخروج ثم تسجيل الدخول حتى يسري هذا التغيير.</translation> +<translation id="4469812139324097969">Chromium غير محدّث لأنه لم تتم إعادة تشغيله منذ فترة. هناك تحديث متوفر وسيتم تطبيقه بمجرد إعادة تشغيله.</translation> <translation id="4549794359424059447">لن تدعم الإصدارات المستقبلية من Chromium أنظمة Windows XP أو Windows Vista.</translation> <translation id="4567424176335768812">لقد سجلت دخولك باعتبارك <ph name="USER_EMAIL_ADDRESS" />. ويُمكنك الآن الاستمتاع بالدخول إلى الإشارات المرجعية، والسجلّ، والإعدادات الأخرى على جميع الأجهزة التي تسجّل الدخول إليها.</translation> <translation id="457845228957001925">معلومات مهمة بخصوص بياناتك في Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb index e1278a5..9b3d1f8 100644 --- a/chrome/app/resources/chromium_strings_bg.xtb +++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS не можа да синхронизира данните ви, защото потребителското име и паролата за вход в профила ви не са актуални.</translation> <translation id="2558641060352364164">Този сайт използва приставката Chromium Frame, чиято поддръжка скоро ще бъде прекратена. Моля, деинсталирайте я и надстройте до модерен браузър.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Chromium OS трябва да се рестартира, за да приложи актуализацията.</translation> <translation id="2595977381794111014">Използвайте прекия път <ph name="APPS_ICON_IMAGE" /> в лентата на отметките в Chromium, за да продължите да осъществявате достъп до приложенията си.</translation> <translation id="2605472041568654097">Помогнете за подобряването на Chromium, като подадете сигнал за текущите настройки.</translation> <translation id="2636877269779209383">Chromium се нуждае от достъп до камерата, за да я сподели с този сайт.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">За този модул е известно, че влиза в конфликт с Chromium.</translation> <translation id="4423735387467980091">Персонализиране и контролиране на Chromium</translation> <translation id="4458285410772214805">Моля, излезте от профила си и влезте отново, за да влезе в сила тази промяна.</translation> +<translation id="4469812139324097969">Chromium не е актуален, защото не е бил стартиран отново известно време. Налице е актуализация, която ще бъде приложена веднага, когато рестартирате.</translation> <translation id="4549794359424059447">Бъдещите версии на Chromium вече няма да поддържат Windows XP и Windows Vista.</translation> <translation id="4567424176335768812">Влезли сте като <ph name="USER_EMAIL_ADDRESS" />. Сега имате достъп до отметките, историята и другите си настройки на всички устройства, на които сте влезли.</translation> <translation id="457845228957001925">Важна информация относно данните ви в Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb index 0dad011..0773516 100644 --- a/chrome/app/resources/chromium_strings_bn.xtb +++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">আপনার অ্যাকাউন্টের সাইন ইনের বিবরণটি সেকেলে হওয়ায় Chromium OS আপনার ডেটা সিঙ্ক করতে পারেনি৷</translation> <translation id="2558641060352364164">এই সাইটটি Chromium ফ্রেম প্লাগ ইন ব্যবহার করছে যা খুব শীঘ্রই অসমর্থিত হবে৷ দয়া করে এটি আনইনস্টল করুন এবং একটি আধুনিক ব্রাউজারে আপগ্রেড করুন৷</translation> <translation id="2572494885440352020">Chromium সহায়ক</translation> +<translation id="2587578672395088481">আপডেটটি প্রয়োগ করতে Chromium OS পুনরায় চালু করা প্রয়োজন।</translation> <translation id="2595977381794111014">আপনার অ্যাপ্লিকেশানগুলি অ্যাক্সেস করা চালিয়ে যেতে Chromium বুকমার্কস দণ্ডের <ph name="APPS_ICON_IMAGE" /> শর্টকাট ব্যবহার করুন।</translation> <translation id="2605472041568654097">বর্তমান সেটিংসের প্রতিবেদন করে Chromium কে আরো ভালো করে তুলতে সাহায্য করুন।</translation> <translation id="2636877269779209383">এটিকে এই সাইটে শেয়ার করার জন্য Chromium এর ক্যামেরা অ্যাক্সেস করা প্রয়োজন।</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">এই মডিউল Chromium-এর সঙ্গে বিরোধের জন্য জ্ঞাত হয়৷</translation> <translation id="4423735387467980091">Chromium কাস্টমাইজ ও নিয়ন্ত্রণ করুন</translation> <translation id="4458285410772214805">দয়া করে পরিবর্তনটি সম্ভব করতে প্রস্থান করুন এবং পুনরায় প্রবেশ করুন করুন৷</translation> +<translation id="4469812139324097969">Chromium পুরানো হয়ে গেছে কারণ কিছু সময় ধরে এটিকে পুনঃলঞ্চ করা হয়নি। একটি আপডেট উপলব্ধ রয়েছে এবং আপনি পুনঃলঞ্চ করার সাথে সাথেই এটি প্রয়োগ করা হবে।</translation> <translation id="4549794359424059447">Chromium এর ভবিষ্যত সংস্করণ আর Windows XP বা Windows Vista সমর্থন করবে না।</translation> <translation id="4567424176335768812">আপনি <ph name="USER_EMAIL_ADDRESS" /> হিসাবে প্রবেশ করুন করেছেন৷ এখন আপনি আপনার সমস্ত প্রবেশ করুন করা ডিভাইসে আপনার বুকমার্ক, ইতিহাস এবং অন্যান্য সেটিংস অ্যাক্সেস করতে পারেন৷</translation> <translation id="457845228957001925">আপনার Chromium ডেটা সংক্রান্ত গুরুত্বপূর্ণ তথ্য</translation>
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb index 1aeeac6..9192a1c 100644 --- a/chrome/app/resources/chromium_strings_ca.xtb +++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS no ha pogut sincronitzar les vostres dades perquè la informació d'inici de sessió del vostre compte no està actualitzada.</translation> <translation id="2558641060352364164">Aquest lloc fa servir el connector Chromium Frame que aviat deixarà de ser compatible. Desinstal·leu-lo i instal·leu un navegador més modern.</translation> <translation id="2572494885440352020">Aplicació auxiliar de Chromium</translation> +<translation id="2587578672395088481">Cal reiniciar Chromium OS per aplicar l'actualització.</translation> <translation id="2595977381794111014">Feu servir la drecera <ph name="APPS_ICON_IMAGE" /> de la barra d'adreces d'interès de Chromium per continuar accedint a les vostres aplicacions.</translation> <translation id="2605472041568654097">Informa de la configuració actual per ajudar-nos a millorar Chromium.</translation> <translation id="2636877269779209383">Chromium necessita accedir a la càmera per compartir-la amb aquest lloc.</translation> @@ -62,7 +63,7 @@ <translation id="2799223571221894425">Reinicia</translation> <translation id="2801146392936645542"><ph name="FILE_NAME" /> és maliciós i Chromium l'ha bloquejat.</translation> <translation id="2847479871509788944">Suprimeix de Chromium...</translation> -<translation id="2886012850691518054">Opcional: ajudeu a millorar Chromium enviant estadístiques d'ús i informes d'error a Google automàticament.</translation> +<translation id="2886012850691518054">Opcional: ajuda'ns a millorar Chromium enviant estadístiques d'ús i informes d'error a Google automàticament.</translation> <translation id="2905536371227304018">Chromium OS es mostra en aquest idioma.</translation> <translation id="2910007522516064972">Quant a &Chromium</translation> <translation id="2966088006374919794">Chromium necessita iniciar una aplicació externa per gestionar els enllaços <ph name="SCHEME" />. L'enllaç sol·licitat és <ph name="PROTOLINK" />.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Se sap que aquest mòdul entra en conflicte amb Chromium.</translation> <translation id="4423735387467980091">Personalitza i controla Chromium</translation> <translation id="4458285410772214805">Tanqueu la sessió i torneu a iniciar-la perquè aquest canvi es faci efectiu.</translation> +<translation id="4469812139324097969">Chromium està obsolet perquè fa temps que no s'inicia. Hi ha una actualització disponible i s'aplicarà tan aviat com el tornis a iniciar.</translation> <translation id="4549794359424059447">Les versions futures de Chromium ja no admetran Windows XP ni Windows Vista.</translation> <translation id="4567424176335768812">Heu iniciat la sessió com a <ph name="USER_EMAIL_ADDRESS" />. Ja podeu accedir a les vostres adreces d'interès, al vostre historial i a altres paràmetres en tots els dispositius en què hàgiu iniciat la sessió.</translation> <translation id="457845228957001925">Informació important sobre les dades de Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_cs.xtb b/chrome/app/resources/chromium_strings_cs.xtb index 56a2739..a6e88037 100644 --- a/chrome/app/resources/chromium_strings_cs.xtb +++ b/chrome/app/resources/chromium_strings_cs.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Chromium OS nemůže synchronizovat data, protože vaše přihlašovací údaje k účtu jsou zastaralé.</translation> <translation id="2558641060352364164">Tento web používá plugin Chromium Frame, jehož podpora bude brzy ukončena. Odinstalujte jej a přejděte na moderní prohlížeč.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Aktualizace se použije po restartování systému Chromium OS.</translation> <translation id="2595977381794111014">K aplikacím přistupujte pomocí zástupce <ph name="APPS_ICON_IMAGE" /> na liště záložek prohlížeče Chromium.</translation> <translation id="2605472041568654097">Pomozte s vylepšováním prohlížeče Chromium prostřednictvím nahlášení aktuálního nastavení.</translation> <translation id="2636877269779209383">Prohlížeč Chromium potřebuje přístup k fotoaparátu, aby jej mohl sdílet s těmito stránkami.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">O tomto modulu je známo, že u něj dochází ke konfliktu s prohlížečem Chromium.</translation> <translation id="4423735387467980091">Přizpůsobit a ovládat Chromium</translation> <translation id="4458285410772214805">Chcete-li, aby se změny projevily, odhlaste se a znovu se přihlaste.</translation> +<translation id="4469812139324097969">Prohlížeč Chromium není aktuální, protože nějakou dobu nebyl restartován. Je k dispozici aktualizace, která bude použita po restartování.</translation> <translation id="4549794359424059447">Budoucí verze prohlížeče Chromium již nebudou podporovat systémy Windows XP a Windows Vista.</translation> <translation id="4567424176335768812">Jste přihlášeni pomocí účtu <ph name="USER_EMAIL_ADDRESS" />. Nyní můžete přistupovat ke všem svým záložkám, historii a dalším nastavením ve všech přihlášených zařízeních.</translation> <translation id="457845228957001925">Důležité informace o datech prohlížeče Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb index eb11fc52..d033171 100644 --- a/chrome/app/resources/chromium_strings_da.xtb +++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS kunne ikke synkronisere dine data, fordi loginoplysningerne til din konto er forældede.</translation> <translation id="2558641060352364164">Dette website anvender Chromium Frame-pluginnet, som snart ikke understøttes længere. Afinstaller det, og opgrader til en moderne browser.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Chromium OS skal genstartes, før opdateringen kan anvendes.</translation> <translation id="2595977381794111014">Fortsæt med at bruge dine apps via genvejen for <ph name="APPS_ICON_IMAGE" /> på bogmærkelinjen i Chromium.</translation> <translation id="2605472041568654097">Hjælp med at gøre Chromium bedre ved at rapportere de aktuelle indstillinger.</translation> <translation id="2636877269779209383">Chromium skal have adgang til dit kamera, før det kan deles med dette website.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Dette modul modstrider Chromium.</translation> <translation id="4423735387467980091">Tilpas og kontrollér Chromium</translation> <translation id="4458285410772214805">Du skal logge ud og logge ind igen, for at denne ændring kan træde i kraft.</translation> +<translation id="4469812139324097969">Chromium er forældet, da den ikke er blevet genstartet i et stykke tid. Der er en tilgængelig opdatering, som anvendes, så snart du genstarter.</translation> <translation id="4549794359424059447">Fremtidige versioner af Chromium vil ikke længere understøtte Windows XP eller Windows Vista.</translation> <translation id="4567424176335768812">Du er logget ind som <ph name="USER_EMAIL_ADDRESS" />. Nu kan du få adgang til dine bogmærker, din historik og andre indstillinger på alle de enheder, hvor du er logget ind.</translation> <translation id="457845228957001925">Vigtige oplysninger om dine Chromium-data</translation>
diff --git a/chrome/app/resources/chromium_strings_de.xtb b/chrome/app/resources/chromium_strings_de.xtb index 859518e..60c49ab2 100644 --- a/chrome/app/resources/chromium_strings_de.xtb +++ b/chrome/app/resources/chromium_strings_de.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS konnte Ihre Daten nicht synchronisieren, da die Anmeldedaten Ihres Kontos veraltet sind.</translation> <translation id="2558641060352364164">Diese Website verwendet das Chromium Frame-Plug-in, das bald nicht mehr unterstützt wird. Bitte deinstallieren Sie das Plug-in und führen Sie ein Upgrade auf einen neueren Browser aus.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Chromium OS muss neu gestartet werden, um das Update zu übernehmen.</translation> <translation id="2595977381794111014">Verwenden Sie für den weiteren Zugriff auf Ihre Apps die Verknüpfung <ph name="APPS_ICON_IMAGE" /> in der Chromium-Lesezeichenleiste.</translation> <translation id="2605472041568654097">Helfen Sie uns mit Ihrem Feedback zu den aktuellen Einstellungen bei der Verbesserung von Chromium.</translation> <translation id="2636877269779209383">Chromium benötigt Zugriff auf die Kamera, um ihn mit dieser Website teilen zu können.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Es ist bekannt, dass dieses Modul einen Konflikt mit Chromium verursacht.</translation> <translation id="4423735387467980091">Chromium anpassen und einstellen</translation> <translation id="4458285410772214805">Melden Sie sich ab und wieder an, damit diese Änderung wirksam wird.</translation> +<translation id="4469812139324097969">Chromium ist veraltet, da es über einen längeren Zeitraum nicht neu gestartet wurde. Ein Update ist verfügbar und wird übernommen, sobald Sie Chromium neu starten.</translation> <translation id="4549794359424059447">Künftige Versionen von Chromium unterstützen Windows XP und Windows Vista nicht mehr.</translation> <translation id="4567424176335768812">Sie sind als <ph name="USER_EMAIL_ADDRESS" /> angemeldet. Auf allen Geräten, auf denen Sie angemeldet sind, sind nun Ihre Lesezeichen, Ihr Verlauf und andere Einstellungen verfügbar.</translation> <translation id="457845228957001925">Wichtige Informationen zu Ihren Chromium-Daten</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb index ed73c782..b61ed4ee 100644 --- a/chrome/app/resources/chromium_strings_el.xtb +++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Το Chromium OS δεν μπόρεσε να συγχρονίσει τα δεδομένα σας, επειδή τα στοιχεία σύνδεσης στο λογαριασμό σας δεν είναι ενημερωμένα.</translation> <translation id="2558641060352364164">Αυτή η ιστοσελίδα χρησιμοποιεί την προσθήκη Chromium Frame, η οποία σύντομα δεν θα υποστηρίζεται πλέον. Απεγκαταστήσετε την προσθήκη και κάντε αναβάθμιση σε ένα σύγχρονο πρόγραμμα περιήγησης.</translation> <translation id="2572494885440352020">Πρόγραμμα βοήθειας Chromium</translation> +<translation id="2587578672395088481">Για να εφαρμοστεί η ενημέρωση, πρέπει να γίνει επανεκκίνηση του Chromium OS.</translation> <translation id="2595977381794111014">Χρησιμοποιήστε τη συντόμευση <ph name="APPS_ICON_IMAGE" /> στη γραμμή σελιδοδεικτών του Chromium, για να εξακολουθήσετε να έχετε πρόσβαση στις εφαρμογές σας.</translation> <translation id="2605472041568654097">Συμβάλετε στη βελτίωση του Chromium, αναφέροντας τις τρέχουσες ρυθμίσεις.</translation> <translation id="2636877269779209383">Το Chromium χρειάζεται πρόσβαση στην κάμερα για να τη μοιραστεί με αυτόν τον ιστότοπο.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Έχει διαπιστωθεί ότι αυτή η λειτουργική μονάδα έρχεται σε διένεξη με το Chromium.</translation> <translation id="4423735387467980091">Προσαρμογή και έλεγχος του Chromium</translation> <translation id="4458285410772214805">Για να εφαρμοστεί αυτή η αλλαγή, αποσυνδεθείτε και συνδεθείτε ξανά.</translation> +<translation id="4469812139324097969">Το Chromium δεν είναι ενημερωμένο επειδή δεν έχει γίνει επανεκκίνησή του για αρκετό χρονικό διάστημα. Υπάρχει διαθέσιμη ενημέρωση και θα γίνει εφαρμογή της μόλις κάνετε επανεκκίνηση.</translation> <translation id="4549794359424059447">Οι μελλοντικές εκδόσεις του Chromium δεν θα υποστηρίζονται πια σε Windows XP ή Windows Vista.</translation> <translation id="4567424176335768812">Έχετε συνδεθεί ως <ph name="USER_EMAIL_ADDRESS" />. Τώρα μπορείτε να αποκτήσετε πρόσβαση στους σελιδοδείκτες, το ιστορικό και σε άλλες ρυθμίσεις από όλες τις συσκευές στις οποίες έχετε συνδεθεί.</translation> <translation id="457845228957001925">Σημαντικές πληροφορίες σχετικά με τα δεδομένα σας στο Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb index 1276a3a0..a476d8b1 100644 --- a/chrome/app/resources/chromium_strings_en-GB.xtb +++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Chromium OS could not sync your data because your account sign-in details are out of date.</translation> <translation id="2558641060352364164">This site is using the Chromium Frame plug-in which will soon be unsupported. Please uninstall it and upgrade to a modern browser.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Chromium OS needs to be restarted to apply the update.</translation> <translation id="2595977381794111014">Use the <ph name="APPS_ICON_IMAGE" /> shortcut in the Chromium bookmarks bar to continue accessing your apps.</translation> <translation id="2605472041568654097">Help make Chromium better by reporting the current settings.</translation> <translation id="2636877269779209383">Chromium needs camera access to share it with this site.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">This module is known to conflict with Chromium.</translation> <translation id="4423735387467980091">Customise and control Chromium</translation> <translation id="4458285410772214805">Please sign out and sign in again for this change to take effect.</translation> +<translation id="4469812139324097969">Chromium is out of date because it hasn't been relaunched for a while. An update is available and will be applied as soon as you relaunch.</translation> <translation id="4549794359424059447">Future versions of Chromium will no longer support Windows XP or Windows Vista.</translation> <translation id="4567424176335768812">You're signed in as <ph name="USER_EMAIL_ADDRESS" />. Now you can access your bookmarks, history and other settings on all your signed in devices.</translation> <translation id="457845228957001925">Important information regarding your Chromium data</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb index c57a5ff3..2cdda3e 100644 --- a/chrome/app/resources/chromium_strings_es-419.xtb +++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">El Sistema operativo Chromium no pudo sincronizar los datos porque la información de acceso de la cuenta está desactualizada.</translation> <translation id="2558641060352364164">Este sitio está usando el complemento Chromium Frame, que pronto dejará de ser compatible. Desinstálalo y obtén un navegador moderno.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">El Sistema operativo Chromium debe reiniciarse para que se aplique la actualización.</translation> <translation id="2595977381794111014">Para seguir accediendo a tus apps, usa el acceso directo de <ph name="APPS_ICON_IMAGE" /> que aparece en la barra de marcadores de Chromium.</translation> <translation id="2605472041568654097">Informa tu configuración actual para ayudarnos a mejorar Chromium.</translation> <translation id="2636877269779209383">Chromium necesita acceso a la cámara para compartirla con el sitio.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">Este módulo provoca un conflicto con Chromium.</translation> <translation id="4423735387467980091">Personaliza y controla Chromium</translation> <translation id="4458285410772214805">Cierra la sesión y vuelve a iniciarla para que se aplique el cambio.</translation> +<translation id="4469812139324097969">Chromium no está actualizado porque no se reinició por un tiempo. Cuando lo reinicies, se aplicará la actualización disponible.</translation> <translation id="4549794359424059447">Las próximas versiones de Chromium ya no serán compatibles con Windows XP o Windows Vista.</translation> <translation id="4567424176335768812">Accediste como <ph name="USER_EMAIL_ADDRESS" />. Ahora puedes ir a los marcadores, al historial y a otras opciones en todos los dispositivos en los que hayas accedido.</translation> <translation id="457845228957001925">Información importante sobre tus datos de Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_es.xtb b/chrome/app/resources/chromium_strings_es.xtb index bef3b64..9b51097 100644 --- a/chrome/app/resources/chromium_strings_es.xtb +++ b/chrome/app/resources/chromium_strings_es.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Chromium OS no ha podido sincronizar los datos porque la información de inicio de sesión de tu cuenta está obsoleta.</translation> <translation id="2558641060352364164">Este sitio utiliza el complemento Chromium Frame, que pronto dejará de estar disponible. Desinstálalo e instala un navegador actual.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Chromium OS se debe reiniciar para que se aplique la actualización.</translation> <translation id="2595977381794111014">Utiliza el acceso directo de <ph name="APPS_ICON_IMAGE" /> situado en la barra de marcadores de Chromium para seguir accediendo a tus aplicaciones.</translation> <translation id="2605472041568654097">Genera un informe de la configuración actual para ayudar a mejorar Chromium.</translation> <translation id="2636877269779209383">Chromium necesita acceder a la cámara para compartirla con este sitio web.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">Se ha detectado que este módulo provoca un conflicto con Chromium.</translation> <translation id="4423735387467980091">Personaliza y controla Chromium</translation> <translation id="4458285410772214805">Cierra la sesión y vuelve a iniciarla para que se aplique el cambio.</translation> +<translation id="4469812139324097969">Chromium no está actualizado porque hace algún tiempo que no se reinicia. Hay una actualización disponible, que se aplicará en cuanto lo reinicies.</translation> <translation id="4549794359424059447">Las próximas versiones de Chromium dejarán de ser compatibles con Windows XP y Windows Vista.</translation> <translation id="4567424176335768812">Has iniciado sesión como <ph name="USER_EMAIL_ADDRESS" />. Ahora puedes acceder a tus marcadores, a tu historial y a otras opciones en todos los dispositivos en los que hayas iniciado sesión.</translation> <translation id="457845228957001925">Información importante sobre tus datos de Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_et.xtb b/chrome/app/resources/chromium_strings_et.xtb index 66a4a84..dfd3ea4 100644 --- a/chrome/app/resources/chromium_strings_et.xtb +++ b/chrome/app/resources/chromium_strings_et.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS ei saanud andmeid sünkroonida, sest teie konto sisselogimisandmed on aegunud.</translation> <translation id="2558641060352364164">See sait kasutab pistikprogrammi Chromium Frame, mille tugi peagi lõpeb. Desinstallige see ja täiendage moodsale brauserile.</translation> <translation id="2572494885440352020">Chromiumi abiline</translation> +<translation id="2587578672395088481">Chromium OS tuleb värskenduse rakendamiseks taaskäivitada.</translation> <translation id="2595977381794111014">Oma rakendustele pääsete edaspidi juurde Chromiumi järjehoidjate ribal oleva otsetee <ph name="APPS_ICON_IMAGE" /> kaudu.</translation> <translation id="2605472041568654097">Aidake muuta Chromiumi paremaks, teavitades meid praegustest seadetest.</translation> <translation id="2636877269779209383">Chromiumil on vaja kaamerale juurdepääsu selle jagamiseks saidiga.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">See moodul põhjustab teadaolevalt Chromiumiga vastuolusid.</translation> <translation id="4423735387467980091">Chromiumi kohandamine ja juhtimine</translation> <translation id="4458285410772214805">Muudatuse jõustamiseks logige välja ja uuesti sisse.</translation> +<translation id="4469812139324097969">Chromium on aegunud, kuna seda ei ole tükk aega taaskäivitatud. Saadaval on värskendus, mis rakendatakse taaskäivitamisel.</translation> <translation id="4549794359424059447">Chromiumi tulevased versioonid ei toeta enam Windows XP-d ega Windows Vistat.</translation> <translation id="4567424176335768812">Olete sisse logitud aadressiga <ph name="USER_EMAIL_ADDRESS" />. Nüüd on teil juurdepääs oma järjehoidjatele, ajaloole ja muudele seadetele kõigis seadmetes, kuhu olete sisse logitud.</translation> <translation id="457845228957001925">Oluline teave teie Chromiumi andmete kohta</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb index 41f65d4..38214974 100644 --- a/chrome/app/resources/chromium_strings_fa.xtb +++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">سیستمعامل Chromium قادر به همگامسازی دادههای شما نبود زیرا جزئیات ورود به حساب شما بهروز نیست.</translation> <translation id="2558641060352364164">این سایت از افزایه Chromium Frame استفاده میکند که به زودی پشتیبانی از آن متوقف میشود. لطفاً آن را حذف نصب کرده و به مرورگر جدیدی ارتقا دهید.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">برای اعمال بهروزرسانی، Chromium OS باید راهاندازی مجدد شود.</translation> <translation id="2595977381794111014">برای ادامه دسترسی به برنامههایتان از میانبر <ph name="APPS_ICON_IMAGE" /> در نوار نشانکهای Chromium استفاده کنید.</translation> <translation id="2605472041568654097">با گزارش تنظیمات فعلی، به بهتر شدن Chromium کمک کنید.</translation> <translation id="2636877269779209383">Chromium نیاز به مجوز دسترسی به دوربین دارد تا آن را با این سایت به اشتراک بگذارد.</translation> @@ -112,6 +113,7 @@ <translation id="4330585738697551178">این مدول با Chromium تداخل دارد.</translation> <translation id="4423735387467980091">سفارشی کردن و کنترل Chromium</translation> <translation id="4458285410772214805">لطفاً از سیستم خارج شوید و دوباره وارد آن شوید تا این تغییر اعمال شود.</translation> +<translation id="4469812139324097969">Chromium قدیمی است چون برای مدتی راهاندازی مجدد نشده است. یک نسخه بهروز دردسترس است و بهمحض راهاندازی مجدد اعمال خواهد شد.</translation> <translation id="4549794359424059447">نسخههای آینده Chromium دیگر از Windows XP یا Windows Vista پشتیبانی نمیکند.</translation> <translation id="4567424176335768812">با حساب <ph name="USER_EMAIL_ADDRESS" /> وارد سیستم شدهاید. اکنون در همه دستگاههایی که با آنها به سیستم وارد شدهاید میتوانید به نشانکها، سابقه و دیگر تنظیماتتان دسترسی داشته باشید.</translation> <translation id="457845228957001925">اطلاعات مهم در مورد دادههای Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb index e58e9fff..6d9968e 100644 --- a/chrome/app/resources/chromium_strings_fi.xtb +++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium-käyttöjärjestelmä ei voi synkronoida tietoja, sillä tilin kirjautumistiedot ovat vanhentuneet.</translation> <translation id="2558641060352364164">Tämä sivusto käyttää Chromium-kehyslaajennusta, jonka tukeminen lopetetaan pian. Poista se ja asenna uudempi selain.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Chromium-käyttöjärjestelmä täytyy käynnistää uudelleen, jotta päivitys voidaan ottaa käyttöön.</translation> <translation id="2595977381794111014">Voit jatkaa sovellustesi käyttöä Chromiumin kirjanmerkkipalkissa olevalla <ph name="APPS_ICON_IMAGE" />-pikanäppäimellä.</translation> <translation id="2605472041568654097">Auta parantamaan Chromiumia ilmoittamalla nykyiset asetukset.</translation> <translation id="2636877269779209383">Chromium tarvitsee kameran käyttöoikeuden, jotta voi jakaa sen sivustolle.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Tämän moduulin tiedetään aiheuttavan ristiriitoja Chromiumin kanssa.</translation> <translation id="4423735387467980091">Chromiumin muokkaus ja hallinta</translation> <translation id="4458285410772214805">Kirjaudu ulos ja kirjaudu uudelleen sisään, jotta muutos tulee voimaan.</translation> +<translation id="4469812139324097969">Chromium on vanhentunut, koska sitä ei ole käynnistetty uudelleen viime aikoina. Päivitys on saatavilla, ja se otetaan käyttöön uudelleenkäynnistyksen jälkeen.</translation> <translation id="4549794359424059447">Chromiumin tulevat versiot eivät enää tue Windows XP:tä tai Windows Vistaa.</translation> <translation id="4567424176335768812">Olet kirjautunut Chromeen tilillä <ph name="USER_EMAIL_ADDRESS" />. Nyt voit käyttää kirjanmerkkejäsi, historiaa ja muita asetuksia kaikilla laitteilla, joihin olet kirjautunut.</translation> <translation id="457845228957001925">Tärkeitä tietoja Chromium-tiedoistasi</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb index a2ffc52f..28798462 100644 --- a/chrome/app/resources/chromium_strings_fil.xtb +++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Hindi ma-sync ng Chromium OS ang iyong data dahil hindi napapanahon ang mga detalye sa pag-sign in sa iyong account.</translation> <translation id="2558641060352364164">Ginagamit ng site na ito ang plugin na Chromium Frame na malapit nang hindi suportahan. Paki-uninstall ito at mag-upgrade sa isang modernong browser.</translation> <translation id="2572494885440352020">Helper ng Chromium</translation> +<translation id="2587578672395088481">Kailangang ma-restart ang Chromium OS upang mailapat ang update.</translation> <translation id="2595977381794111014">Gamitin ang shortcut ng <ph name="APPS_ICON_IMAGE" /> sa Chromium bookmarks bar upang patuloy na ma-access ang iyong mga app.</translation> <translation id="2605472041568654097">Tumulong na mas pahusayin ang Chromium sa pamamagitan ng pag-uulat sa mga kasalukuyang setting.</translation> <translation id="2636877269779209383">Nangangailangan ang Chromium ng access sa camera upang maibahagi ito sa site na ito.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">Natuklasang sumasalungat sa Chromium ang module na ito.</translation> <translation id="4423735387467980091">I-customize at kontrolin ang Chromium</translation> <translation id="4458285410772214805">Mangyaring mag-sign out at mag-sign in muli upang magkabisa ang pagbabagong ito.</translation> +<translation id="4469812139324097969">Luma na ang Chromium dahil matagal na itong hindi muling nailunsad. Available ang isang update at ilalapat ito sa sandaling muli mo itong inilunsad.</translation> <translation id="4549794359424059447">Hindi na susuportahan ng mga bersyon ng Chromium ang Windows XP o Windows Vista sa hinaharap.</translation> <translation id="4567424176335768812">Naka-sign in ka bilang <ph name="USER_EMAIL_ADDRESS" />. Maaari mo na ngayong i-access ang iyong mga bookmark, kasaysayan, at iba pang setting sa lahat ng iyong device na naka-sign in.</translation> <translation id="457845228957001925">Mahalagang impormasyon patungkol sa iyong data sa Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb index 5cfeb2e4..b150f98 100644 --- a/chrome/app/resources/chromium_strings_fr.xtb +++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -51,6 +51,7 @@ <translation id="2535480412977113886">Impossible de synchroniser vos données dans Chromium OS, car les informations de connexion de votre compte ne sont plus à jour.</translation> <translation id="2558641060352364164">Ce site utilise le plug-in Chromium Frame, dont le développement va bientôt être abandonné. Veuillez désinstaller ce plug-in, puis passer à un navigateur récent.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Redémarrez Chromium OS pour appliquer la mise à jour.</translation> <translation id="2595977381794111014">Utilisez le raccourci <ph name="APPS_ICON_IMAGE" /> dans la barre de favoris Chromium pour continuer d'accéder à vos applications.</translation> <translation id="2605472041568654097">Aidez-nous à améliorer Chromium en nous signalant vos paramètres actuels.</translation> <translation id="2636877269779209383">Chromium doit accéder à la caméra pour la partager avec ce site.</translation> @@ -114,6 +115,7 @@ <translation id="4330585738697551178">Ce module n'est pas compatible avec Chromium.</translation> <translation id="4423735387467980091">Personnaliser et contrôler Chromium</translation> <translation id="4458285410772214805">Pour que cette modification soit prise en compte, veuillez vous déconnecter, puis vous reconnecter.</translation> +<translation id="4469812139324097969">Chromium n'est plus à jour, car il n'a pas été relancé depuis quelque temps. La mise à jour disponible sera installée dès que vous le relancerez.</translation> <translation id="4549794359424059447">Les futures versions de Chromium ne seront plus compatibles avec Windows XP et Windows Vista.</translation> <translation id="4567424176335768812">Vous êtes connecté avec l'adresse e-mail <ph name="USER_EMAIL_ADDRESS" />. Vous pouvez maintenant accéder à vos favoris, à l'historique et aux autres paramètres sur tous les appareils sur lesquels vous êtes connecté.</translation> <translation id="457845228957001925">Information importante concernant vos données Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb index 167a231..ae2ab680 100644 --- a/chrome/app/resources/chromium_strings_gu.xtb +++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">તમારી એકાઉન્ટ સાઇન ઇન વિગતો જૂની હોવાને કારણે Chromium OS તમારા ડેટાને સમન્વયિત કરી શક્યું નથી.</translation> <translation id="2558641060352364164">આ સાઇટ Chromium ફ્રેમ પ્લગિનનો ઉપયોગ કરી રહી છે જે ટૂંક સમયમાં અસમર્થિત થશે. કૃપા કરીને તેને અનઇન્સ્ટોલ કરો અને આધુનિક બ્રાઉઝરમાં અપગ્રેડ કરો.</translation> <translation id="2572494885440352020">Chromium હેલ્પર</translation> +<translation id="2587578672395088481">અપડેટ લાગુ કરવા માટે Chromium OS ને પુનઃપ્રારંભ કરવાની જરૂર છે.</translation> <translation id="2595977381794111014">તમારી ઍપ્લિકેશનોને ઍક્સેસ કરવાનું ચાલુ રાખવા માટે Chromium બુકમાર્ક્સ બારમાં <ph name="APPS_ICON_IMAGE" /> શૉર્ટકટનો ઉપયોગ કરો.</translation> <translation id="2605472041568654097">વર્તમાન સેટિંગ્સની જાણ કરીને Chromium ને બહેતર બનાવવામાં સહાય કરો.</translation> <translation id="2636877269779209383">Chromium ને આ સાઇટ સાથે કૅમેરો શેર કરવા માટે તેની ઍક્સેસની જરૂર છે.</translation> @@ -116,6 +117,7 @@ <translation id="4330585738697551178">આ મોડ્યુલ Chromium સાથે વિરોધાભાસ માટે જાણીતું છે.</translation> <translation id="4423735387467980091">Chromium ને કસ્ટમાઇઝ અને નિયંત્રિત કરો</translation> <translation id="4458285410772214805">કૃપા કરીને આ પરિવર્તનને પ્રભાવમાં લાવવા માટે સાઇન આઉટ કરો અને ફરીથી સાઇન ઇન કરો.</translation> +<translation id="4469812139324097969">Chromium જૂનું થઈ ગયું છે કારણ કે તે ઘણા સમયથી ફરીથી લોંચ કરવામાં આવ્યું નથી. અપડેટ ઉપલબ્ધ છે અને તે તમે જેવું જ ફરીથી લોંચ કરશો, લાગુ થઈ જશે.</translation> <translation id="4549794359424059447">Chromium ના ભાવિ સંસ્કરણો હવેથી Windows XP અથવા Windows Vista ને સમર્થિત કરશે નહિ.</translation> <translation id="4567424176335768812">તમે <ph name="USER_EMAIL_ADDRESS" /> તરીકે સાઇન ઇન છો. હવે તમે તમારા બધા સાઇન ઇન કરેલા ઉપકરણો પર તમારા બુકમાર્ક્સ, ઇતિહાસ અને અન્ય સેટિંગ્સને ઍક્સેસ કરી શકો છો.</translation> <translation id="457845228957001925">તમારા Chromium ડેટા અંગેની મહત્વપૂર્ણ માહિતી</translation>
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb index 4a8b58c..98db181b7 100644 --- a/chrome/app/resources/chromium_strings_hi.xtb +++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">क्रोमियम OS आपका डेटा समन्वयित नहीं कर सका क्योंकि आपके खाता प्रवेश विवरण पुराने हो चुके हैं.</translation> <translation id="2558641060352364164">यह साइट क्रोमियम फ़्रेम प्लग इन का उपयोग कर रही है जो जल्द ही असमर्थित हो जाएगा. कृपया इसे अनइंस्टॉल करें और किसी आधुनिक ब्राउज़र में अपग्रेड करें.</translation> <translation id="2572494885440352020">क्रोमियम सहायक</translation> +<translation id="2587578672395088481">अपडेट को लागू करने के लिए क्रोमियम OS को फिर से चालू करने की आवश्यकता होती है.</translation> <translation id="2595977381794111014">अपने ऐप्लिकेशन एक्सेस करना जारी रखने के लिए क्रोमियम बुकमार्क बार में <ph name="APPS_ICON_IMAGE" /> शॉर्टकट का उपयोग करें.</translation> <translation id="2605472041568654097">वर्तमान सेटिंग की रिपोर्ट करके क्रोमियम को बेहतर बनाने में सहायता करें.</translation> <translation id="2636877269779209383">कैमरे को इस साइट के साथ साझा करने के लिए क्रोमियम को कैमरे के ऐक्सेस की आवश्यकता होती है.</translation> @@ -62,7 +63,7 @@ <translation id="2799223571221894425">पुन: लॉन्च करें</translation> <translation id="2801146392936645542"><ph name="FILE_NAME" /> दुर्भावनापूर्ण है, और क्रोमियम ने इसे अवरुद्ध कर दिया है.</translation> <translation id="2847479871509788944">क्रोमियम से निकालें...</translation> -<translation id="2886012850691518054">वैकल्पिक: Google को उपयोग के आंकड़े और क्रैश रिपोर्ट अपने आप भेजकर Chrome को बेहतर बनाने में सहायता करें.</translation> +<translation id="2886012850691518054">वैकल्पिक: अपने आप उपयोग के आंकड़े और क्रैश रिपोर्ट Google को भेजने की अनुमति देकर Chrome को बेहतर बनाने में सहायता करें.</translation> <translation id="2905536371227304018">क्रोमियम OS इस भाषा में दिखाया जा रहा है.</translation> <translation id="2910007522516064972">&क्रोमियम के बारे में</translation> <translation id="2966088006374919794"><ph name="SCHEME" /> लिंक प्रबंधित करने के लिए Google Chrome को एक बाहरी ऐप्स लॉन्च करने की आवश्यकता होती है. अनुरोध की गई लिंक <ph name="PROTOLINK" /> है.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">यह मॉड्यूल क्रोमियम का विरोध करने के लिए जाना जाता है.</translation> <translation id="4423735387467980091">क्रोमियम कस्टमाइज़ करें और नियंत्रित करें</translation> <translation id="4458285410772214805">इस परिवर्तन के प्रभावी होने के लिए, कृपया प्रस्थान करें और पुन: प्रवेश करें.</translation> +<translation id="4469812139324097969">क्रोमियम पुराना हो गया है क्योंकि उसे कुछ समय से फिर से लॉन्च नहीं किया गया है. एक अपडेट उपलब्ध है और जैसे ही आप फिर से लॉन्च करेंगे, अपडेट लागू कर दिया जाएगा.</translation> <translation id="4549794359424059447">भविष्य में आने वाले क्रोमियम के संस्करण अब Windows XP या Windows Vista का समर्थन नहीं करेंगे.</translation> <translation id="4567424176335768812">आपने <ph name="USER_EMAIL_ADDRESS" /> के रूप में प्रवेश किया हुआ है. अब आप अपने सभी प्रवेश किए हुए डिवाइस पर अपने बुकमार्क, इतिहास, और अन्य सेटिंग की एक्सेस कर सकेंगे.</translation> <translation id="457845228957001925">आपके क्रोमियम डेटा से संबंधित महत्वपूर्ण जानकारी</translation>
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb index b333ebf..e427d829 100644 --- a/chrome/app/resources/chromium_strings_hr.xtb +++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">OS Chromium nije mogao sinkronizirati podatke vašeg računa jer su pojedinosti prijave na račun zastarjele.</translation> <translation id="2558641060352364164">Web-lokacija upotrebljava dodatak Chromium Frame koji se uskoro više neće podržavati. Deinstalirajte ga i nadogradite na suvremeni preglednik.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Potrebno je ponovo pokrenuti Chromium OS kako bi se ažuriranje primijenilo.</translation> <translation id="2595977381794111014">Svojim aplikacijama možete pristupati pomoću prečaca <ph name="APPS_ICON_IMAGE" /> na traci oznaka u Chromiumu.</translation> <translation id="2605472041568654097">Pomognite poboljšati Chromium tako što ćete prijaviti trenutačne postavke.</translation> <translation id="2636877269779209383">Chromium treba imati pristup kameri da bi je dijelio s ovom web-lokacijom.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Za taj se modul već zna da je u konfliktu s Chromiumom.</translation> <translation id="4423735387467980091">Prilagodite Chromium i upravljajte njime</translation> <translation id="4458285410772214805">Odjavite se i prijavite se ponovo da bi ta promjena postala aktivna.</translation> +<translation id="4469812139324097969">Chromium je zastario jer dulje vrijeme nije ponovo pokrenut. Ažuriranje je dostupno i primijenit će se čim ponovo pokrenete proizvod.</translation> <translation id="4549794359424059447">Buduće verzije Chromiuma više neće podržavati sustave Windows XP i Windows Vista.</translation> <translation id="4567424176335768812">Prijavljeni ste kao <ph name="USER_EMAIL_ADDRESS" />. Sada možete pristupiti svojim oznakama, povijesti i drugim postavkama na svim uređajima na kojima se prijavljujete.</translation> <translation id="457845228957001925">Važne informacije o vašim podacima u sustavu Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb index 762f0aee..e3fa210 100644 --- a/chrome/app/resources/chromium_strings_hu.xtb +++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">A Chromium OS nem tudta szinkronizálni az adatokat, mert a fiók bejelentkezési adatai elavultak.</translation> <translation id="2558641060352364164">Ez a webhely a Chromium Frame beépülő modult használja, amelynek támogatása hamarosan megszűnik. Kérjük, távolítsa el, majd frissítsen egy modern böngészőre.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">A frissítés alkalmazásához újra kell indítani a Chromium OS-t.</translation> <translation id="2595977381794111014">Alkalmazásait továbbra is elérheti a Chromium-könyvjelzősáv <ph name="APPS_ICON_IMAGE" /> parancsikonjának használatával.</translation> <translation id="2605472041568654097">Segítsen a Chromium fejlesztésében a jelenlegi beállítások elküldésével.</translation> <translation id="2636877269779209383">A Chromiumnak hozzáférésre van szüksége a kamerához, hogy megoszthassa azt a webhellyel.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Ismereteink szerint ez a modul ütközik a Chromiummal.</translation> <translation id="4423735387467980091">A Chromium személyre szabása és beállításai</translation> <translation id="4458285410772214805">Kérjük, jelentkezzen ki, majd jelentkezzen be újra a módosítás aktiválásához.</translation> +<translation id="4469812139324097969">A Chromium elavult, mert nem volt újraindítva egy ideje. Megjelent egy frissítés, amelyik az újraindítás után azonnal érvénybe lép.</translation> <translation id="4549794359424059447">A Chromium jövőbeli verziói nem fogják támogatni a következő rendszereket: Windows XP és Windows Vista.</translation> <translation id="4567424176335768812">A(z) <ph name="USER_EMAIL_ADDRESS" /> címmel van bejelentkezve. Elérheti könyvjelzőit, előzményeit és más beállításait minden olyan eszközön, amelyen bejelentkezett.</translation> <translation id="457845228957001925">Fontos információ az Ön Chromium-adatairól</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb index 9dc6c552..400032a 100644 --- a/chrome/app/resources/chromium_strings_id.xtb +++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS tidak dapat menyinkronkan data karena detail ID masuk Anda belum diperbarui.</translation> <translation id="2558641060352364164">Situs ini menggunakan plugin Chromium Frame yang akan segera tidak didukung. Copot pemasangannya dan tingkatkan versi ke browser modern.</translation> <translation id="2572494885440352020">Pembantu Chromium</translation> +<translation id="2587578672395088481">Chromium OS harus dimulai ulang untuk menerapkan pembaruan.</translation> <translation id="2595977381794111014">Gunakan pintasan <ph name="APPS_ICON_IMAGE" /> di bilah bookmark Chromium untuk terus mengakses aplikasi.</translation> <translation id="2605472041568654097">Bantu jadikan Chromium lebih baik dengan melaporkan setelan saat ini.</translation> <translation id="2636877269779209383">Chromium memerlukan akses kamera untuk membagikannya dengan situs ini.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Modul ini biasanya konflik dengan Chromium.</translation> <translation id="4423735387467980091">Menyesuaikan dan mengontrol Chromium</translation> <translation id="4458285410772214805">Keluar dan masuk lagi agar perubahan ini diterapkan.</translation> +<translation id="4469812139324097969">Chromium telah kedaluwarsa karena tidak diluncurkan untuk beberapa saat. Pembaruan telah tersedia dan akan diterapkan setelah Anda meluncurkan ulang.</translation> <translation id="4549794359424059447">Versi Chromium berikutnya tidak mendukung lagi Windows XP atau Windows Vista.</translation> <translation id="4567424176335768812">Anda masuk sebagai <ph name="USER_EMAIL_ADDRESS" />. Kini Anda dapat mengakses bookmark, riwayat, dan setelan lainnya pada seluruh perangkat yang Anda masuki.</translation> <translation id="457845228957001925">Informasi penting terkait data Chromium Anda</translation>
diff --git a/chrome/app/resources/chromium_strings_it.xtb b/chrome/app/resources/chromium_strings_it.xtb index 8a64f99..08f90c2 100644 --- a/chrome/app/resources/chromium_strings_it.xtb +++ b/chrome/app/resources/chromium_strings_it.xtb
@@ -27,7 +27,7 @@ <translation id="1779356040007214683">Per rendere Chromium più sicuro, abbiamo disattivato alcune estensioni che non sono elencate nel <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> e potrebbero essere state aggiunte a tua insaputa.</translation> <translation id="1808667845054772817">Reinstalla Chromium</translation> <translation id="1816404578968201294">Chromium deve avere accesso alla posizione per condividerla con questo sito.</translation> -<translation id="1869480248812203386">Puoi contribuire a rendere Chromium più sicuro e più facile da utilizzare segnalando automaticamente a Google dettagli dei possibili incidenti di sicurezza.</translation> +<translation id="1869480248812203386">Puoi contribuire a rendere Chromium più sicuro e più facile da utilizzare segnalando automaticamente a Google i dettagli dei possibili problemi di sicurezza.</translation> <translation id="1881322772814446296">Stai per accedere con un account gestito e per dare al relativo amministratore il controllo del tuo profilo Chromium. I tuoi dati di Chromium, come app, Preferiti, cronologia, password e altre impostazioni, verranno collegati definitivamente a <ph name="USER_NAME" />. Potrai eliminare questi dati tramite la Dashboard di Google Account, ma non potrai associare questi dati a un altro account. Se preferisci puoi creare un nuovo profilo per mantenere separati i dati di Chromium esistenti. <ph name="LEARN_MORE" /></translation> <translation id="1929939181775079593">Chromium non risponde. Riavviarlo ora?</translation> <translation id="1967743265616885482">Un modulo con lo stesso nome risulta in conflitto con Chromium.</translation> @@ -50,6 +50,7 @@ <translation id="2535480412977113886">Impossibile sincronizzare i dati in Chromium OS perché i dati di accesso dell'account sono obsoleti.</translation> <translation id="2558641060352364164">Questo sito utilizza il plug-in Chromium Frame che a breve non sarà più supportato. Disinstallalo ed esegui l'upgrade a un browser recente.</translation> <translation id="2572494885440352020">Supporto Chromium</translation> +<translation id="2587578672395088481">Per applicare l'aggiornamento è necessario riavviare Chromium OS.</translation> <translation id="2595977381794111014">Per continuare ad accedere alle tue app, utilizza la scorciatoia <ph name="APPS_ICON_IMAGE" /> nella barra dei Preferiti di Chromium.</translation> <translation id="2605472041568654097">Contribuisci a migliorare Chromium indicando le impostazioni attuali.</translation> <translation id="2636877269779209383">Chromium deve avere accesso alla fotocamera per condividerla con questo sito.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Questo modulo risulta in conflitto con Chromium.</translation> <translation id="4423735387467980091">Personalizza e controlla Chromium</translation> <translation id="4458285410772214805">Esci ed esegui di nuovo l'accesso per applicare la modifica.</translation> +<translation id="4469812139324097969">Chromium non è aggiornato perché non viene riavviato da un po'. È disponibile un aggiornamento che verrà applicato non appena riavvierai.</translation> <translation id="4549794359424059447">Le versioni future di Chromium non supporteranno più Windows XP o Windows Vista.</translation> <translation id="4567424176335768812">Hai eseguito l'accesso come <ph name="USER_EMAIL_ADDRESS" />. Ora puoi accedere ai tuoi Preferiti, alla tua cronologia e ad altre impostazioni su tutti i tuoi dispositivi su cui esegui l'accesso.</translation> <translation id="457845228957001925">Informazioni importanti relative ai tuoi dati Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb index d4d734d..00e2386 100644 --- a/chrome/app/resources/chromium_strings_iw.xtb +++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">מערכת ההפעלה של Chromium לא הצליחה לסנכרן את הנתונים שלך מפני שפרטי הכניסה של חשבונך אינם מעודכנים.</translation> <translation id="2558641060352364164">האתר הזה משתמש בפלאגין Chromium Frame. התמיכה בפלאגין הזה תסתיים בקרוב. הסר את ההתקנה שלו ושדרג לדפדפן מודרני.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">כדי להחיל עדכון זה, יש להפעיל מחדש את Chromium OS.</translation> <translation id="2595977381794111014">השתמש בקיצור הדרך <ph name="APPS_ICON_IMAGE" /> בסרגל הסימניות של Chromium כדי להמשיך לגשת לאפליקציות שלך.</translation> <translation id="2605472041568654097">עזור לשפר את Chromium על ידי דיווח על ההגדרות הנוכחיות.</translation> <translation id="2636877269779209383">Chromium זקוק לגישה אל המצלמה כדי לשתף אותה עם האתר הזה.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">מודול זה מתנגש עם Chromium.</translation> <translation id="4423735387467980091">התאם אישית ושלוט ב-Chromium</translation> <translation id="4458285410772214805">צא מהמערכת והיכנס שוב כדי שהשינוי ייכנס לתוקף.</translation> +<translation id="4469812139324097969">Chromium אינו מעודכן מכיוון שהוא לא הופעל בזמן האחרון. יש עדכון זמין והוא יחול ברגע שתבצע הפעלה מחדש.</translation> <translation id="4549794359424059447">גרסאות עתידיות של Chromium כבר לא יתמכו ב-Windows XP וב-Windows Vista.</translation> <translation id="4567424176335768812">נכנסת למערכת בתור <ph name="USER_EMAIL_ADDRESS" />. כעת אתה יכול לגשת אל הסימניות, ההיסטוריה והגדרות אחרות שלך בכל המכשירים שבהם אתה מחובר לחשבון.</translation> <translation id="457845228957001925">מידע חשוב בנוגע לנתונים שלך ב-Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ja.xtb b/chrome/app/resources/chromium_strings_ja.xtb index 4f88a34..7a27e9d 100644 --- a/chrome/app/resources/chromium_strings_ja.xtb +++ b/chrome/app/resources/chromium_strings_ja.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">アカウントのログイン情報が最新ではないため、Chromium OS はデータを同期できませんでした。</translation> <translation id="2558641060352364164">このサイトで使用されている Chromium Frame プラグインは、間もなくサポートが終了します。プラグインをアンインストールし、最新のブラウザにアップグレードしてください。</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">アップデートを適用するには Chromium OS を再起動する必要があります。</translation> <translation id="2595977381794111014">今後アプリにアクセスするには、Chromium ブックマーク バーの <ph name="APPS_ICON_IMAGE" /> ショートカットを使用してください。</translation> <translation id="2605472041568654097">現在の設定を送信して Chromium の品質向上にご協力ください。</translation> <translation id="2636877269779209383">このサイトとカメラを共有するには、Chromium にカメラへのアクセスを許可する必要があります。</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">このモジュールは Chromium と競合することがわかっています。</translation> <translation id="4423735387467980091">Chromium の設定</translation> <translation id="4458285410772214805">変更内容を反映するには、一度ログアウトして、もう一度ログインしてください。</translation> +<translation id="4469812139324097969">Chromium はしばらく再起動していないため最新ではありません。再起動するとすぐにアップデートが適用されます。</translation> <translation id="4549794359424059447">Chromium の今後のバージョンでは Windows XP と Windows Vista はサポートされなくなります。</translation> <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> としてログインしています。ログインしているすべてのデバイスで、ブックマーク、履歴、その他の設定にアクセスできます。</translation> <translation id="457845228957001925">Chromium データに関する重要な情報</translation>
diff --git a/chrome/app/resources/chromium_strings_kn.xtb b/chrome/app/resources/chromium_strings_kn.xtb index aee6b4e..4042ec4 100644 --- a/chrome/app/resources/chromium_strings_kn.xtb +++ b/chrome/app/resources/chromium_strings_kn.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">ನಿಮ್ಮ ಖಾತೆಯ ಸೈನ್ ಇನ್ ವಿವರಗಳು ತೀರಾ ಹಳೆಯದಾಗಿರುವ ಕಾರಣ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು Chromium OS ಗೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> <translation id="2558641060352364164">ಈ ಸೈಟ್ ಶೀಘ್ರದಲ್ಲಿಯೇ ಬೆಂಬಲ ಕಳೆದುಕೊಳ್ಳಲಿರುವ Chromium Frame ಪ್ಲಗ್-ಇನ್ ಅನ್ನು ಬಳಸುತ್ತಿದೆ. ದಯವಿಟ್ಟು ಅದನ್ನು ಅಸ್ಥಾಪಿಸಿ ಮತ್ತು ಆಧುನಿಕ ಬ್ರೌಸರ್ಗೆ ಅಪ್ಗ್ರೇಡ್ ಮಾಡಿ.</translation> <translation id="2572494885440352020">Chromium ಸಹಾಯಕ</translation> +<translation id="2587578672395088481">ಅಪ್ಡೇಟ್ ಅನ್ವಯಿಸಲು Chromium OS ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕಾಗುತ್ತದೆ.</translation> <translation id="2595977381794111014">ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಪ್ರವೇಶಿಸುವುದನ್ನು ಮುಂದುವರಿಸಲು Chromium ಬುಕ್ಮಾರ್ಕ್ಗಳ ಬಾರ್ನಲ್ಲಿ <ph name="APPS_ICON_IMAGE" /> ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ.</translation> <translation id="2605472041568654097">ಪ್ರಸ್ತುತ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ವರದಿ ಮಾಡುವುದರ ಮೂಲಕ Chromium ಅನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಸಹಾಯಮಾಡಿ.</translation> <translation id="2636877269779209383">ಈ ಸೈಟ್ನೊಂದಿಗೆ ಅದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು Chromium ಗೆ ಕ್ಯಾಮರಾದ ಪ್ರವೇಶ ಅಗತ್ಯವಿದೆ.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">Chromium ನೊಂದಿಗಿನ ಈ ಮಾಡ್ಯೂಲ್ನ ಘರ್ಷಣೆ ಎಲ್ಲರಿಗೂ ತಿಳಿದಿರುವಂಥದ್ದು.</translation> <translation id="4423735387467980091">Chromium ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ</translation> <translation id="4458285410772214805">ದಯವಿಟ್ಟು ಈ ಬದಲಾವಣೆಯು ಕಾರ್ಯಗತವಾಗಲು ಸೈನ್ ಔಟ್ ಮಾಡಿ ಹಾಗೂ ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.</translation> +<translation id="4469812139324097969">Chromium ಮರುಆರಂಭಿಸದೇ ಇರುವ ಕಾರಣದಿಂದ ಅದರ ಅವಧಿ ಮುಗಿದಿದೆ. ಒಂದು ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದ್ದು ನೀವು ಮರುಪ್ರಾರಂಭಿಸಿದ ತಕ್ಷಣವೇ ಅದನ್ನು ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ.</translation> <translation id="4549794359424059447">Chromium ಪೂರ್ಣ ಆವೃತ್ತಿಗಳು ಇನ್ನು ಮುಂದೆ Windows XP ಅಥವಾ Windows Vista ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.</translation> <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> ನಂತೆ ಸೈನ್ ಇನ್ ಮಾಡಿರುವಿರಿ. ನೀವು ಇದೀಗ ನಿಮ್ಮ ಎಲ್ಲಾ ಸೈನ್ ಇನ್ ಮಾಡಿರುವ ಸಾಧನಗಳಲ್ಲಿ ನಿಮ್ಮ ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು.</translation> <translation id="457845228957001925">ನಿಮ್ಮ Chromium ಡೇಟಾಗೆ ಸಂಬಂಧಿಸಿದ ಪ್ರಮುಖ ಮಾಹಿತಿ</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb index a46e655..f128d27 100644 --- a/chrome/app/resources/chromium_strings_ko.xtb +++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">계정의 로그인 세부정보가 오래되어 Chromium OS에서 데이터를 동기화하지 못했습니다.</translation> <translation id="2558641060352364164">이 사이트에서 곧 지원이 중단되는 Chromium 프레임 플러그인을 사용하고 있습니다. 플러그인을 제거하고 최신 브라우저로 업그레이드하세요.</translation> <translation id="2572494885440352020">Chromium 도우미</translation> +<translation id="2587578672395088481">업데이트를 적용하려면 Chromium OS를 다시 시작해야 합니다.</translation> <translation id="2595977381794111014">이제 앱에 액세스하려면 Chromium 북마크바의 <ph name="APPS_ICON_IMAGE" /> 단축키를 사용하세요.</translation> <translation id="2605472041568654097">현재 설정을 보고하여 Chromium 개선에 참여</translation> <translation id="2636877269779209383">Chromium이 이 사이트와 카메라를 공유하려면 카메라 액세스가 필요합니다.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">이 모듈은 Chromium과 충돌하는 것으로 알려져 있습니다.</translation> <translation id="4423735387467980091">Chromium 맞춤설정 및 제어</translation> <translation id="4458285410772214805">변경사항을 적용하려면 로그아웃했다가 다시 로그인하세요.</translation> +<translation id="4469812139324097969">한동안 사용하지 않아 Chromium의 버전이 오래되었습니다. 업데이트를 사용할 수 있으며 다시 시작하면 바로 업데이트됩니다.</translation> <translation id="4549794359424059447">Chromium 향후 버전에서는 더 이상 Windows XP 또는 Windows Vista를 지원하지 않습니다.</translation> <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" />(으)로 로그인되어 있습니다. 이제 로그인한 모든 기기에서 북마크, 방문 기록 및 기타 설정에 액세스할 수 있습니다.</translation> <translation id="457845228957001925">Chromium 데이터 관련 중요 정보</translation>
diff --git a/chrome/app/resources/chromium_strings_lt.xtb b/chrome/app/resources/chromium_strings_lt.xtb index 5cfaf45..81a023c2 100644 --- a/chrome/app/resources/chromium_strings_lt.xtb +++ b/chrome/app/resources/chromium_strings_lt.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">„Chromium“ OS negali sinchronizuoti duomenų, nes paskyros išsami prisijungimo informacija yra pasenusi.</translation> <translation id="2558641060352364164">Šioje svetainėje naudojamas „Chromium“ rėmelio papildinys, kuris greitai bus nepalaikomas. Pašalinkite jį ir atsisiųskite modernią naršyklę.</translation> <translation id="2572494885440352020">„Chromium“ pagalbos priemonė</translation> +<translation id="2587578672395088481">Kad būtų galima pritaikyti naujinį, „Chromium“ OS reikia paleisti iš naujo.</translation> <translation id="2595977381794111014">„Chromium“ žymių juostoje naudokite spartųjį klavišą <ph name="APPS_ICON_IMAGE" />, kad ir toliau pasiektumėte savo programas.</translation> <translation id="2605472041568654097">Padėkite tobulinti „Chromium“ pateikę ataskaitą apie dabartinius nustatymus.</translation> <translation id="2636877269779209383">„Chromium“ reikia pasiekti fotoaparatą, kad galėtų bendrinti jį su šia svetaine.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">Šis modulis žinomas kaip prieštaraujantis „Chromium“.</translation> <translation id="4423735387467980091">Tinkinkite ir valdykite „Chromium“</translation> <translation id="4458285410772214805">Atsijunkite ir prisijunkite iš naujo, kad šis pakeitimas būtų pritaikytas.</translation> +<translation id="4469812139324097969">„Chromium“ pasenusi, nes kurį laiką nebuvo paleista iš naujo. Pasiekiamas naujinys ir jis bus pritaikytas, kai paleisite „Chromium“ iš naujo.</translation> <translation id="4549794359424059447">Būsimų versijų „Chromium“ nebebus palaikoma naudojant „Windows XP“ ar „Windows Vista“.</translation> <translation id="4567424176335768812">Esate prisijungę kaip <ph name="USER_EMAIL_ADDRESS" />. Dabar galite pasiekti savo žymes, istoriją ir kitus nustatymus visuose įrenginiuose, kuriuose esate prisijungę.</translation> <translation id="457845228957001925">Svarbi informacija apie jūsų „Chromium“ duomenis</translation>
diff --git a/chrome/app/resources/chromium_strings_lv.xtb b/chrome/app/resources/chromium_strings_lv.xtb index 7f73cc8..5bfdc38 100644 --- a/chrome/app/resources/chromium_strings_lv.xtb +++ b/chrome/app/resources/chromium_strings_lv.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS nevarēja sinhronizēt jūsu datus, jo jūsu konta pierakstīšanās informācija ir novecojusi.</translation> <translation id="2558641060352364164">Šajā vietnē tiek izmantots spraudnis Chromium Frame, kas drīzumā vairs netiks atbalstīts. Lūdzu, atinstalējiet to un veiciet jaunināšanu uz modernu pārlūku.</translation> <translation id="2572494885440352020">Chromium palīgs</translation> +<translation id="2587578672395088481">Lai lietotu atjauninājumu, operētājsistēma Chromium ir jārestartē.</translation> <translation id="2595977381794111014">Lai turpmāk varētu piekļūt savām lietotnēm, izmantojiet saīsni <ph name="APPS_ICON_IMAGE" /> Chromium grāmatzīmju joslā.</translation> <translation id="2605472041568654097">Palīdziet uzlabot pārlūku Chromium, ziņojot par pašreizējiem iestatījumiem.</translation> <translation id="2636877269779209383">Chromium sistēmām ir nepieciešama piekļuve kamerai, lai kopīgotu to ar šo vietni.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Ir zināms, ka šis modulis konfliktē ar Chromium.</translation> <translation id="4423735387467980091">Pielāgot un kontrolēt Chromium</translation> <translation id="4458285410772214805">Lūdzu, izrakstieties un pierakstieties vēlreiz, lai šīs izmaiņas stātos spēkā.</translation> +<translation id="4469812139324097969">Pārlūks Chromium ir novecojis, jo jau kādu laiku tas nav restartēts. Atjauninājums ir pieejams un tiks lietots, tiklīdz veiksiet atkārtotu palaišanu.</translation> <translation id="4549794359424059447">Nākamajās Chromium versijās vairs netiks atbalstītas operētājsistēmas Windows XP un Windows Vista.</translation> <translation id="4567424176335768812">Jūs esat pierakstījies kā <ph name="USER_EMAIL_ADDRESS" />. Tagad varat piekļūt savām grāmatzīmēm, vēsturei un citiem iestatījumiem visās ierīcēs, kurās esat pierakstījies.</translation> <translation id="457845228957001925">Svarīga informācija par jūsu datiem operētājsistēmā Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb index 7666b73..8e5c967c 100644 --- a/chrome/app/resources/chromium_strings_ml.xtb +++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">നിങ്ങളുടെ അക്കൗണ്ടിന്റെ സൈൻ ഇൻ വിശദാംശങ്ങൾ കാലഹരണപ്പെട്ടതിനാൽ Chromium OS-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation> <translation id="2558641060352364164">ഈ സൈറ്റ് ഉടൻ പിന്തുണ നഷ്ടപ്പെടാൻ പോകുന്ന Chromium Frame പ്ലഗ് ഇൻ ആണ് ഉപയോഗിക്കുന്നത്. ഇത് അൺഇൻസ്റ്റാളുചെയ്ത് ഒരു നൂതന ബ്രൗസറിലേക്ക് അപ്ഗ്രേഡുചെയ്യുക.</translation> <translation id="2572494885440352020">Chromium ഹെൽപ്പർ</translation> +<translation id="2587578672395088481">അപ്ഡേറ്റ് പ്രയോഗത്തിൽ വരുത്താൻ Chromium OS പുനഃരാരംഭിക്കേണ്ടതുണ്ട്.</translation> <translation id="2595977381794111014">നിങ്ങളുടെ ആപ്സ് ആക്സസ്സ് ചെയ്യുന്നത് തുടരാൻ, Chromium ബുക്ക്മാർക്കുകളിലെ <ph name="APPS_ICON_IMAGE" /> കുറുക്കുവഴി ഉപയോഗിക്കുക.</translation> <translation id="2605472041568654097">നിലവിലെ ക്രമീകരണം റിപ്പോർട്ടുചെയ്യുന്നതിലൂടെ Chromium മികച്ചതാക്കാൻ സഹായിക്കുക.</translation> <translation id="2636877269779209383">Chromium-ത്തിന് ഈ സൈറ്റുമായി ക്യാമറ പങ്കിടാൻ അതിലേക്ക് ആക്സസ്സ് ആവശ്യമാണ്.</translation> @@ -116,6 +117,7 @@ <translation id="4330585738697551178">ഈ മൊഡ്യൂൾ Chromium-മായി വൈരുദ്ധ്യം പുലർത്തുന്നതിന് അറിയപ്പെട്ടതാണ്.</translation> <translation id="4423735387467980091">Chromium ഇഷ്ടാനുസൃതമാക്കുക, നിയന്ത്രിക്കുക</translation> <translation id="4458285410772214805">ഈ മാറ്റം പ്രാബല്യത്തിൽ വരുന്നതിന് സൈൻ ഔട്ട് ചെയ്ത് വീണ്ടും സൈൻ ഇൻ ചെയ്യുക.</translation> +<translation id="4469812139324097969">അൽപ്പസമയത്തിനുള്ളിൽ വീണ്ടും ആരംഭിക്കാത്തതിനാൽ Chromium കാലഹരണപ്പെട്ടു. അപ്ഡേറ്റ് ലഭ്യമായതിനാൽ നിങ്ങൾ വീണ്ടും ആരംഭിച്ചയുടനെ അത് അപ്ഡേറ്റുചെയ്യും.</translation> <translation id="4549794359424059447">Chromium-ത്തിന്റെ ഭാവിയിലെ പതിപ്പുകൾ ഇനി Windows XP അല്ലെങ്കിൽ Windows Vista-യെ പിന്തുണയ്ക്കില്ല.</translation> <translation id="4567424176335768812">നിങ്ങൾ <ph name="USER_EMAIL_ADDRESS" /> ആയി സൈൻ ഇൻ ചെയ്തിരിക്കുന്നു. സൈൻ ഇൻ ചെയ്തിരിക്കുന്ന എല്ലാ ഉപകരണങ്ങളിലും ബുക്ക്മാർക്കുകളും ചരിത്രവും മറ്റ് ക്രമീകരണങ്ങളും ആക്സസ്സുചെയ്യാൻ ഇപ്പോൾ നിങ്ങൾക്കാകും.</translation> <translation id="457845228957001925">നിങ്ങളുടെ Chromium ഡാറ്റയെ സംബന്ധിച്ച പ്രധാനപ്പെട്ട വിവരങ്ങൾ</translation>
diff --git a/chrome/app/resources/chromium_strings_mr.xtb b/chrome/app/resources/chromium_strings_mr.xtb index 7b58d81..8389b13 100644 --- a/chrome/app/resources/chromium_strings_mr.xtb +++ b/chrome/app/resources/chromium_strings_mr.xtb
@@ -51,6 +51,7 @@ <translation id="2535480412977113886">आपले खाते साइन इन तपशील कालबाह्य झाल्यामुळे Chromium OS आपला डेटा संकालित करू शकले नाही.</translation> <translation id="2558641060352364164">ही साइट Chromium फ्रेम प्लगिन वापरत आहे जे लवकरच असमर्थित केले जाईल. कृपया ते विस्थापित करा आणि एका आधुनिक ब्राउझरवर श्रेणीसुधारित करा.</translation> <translation id="2572494885440352020">Chromium मदतनीस</translation> +<translation id="2587578672395088481">अद्यतन लागू करण्यासाठी Chromium OS रीस्टार्ट करणे आवश्यक आहे.</translation> <translation id="2595977381794111014">आपल्या अॅप्समध्ये प्रवेश करणे सुरु ठेवण्यासाठी Chromium बुकमार्क बार मधील <ph name="APPS_ICON_IMAGE" /> शॉर्टकट वापरा.</translation> <translation id="2605472041568654097">वर्तमान सेटिंग्जचा अहवाल देऊन Chromium ला आणखी चांगले बनविण्यात मदत करा.</translation> <translation id="2636877269779209383">Chromium ला या साइटसह सामायिक करण्यासाठी कॅमेर्यामध्ये प्रवेश करण्याची आवश्यकता असते.</translation> @@ -114,6 +115,7 @@ <translation id="4330585738697551178">हे मॉड्यूल Chromium बरोबर विरोधाकरिता ओळखले जाते.</translation> <translation id="4423735387467980091">Chromium सानुकूल करा आणि नियंत्रित करा</translation> <translation id="4458285410772214805">कृपया हा बदल प्रभावी होण्यासाठी साइन आउट करा आणि साइन इन करा.</translation> +<translation id="4469812139324097969">Chromium कालबाह्य झाले आहे कारण हे काही क्षणात पुन्हा लाँच झाले नाही. एक अद्यतन उपलब्ध आहे आणि आपण पुन्हा लाँच केल्यावर ते लवकरात लवकर लागू होईल.</translation> <translation id="4549794359424059447">Chromium च्या भविष्यातील आवृत्त्या यापुढे Windows XP किंवा Windows Vista ला समर्थन देणार नाहीत.</translation> <translation id="4567424176335768812">आपण <ph name="USER_EMAIL_ADDRESS" /> म्हणून साइन इन केले आहे. आता आपण आपल्या सर्व साइन इन केलेल्या डिव्हाइसेसवरील आपल्या बुकमार्क, इतिहास आणि अन्य सेटिंग्जवर प्रवेश करू शकता.</translation> <translation id="457845228957001925">आपल्या Chromium डेटाशी संबंधित महत्त्वाची माहिती</translation> @@ -143,7 +145,7 @@ <translation id="5698481217667032250">Chromium या भाषेत प्रदर्शित करा</translation> <translation id="5768914737813585044">Chromium OS या भाषेत प्रदर्शित करा</translation> <translation id="5772805321386874569">(Chromium <ph name="BEGIN_BUTTON" />रीस्टार्ट<ph name="END_BUTTON" /> करणे आवश्यक)</translation> -<translation id="5796460469508169315">Chromium जवळजवळ सज्ज आहे</translation> +<translation id="5796460469508169315">Chromium जवळजवळ तयार आहे</translation> <translation id="5820394555380036790">Chromium OS</translation> <translation id="5823381412099532241">Chromium नवीनतम आवृत्तीमध्ये स्वतःस अद्यतनित करत नाही, म्हणून आपल्याकडे अद्भुत नवीन वैशिष्ट्ये आणि सुरक्षितता निराकरणे नाहीत. आपल्याला Chromium अद्यतनित करण्याची आवश्यकता आहे.</translation> <translation id="5859963531214966875">Chromium च्या भविष्यातील आवृत्त्या यापुढे या Linux सिस्टीमला समर्थन देणार नाहीत.</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb index ae25f02..aa63806 100644 --- a/chrome/app/resources/chromium_strings_ms.xtb +++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">OS Chromium tidak dapat menyegerakkan data anda kerana butiran log masuk akaun anda sudah lapuk.</translation> <translation id="2558641060352364164">Tapak ini menggunakan pemalam Chromium Frame yang tidak akan disokong tidak lama lagi. Sila nyahpasangnya dan naik taraf kepada penyemak imbas moden.</translation> <translation id="2572494885440352020">Pembantu Chromium</translation> +<translation id="2587578672395088481">Chromium OS perlu dimulakan semula untuk melaksanakan kemas kini.</translation> <translation id="2595977381794111014">Gunakan pintasan <ph name="APPS_ICON_IMAGE" /> dalam bar penanda halaman Chromium untuk terus mengakses apl anda.</translation> <translation id="2605472041568654097">Bantu jadikan Chromium lebih baik dengan melaporkan tetapan semasa.</translation> <translation id="2636877269779209383">Chromium memerlukan akses kamera untuk mengongsinya dengan tapak ini.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Modul ini diketahui bercanggah dengan Chromium.</translation> <translation id="4423735387467980091">Sesuaikan dan kawal Chromium</translation> <translation id="4458285410772214805">Sila log keluar dan log masuk semula supaya perubahan ini boleh dilaksanakan.</translation> +<translation id="4469812139324097969">Chromium sudah usang kerana telah lama tidak dilancarkan. Terdapat kemas kini tersedia dan akan digunakan sebaik sahaja anda melancarkannya semula.</translation> <translation id="4549794359424059447">Versi Chromium yang akan datang tidak lagi akan menyokong Windows XP atau Windows Vista.</translation> <translation id="4567424176335768812">Anda telah log masuk sebagai <ph name="USER_EMAIL_ADDRESS" />. Sekarang anda boleh mengakses penanda halaman, sejarah dan tetapan anda yang lain pada semua peranti yang anda gunakan untuk log masuk.</translation> <translation id="457845228957001925">Maklumat penting mengenai data Chromium anda</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb index 6550640a..b453785 100644 --- a/chrome/app/resources/chromium_strings_nl.xtb +++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Chromium OS kan je gegevens niet synchroniseren omdat de inloggegevens voor je account zijn verouderd.</translation> <translation id="2558641060352364164">Deze site maakt gebruik van de plug-in Chromium Frame die binnenkort niet meer wordt ondersteund. Verwijder deze en voer een upgrade naar een moderne browser uit.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Chromium OS moet opnieuw worden gestart om de update toe te passen.</translation> <translation id="2595977381794111014">Gebruik de snelkoppeling <ph name="APPS_ICON_IMAGE" /> op de Chromium-bladwijzerbalk om toegang te krijgen tot je apps.</translation> <translation id="2605472041568654097">Help Chromium beter te maken door de huidige instellingen te melden.</translation> <translation id="2636877269779209383">Chromium heeft cameratoegang nodig om het item te delen met deze site.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">Van deze module is bekend dat deze conflicteert met Chromium.</translation> <translation id="4423735387467980091">Chromium aanpassen en beheren</translation> <translation id="4458285410772214805">Log uit en log weer in om deze wijziging door te voeren.</translation> +<translation id="4469812139324097969">Chromium is verouderd omdat het programma al een tijd niet opnieuw is gestart. Er is een update beschikbaar die wordt toegepast zodra je het programma opnieuw start.</translation> <translation id="4549794359424059447">Toekomstige versies van Chromium bieden geen ondersteuning meer voor Windows XP en Windows Vista.</translation> <translation id="4567424176335768812">Je bent ingelogd als <ph name="USER_EMAIL_ADDRESS" />. Je hebt nu toegang tot je bladwijzers, geschiedenis en andere instellingen op al je apparaten waarop je bent ingelogd.</translation> <translation id="457845228957001925">Belangrijke informatie over je Chromium-gegevens</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb index 282972a..d2c4d0a3 100644 --- a/chrome/app/resources/chromium_strings_no.xtb +++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium kunne ikke synkronisere dataene fordi påloggingsopplysningene dine er foreldede.</translation> <translation id="2558641060352364164">Dette nettstedet bruker Chromium Frame-programtillegget. Støtten for dette programtillegget utløper snart, og du bør derfor avinstallere det og oppgradere til en nyere nettleser.</translation> <translation id="2572494885440352020">Chromium-hjelper</translation> +<translation id="2587578672395088481">Chromium OS må startes på nytt for at oppdateringen skal tas i bruk.</translation> <translation id="2595977381794111014">Du har fortsatt tilgang til appene dine via <ph name="APPS_ICON_IMAGE" />-snarveien i bokmerkeraden i Chromium.</translation> <translation id="2605472041568654097">Bidra til å gjøre Chromium bedre ved å rapportere de gjeldende innstillingene</translation> <translation id="2636877269779209383">Chromium må ha tilgang til kameraet ditt for å kunne dele det med dette nettstedet.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Denne modulen er kjent for å komme i konflikt med Chromium.</translation> <translation id="4423735387467980091">Tilpass og kontrollér Chromium</translation> <translation id="4458285410772214805">Logg deg av og så på igjen for at denne endringen skal tre i kraft.</translation> +<translation id="4469812139324097969">Chromium er utdatert fordi den ikke har vært startet på nytt på en stund. En oppdatering er tilgjengelig og tas i bruk når du starter Chromium på nytt.</translation> <translation id="4549794359424059447">Fremtidige versjoner av Chromium kommer ikke lenger til å støtte Windows XP eller Windows Vista.</translation> <translation id="4567424176335768812">Du er logget på som <ph name="USER_EMAIL_ADDRESS" />. Nå kan du bruke bokmerkene, loggen og andre innstillinger på alle enhetene du er logget på.</translation> <translation id="457845228957001925">Viktig informasjon om Chromium-dataene dine</translation>
diff --git a/chrome/app/resources/chromium_strings_pl.xtb b/chrome/app/resources/chromium_strings_pl.xtb index 6192dbb..a7f443a 100644 --- a/chrome/app/resources/chromium_strings_pl.xtb +++ b/chrome/app/resources/chromium_strings_pl.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">System operacyjny Chromium nie może zsynchronizować danych, ponieważ dane logowania na Twoje konto są nieaktualne.</translation> <translation id="2558641060352364164">Ta strona korzysta z wtyczki Chromium Frame, która wkrótce nie będzie obsługiwana. Odinstaluj wtyczkę i przejdź na nowoczesną przeglądarkę.</translation> <translation id="2572494885440352020">Pomoc Chromium</translation> +<translation id="2587578672395088481">Zastosowanie aktualizacji wymaga ponownego uruchomienia systemu operacyjnego Chromium.</translation> <translation id="2595977381794111014">Aby nadal uruchamiać aplikacje, możesz korzystać ze skrótu <ph name="APPS_ICON_IMAGE" /> na pasku zakładek w Chromium.</translation> <translation id="2605472041568654097">Pomóż ulepszyć Chromium, zgłaszając bieżące ustawienia.</translation> <translation id="2636877269779209383">Chromium potrzebuje dostępu do kamery, by móc ją udostępnić tej stronie.</translation> @@ -92,7 +93,7 @@ <translation id="3748537968684000502">Przeglądasz bezpieczną stronę Chromium.</translation> <translation id="378917192836375108">W Chromium możesz kliknąć numer telefonu zamieszczony w sieci i zadzwonić pod niego przez Skype.</translation> <translation id="3848258323044014972"><ph name="PAGE_TITLE" /> – Chromium</translation> -<translation id="3849925841547750267">Niestety, ustawienia Firefoksa są niedostępne, gdy aplikacja jest uruchomiona. Aby importować te ustawienia do Chromium, zapisz bieżącą pracę i zamknij wszystkie okna Firefoksa. Następnie kliknij Kontynuuj.</translation> +<translation id="3849925841547750267">Niestety, ustawienia Firefoksa są niedostępne, gdy aplikacja jest uruchomiona. Aby importować te ustawienia do Chromium, zapisz bieżącą pracę i zamknij wszystkie okna Firefoksa. Następnie kliknij Dalej.</translation> <translation id="3883381313049582448">Użyj hasła wygenerowanego przez Chromium</translation> <translation id="3889543394854987837">Otwórz Chromium, klikając swoją nazwę i rozpocznij przeglądanie.</translation> <translation id="390894725198123737">Na Macach hasła można zapisywać w pęku kluczy. Inni użytkownicy Chromium dzielący to konto OS X mogą z nich korzystać i je synchronizować.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">Znane są przypadki konfliktu tego modułu z Chromium.</translation> <translation id="4423735387467980091">Dostosowywanie i kontrolowanie Chromium</translation> <translation id="4458285410772214805">Wyloguj się i zaloguj ponownie, by zmiana zaczęła obowiązywać.</translation> +<translation id="4469812139324097969">Chromium jest nieaktualny, ponieważ od pewnego czasu nie był uruchamiany ponownie. Dostępna jest aktualizacja, która zostanie zastosowana natychmiast po ponownym uruchomieniu.</translation> <translation id="4549794359424059447">Przyszłe wersje Chromium nie będą już zgodne z Windows XP ani Windows Vista.</translation> <translation id="4567424176335768812">Jesteś zalogowany jako <ph name="USER_EMAIL_ADDRESS" />. Teraz możesz korzystać ze swoich zakładek, historii i innych ustawień na wszystkich zalogowanych urządzeniach.</translation> <translation id="457845228957001925">Ważne informacje dotyczące Twoich danych Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-BR.xtb b/chrome/app/resources/chromium_strings_pt-BR.xtb index d57cd0fab..320b04e 100644 --- a/chrome/app/resources/chromium_strings_pt-BR.xtb +++ b/chrome/app/resources/chromium_strings_pt-BR.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">O Chromium OS não pôde sincronizar seus dados porque os detalhes de login da sua conta estão desatualizados.</translation> <translation id="2558641060352364164">Este site está usando o plug-in Chromium Frame, que não será mais compatível em breve. Desinstale-o e faça upgrade para um navegador moderno.</translation> <translation id="2572494885440352020">Assistente do Chromium</translation> +<translation id="2587578672395088481">É necessário reiniciar o Chromium OS para que a atualização seja aplicada.</translation> <translation id="2595977381794111014">Use o atalho <ph name="APPS_ICON_IMAGE" /> na barra de favoritos do Chromium para continuar a acessar seus apps.</translation> <translation id="2605472041568654097">Ajude a melhorar o Chromium informando as configurações atuais.</translation> <translation id="2636877269779209383">O Chromium precisa de acesso à câmera para compartilhá-la com este site.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">Este módulo é conhecido por entrar em conflito com o Chromium.</translation> <translation id="4423735387467980091">Personalizar e controlar o Chromium</translation> <translation id="4458285410772214805">Saia e faça login novamente para que esta alteração entre em vigor.</translation> +<translation id="4469812139324097969">O Chromium está desatualizado porque não foi reiniciado durante algum tempo. Uma atualização está disponível e será aplicada assim que você reiniciá-lo.</translation> <translation id="4549794359424059447">As futuras versões do Chromium não serão mais compatível com o Windows XP ou Windows Vista.</translation> <translation id="4567424176335768812">Você está conectado como <ph name="USER_EMAIL_ADDRESS" />. Agora você pode acessar seus favoritos, histórico e outras configurações em todos os seus dispositivos conectados.</translation> <translation id="457845228957001925">Informação importante sobre seus dados do Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_pt-PT.xtb b/chrome/app/resources/chromium_strings_pt-PT.xtb index 40efc55..1bb597d 100644 --- a/chrome/app/resources/chromium_strings_pt-PT.xtb +++ b/chrome/app/resources/chromium_strings_pt-PT.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">O SO Chromium não conseguiu sincronizar os dados porque os detalhes de início de sessão da sua conta estão desatualizados.</translation> <translation id="2558641060352364164">Este site está a utilizar o plug-in Chromium Frame, que em breve deixará de ser suportado. Desinstale-o e atualize para um navegador moderno.</translation> <translation id="2572494885440352020">Ajuda do Chromium</translation> +<translation id="2587578672395088481">O SO Chromium tem de ser reiniciado para aplicar a atualização.</translation> <translation id="2595977381794111014">Utilize o atalho <ph name="APPS_ICON_IMAGE" /> na barra de marcadores do Chromium para continuar a aceder às aplicações.</translation> <translation id="2605472041568654097">Ajude a melhorar o Chromium ao comunicar as definições atuais.</translation> <translation id="2636877269779209383">O Chromium necessita de acesso à câmara para a partilhar com este site.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Este módulo é conhecido por entrar em conflito com o Chromium.</translation> <translation id="4423735387467980091">Personalizar e controlar o Chromium</translation> <translation id="4458285410772214805">Termine sessão e volte a iniciar sessão para que esta alteração tenha efeito.</translation> +<translation id="4469812139324097969">O Chromium está desatualizado porque não é reiniciado há algum tempo. Está disponível uma atualização que será aplicada logo que o reinicie.</translation> <translation id="4549794359424059447">As versões futuras do Chromium não suportarão o Windows XP ou o Windows Vista.</translation> <translation id="4567424176335768812">Tem sessão iniciada como <ph name="USER_EMAIL_ADDRESS" />. Agora, pode aceder aos seus marcadores, ao histórico e a outras definições em todos os dispositivos com sessão iniciada.</translation> <translation id="457845228957001925">Informações importantes acerca dos seus dados do Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ro.xtb b/chrome/app/resources/chromium_strings_ro.xtb index dfcb3b1..19cea26 100644 --- a/chrome/app/resources/chromium_strings_ro.xtb +++ b/chrome/app/resources/chromium_strings_ro.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Sistemul de operare Chromium nu a putut sincroniza datele, deoarece detaliile de conectare pentru contul dvs. nu sunt actualizate.</translation> <translation id="2558641060352364164">Acest site folosește pluginul Chromium Frame, care nu va mai fi acceptat în curând. Dezinstalează-l și fă upgrade la un browser modern.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Pentru a se aplica actualizarea, sistemul de operare Chromium trebuie să fie repornit.</translation> <translation id="2595977381794111014">Folosește comanda rapidă <ph name="APPS_ICON_IMAGE" /> din bara de marcaje din Chromium pentru a accesa în continuare aplicațiile.</translation> <translation id="2605472041568654097">Contribuie la îmbunătățirea browserului Chromium raportând setările actuale.</translation> <translation id="2636877269779209383">Chromium are nevoie de acces la camera foto pentru a-l acorda acestui site.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Despre acest modul se cunoaște că intră în conflict cu Chromium.</translation> <translation id="4423735387467980091">Personalizați și controlați Chromium</translation> <translation id="4458285410772214805">Pentru ca modificarea să fie aplicată, deconectați-vă și conectați-vă din nou.</translation> +<translation id="4469812139324097969">Chromium este neactualizat, deoarece în ultimul timp nu a fost repornit. Este disponibilă o actualizare, iar aceasta va fi aplicată după repornire.</translation> <translation id="4549794359424059447">Versiunile Chromium ulterioare nu vor mai accepta Windows XP sau Windows Vista.</translation> <translation id="4567424176335768812">V-ați conectat ca <ph name="USER_EMAIL_ADDRESS" />. Acum vă puteți accesa marcajele, istoricul și alte setări de pe toate dispozitivele pe care v-ați conectat.</translation> <translation id="457845228957001925">Informații importante cu privire la datele dvs. Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb index 529023f2..9847114 100644 --- a/chrome/app/resources/chromium_strings_ru.xtb +++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Не удалось выполнить синхронизацию, так как учетные данные устарели.</translation> <translation id="2558641060352364164">Этот сайт использует плагин Chromium Frame, поддержка которого скоро будет прекращена. Установите новую версию браузера.</translation> <translation id="2572494885440352020">Помощник по Chromium</translation> +<translation id="2587578672395088481">Перезагрузите Chromium OS, чтобы установить обновление.</translation> <translation id="2595977381794111014">Используйте ярлык <ph name="APPS_ICON_IMAGE" /> в панели закладок Chromium, чтобы получить доступ к приложениям.</translation> <translation id="2605472041568654097">Отправьте отчет о текущих настройках Chromium и помогите усовершенствовать работу браузера.</translation> <translation id="2636877269779209383">Предоставьте браузеру Chromium доступ к камере, чтобы пользоваться ею на этом сайте.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">Известно, что модуль с таким названием конфликтует с Chromium.</translation> <translation id="4423735387467980091">Настройка и управление Chromium</translation> <translation id="4458285410772214805">Чтобы изменения вступили в силу, выполните вход еще раз.</translation> +<translation id="4469812139324097969">Для текущей версии Chromium доступно обновление. Оно будет установлено при перезапуске приложения.</translation> <translation id="4549794359424059447">В следующих версиях Chromium будет прекращена поддержка Windows XP и Windows Vista.</translation> <translation id="4567424176335768812">Вы вошли с помощью аккаунта <ph name="USER_EMAIL_ADDRESS" />. Ваши закладки, история и другие настройки теперь доступны на всех устройствах, где вы используете этот аккаунт.</translation> <translation id="457845228957001925">Важная информация о ваших данных в Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb index 9c140b5..6ebfbf3 100644 --- a/chrome/app/resources/chromium_strings_sk.xtb +++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Systému OS Chromium sa nepodarilo synchronizovať vaše údaje, pretože vaše prihlasovacie údaje účtu sú zastarané.</translation> <translation id="2558641060352364164">Táto stránka používa doplnok Chromium Frame, ktorého podpora sa čoskoro ukončí. Odinštalujte ho a inovujte na moderný prehliadač.</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Ak chcete uplatniť aktualizáciu, musíte reštartovať systém Chromium OS.</translation> <translation id="2595977381794111014">K aplikáciám môžete naďalej pristupovať pomocou skratky <ph name="APPS_ICON_IMAGE" /> na paneli so záložkami prehliadača Chromium.</translation> <translation id="2605472041568654097">Nahláste aktuálne nastavenia a pomôžte tak zlepšiť prehliadač Chromium</translation> <translation id="2636877269779209383">Chromium musí mať najprv prístup k fotoaparátu, aby ho mohol s týmito webovými stránkami zdieľať.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">Tento modul zvykne spôsobovať konflikt s prehliadačom Chromium.</translation> <translation id="4423735387467980091">Prispôsobiť a spravovať Chromium</translation> <translation id="4458285410772214805">Ak chcete, aby sa zmeny prejavili, odhláste sa a znova sa prihláste.</translation> +<translation id="4469812139324097969">Chromium je zastaraný, pretože nebol dlhší čas reštartovaný. K dispozícii je aktualizácia, ktorá bude uplatnená po najbližšom opätovnom spustení.</translation> <translation id="4549794359424059447">Budúce verzie prehliadača Chromium už nebudú podporovať systémy Windows XP a Windows Vista.</translation> <translation id="4567424176335768812">Ste prihlásený/-á ako <ph name="USER_EMAIL_ADDRESS" />. Teraz môžete na všetkých zariadeniach, kde ste prihlásený/-á, pristupovať k svojim záložkám, histórii a ďalším nastaveniam.</translation> <translation id="457845228957001925">Dôležité informácie týkajúce sa údajov prehliadača Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb index 9ab002c..626264d 100644 --- a/chrome/app/resources/chromium_strings_sl.xtb +++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Chromium OS ni mogel sinhronizirati podatkov, ker so podatki za prijavo v račun zastareli.</translation> <translation id="2558641060352364164">To spletno mesto uporablja vtičnik Chromium Frame, za katerega podpora kmalu ne bo več na voljo. Odstranite ga in nadgradite na sodoben brskalnik.</translation> <translation id="2572494885440352020">Pomoč za Chromium</translation> +<translation id="2587578672395088481">Če želite namestiti posodobitev, morate znova zagnati OS Chromium.</translation> <translation id="2595977381794111014">Če želite še naprej dostopati do aplikacij, uporabite bližnjico <ph name="APPS_ICON_IMAGE" /> v zaznamkih v Chromiumu.</translation> <translation id="2605472041568654097">Pomagajte izboljšati Chromium s poročanjem o trenutnih nastavitvah.</translation> <translation id="2636877269779209383">Chromium potrebuje dostop do kamere, če želite, da temu spletnemu mestu omogoči dostop do nje.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">Za ta modul je znano, da je v sporu s Chromiumom.</translation> <translation id="4423735387467980091">Prilagajanje in nadziranje Chromiuma</translation> <translation id="4458285410772214805">Odjavite se in znova prijavite, da bodo te spremembe začele veljati.</translation> +<translation id="4469812139324097969">Chromium je zastarel, ker ga že nekaj časa niste znova zagnali. Na voljo je posodobitev, ki bo nameščena, takoj ko ga znova zaženete.</translation> <translation id="4549794359424059447">Prihodnje različice Chromiuma ne bodo več podpirale sistema Windows XP ali Windows Vista.</translation> <translation id="4567424176335768812">Prijavljeni ste kot <ph name="USER_EMAIL_ADDRESS" />. Zdaj imate dostop do zaznamkov, zgodovine in drugih nastavitev v vseh napravah, v katerih ste prijavljeni.</translation> <translation id="457845228957001925">Pomembne informacije o vaših podatkih v Chromiumu</translation>
diff --git a/chrome/app/resources/chromium_strings_sr.xtb b/chrome/app/resources/chromium_strings_sr.xtb index 266bb658..a20d1d16 100644 --- a/chrome/app/resources/chromium_strings_sr.xtb +++ b/chrome/app/resources/chromium_strings_sr.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Chromium ОС не може да синхронизује податке зато што су подаци за пријављивање на налог застарели.</translation> <translation id="2558641060352364164">Овај сајт користи додатну компоненту Chromium Frame која ускоро више неће бити подржана. Деинсталирајте је и надоградите на модеран прегледач.</translation> <translation id="2572494885440352020">Chromium помагач</translation> +<translation id="2587578672395088481">Треба да рестартујете Chromium ОС да бисте применили ажурирање.</translation> <translation id="2595977381794111014">Користите пречицу за <ph name="APPS_ICON_IMAGE" /> у Chromium траци са обележивачима да бисте наставили да приступате апликацијама.</translation> <translation id="2605472041568654097">Помозите да побољшамо Chromium тако што ћете послати извештај о актуелним подешавањима.</translation> <translation id="2636877269779209383">Chromium захтева приступ камери да би је делио са овим сајтом.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">За овај модул је познато да се сукобљава са Chromium-ом.</translation> <translation id="4423735387467980091">Прилагодите и контролишите Chromium</translation> <translation id="4458285410772214805">Одјавите се и поново се пријавите да би ова промена ступила на снагу.</translation> +<translation id="4469812139324097969">Chromium је застарео јер дуго није поново покренут. Ажурирање је доступно и биће примењено чим га поново покренете.</translation> <translation id="4549794359424059447">Будуће верзије Chromium-а више неће подржавати Windows XP или Windows Vista-у.</translation> <translation id="4567424176335768812">Пријављени сте као <ph name="USER_EMAIL_ADDRESS" />. Сада можете да приступате обележивачима, историји и другим подешавањима на свим уређајима на којима сте пријављени.</translation> <translation id="457845228957001925">Важне информације у вези са Chromium подацима</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb index b45b625..392b4270 100644 --- a/chrome/app/resources/chromium_strings_sv.xtb +++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Det gick inte att synkronisera data med Chromium eftersom inloggningsuppgifterna för kontot är inaktuella.</translation> <translation id="2558641060352364164">På den här webbplatsen används pluginprogrammet Chromium Frame som snart slutar stödjas. Avinstallera det och uppgradera till en modern webbläsare.</translation> <translation id="2572494885440352020">Hjälp för Chromium</translation> +<translation id="2587578672395088481">Chromium OS måste startas om för att uppdateringen ska börja gälla.</translation> <translation id="2595977381794111014">Använd genvägen <ph name="APPS_ICON_IMAGE" /> i bokmärkesfältet i Chromium om du fortfarande vill ha tillgång till apparna.</translation> <translation id="2605472041568654097">Hjälp oss att förbättra Chromium genom att rapportera dina aktuella inställningar.</translation> <translation id="2636877269779209383">Chromium behöver tillgång till kameran för att kunna dela den på den här webbplatsen.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">Den här modulen har tidigare varit i konflikt med Chromium.</translation> <translation id="4423735387467980091">Anpassa och kontrollera Chromium</translation> <translation id="4458285410772214805">Den här ändringen träder inte i kraft förrän du loggat ut och sedan loggar in igen.</translation> +<translation id="4469812139324097969">Chromium är inaktuellt eftersom det inte har startats om på ett tag. Det finns en uppdatering tillgänglig som tillämpas så snart du startar om.</translation> <translation id="4549794359424059447">Framtida versioner av Chromium kommer inte att ha stöd för Windows XP och Windows Vista.</translation> <translation id="4567424176335768812">Du är inloggad som <ph name="USER_EMAIL_ADDRESS" />. Nu kan du komma åt dina bokmärken, historik och andra inställningar på alla enheter som du är inloggad på.</translation> <translation id="457845228957001925">Viktig information om uppgifter i Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb index deb6b707..a34de192 100644 --- a/chrome/app/resources/chromium_strings_sw.xtb +++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -52,6 +52,7 @@ <translation id="2535480412977113886">Mfumo wa Uendeshaji wa Chromium haukuweza kusawazisha data yako kwa sababu maelezo yako ya kuingia katika akaunti yanahitaji kusasishwa.</translation> <translation id="2558641060352364164">Tovuti hii inatumia programu-jalizi ya Fremu ya Chromium ambayo haitaweza kutumika hivi karibuni. Tafadhali iondoe na upate toleo jipya la kivinjari cha kisasa.</translation> <translation id="2572494885440352020">Kisaidizi cha Chromium</translation> +<translation id="2587578672395088481">Mfumo wa Uendeshaji wa Chromium unahitaji kuzimwa na kuwashwa ili kutumia sasisho.</translation> <translation id="2595977381794111014">Tumia njia ya mkato ya <ph name="APPS_ICON_IMAGE" /> katika sehemu ya alamisho za Chromium ili uendelee kufikia programu zako.</translation> <translation id="2605472041568654097">Saidia kuboresha Chromium kwa kuripoti kuhusu mipangilio ya sasa.</translation> <translation id="2636877269779209383">Chromium inahitaji idhini ya kufikia kamera ili iishiriki na tovuti hii.</translation> @@ -115,6 +116,7 @@ <translation id="4330585738697551178">Kijenzi hiki kinajulikana kwa kuwa na ukinzani na Chromium.</translation> <translation id="4423735387467980091">Dhibiti na ugeuze Chromium ikufae</translation> <translation id="4458285410772214805">Tafadhali toka na uingie tena ili mabadiliko haya yafanye kazi.</translation> +<translation id="4469812139324097969">Muda wa matumizi wa Chromium umeisha kwa sababu haijafunguliwa upya kwa muda mrefu. Sasisho linapatikana na litaanza kutumika pindi tu utakapofungua upya.</translation> <translation id="4549794359424059447">Matoleo ya siku za usoni ya Chromium hayatatumia tena Windows XP au Windows Vista.</translation> <translation id="4567424176335768812">Umeingia katika akaunti kama <ph name="USER_EMAIL_ADDRESS" />. Sasa unaweza kupata alamisho, historia, na mipangilio yako mingine kwenye vifaa vyako vyote vilivyoingia katika akaunti.</translation> <translation id="457845228957001925">Maelezo muhimu kuhusu data yako ya Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_ta.xtb b/chrome/app/resources/chromium_strings_ta.xtb index b539cf8..7969fc7 100644 --- a/chrome/app/resources/chromium_strings_ta.xtb +++ b/chrome/app/resources/chromium_strings_ta.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">உங்கள் கணக்கின் உள்நுழைவு விவரங்கள் காலாவதியாகிவிட்டதால், உங்கள் தரவை Chromium OS ஆல் ஒத்திசைக்க முடியவில்லை.</translation> <translation id="2558641060352364164">இந்தத் தளமானது Chromium சட்டகத்தின் செருகுநிரலைப் பயன்படுத்துகிறது, இந்த செருகுநிரலுக்கான ஆதரவு விரைவில் நிறுத்தப்படும். இதை நிறுவல் நீக்கம் செய்து, இதை நவீன உலாவிக்கு மேம்படுத்தவும்.</translation> <translation id="2572494885440352020">Chromium உதவி</translation> +<translation id="2587578672395088481">புதுப்பிப்பைப் பயன்படுத்த, Chromium OSஐ மீண்டும் தொடங்க வேண்டும்.</translation> <translation id="2595977381794111014">பயன்பாடுகளைத் தொடர்ந்து அணுக, Chromium புக்மார்க்ஸ் பட்டியில் <ph name="APPS_ICON_IMAGE" /> குறுக்குவழியைப் பயன்படுத்தவும்.</translation> <translation id="2605472041568654097">தற்போதைய அமைப்புகளை அனுப்புவதன் மூலம், Chromiumஐ இன்னும் சிறந்ததாக்க உதவவும்.</translation> <translation id="2636877269779209383">இந்தத் தளத்துடன் கேமரா அணுகலை Chromium பகிர்ந்து கொள்ள வேண்டும்.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">இந்த தொகுதிக்கூறு Chromium உடன் முரண்படுவதாக அறியப்பட்டுள்ளது.</translation> <translation id="4423735387467980091">Chromium ஐ தனிப்பயனாக்கி கட்டுப்படுத்துக</translation> <translation id="4458285410772214805">இந்த மாற்றம் செயல்பாட்டிற்கு வர, வெளியேறி, மீண்டும் உள்நுழைக.</translation> +<translation id="4469812139324097969">சிறிது காலமாக மறுதொடக்கம் செய்யப்படாததால், Chromium காலாவதியாகிவிட்டது. புதுப்பிப்பு உள்ளது. நீங்கள் மறுதொடக்கம் செய்தவுடன் பயன்படுத்தப்படும்.</translation> <translation id="4549794359424059447">Windows XP அல்லது Windows Vista ஆகியவற்றில் Chromium இன் எதிர்காலப் பதிப்புகள் இனி ஆதரிக்கப்படாது.</translation> <translation id="4567424176335768812">நீங்கள் <ph name="USER_EMAIL_ADDRESS" /> ஆக உள்நுழைந்துள்ளீர்கள். தற்போது உங்கள் புக்மார்க்குகள், வரலாறு மற்றும் பிற அமைப்புகளை நீங்கள் உள்நுழைந்துள்ள எல்லா சாதனங்களிலும் அணுகலாம்.</translation> <translation id="457845228957001925">உங்கள் Chromium தரவு தொடர்பான முக்கியமான தகவல்</translation>
diff --git a/chrome/app/resources/chromium_strings_te.xtb b/chrome/app/resources/chromium_strings_te.xtb index 43c67ff..7b45ca72 100644 --- a/chrome/app/resources/chromium_strings_te.xtb +++ b/chrome/app/resources/chromium_strings_te.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">మీ ఖాతా సైన్-ఇన్ వివరాల గడువు ముగిసినందున Chromium OS మీ డేటాను సమకాలీకరించలేకపోయింది.</translation> <translation id="2558641060352364164">ఈ సైట్ ఉపయోగిస్తున్న Chromium ఫ్రేమ్ ప్లగిన్కు త్వరలో మద్దతు ఉపసంహరించబడుతుంది. దయచేసి దీన్ని అన్ఇన్స్టాల్ చేసి, ఆధునిక బ్రౌజర్కు అప్గ్రేడ్ చేయండి.</translation> <translation id="2572494885440352020">Chromium సహాయకం</translation> +<translation id="2587578672395088481">నవీకరణను వర్తింపజేయడానికి Chromium OSని పునఃప్రారంభించాలి.</translation> <translation id="2595977381794111014">మీ అనువర్తనాలను ప్రాప్యత చేయడం కొనసాగించడానికి Chromium బుక్మార్క్ల బార్లో <ph name="APPS_ICON_IMAGE" /> సత్వరమార్గాన్ని ఉపయోగించండి.</translation> <translation id="2605472041568654097">ప్రస్తుత సెట్టింగ్లను నివేదించడం ద్వారా Chromiumని మెరుగుపరచడంలో సహాయపడండి.</translation> <translation id="2636877269779209383">ఈ సైట్కు కెమెరా సామర్థ్యాన్ని భాగస్వామ్యం చేయడానికి Chromiumకి కెమెరా ప్రాప్యతను మంజూరు చేయడం అవసరం.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">ఈ మాడ్యూల్ Chromiumతో వైరుధ్యంగా ఉంటుంది.</translation> <translation id="4423735387467980091">Chromiumను అనుకూలీకరించండి మరియు నియంత్రించండి</translation> <translation id="4458285410772214805">దయచేసి ఈ మార్పు ప్రభావవంతం కావడానికి సైన్ అవుట్ చేసి, మళ్లీ సైన్ ఇన్ చేయండి.</translation> +<translation id="4469812139324097969">Chromiumని కొంత కాలంగా పునఃప్రారంభించనందున దాని గడువు తేదీ ముగిసింది. నవీకరణ అందుబాటులో ఉంది, మీరు పునఃప్రారంభించిన తక్షణం వర్తింపజేయబడుతుంది.</translation> <translation id="4549794359424059447">భవిష్యత్తు Chromium సంస్కరణల్లో ఇకపై Windows XP లేదా Windows Vistaకి మద్దతు ఉండదు.</translation> <translation id="4567424176335768812">మీరు <ph name="USER_EMAIL_ADDRESS" />గా సైన్ ఇన్ చేసారు. ఇప్పుడు మీరు మీ సైన్ ఇన్ చేసిన అన్ని పరికరాల్లో మీ బుక్మార్క్లు, చరిత్ర మరియు ఇతర సెట్టింగ్లను ప్రాప్యత చేయవచ్చు.</translation> <translation id="457845228957001925">మీ Chromium డేటాకు సంబంధించిన ముఖ్యమైన సమాచారం</translation>
diff --git a/chrome/app/resources/chromium_strings_th.xtb b/chrome/app/resources/chromium_strings_th.xtb index f9460c114..129bb105 100644 --- a/chrome/app/resources/chromium_strings_th.xtb +++ b/chrome/app/resources/chromium_strings_th.xtb
@@ -27,7 +27,7 @@ <translation id="1779356040007214683">เพื่อให้ Chromium ปลอดภัยขึ้น เราได้ปิดส่วนขยายบางรายการที่ไม่ได้ระบุไว้ใน <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> และอาจถูกเพิ่มเข้ามาโดยที่คุณไม่รู้ตัว</translation> <translation id="1808667845054772817">ติดตั้ง Chromium ใหม่</translation> <translation id="1816404578968201294">Chromium ต้องการเข้าถึงตำแหน่งเพื่อแชร์กับเว็บไซต์นี้</translation> -<translation id="1869480248812203386">คุณสามารถช่วยปรับปรุงให้ Chromium ปลอดภัยและใช้งานง่ายขึ้นโดยรายงานรายละเอียดของเหตุการณ์ความปลอดภัยที่เป็นไปได้ต่อ Google โดยอัตโนมัติ</translation> +<translation id="1869480248812203386">คุณสามารถช่วยปรับปรุงให้ Chromium ปลอดภัยและใช้งานง่ายขึ้นโดยรายงานรายละเอียดของเหตุการณ์ด้านความปลอดภัยที่อาจจะเกิดขึ้นต่อ Google โดยอัตโนมัติ</translation> <translation id="1881322772814446296">คุณกำลังลงชื่อเข้าใช้ด้วยบัญชีที่จัดการ และให้การควบคุมระดับผู้ดูแลระบบของบัญชีดังกล่าวเหนือโปรไฟล์ Chromium ของคุณ ข้อมูล Chromium เช่น แอป บุ๊กมาร์ก ประวัติการเข้าชม รหัสผ่าน และการตั้งค่าอื่นๆ จะเชื่อมโยงอย่างถาวรกับ <ph name="USER_NAME" /> คุณจะสามารถลบข้อมูลนี้ผ่านทางแผงควบคุมบัญชี Google แต่คุณจะไม่สามารถเชื่อมโยงข้อมูลนี้กับบัญชีอื่น คุณสามารถเลือกที่จะสร้างโปรไฟล์ใหม่เพื่อแยกเก็บข้อมูล Chromium ที่มีอยู่ของคุณ <ph name="LEARN_MORE" /></translation> <translation id="1929939181775079593">Chromium ไม่ตอบสนอง เปิดใหม่เลยหรือไม่</translation> <translation id="1967743265616885482">เป็นที่ทราบกันว่าโมดูลที่มีชื่อเดียวกันนี้จะขัดแย้งกับ Chromium</translation> @@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS ไม่สามารถซิงค์ข้อมูลของคุณเนื่องจากรายละเอียดการลงชื่อเข้าใช้บัญชีของคุณล้าสมัย</translation> <translation id="2558641060352364164">เว็บไซต์นี้ใช้ปลั๊กอิน Chromium Frame ซึ่งจะยกเลิกการสนับสนุนในเร็วๆ นี้ โปรดถอนการติดตั้งและอัปเกรดเป็นเบราว์เซอร์ที่ทันสมัย</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">ต้องรีสตาร์ท Chromium OS เพื่อให้ระบบนำเวอร์ชันอัปเดตไปใช้</translation> <translation id="2595977381794111014">ใช้ทางลัด <ph name="APPS_ICON_IMAGE" /> ในแถบบุ๊กมาร์กของ Chromium เพื่อเข้าถึงแอปของคุณต่อไป</translation> <translation id="2605472041568654097">ช่วยให้ Chromium ดียิ่งขึ้นด้วยการรายงานการตั้งค่าปัจจุบัน</translation> <translation id="2636877269779209383">Chromium ต้องการเข้าถึงกล้องถ่ายรูปเพื่อแชร์กับเว็บไซต์นี้</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">เป็นที่ทราบกันว่าโมดูลนี้ขัดแย้งกับ Chromium</translation> <translation id="4423735387467980091">กำหนดค่าและควบคุม Chromium</translation> <translation id="4458285410772214805">โปรดออกจากระบบ และลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงนี้มีผล</translation> +<translation id="4469812139324097969">Chromium ล้าสมัยเพราะไม่ได้เปิดใหม่มาระยะหนึ่งแล้ว มีเวอร์ชันอัปเดตพร้อมใช้งานและระบบจะนำเวอร์ชันอัปเดตดังกล่าวไปใช้เมื่อคุณเปิดเครื่องใหม่</translation> <translation id="4549794359424059447">Chromium เวอร์ชันต่อไปจะไม่รองรับ Windows XP หรือ Windows Vista อีกต่อไป</translation> <translation id="4567424176335768812">คุณกำลังลงชื่อเข้าใช้เป็น <ph name="USER_EMAIL_ADDRESS" /> ตอนนี้คุณสามารถเข้าถึงบุ๊กมาร์ก ประวัติการเข้าชม และการตั้งค่าอื่นๆ บนอุปกรณ์ทั้งหมดที่ลงชื่อเข้าใช้</translation> <translation id="457845228957001925">ข้อมูลสำคัญเกี่ยวกับข้อมูล Chromium ของคุณ</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb index 3ac7c42..c1744ffa 100644 --- a/chrome/app/resources/chromium_strings_tr.xtb +++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Hesap oturum açma ayrıntılarınız güncel olmadığından Chromium OS, verilerinizi senkronize edemedi.</translation> <translation id="2558641060352364164">Bu site, kısa bir süre sonra artık destek verilmeyecek olan Chromium Frame eklentisini kullanıyor. Lütfen bu eklentinin yüklemesini kaldırın ve modern bir tarayıcı sürümüne geçin.</translation> <translation id="2572494885440352020">Chromium Yardımcısı</translation> +<translation id="2587578672395088481">Güncellemenin uygulanması için Chromium OS yeniden başlatılmalıdır.</translation> <translation id="2595977381794111014">Uygulamalarınıza erişmeye devam etmek için Chromium yer işaretlerindeki <ph name="APPS_ICON_IMAGE" /> kısayolunu kullanın.</translation> <translation id="2605472041568654097">Mevcut ayarlarınızı bildirerek Chromium'u daha iyi hale getirmemize yardımcı olun.</translation> <translation id="2636877269779209383">Chromium'un, bu siteyle paylaşmak için kameraya erişmesi gerekiyor.</translation> @@ -111,6 +112,7 @@ <translation id="4330585738697551178">Bu modülün Chromium'la çakıştığı biliniyor.</translation> <translation id="4423735387467980091">Chromium'u özelleştirin ve kontrol edin</translation> <translation id="4458285410772214805">Bu değişikliğin geçerli olabilmesi için lütfen çıkış yapıp tekrar oturum açın.</translation> +<translation id="4469812139324097969">Bir süredir çalıştırılmadığından Chromium güncel değil. Kullanılabilir bir güncelleme var ve yeniden başlattığınızda hemen uygulanacak.</translation> <translation id="4549794359424059447">Chromium'un gelecek sürümleri artık Windows XP veya Windows Vista'yı desteklemeyecek.</translation> <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> olarak oturum açtınız. Şimdi oturum açtığınız tüm cihazlarda yer işaretlerinize, geçmişinize ve diğer ayarlarınıza erişebilirsiniz.</translation> <translation id="457845228957001925">Chromium verilerinizle ilgili önemli bilgiler</translation>
diff --git a/chrome/app/resources/chromium_strings_uk.xtb b/chrome/app/resources/chromium_strings_uk.xtb index b26c95b8..c750297 100644 --- a/chrome/app/resources/chromium_strings_uk.xtb +++ b/chrome/app/resources/chromium_strings_uk.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">ОС Chromium не вдалося синхронізувати ваші дані, оскільки дані для входу в обліковий запис застаріли.</translation> <translation id="2558641060352364164">Цей сайт використовує Chromium Frame. Ми припиняємо підтримку цього плагіна. Видаліть його та встановіть сучасний веб-переглядач.</translation> <translation id="2572494885440352020">Помічник Chromium</translation> +<translation id="2587578672395088481">Щоб застосувати це оновлення, потрібно перезапустити ОС Chromium.</translation> <translation id="2595977381794111014">Відкривайте додатки за допомогою ярлика <ph name="APPS_ICON_IMAGE" /> на панелі закладок Chromium.</translation> <translation id="2605472041568654097">Допоможіть покращити Chromium, надсилаючи звіти про поточні налаштування.</translation> <translation id="2636877269779209383">Chromium потрібен доступ до камери, щоб використовувати її на цьому сайті.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Відомо, що цей модуль конфліктує з Chromium.</translation> <translation id="4423735387467980091">Налаштування та керування Chromium</translation> <translation id="4458285410772214805">Щоб зміна почала діяти, вийдіть і ввійдіть знову.</translation> +<translation id="4469812139324097969">Chromium застарів, оскільки протягом якогось часу його не перезапускали. Оновлення доступне та буде застосоване одразу після перезапуску.</translation> <translation id="4549794359424059447">Наступні версії Chromium не підтримуватимуть Windows XP та Windows Vista.</translation> <translation id="4567424176335768812">Ви ввійшли як <ph name="USER_EMAIL_ADDRESS" />. Ваші закладки, історія й інші налаштування будуть доступні на всіх пристроях, на яких ви ввійдете в цей обліковий запис.</translation> <translation id="457845228957001925">Важлива інформація про ваші дані Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb index 6eda066..d652260f 100644 --- a/chrome/app/resources/chromium_strings_vi.xtb +++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">Chromium OS không thể đồng bộ hóa dữ liệu của bạn vì chi tiết đăng nhập tài khoản của bạn đã lỗi thời.</translation> <translation id="2558641060352364164">Trang web này đang sử dụng plugin Chromium Frame sắp không còn được hỗ trợ. Vui lòng gỡ cài đặt plugin này và nâng cấp lên một trình duyệt hiện đại.</translation> <translation id="2572494885440352020">Trình trợ giúp của Chromium</translation> +<translation id="2587578672395088481">Chromium OS cần được khởi động lại để áp dụng bản cập nhật.</translation> <translation id="2595977381794111014">Hãy sử dụng lối tắt <ph name="APPS_ICON_IMAGE" /> trong thanh dấu trang Chromium để tiếp tục truy cập các ứng dụng của bạn.</translation> <translation id="2605472041568654097">Giúp cải thiện Chromium bằng cách báo cáo cài đặt hiện tại.</translation> <translation id="2636877269779209383">Chromium cần quyền truy cập vào máy ảnh để chia sẻ máy ảnh với trang web này.</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">Mô-đun này được xác định xung đột với Chromium.</translation> <translation id="4423735387467980091">Tùy chỉnh và điều khiển Chromium</translation> <translation id="4458285410772214805">Vui lòng đăng xuất và đăng nhập lại để thay đổi này có hiệu lực.</translation> +<translation id="4469812139324097969">Chromium đã lỗi thời vì ứng dụng này chưa được chạy lại trong một thời gian. Đã có bản cập nhật và bản cập nhật này sẽ được áp dụng ngay khi bạn chạy lại.</translation> <translation id="4549794359424059447">Các phiên bản Chromium trong tương lai sẽ không hỗ trợ Windows XP hoặc Windows Vista nữa.</translation> <translation id="4567424176335768812">Bạn đã đăng nhập với tên <ph name="USER_EMAIL_ADDRESS" />. Bây giờ, bạn có thể truy cập dấu trang, lịch sử và các cài đặt khác trên tất cả những thiết bị đã đăng nhập của bạn.</translation> <translation id="457845228957001925">Thông tin quan trọng liên quan đến dữ liệu Chromium của bạn</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb index 2dc827f..2a498666 100644 --- a/chrome/app/resources/chromium_strings_zh-CN.xtb +++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
@@ -27,7 +27,7 @@ <translation id="1779356040007214683">为了提高 Chromium 的安全性,系统停用了一些未列在 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />中、可能是在您不知情的情况下添加的扩展程序。</translation> <translation id="1808667845054772817">重新安装Chromium</translation> <translation id="1816404578968201294">Chromium 需要具有位置信息访问权限,才能批准此网站的分享请求。</translation> -<translation id="1869480248812203386">您可以选择自动向Google报告可能出现的安全事件详情,以帮助我们提高Chromium的安全性和易用性。</translation> +<translation id="1869480248812203386">您可以选择自动向 Google 报告可能出现的安全事件详情,以帮助我们提高 Chromium 的安全性和易用性。</translation> <translation id="1881322772814446296">您目前登录的帐户是一个托管帐户,该帐户的管理员将能够控制您的 Chromium 个人资料。您的 Chromium 数据(例如您的应用、书签、历史记录、密码和其他设置)将永远与 <ph name="USER_NAME" /> 相关联。您可以通过 Google 帐户信息中心删除这些数据,但无法将这些数据与其他帐户相关联。您可以选择创建新的个人资料来单独存储您现有的 Chromium 数据。<ph name="LEARN_MORE" /></translation> <translation id="1929939181775079593">Chromium 未响应。要立即重新启动吗?</translation> <translation id="1967743265616885482">已发现一个同名的模块与 Chromium 存在冲突。</translation> @@ -50,6 +50,7 @@ <translation id="2535480412977113886">您的帐户登录详细信息已过期,Chromium操作系统无法同步您的数据。</translation> <translation id="2558641060352364164">此网站使用的 Chromium 内嵌框架插件即将不受支持。请卸载该插件,然后升级到新型浏览器。</translation> <translation id="2572494885440352020">Chromium 帮助程序</translation> +<translation id="2587578672395088481">需要重新启动 Chromium 操作系统以应用更新。</translation> <translation id="2595977381794111014">请使用 Chromium 书签栏中的 <ph name="APPS_ICON_IMAGE" /> 快捷方式继续访问您的应用。</translation> <translation id="2605472041568654097">报告当前设置,帮助我们改进 Chromium。</translation> <translation id="2636877269779209383">Chromium 需要具有摄像头使用权限,才能批准此网站的分享请求。</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">已知此模块与 Chromium 存在冲突。</translation> <translation id="4423735387467980091">自定义及控制 Chromium</translation> <translation id="4458285410772214805">请先退出,然后重新登录,以便此更改生效。</translation> +<translation id="4469812139324097969">Chromium 已有一段时间未重新启动,因此现在已不是最新版本。目前有可用更新,系统会在您重新启动 Chromium 后应用这些更新。</translation> <translation id="4549794359424059447">Chromium 的后续版本将不再支持 Windows XP 或 Windows Vista。</translation> <translation id="4567424176335768812">您已使用 <ph name="USER_EMAIL_ADDRESS" /> 的身份登录。现在您可在已登录的所有设备上访问您的书签、历史记录和其他设置。</translation> <translation id="457845228957001925">与您的 Chromium 数据相关的重要信息</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb index 43a0cfb..4ba8439 100644 --- a/chrome/app/resources/chromium_strings_zh-TW.xtb +++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -50,6 +50,7 @@ <translation id="2535480412977113886">您的帳戶登入詳細資料尚未更新,因此 Chromium 作業系統無法同步處理您的資料。</translation> <translation id="2558641060352364164">我們即將停止支援這個網站使用的 Chromium 內嵌框架外掛程式。請解除安裝該外掛程式,並升級至新型瀏覽器。</translation> <translation id="2572494885440352020">Chromium Helper</translation> +<translation id="2587578672395088481">Chromium 作業系統必須重新啟動,才能套用更新。</translation> <translation id="2595977381794111014">您可以繼續使用 Chromium 書籤列中的 <ph name="APPS_ICON_IMAGE" /> 捷徑存取各項應用程式。</translation> <translation id="2605472041568654097">只要回報目前的設定,就能助我們一臂之力,讓 Chromium 更臻完美。</translation> <translation id="2636877269779209383">Chromium 需要攝影機存取權,才能與這個網站分享。</translation> @@ -113,6 +114,7 @@ <translation id="4330585738697551178">已知這個模組與 Chromium 衝突。</translation> <translation id="4423735387467980091">自訂及控制 Chromium</translation> <translation id="4458285410772214805">請先登出,然後重新登入,這項變更才會生效。</translation> +<translation id="4469812139324097969">Chromium 已經一段時間未重新啟動,因此現已版本過舊。重新啟動後,即會套用可用的更新。</translation> <translation id="4549794359424059447">日後發佈的 Chromium 版本將不再支援 Windows XP 或 Windows Vista。</translation> <translation id="4567424176335768812">您已使用 <ph name="USER_EMAIL_ADDRESS" /> 的身分登入,可以在所有登入的裝置上使用您的書籤、紀錄和其他設定。</translation> <translation id="457845228957001925">Chromium 資料的相關重要資訊</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index e3ab8c0f..b6aa6a0f 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">ይህ ፋይል በደህንነት ምክንያቶች ሊደረስበት አልተቻለም።</translation> <translation id="1675023460278456180">የቁሳዊ ድቅል</translation> <translation id="167832068858235403">ድምጽ ቀንስ</translation> -<translation id="1678331212993975953">የጣቢያ ዝርዝሮች</translation> <translation id="1679068421605151609">የአዘጋጅ መሳሪያዎች</translation> <translation id="1681120471812444678">አታሚዎችን ለማከል ያዋቅሩ…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" />ን አስመዝግብ</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">&ሲጠናቀቅ ክፈት</translation> <translation id="2372036074421194686">Chrome የማይፈለግ ፕሮግራም (<ph name="UWS_NAME" />) በእርስዎ ኮምፒውተር ላይ ተጭኖ አግኝቷል። የChrome ማጽጃ መሣሪያን በማስሄድ ሊያስወግዱት ይችሉ ይሆናል።</translation> <translation id="2375701438512326360">የሚዳሰስ ሰሌዳ ድጋፍ ሁልጊዜ እንዲነቃ ወይም እንዲሰናከል፣ ወይም በሚነሳበት ጊዜ የሚዳሰስ ሰሌዳ ሲገኝ እንዲነቃ ያስገድዱ (ራስ-ሰር፣ ነባሪ)።</translation> -<translation id="2377619091472055321">የተቀየሩ የ<ph name="IDS_SHORT_PRODUCT_NAME" /> ቅንብሮችን ዳግም ያስጀምሩ</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> ፋይሎች ተመርጠዋል</translation> <translation id="2378982052244864789">የቅጥያውን ማውጫ ይምረጡ።</translation> <translation id="2379281330731083556">የስርዓት መገናኛ ተጠቅመው ያትሙ... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">የኮምፒውተርዎን ስርዓተ ክወና ማስመለስ ያስፈለገዎት እንደሆነ የዳግም ማግኛ SD ካርድ ወይም የUSB ማህደረ ትውስታ ያስፈልገዎታል።</translation> <translation id="305932878998873762">የኤች ቲ ቲ ፒ ቀላል መሸጎጫ አዲስ መሸጎጫ ነው። የዲስክ ቦታ ምደባ በስርዓተ ፋይሉ ነው የሚወሰነው።</translation> <translation id="3062606427884046423">የAndroid MediaStyle ማሳወቂያዎችን ለChrome ማህደረ መረጃ ማሳወቂያዎች ይጠቀሙ።</translation> +<translation id="3063224679438508013">የማስታወሻ-መተግበሪያን በራስ-አስጀምር</translation> <translation id="3063844757726132584">ሁሉንም የእርስዎ መተግበሪያዎች ከዚህ ምቹ አስጀማሪ ሆነው ይድረሱባቸው። ጨዋታዎችን ይጫወቱ፣ በቪዲዮ ይወያዩ፣ ሙዚቃን ያዳምጡ፣ ሰነዶችን ያርትዑ ወይም ተጨማሪ መተግበሪያዎችን ያግኙ።</translation> <translation id="3064388234319122767">በቋንቋ ፊደል መጻፍ (zdravo → здраво)</translation> <translation id="3065041951436100775">የትር ተገድሏል ግብረመልስ።</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock ለይለፍ ቃሎች</translation> <translation id="317583078218509884">ገጹ ዳግም ከተጫነ በኋላ አዲስ የጣቢያ ፍቃዶች ቅንብሮቹ ይተገበራሉ።</translation> <translation id="3177048931975664371">የይለፍ ቃልን ለመደበቅ ጠቅ ያድርጉ</translation> +<translation id="3177909033752230686">የገጽ ቋንቋ፦</translation> <translation id="3180365125572747493">ይህን የእውቅና ማረጋገጫ ፋይል ለማመስጠር እባክዎ የይለፍ ቃል ያስገቡ።</translation> <translation id="3183139917765991655">የመገለጫ አስመጪ</translation> <translation id="3184560914950696195">ወደ $1 ማስቀመጥ አልተቻለም። አርትዖት የተደረጉ ምስሎች በውርዶች አቃፊው ውስጥ ይቀመጣሉ።</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">የወረደው በ<a href="<ph name="URL" />"><ph name="EXTENSION" /></a> ነው</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" />ን አሳይ</translation> <translation id="3613422051106148727">&አዲስ ትር ውስጥ ክፈት</translation> +<translation id="3616113530831147358">ድምጽ</translation> <translation id="3616741288025931835">&የአሰሳ ውሂብ አጽዳ…</translation> <translation id="3618849550573277856">«<ph name="LOOKUP_STRING" />»ን ፈልግ</translation> <translation id="3620292326130836921">ሁሉም በምትኬ ተቀምጧል!</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&ማጉሊያ</translation> <translation id="3995964755286119116">የAdobe Flash Player ካሜራ ቅንብሮች የተለዩ ናቸው።</translation> <translation id="39964277676607559">ለይዘት ስክሪፕት ጃቫስክሪፕት «<ph name="RELATIVE_PATH" />»ን መጫን አልተቻለም።</translation> -<translation id="3996912167543967198">ዳግም በማስጀመር ላይ...</translation> <translation id="3997015411467176489">የሙከራ ሸራ ባህሪያት</translation> <translation id="4002066346123236978">ርዕስ</translation> <translation id="40027638859996362">የቃል መውሰድ</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">የግፋ መልዕክቶች</translation> <translation id="4146026355784316281">ሁልጊዜ ከሥርዓት ተመልካች ጋር ክፈት</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> የእርስዎ Chrome OS መሣሪያ ቅናሽ ለማግኘት ብቁ ከሆነ ማረጋገጥ ይፈልጋል። <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">ማሳያ</translation> <translation id="4151403195736952345">ሁለገብ ነባሪን ተጠቀም (አግኝ)</translation> <translation id="4152177296285305182">የይለፈ ሐረግዎ ያለው ሰው ብቻ ነው የተመሰጠረውን ውሂብዎን ማግኘት የሚችለው። የይለፍ ሐረጉ ወደ Google አይላክም ወይም በእሱም አይከማችም። የይለፍ ሐረግዎን ከረሱት ማመሳሰልን ዳግም ማስጀመር አለብዎት።</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 ትር}one{# ትሮች}other{# ትሮች}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">ቅጽበታዊ ገጽ እይታ</translation> <translation id="4250680216510889253">አይ</translation> <translation id="4253168017788158739">ማስታወሻ</translation> +<translation id="4254813446494774748">የትርጉም ቋንቋ፦</translation> <translation id="425573743389990240">የባትሪ ትፋት ፍጥነት በዋት (አሉታዊ እሴት ማለት ባትሪ እየሞላ ነው)</translation> <translation id="4256316378292851214">ቪዲዮ አስ&ቀምጥ እንደ…</translation> <translation id="4258348331913189841">ስርዓተ ፋይሎች</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">ውይ፣ ማመሳሰል መስራት አቁሟል።</translation> <translation id="4366509400410520531">በእርስዎ የተፈቀደ</translation> <translation id="4367782753568896354">እነዚህን መጫን አልቻልንም፦</translation> +<translation id="436904870295243580">ተጨማሪ የማስታወሻ-መያዣ መተግበሪያዎችን ያግኙ</translation> <translation id="4370975561335139969">ያስገቧቸው ኢሜይል እና የይለፍ ቃል አይዛመዱም።</translation> <translation id="437184764829821926">የላቁ የቅርጸ-ቁምፊ ቅንብሮች</translation> <translation id="4372884569765913867">1x1</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">ይህ <ph name="DEVICE_TYPE" /> በርቀት መሣሪያን የማግኘት፣ የማጽዳት እና የመቆለፍ ችሎታ እንዳይኖረው ከGoogle ምዝገባ ሊያስወጡት ነው። ይህ ዳግም ማስጀመርን ይጠይቃል። መቀጠል ይፈልጋሉ?</translation> <translation id="5324780743567488672">የእርስዎን መገኛ አካባቢ በመጠቀም በራስ-ሰር የጊዜ ቀጠናን ያዘጋጃል</translation> <translation id="5325120507747984426">ወደ አጠቃላይ እይታ ሲገባ ወይም ከእሱ ሲወጣ እና በአጠቃላይ እይታ ክፍለ-ጊዜዎች መካከል ሲቀያይሩ የመስኮቶች መንቀሳቀስ ለመቀነስ የሚሞክረውን የተረጋጋ የመስኮት ድርድር በአጠቃላይ እይታ ሁነታ ውስጥ ይጠቀማል።</translation> +<translation id="5326182685622510062">ለ2ል ሸራው በርካታ የግራፊክስ ምስል ስራ ቧንቧ አተገባበሮች አሉ። እነዚህ የተለያዩ አተገባበሮች የተለያዩ የአፈጻጸም ጠባዮች አላቸው። ይህን ዕልባት ማብራት አፈጻጸምን ለመጨመር ሲባል የሸራ 2ል ዓውዶች በስራ ላይ እያለ ሸራው ጥቅም ላይ በሚውልበት መንገድ መሠረት በእነዚህ አተገባበሮች መካከል እንዲቀያየር ያስችለዋል። ለምሳሌ፣ ጂፒዩን ከሚጠቀም አተገባበር ወደ የማይጠቀመው መቀየር።</translation> <translation id="5327248766486351172">ስም</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&ሠርዝ</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">ክትትል ለሚደረግለት ይህ ተጠቃሚ አንድ አምሳያ ይምረጡ።</translation> <translation id="5488468185303821006">በማንነትን የማያሳውቅ ውስጥ ይፍቀዱ</translation> <translation id="5489390182170331803">የሰነድ ደረጃ ክስተት አዳማጮች ተቀማጭ ነባሪ</translation> -<translation id="5489789060051091748">ለመናገር-ይምረጡ፦ ፍለጋን ተጭነው ይያዙ እና ማንኛውም ነገር ለመናገር ጠቅ ያድርጉ ወይም ይጎትቱ</translation> <translation id="549294555051714732">ለራስ-ሙላ ጥቆማዎች ንዑስ ሕብረ ቁምፊ እየተዛመደ ነው</translation> <translation id="5493996328530898436">አዲስ የኦዲዮ መስሪያ መቀላቀያ ስትራቴጂ</translation> <translation id="5494362494988149300">&ሲጠናቀቅ ክፈት</translation> @@ -3700,9 +3703,6 @@ <translation id="5991049340509704927">አጉላ</translation> <translation id="5991774521050363748">ለድር ማሳወቂያዎች ብጁ አቀማመጦችን ያንቁ። በመደበኝነት የማይቻሉ ረቂቅ የአቀማመጥ ማሻሻያዎች ይኖራቸዋል።</translation> <translation id="5993332328670040093">የውሂብ አጠቃቀምዎ ከአሁን በኋላ አይለካም።</translation> -<translation id="5996258716334177896">መገለጫዎ በትክክል ሊከፈት አልቻለም። - -አንዳንድ ባህሪያት ላይኖሩ ይችላሉ። እባክዎ መገለጫው መኖሩንና ይዘቶቹን ለማንበብና ለመፃፍ ፍቃድ እንዳለዎት ያረጋግጡ።</translation> <translation id="6001799583597751002">ፒኖች አይዛመዱም፦</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> እራሱን እያዘመነ ላይቀጥል ይችላል።</translation> <translation id="6003294706906016758">ለሚስተናገዱ መተግበሪያዎች የድር መተግበሪያ ቅጥ ክፈፍን ያነቃል</translation> @@ -4152,7 +4152,6 @@ <translation id="6637362044401670482">ምናባዊ የቁልፍ ሰሌዳ የላይ መሸብለያ ድጋፍ አንቃ።</translation> <translation id="6639554308659482635">ኤስኪውላይት ማህደረ ትውስታ</translation> <translation id="6643016212128521049">አጽዳ</translation> -<translation id="6644756108386233011">የተቀየሩ የ<ph name="IDS_SHORT_PRODUCT_NAME" /> ቅንብሮች ዳግም ይጀምሩ?</translation> <translation id="6647228709620733774">የNetscape ዕውቅና ማረጋገጫ ስልጣን መሻሪያ ዩአርኤል</translation> <translation id="6647838571840953560">በአሁኑ ጊዜ በ<ph name="CHANNEL_NAME" /> ላይ</translation> <translation id="6649018507441623493">አንዴ ይጠብቁ...</translation> @@ -4260,7 +4259,6 @@ <translation id="6810613314571580006">የተከማቹ ምስክርነቶችን በመጠቀም በራስ-ሰር ወደ ድር ጣቢያዎች ይግቡ። ባህሪው ሲሰናከል ወደ አንድ ድር ጣቢያ ከመግባትዎ በፊት ሁልጊዜ ማረጋገጫ እንዲሰጡ ይጠየቃሉ።</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> እንደ ስር ሊሄድ አይችልም።</translation> <translation id="6812841287760418429">ለውጦችን አስቀምጥ</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> የእርስዎ አሳሽ ቅንብሮች እርስዎ ሳያውቁ ተቀይረው ሊሆኑ እንደሚችሉ ተስተውሏል። ወደ የመጀመሪያ ነባሪዎቻቸው ዳግም ሊያስጀምሯቸው ይፈልጋሉ?</translation> <translation id="6815551780062710681">አርትዕ</translation> <translation id="6817358880000653228">የዚህ ጣቢያ የተቀመጡ የይለፍ ቃሎች፦</translation> <translation id="6820008762872335722">ለመጠየቅ ዳግም አስጀምር</translation> @@ -4378,6 +4376,7 @@ (ቀዳሚው የይለፍ ቃል ያስፈልገዋል)</translation> <translation id="6981982820502123353">ተደራሽነት</translation> <translation id="6981992744085917617">ወደ መለያዎ ተመልሰው ለመግባት ለመጠቀም የሚፈልጉትን ዘዴ ይምረጡ፦</translation> +<translation id="698231206551913481">አንዴ ይህ ተጠቃሚ ከተወገደ በኋላ ከዚህ ተጠቃሚ ጋር የተጎዳኙ ሁሉም ፋይሎች እና አካባቢያዊ ውሂብ በቋሚነት ይሰረዛሉ።</translation> <translation id="6982896539684144327">ከ<ph name="VENDOR_NAME" /> ላይ ማተሚያ ተፈልጎ ተገኝቷል</translation> <translation id="6983783921975806247">የተመዘገበ OID</translation> <translation id="6983991971286645866">ሁሉም አርትዖቶች ወደ $1 ይቀመጣሉ።</translation> @@ -4464,6 +4463,7 @@ <translation id="7073555242265688099">ሌሎች የChrome መሣሪያዎች ካሉዎት በራስ-ሰር ይመሳሰላሉ፣ ስለዚህ ስልክዎ እነሱንም ያስከፍታል።</translation> <translation id="707392107419594760">የቁልፍ ሰሌዳዎን ይምረጡ፦</translation> <translation id="7075513071073410194">PKCS #1 MD5 ከRSA ምስጠራ ጋር</translation> +<translation id="7075625805486468288">የኤችቲቲፒኤስ/ኤስኤስኤል ዕውቅና ማረጋገጫዎችን እና ቅንብሮችን ያቀናብሩ</translation> <translation id="7076293881109082629">በመግባት ላይ</translation> <translation id="7077829361966535409">የመግቢያ ገጹ የአሁኑ የተኪ ቅንብሮች ተጠቅሞ መጫን አልቻለም። እባክዎ <ph name="GAIA_RELOAD_LINK_START" />እንደገና ለመግባት ይሞክሩ<ph name="GAIA_RELOAD_LINK_END" /> ወይም ደግሞ የተለየ <ph name="PROXY_SETTINGS_LINK_START" />የተኪ ቅንብሮች<ph name="PROXY_SETTINGS_LINK_END" />ን ይጠቀሙ።</translation> <translation id="7077872827894353012">ችላ የተባሉ የፕሮቶኮል ተቆጣጣሪዎች</translation> @@ -4511,7 +4511,6 @@ <translation id="7141105143012495934">የእርስዎ መለያ ዝርዝሮች ተመልሰው ሊገኙ ሳላልቻሉ መግባት አልተሳካም። እባክዎ የእርስዎን አስተዳዳሪ ያነጋግሩ ወይም እንደገና ይሞክሩ።</translation> <translation id="7143207342074048698">በመያያዝ ላይ</translation> <translation id="7144878232160441200">እንደገና ሞክር</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> ተሰናክሏል። እሱን ዳግም ለማንቃት እባክዎ ወደ <ph name="CHROME_PLUGINS_LINK" /> ይሂዱ።</translation> <translation id="715118844758971915">አይነታቸው የሚታወቁ አታሚዎች</translation> <translation id="7154130902455071009">የመጀመሪያ ገጽዎን ወደሚከተለው ይቀይሩ፦ <ph name="START_PAGE" /></translation> <translation id="715487527529576698">የመጀመሪያ ቻይንኛ ሁነታ ቀላል ቻይንኛ ነው</translation> @@ -4790,6 +4789,7 @@ <translation id="7540972813190816353">ዝማኔዎችን በመፈለግ ላይ ሳለ ስህተት ተከስቷል፦ <ph name="ERROR" /></translation> <translation id="7541121857749629630">የማይካተቱ ምስሎች</translation> <translation id="7543104066686362383">በዚህ የ<ph name="IDS_SHORT_PRODUCT_NAME" /> መሣሪያ ላይ የማረሚያ ባህሪያትን ያንቁ</translation> +<translation id="7543393759143837504">የሚፈልጉትን ነገር ማግኘት ካልቻሉ ወደ <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome እገዛ<ph name="END_LINK_CHROMIUM" /> ይሂዱ።</translation> <translation id="7544853251252956727">በውዝ</translation> <translation id="7545288882499673859">ለላቀ የግፊት አያያዝ የማህደረ ትውስታ ማስወገድ ስትራቴጂ</translation> <translation id="7545415673537747415">Google ፍለጋን፣ ማስታወቂያዎችን እና ሌሎች የGoogle አገልግሎቶችን ግላዊነት ለማላበስ የአሰሳ ታሪክዎን እንዴት እንደሚጠቀም ከ<ph name="BEGIN_LINK" />የGoogle እንቅስቃሴ መቆጣጠሪያዎች<ph name="END_LINK" /> ሆነው ላይ ይቆጣጠሩ።</translation> @@ -5027,7 +5027,6 @@ <translation id="7879478708475862060">የግቤት ሁነታን ተከተል</translation> <translation id="7880836220014399562">«<ph name="BUNDLE_NAME" />» እነዚህን መተግበሪያዎች እና ቅጥያዎች ያክላል፦</translation> <translation id="7881969471599061635">የግርጌ ጽሑፎችን አሰናክል</translation> -<translation id="7884988936047469945">የሙከራ የተዳራሽነት ባህሪያት</translation> <translation id="7885253890047913815">የቅርብ ጊዜ መድረሻዎች</translation> <translation id="7887192723714330082">ማያ ገጹ በርቶ እና ተከፍቶ ሳለ ለ«Ok Google» ምላሽ መስጠት</translation> <translation id="7887334752153342268">አባዛ</translation> @@ -5095,6 +5094,7 @@ <translation id="7974067550340408553">Smart Lock የእርስዎን <ph name="DEVICE_TYPE" /> በከፈተ ቁጥር በስልክዎ ላይ ማሳወቂያ ያግኙ።</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" />ን መጠቀም እንደገና ይሞክሩ</translation> <translation id="7974936243149753750">ትርፍ ቅኝት</translation> +<translation id="7976960358280528247">የመስኮት ዑደት በይነገጽን ያንቁ (ምስላዊ ግብረመልስ ለAlt+Tab)።</translation> <translation id="7977551819349545646">Chromeboxን በማዘመን ላይ...</translation> <translation id="7978412674231730200">የግል ቁልፍ</translation> <translation id="7979036127916589816">የማመሳሰል ስህተት</translation> @@ -5127,6 +5127,7 @@ ቁልፍ ፋይልዎ የቅጥያዎን አዲስ ስሪት ለመፍጠር ስለሚያስፈልግዎ ደህንነቱ በተጠበቀ ቦታ ያስቀምጡ። ' nil</translation> <translation id="799923393800005025">ማየት ይችላሉ</translation> +<translation id="8000066093800657092">ምንም አውታረ መረብ የለም</translation> <translation id="8004582292198964060">አሳሽ</translation> <translation id="8007030362289124303">ባትሪ አንሷል</translation> <translation id="8008356846765065031">የበይነመረብ ግንኙነት ተቋርጧል። እባክዎ የበይነመረብዎን ግንኙነት ይፈትሹ።</translation> @@ -5201,6 +5202,7 @@ <translation id="8116190140324504026">ተጨማሪ መረጃ...</translation> <translation id="8116483400482790018">የተበጀ የፊደል አጻጻፍ መዝገበ-ቃላት</translation> <translation id="8116972784401310538">&ዕልባት አቀናባሪ</translation> +<translation id="8117838550640702864">የማስታወሻ ቅንብሮች</translation> <translation id="8117957376775388318">የDayi ግቤት ስልት</translation> <translation id="8118860139461251237">ማውረድዎችዎን ያስተዳድሩ</translation> <translation id="8119572489781388874">ቅንብሮችን ቀይር</translation> @@ -5481,7 +5483,6 @@ <translation id="8472623782143987204">የሃርድዌር ደጀን ያለው</translation> <translation id="8475313423285172237">በኮምፒውተርዎ ላይ ያለ ሌላ ፕሮግራም Chrome የሚሰራበት መንገድ ሊቀይር የሚችል አንድ ቅጥያ አክሏል።</translation> <translation id="8475647382427415476">Google Drive አሁን «<ph name="FILENAME" />» ማስመር አልቻለም። Google Drive ቆይቶ እንደገና ይሞክራል።</translation> -<translation id="8476195663057048998">አጽዳ እና ዳግም አስጀምር</translation> <translation id="8477241577829954800">ተተክቷል</translation> <translation id="8477384620836102176">&አጠቃላይ</translation> <translation id="8480417584335382321">ገጽ አጉላ፦</translation> @@ -5711,7 +5712,6 @@ <translation id="8785135611469711856">ተሰኪ ምላሽ አይሰጥም</translation> <translation id="8787254343425541995">ለተጋሩ አውታረ መረቦች ተኪዎችን ይፍቀዱ</translation> <translation id="878763818693997570">ይህ ስም በጣም ረጅም ነው</translation> -<translation id="8787865569533773240">የተቀየሩ የ<ph name="IDS_SHORT_PRODUCT_NAME" /> ቅንብሮችን ዳግም አስጀምር</translation> <translation id="8789375980715484686">ሌሎች ተጠቃሚዎችን ያቀናብሩ</translation> <translation id="8791534160414513928">ከአሰሳ ትራፊክዎ ጋር የ«አትከታተል» ጥያቄ ይላኩ</translation> <translation id="8795668016723474529">የብድር ካርድ አክል</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 2556e9da..162cf4c 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -522,7 +522,6 @@ <translation id="1673103856845176271">تعذر الدخول إلى الملف لأسباب تتعلق بالأمان.</translation> <translation id="1675023460278456180">مختلط ومتعدد الأبعاد</translation> <translation id="167832068858235403">خفض الصوت</translation> -<translation id="1678331212993975953">تفاصيل الموقع</translation> <translation id="1679068421605151609">أدوات مطوّري البرامج</translation> <translation id="1681120471812444678">الإعداد لإضافة طابعات...</translation> <translation id="1682324559341535203">تسجيل <ph name="DEVICE_TYPE" /></translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">فتح الملفّ عند &انتهاء التحميل</translation> <translation id="2372036074421194686">عثر Chrome على برنامج غير مرغوب فيه (<ph name="UWS_NAME" />) تم تثبيته على الكمبيوتر. وقد تتمكن من إزالته من خلال تشغيل أداة إزالة البرامج من Chrome.</translation> <translation id="2375701438512326360">فرض دعم شاشة اللمس ليتم تمكينها أو تعطيلها بشكل دائم أو ليتم تمكينها عند اكتشاف شاشة لمس عند بدء التشغيل (الإعداد الافتراضي هو، تلقائي).</translation> -<translation id="2377619091472055321">إعادة تعيين إعدادات <ph name="IDS_SHORT_PRODUCT_NAME" /> التي تمّ تغييرها</translation> <translation id="2378075407703503998">تم تحديد <ph name="SELCTED_FILE_COUNT" /> من الملفات</translation> <translation id="2378982052244864789">تحديد دليل الإضافة.</translation> <translation id="2379281330731083556">الطباعة باستخدام مربع حوار النظام... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">إذا احتجت يومًا لاسترداد نظام تشغيل الكمبيوتر، فسيتطلب ذلك توفر إما بطاقة SD أو رقاقة ذاكرة USB للاستعادة.</translation> <translation id="305932878998873762">ذاكرة التخزين المؤقت البسيطة لبروتوكول HTTP هي ذاكرة تخزين مؤقتة جديدة، حيث تعتمد على نظام الملفات لتوزيع مساحة القرص.</translation> <translation id="3062606427884046423">استخدام إشعارات نمط الوسائط لنظام التشغيل Android لإشعارات الوسائط لمتصفح Chrome.</translation> +<translation id="3063224679438508013">التشغيل التلقائي لتطبيق الملاحظات</translation> <translation id="3063844757726132584">يمكنك الدخول إلى جميع تطبيقاتك من هذا المشغِّل المفيد. كما يمكنك تشغيل الألعاب ودردشة الفيديو والاستماع إلى الموسيقى وتعديل المستندات والحصول على مزيد من التطبيقات.</translation> <translation id="3064388234319122767">التحويل الصوتي (ذدرافو ← здраво)</translation> <translation id="3065041951436100775">التعليقات المرتبطة بعلامة التبويب المعطلة.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock لكلمات المرور</translation> <translation id="317583078218509884">ستسري إعدادات أذونات الموقع بعد إعادة تحميل الصفحة.</translation> <translation id="3177048931975664371">انقر لإخفاء كلمة المرور</translation> +<translation id="3177909033752230686">لغة الصفحة:</translation> <translation id="3180365125572747493">الرجاء إدخال كلمة مرور لتشفير ملف الشهادة هذا.</translation> <translation id="3183139917765991655">مستورد الملف الشخصي</translation> <translation id="3184560914950696195">تعذر الحفظ في $1. سيتم حفظ الصورة التي تم تعديلها في مجلد التنزيلات.</translation> @@ -1995,6 +1995,7 @@ <translation id="3612673635130633812">تم تحميلها من قبل <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">عرض <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&فتح في علامة تبويب جديدة</translation> +<translation id="3616113530831147358">الصوت</translation> <translation id="3616741288025931835">&محو بيانات التصفح...</translation> <translation id="3618849550573277856">البحث عن "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">تم نسخ جميع العناصر احتياطيًا</translation> @@ -2288,7 +2289,6 @@ <translation id="3994878504415702912">&تكبير/تصغير</translation> <translation id="3995964755286119116">تستخدم كاميرا Adobe Flash Player إعدادات مختلفة.</translation> <translation id="39964277676607559">تعذر تحميل جافا سكريبت '<ph name="RELATIVE_PATH" />' للنص البرمجي للمحتوى.</translation> -<translation id="3996912167543967198">جارٍ إعادة التعيين...</translation> <translation id="3997015411467176489">ميزات اللوحة التجريبية</translation> <translation id="4002066346123236978">العنوان</translation> <translation id="40027638859996362">نقل كلمة</translation> @@ -2321,7 +2321,7 @@ <translation id="406070391919917862">تطبيقات الخلفية</translation> <translation id="4062251648694601778">نتمنى لك الاستمتاع بجهاز <ph name="SHORT_PRODUCT_NAME" />. وإذا كانت لديك أسئلة، فيمكنك دائمًا الحصول على المساعدة من خلال النقر على الرمز "؟" في شريط الحالة.</translation> <translation id="4065876735068446555">قد تتطلب الشبكة التي تستخدمها <ph name="NETWORK_ID" /> زيارة صفحة تسجيل الدخول التابعة لها.</translation> -<translation id="4068506536726151626">تحتوي هذه الصفحة على عناصر من المواقع التالية تتتبع موقعك:</translation> +<translation id="4068506536726151626">تحتوي هذه الصفحة على عناصر من المواقع التالية والتي تتتبع موقعك:</translation> <translation id="4070370845051020638">أسلوب الإدخال باللغة الكانتونية</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: خطأ في تسجيل الدخول</translation> <translation id="4072248638558688893">لوحة المفاتيح التاميلية (صوتية)</translation> @@ -2385,6 +2385,7 @@ <translation id="4140559601186535628">رسائل الدفع</translation> <translation id="4146026355784316281">افتح دائمًا باستخدام عرض النظام</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> ترغب في التحقق إذا كان جهاز Chrome OS مؤهلاً للحصول على عرض. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">عرض</translation> <translation id="4151403195736952345">استخدام الإعدادات العمومية الافتراضية (كشف)</translation> <translation id="4152177296285305182">لا يمكن لأحد قراءة بياناتك المشفّرة سوى من يعرف عبارة المرور؛ حيث إنه لا يتم إرسال عبارة المرور إلى Google ولا يتم تخزينها لديها. إذا نسيت عبارة المرور، فسيلزمك إعادة تعيين المزامنة.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{علامة تبويب واحدة}zero{# من علامات التبويب}two{علامتا تبويب (#)}few{# علامات تبويب}many{# علامة تبويب}other{# من علامات التبويب}}</translation> @@ -2449,6 +2450,7 @@ <translation id="4250229828105606438">لقطة شاشة</translation> <translation id="4250680216510889253">لا</translation> <translation id="4253168017788158739">ملاحظة</translation> +<translation id="4254813446494774748">لغة الترجمة:</translation> <translation id="425573743389990240">بطارية تفريغ شحن البطارية بوحدة الوات (القيمة السالب تعني أنه جارٍ شحن البطارية)</translation> <translation id="4256316378292851214">حف&ظ مقطع الفيديو باسم...</translation> <translation id="4258348331913189841">أنظمة الملفات</translation> @@ -2526,6 +2528,7 @@ <translation id="4365673000813822030">عذرًا، توقفت المزامنة.</translation> <translation id="4366509400410520531">تم السماح بها بواسطتك</translation> <translation id="4367782753568896354">لم نتمكن من التثبيت:</translation> +<translation id="436904870295243580">العثور على المزيد من تطبيقات تدوين الملاحظات</translation> <translation id="4370975561335139969">البريد الإلكتروني وكلمة المرور اللذان أدخلتهما غير متطابقين</translation> <translation id="437184764829821926">الإعدادات المتقدمة للخط</translation> <translation id="4372884569765913867">1x1</translation> @@ -3205,6 +3208,7 @@ <translation id="5324674707192845912">أنت على وشك إلغاء تسجيل <ph name="DEVICE_TYPE" /> هذا مع Google لتعطيل إمكانية تحديد موقع الجهاز عن بُعد ومسح بياناته وقفله. سيتطلب هذا إعادة التشغيل. هل ترغب في الاستمرار؟</translation> <translation id="5324780743567488672">تعيين المنطقة الزمنية تلقائيا باستخدام موقعك</translation> <translation id="5325120507747984426">يستخدم ترتيب نوافذ ثابتًا في وضع "نظرة عامة" الذي يحاول تقليل حركة النوافذ عند الدخول / الخروج من وضع "نظرة عامة" وبين جلسات "نظرة عامة".</translation> +<translation id="5326182685622510062">هناك عدة تطبيقات لمسار عرض الرسومات في اللوحات ثنائية الأبعاد. وتحتوي هذه التطبيقات المختلفة على خصائص أداء مختلفة. ويسمح تشغيل هذه العلامة لسياقات اللوحات ثنائية الأبعاد بالتبديل بين هذه التطبيقات بشكلٍ فوري بناءً على طريقة استخدام اللوحة، وذلك لزيادة الأداء. على سبيل المثال، الانتقال من أحد التطبيقات التي تستخدم وحدة معالجة الرسومات إلى تطبيق لا يستخدمه.</translation> <translation id="5327248766486351172">الاسم</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&حذف</translation> @@ -3337,7 +3341,6 @@ <translation id="54870580363317966">اختيار صورة شخصية لهذا المستخدم الذي يخضع للإشراف.</translation> <translation id="5488468185303821006">السماح بالتشغيل في وضع التصفح المتخفي</translation> <translation id="5489390182170331803">الوضع الافتراضي السلبي لأدوات معالجة الأحداث على مستوى المستند</translation> -<translation id="5489789060051091748">حدد للتحدث: اضغط باستمرار على البحث وانقر أو اسحب لتحدث أي شيء</translation> <translation id="549294555051714732">مطابقة سلسلة فرعية لاقتراحات الملء التلقائي</translation> <translation id="5493996328530898436">إستراتيجية جديدة لمزيج تشغيل الصوت</translation> <translation id="5494362494988149300">فتح عند &اكتمال التنزيل</translation> @@ -3694,7 +3697,6 @@ <translation id="5991049340509704927">تكبير</translation> <translation id="5991774521050363748">تمكين تنسيقات مخصصة لإشعارات الويب. ستتضمن تحسينات تنسيقات دقيقة تعتبر غير ممكنة بخلاف ذلك.</translation> <translation id="5993332328670040093">لن يتم قياس استخدام البيانات بعد ذلك.</translation> -<translation id="5996258716334177896">تعذر فتح ملفك الشخصي على نحو صحيح. قد تكون بعض الميزات غير متوفرة، الرجاء التحقق من وجود الملف الشخصي وأنه مصرح لك بقراءة محتوياته وكتابتها.</translation> <translation id="6001799583597751002">أرقام التعريف الشخصية غير متطابقة:</translation> <translation id="6003177993629630467">قد يكون <ph name="PRODUCT_NAME" /> غير قادر على تحديث نفسه.</translation> <translation id="6003294706906016758">تُمكن إطار نمط تطبيق الويب للتطبيقات المستضافة</translation> @@ -4145,7 +4147,6 @@ <translation id="6637362044401670482">يمكن تمكين دعم التمرير الزائد للوحة المفاتيح الظاهرية.</translation> <translation id="6639554308659482635">ذاكرة SQLite</translation> <translation id="6643016212128521049">محو</translation> -<translation id="6644756108386233011">هل ترغب في إعادة تعيين إعدادات <ph name="IDS_SHORT_PRODUCT_NAME" /> التي خضعت للتغيير؟</translation> <translation id="6647228709620733774">عنوان URL لإبطال المرجع المصدق لـ Netscape</translation> <translation id="6647838571840953560">حاليًا على قناة <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">لحظة من فضلك...</translation> @@ -4253,7 +4254,6 @@ <translation id="6810613314571580006">لتسجيل الدخول تلقائيًا إلى مواقع الويب باستخدام بيانات الاعتماد المخزّنة. عندما تكون الميزة معطّلة، سيُطلب منك التأكيد في كل مرة قبل تسجيل الدخول إلى أحد مواقع الويب.</translation> <translation id="6812349420832218321">لا يمكن تشغيل <ph name="PRODUCT_NAME" /> كجذر.</translation> <translation id="6812841287760418429">الإبقاء على التغييرات</translation> -<translation id="6815353853907306610">اكتشف <ph name="IDS_SHORT_PRODUCT_NAME" /> أن تغييرًا ما قد طرأ على إعدادات المتصفح بدون علمك. فهل ترغب في إعادة تعيين الإعدادات الافتراضية له؟</translation> <translation id="6815551780062710681">تعديل</translation> <translation id="6817358880000653228">كلمات المرور المحفوظة لهذا الموقع:</translation> <translation id="6820008762872335722">إعادة التعيين للسؤال</translation> @@ -4371,6 +4371,7 @@ (يتطلب كلمة المرور السابقة)</translation> <translation id="6981982820502123353">إمكانية الدخول</translation> <translation id="6981992744085917617">اختيار الطريقة التي ترغب في استخدامها لتسجيل الدخول مرة أخرى إلى حسابك:</translation> +<translation id="698231206551913481">سيتم حذف جميع الملفات والبيانات المحلية المرتبطة بهذا المستخدم نهائيًا بمجرد إزالة هذا المستخدم.</translation> <translation id="6982896539684144327">تم اكتشاف طابعة من <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">معرّف الكائنات (OID) المسجل</translation> <translation id="6983991971286645866">سيتم حفظ جميع التعديلات مقابل 1 دولار.</translation> @@ -4457,6 +4458,7 @@ <translation id="7073555242265688099">إذا كنت تمتلك أجهزة Chrome أخرى، فسيتم مزامنتها تلقائيًا، حتى يلغي هاتفك قفلها أيضًا.</translation> <translation id="707392107419594760">تحديد لوحة المفاتيح:</translation> <translation id="7075513071073410194">PKCS #1 MD5 مع تشفير RSA</translation> +<translation id="7075625805486468288">إدارة إعدادات وشهادات HTTPS/طبقة المقابس الآمنة</translation> <translation id="7076293881109082629">تسجيل الدخول</translation> <translation id="7077829361966535409">أخفق تحميل صفحة تسجيل الدخول باستخدام إعدادات الخادم الوكيل الحالية. الرجاء <ph name="GAIA_RELOAD_LINK_START" />إعادة محاولة تسجيل الدخول<ph name="GAIA_RELOAD_LINK_END" />، أو استخدام <ph name="PROXY_SETTINGS_LINK_START" />إعدادات خادم وكيل<ph name="PROXY_SETTINGS_LINK_END" /> مختلفة.</translation> <translation id="7077872827894353012">معالجات البروتوكول التي تم تجاهلها</translation> @@ -4504,7 +4506,6 @@ <translation id="7141105143012495934">فشل تسجيل الدخول، نظرًا لعدم القدرة على استرداد تفاصيل حسابك، يُرجى الاتصال بالمسؤول أو إعادة المحاولة.</translation> <translation id="7143207342074048698">اتصال</translation> <translation id="7144878232160441200">إعادة المحاولة</translation> -<translation id="7148311641502571842">تم تعطيل <ph name="PLUGIN_NAME" />. لإعادة تمكينه، الرجاء الانتقال إلى <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">الطابعات التقليدية</translation> <translation id="7154130902455071009">تغيير الصفحة الرئيسية إلى: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">الوضع الأولي للغة الصينية هو الصينية المبسطة.</translation> @@ -4783,6 +4784,7 @@ <translation id="7540972813190816353">حدث خطأ أثناء التحقق من التحديثات: <ph name="ERROR" /></translation> <translation id="7541121857749629630">استثناءات الصور</translation> <translation id="7543104066686362383">تمكين ميزات تصحيح الأخطاء على جهاز <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">يمكنك الانتقال إلى <ph name="BEGIN_LINK_CHROMIUM" />مساعدة Google Chrome<ph name="END_LINK_CHROMIUM" /> إذا لم تتمكن من العثور عما تبحث عنه.</translation> <translation id="7544853251252956727">ترتيب عشوائي</translation> <translation id="7545288882499673859">إستراتيجية تجاهل الذاكرة للتعامل مع الضغط المتقدم</translation> <translation id="7545415673537747415">يمكنك التحكم في الطريقة التي تتبعها Google عند استخدام سجل التصفح لتخصيص البحث، والإعلانات، وخدمات Google الأخرى من <ph name="BEGIN_LINK" />عناصر التحكم في النشاط على Google<ph name="END_LINK" />.</translation> @@ -5020,7 +5022,6 @@ <translation id="7879478708475862060">متابعة وضع الإدخال</translation> <translation id="7880836220014399562">يضيف "<ph name="BUNDLE_NAME" />" هذه التطبيقات والإضافات:</translation> <translation id="7881969471599061635">تعطيل الترجمات المصاحبة</translation> -<translation id="7884988936047469945">ميزات إمكانية الوصول التجريبية</translation> <translation id="7885253890047913815">أحدث الوجهات</translation> <translation id="7887192723714330082">الرد على "Ok Google" عندما تكون الشاشة مُشغلة وملغاة القفل</translation> <translation id="7887334752153342268">تكرار</translation> @@ -5088,6 +5089,7 @@ <translation id="7974067550340408553">الحصول على إشعار على هاتفك في كل مرة يلغي فيها Smart Lock قفل جهاز <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">إعادة المحاولة باستخدام <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">الخروج عن إطار الشاشة</translation> +<translation id="7976960358280528247">تمكين واجهة مستخدم دورة النافذة (التعليقات المرئية لـ Alt+Tab).</translation> <translation id="7977551819349545646">جارٍ تحديث جهاز Chromebox...</translation> <translation id="7978412674231730200">مفتاح خاص</translation> <translation id="7979036127916589816">حدث خطأ في المزامنة</translation> @@ -5115,6 +5117,7 @@ احتفظ بملف المفتاح في مكان آمن، حيث ستحتاج إليه لإنشاء إصدارات جديدة من إضافتك.</translation> <translation id="799923393800005025">يمكن العرض</translation> +<translation id="8000066093800657092">لا شبكة</translation> <translation id="8004582292198964060">المتصفّح</translation> <translation id="8007030362289124303">طاقة البطارية منخفضة</translation> <translation id="8008356846765065031">تم قطع الاتصال بالإنترنت. الرجاء التحقق من الاتصال بالإنترنت.</translation> @@ -5189,6 +5192,7 @@ <translation id="8116190140324504026">مزيد من المعلومات...</translation> <translation id="8116483400482790018">قاموس هجائي مخصص</translation> <translation id="8116972784401310538">م&دير الإشارات</translation> +<translation id="8117838550640702864">إعدادات الملاحظات</translation> <translation id="8117957376775388318">أسلوب الإدخال Dayi</translation> <translation id="8118860139461251237">إدارة التنزيلات</translation> <translation id="8119572489781388874">تعديل الإعدادات</translation> @@ -5468,7 +5472,6 @@ <translation id="8472623782143987204">يستند إلى الجهاز</translation> <translation id="8475313423285172237">أضاف برنامج آخر بجهاز الكمبيوتر إضافة قد تؤدي إلى تغيير طريقة عمل Chrome.</translation> <translation id="8475647382427415476">تعذر على Google Drive مزامنة "<ph name="FILENAME" />" في الوقت الحالي. وسيعيد Google Drive المحاولة لاحقًا.</translation> -<translation id="8476195663057048998">المحو وإعادة التعيين</translation> <translation id="8477241577829954800">تم استبدالها</translation> <translation id="8477384620836102176">&عام</translation> <translation id="8480417584335382321">تكبير/تصغير الصفحة:</translation> @@ -5698,7 +5701,6 @@ <translation id="8785135611469711856">المكوّن الإضافي غير مستجيب</translation> <translation id="8787254343425541995">السماح بالخوادم الوكيلة للشبكات المشتركة</translation> <translation id="878763818693997570">هذا الاسم طويل جدًا</translation> -<translation id="8787865569533773240">إعادة تعيين إعدادات <ph name="IDS_SHORT_PRODUCT_NAME" /> التي طرأ عليها تغيير</translation> <translation id="8789375980715484686">إدارة المستخدمين الآخرين</translation> <translation id="8791534160414513928">إرسال طلب "عدم التعقب" مع زيارات التصفح</translation> <translation id="8795668016723474529">إضافة بطاقة ائتمان</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index fe3ccdd..4f741e1 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -518,7 +518,6 @@ <translation id="1673103856845176271">От съображения за сигурност не можа да бъде осъществен достъп до файла.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">сила на звука: намал.</translation> -<translation id="1678331212993975953">Подробности за сайта</translation> <translation id="1679068421605151609">Инструменти за програмисти</translation> <translation id="1681120471812444678">Извършете настройване, за да добавите принтери…</translation> <translation id="1682324559341535203">Записване на <ph name="DEVICE_TYPE" /></translation> @@ -1007,7 +1006,6 @@ <translation id="2371076942591664043">Отваряне &след изтегляне</translation> <translation id="2372036074421194686">Chrome намери нежелана програма (<ph name="UWS_NAME" />), която е инсталирана на компютъра ви. Възможно е да успеете да я премахнете, като стартирате инструмента за почистване на Chrome.</translation> <translation id="2375701438512326360">Задайте за поддръжката за сензорен екран да е винаги принудително активирана или деактивирана или да се включва, когато такъв бъде открит при стартиране (автоматично – по подразбиране).</translation> -<translation id="2377619091472055321">Повторно задаване на променените настройки на <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Избрани са <ph name="SELCTED_FILE_COUNT" /> файла</translation> <translation id="2378982052244864789">Изберете директорията на разширението.</translation> <translation id="2379281330731083556">Печат чрез системния диалогов прозорец... <ph name="SHORTCUT_KEY" /></translation> @@ -1555,6 +1553,7 @@ <translation id="3058212636943679650">Ако се наложи да възстановите операционната система на компютъра си, ще ви е необходима SD карта или USB памет за възстановяване.</translation> <translation id="305932878998873762">Опростената кеш памет за HTTP е нова. За разпределянето на мястото на диска тя разчита на файловата система.</translation> <translation id="3062606427884046423">Използвайте MediaStyle на Android за мултимедийните известия в Chrome.</translation> +<translation id="3063224679438508013">Автоматично стартиране на приложението за водене на бележки</translation> <translation id="3063844757726132584">Осъществявайте достъп до всичките си приложения от този удобен стартов панел. Играйте игри, водете видеоразговори, слушайте музика, редактирайте документи или изтегляйте още приложения.</translation> <translation id="3064388234319122767">Транслитерация (zdravo → здраво)</translation> <translation id="3065041951436100775">Отзиви за затворен раздел.</translation> @@ -1645,6 +1644,7 @@ <translation id="3172213052701798825">Google Smart Lock за пароли</translation> <translation id="317583078218509884">Новите настройки за разрешенията за сайтове ще влязат в сила след презареждането на страницата.</translation> <translation id="3177048931975664371">Кликнете, за да скриете паролата</translation> +<translation id="3177909033752230686">Език на страницата:</translation> <translation id="3180365125572747493">Моля, въведете парола за шифроването на този файл със сертификат.</translation> <translation id="3183139917765991655">Импортиране на потребителски профили</translation> <translation id="3184560914950696195">Запазването в/ъв „$1“ е невъзможно. Редактираните изображения ще бъдат запазени в папката за изтегляния.</translation> @@ -1994,6 +1994,7 @@ <translation id="3612673635130633812">Изтеглено от <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Показване на „<ph name="FOLDER_NAME" />“</translation> <translation id="3613422051106148727">&Отваряне в нов раздел</translation> +<translation id="3616113530831147358">Аудио</translation> <translation id="3616741288025931835">&Изчистване на данните за сърфирането...</translation> <translation id="3618849550573277856">Търсене на „<ph name="LOOKUP_STRING" />“</translation> <translation id="3620292326130836921">На всичко бе създадено резервно копие!</translation> @@ -2290,7 +2291,6 @@ <translation id="3994878504415702912">&Мащаб</translation> <translation id="3995964755286119116">Настройките на камерата за Adobe Flash Player са различни.</translation> <translation id="39964277676607559">Не можа да се зареди javascript „<ph name="RELATIVE_PATH" />“ за скрипта за съдържание.</translation> -<translation id="3996912167543967198">Нулира се...</translation> <translation id="3997015411467176489">Експериментални функции за платното</translation> <translation id="4002066346123236978">Заглавие</translation> <translation id="40027638859996362">Преместване на дума</translation> @@ -2387,6 +2387,7 @@ <translation id="4140559601186535628">Насочени съобщения</translation> <translation id="4146026355784316281">Отваряне винаги със системния визуализатор</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> иска да провери дали устройството ви с Chrome OS отговаря на условията за оферта. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Екран</translation> <translation id="4151403195736952345">Използване на глобалната стандартна стойност (Откриване)</translation> <translation id="4152177296285305182">Само някой с пропуска ви може да прочете шифрованите ви данни – той не се изпраща до Google, нито се съхранява от нас. Ако го забравите, ще трябва да нулирате синхронизирането.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 раздел}other{# раздела}}</translation> @@ -2451,6 +2452,7 @@ <translation id="4250229828105606438">Eкранна снимка</translation> <translation id="4250680216510889253">Не</translation> <translation id="4253168017788158739">Забележка</translation> +<translation id="4254813446494774748">Език за превод:</translation> <translation id="425573743389990240">Скорост на разреждане на батерията във ватове (отрицателна стойност означава, че батерията се зарежда)</translation> <translation id="4256316378292851214">&Запазване на видеоклипа като...</translation> <translation id="4258348331913189841">Файлови системи</translation> @@ -2528,6 +2530,7 @@ <translation id="4365673000813822030">Ами сега! Синхронизирането спря да работи.</translation> <translation id="4366509400410520531">Разрешено от вас</translation> <translation id="4367782753568896354">Не можахме да инсталираме:</translation> +<translation id="436904870295243580">Намиране на още приложения за водене на бележки</translation> <translation id="4370975561335139969">Въведените имейл адрес и парола не съвпадат</translation> <translation id="437184764829821926">Разширени настройки за шрифтовете</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3208,6 +3211,7 @@ <translation id="5324674707192845912">На път сте да отпишете това устройство <ph name="DEVICE_TYPE" /> от Google и да деактивирате възможността за отдалеченото му откриване и заключване и изтриване на данните от него. За целта ще е необходимо рестартиране. Искате ли да продължите?</translation> <translation id="5324780743567488672">Автоматично задаване на часовата зона въз основа на местоположението ви</translation> <translation id="5325120507747984426">Използва стабилна подредба на прозорците в режима за общ преглед – така се прави опит за намаляване на движението им при влизане/излизане от този режим и между отделните сесии в него.</translation> +<translation id="5326182685622510062">Има няколко реализации на конвейера за изобразяване на графика за двуизмерното платно, като всеки от тях има различни характеристики на производителността. Включването на този флаг позволява контекстите на двуизмерното платно да превключват „в движение“ между различните реализации в зависимост от използването на платното с цел подобряване на производителността. Например такъв случай е преминаването от реализация, която използва графичния процесор, към такава, която не го прави.</translation> <translation id="5327248766486351172">Име</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Изтриване</translation> @@ -3340,7 +3344,6 @@ <translation id="54870580363317966">Изберете аватар за този контролиран потребител.</translation> <translation id="5488468185303821006">Да се разреши в режим инкогнито</translation> <translation id="5489390182170331803">Стандартно поведение – приемателите на събития на ниво документ да се третират като пасивни</translation> -<translation id="5489789060051091748">Произнасяне чрез избиране: Задръжте натиснат клавиша „търсене“ и кликнете или плъзнете пръст върху нещо, за да чуете какво е</translation> <translation id="549294555051714732">Намиране на съответстващи предложения за автоматично попълване въз основа на поднизове</translation> <translation id="5493996328530898436">Нова стратегия за смесване при възпроизвеждането на звук</translation> <translation id="5494362494988149300">Отваряне &след изтегляне</translation> @@ -3698,7 +3701,6 @@ <translation id="5991049340509704927">Увеличаване</translation> <translation id="5991774521050363748">Активирайте персонализираните оформления, които ще внесат прецизни и иначе неосъществими подобрения в облика на известията от мрежата.</translation> <translation id="5993332328670040093">Преносът на данни вече няма да се измерва.</translation> -<translation id="5996258716334177896">Потребителският ви профил не можа да бъде отворен правилно. Възможно е да няма достъп до някои функции. Моля, уверете се, че потребителският профил съществува и имате разрешение за четене и запис на съдържанието му.</translation> <translation id="6001799583597751002">ПИН кодовете не са идентични:</translation> <translation id="6003177993629630467">Възможно е <ph name="PRODUCT_NAME" /> да не може да се поддържа актуален.</translation> <translation id="6003294706906016758">Активира за хостваните приложения рамка в стил уеб приложение</translation> @@ -4148,7 +4150,6 @@ <translation id="6637362044401670482">Активира поддръжката за продължаващо превъртане за виртуалната клавиатура.</translation> <translation id="6639554308659482635">Памет за SQLite</translation> <translation id="6643016212128521049">Изчистване</translation> -<translation id="6644756108386233011">Да се зададат ли отново променените настройки на <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">URL адрес за анулиране от сертифициращ орган на Netscape</translation> <translation id="6647838571840953560">Текущ канал: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Една секунда...</translation> @@ -4256,7 +4257,6 @@ <translation id="6810613314571580006">Автоматично влизане в уебсайтове посредством съхраняваните идентификационни данни. Когато функцията е деактивирана, ще се изисква потвърждение преди всяко влизане в профил в уебсайт.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> не може да се изпълнява като „root“.</translation> <translation id="6812841287760418429">Запазване на промените</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> установи, че настройките на браузъра ви може да са променени без ваше знание. Искате ли да им зададете отново първоначалните им стойности по подразбиране?</translation> <translation id="6815551780062710681">редактиране</translation> <translation id="6817358880000653228">Запазени пароли за този сайт:</translation> <translation id="6820008762872335722">Нулиране, за да се извежда запитване</translation> @@ -4373,6 +4373,7 @@ <translation id="6980956047710795611">Прехвърляне на всички данни в Chrome OS към новата парола (изисква се предишната)</translation> <translation id="6981982820502123353">Достъпност</translation> <translation id="6981992744085917617">Изберете как да влезете отново в профила си:</translation> +<translation id="698231206551913481">След като този потребител бъде премахнат, всички свързани с него файлове и локални данни ще се изтрият за постоянно.</translation> <translation id="6982896539684144327">Открит е принтер от <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">Регистриран ИДО</translation> <translation id="6983991971286645866">Всички редакции ще се запазят в/ъв „$1“.</translation> @@ -4457,6 +4458,7 @@ <translation id="7073555242265688099">Ако имате други устройства с Chrome, те ще се синхронизират автоматично, така че телефонът ви ще отключва и тях.</translation> <translation id="707392107419594760">Изберете клавиатурата си:</translation> <translation id="7075513071073410194">PKCS 1 MD5 с RSA шифроване</translation> +<translation id="7075625805486468288">Управление на настройките и HTTPS/SSL сертификатите</translation> <translation id="7076293881109082629">Влизате</translation> <translation id="7077829361966535409">Зареждането на страницата за вход посредством текущите настройки на прокси сървъра не бе успешно. Моля, <ph name="GAIA_RELOAD_LINK_START" />опитайте отново да влезете в профила си<ph name="GAIA_RELOAD_LINK_END" /> или използвайте други <ph name="PROXY_SETTINGS_LINK_START" />настройки<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Пренебрегнати манипулатори на протоколи</translation> @@ -4504,7 +4506,6 @@ <translation id="7141105143012495934">Влизането не бе успешно, тъй като данните за профила ви не можаха да се извлекат. Моля, свържете се с администратора си или опитайте отново.</translation> <translation id="7143207342074048698">Свързва се</translation> <translation id="7144878232160441200">Нов опит</translation> -<translation id="7148311641502571842">Приставката <ph name="PLUGIN_NAME" /> е деактивирана. За да я активирате отново, моля, отворете <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Традиционни принтери</translation> <translation id="7154130902455071009">Промяна на началната ви страница на <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Първоначалният режим на китайски да бъде опростен китайски</translation> @@ -4783,6 +4784,7 @@ <translation id="7540972813190816353">При проверката за актуализации възникна грешка: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Изключения за изображения</translation> <translation id="7543104066686362383">Активиране на функциите за отстраняване на грешки на това устройство с <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Прегледайте <ph name="BEGIN_LINK_CHROMIUM" />помощното съдържание за Google Chrome<ph name="END_LINK_CHROMIUM" />, ако не можете да намерите търсеното.</translation> <translation id="7544853251252956727">Разбъркване</translation> <translation id="7545288882499673859">Стратегия за отхвърляне на елементи с цел подобрено управление на паметта</translation> <translation id="7545415673537747415">Чрез <ph name="BEGIN_LINK" />контролите за активността в Google<ph name="END_LINK" /> управлявайте начина, по който използваме историята ви на сърфиране, за да персонализираме търсенето, рекламите и други наши услуги.</translation> @@ -5020,7 +5022,6 @@ <translation id="7879478708475862060">Следване на режима за въвеждане</translation> <translation id="7880836220014399562">„<ph name="BUNDLE_NAME" />“ ще добави следните приложения и разширения:</translation> <translation id="7881969471599061635">Деактивиране на субтитрите</translation> -<translation id="7884988936047469945">Експериментални функции за достъпност</translation> <translation id="7885253890047913815">Скорошни местоназначения</translation> <translation id="7887192723714330082">Реакция на „Ok Google“, когато екранът работи и е отключен</translation> <translation id="7887334752153342268">Дублиране</translation> @@ -5088,6 +5089,7 @@ <translation id="7974067550340408553">Получавайте известие на телефона си всеки път, когато Smart Lock отключи вашия <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Нов опит посредством <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Допълнителна област</translation> +<translation id="7976960358280528247">Активиране на потребителския интерфейс за придвижване между прозорците (визуална обратна връзка при натискане на „Alt + Tab“).</translation> <translation id="7977551819349545646">Chromebox се актуализира...</translation> <translation id="7978412674231730200">Личен ключ</translation> <translation id="7979036127916589816">Грешка при синхронизирането</translation> @@ -5115,6 +5117,7 @@ Пазете файла си с ключ на сигурно място. Той ви е необходим за създаване на нови версии на разширението.</translation> <translation id="799923393800005025">Може да преглежда</translation> +<translation id="8000066093800657092">Няма мрежа</translation> <translation id="8004582292198964060">Браузър</translation> <translation id="8007030362289124303">Батерията е изтощена</translation> <translation id="8008356846765065031">Няма връзка с интернет. Моля, проверете връзката си.</translation> @@ -5189,6 +5192,7 @@ <translation id="8116190140324504026">Още информация...</translation> <translation id="8116483400482790018">Персонализиран правописен речник</translation> <translation id="8116972784401310538">&Диспечер на отметките</translation> +<translation id="8117838550640702864">Настройки за водене на бележки</translation> <translation id="8117957376775388318">Метод на въвеждане с даи</translation> <translation id="8118860139461251237">Управление на изтеглянията ви</translation> <translation id="8119572489781388874">Промяна на настройките</translation> @@ -5468,7 +5472,6 @@ <translation id="8472623782143987204">с хардуерна поддръжка</translation> <translation id="8475313423285172237">Друга програма на компютъра ви добави разширение, което може да промени начина на работа на Chrome.</translation> <translation id="8475647382427415476">Google Диск не можа да синхронизира „<ph name="FILENAME" />“. По-късно ще се извърши повторен опит.</translation> -<translation id="8476195663057048998">Изчистване и нулиране</translation> <translation id="8477241577829954800">Заменен</translation> <translation id="8477384620836102176">&Общи</translation> <translation id="8480417584335382321">Мащаб на страницата:</translation> @@ -5698,7 +5701,6 @@ <translation id="8785135611469711856">Приставката е блокирала</translation> <translation id="8787254343425541995">Разрешаване на прокси сървъри за споделените мрежи</translation> <translation id="878763818693997570">Това име е твърде дълго</translation> -<translation id="8787865569533773240">Повторно задаване на променените настройки на <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Управление на другите потребители</translation> <translation id="8791534160414513928">Изпращане на заявка „Do Not Track“ с трафика ви на сърфиране</translation> <translation id="8795668016723474529">Добавяне на кредитна карта</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index 34ed717..4d702b0f8 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">নিরাপত্তাজড়িন কারণে ফাইলটিতে অ্যাক্সেস করা যায়নি৷</translation> <translation id="1675023460278456180">মেটারিয়াল হাইব্রীড</translation> <translation id="167832068858235403">আওয়াজ কমান</translation> -<translation id="1678331212993975953">সাইটের বিশদ বিবরণ</translation> <translation id="1679068421605151609">বিকাশকারী সরঞ্জামগুলি</translation> <translation id="1681120471812444678">মুদ্রকগুলি যোগ করার জন্য সেট আপ করুন...</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> তালিকাভুক্ত করুন</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">&সম্পন্ন হলে খুলুন</translation> <translation id="2372036074421194686">Chrome আপনার কম্পিউটারে ইনস্টল করা একটি অবাঞ্ছিত প্রোগ্রাম (<ph name="UWS_NAME" />) পেয়েছে। আপনি Chrome পরিষ্কারের সরঞ্জাম চালু করার মাধ্যমে এটি সরাতে সক্ষম হতে পারেন।</translation> <translation id="2375701438512326360">ফোর্স টাচস্ক্রীন সর্বদা সক্ষম অথবা অক্ষম রাখতে, অথবা যখন সূচনায় একটি টাচস্ক্রীন সনাক্ত হয় তখন সক্ষম রাখতে সমর্থন করে (স্বয়ংক্রিয়, ডিফল্ট)৷</translation> -<translation id="2377619091472055321">পরিবর্তিত <ph name="IDS_SHORT_PRODUCT_NAME" /> সেটিংস রিসেট করুন</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> টি ফাইল নির্বাচিত</translation> <translation id="2378982052244864789">এক্সটেনশন ডিরেক্টরিটি নির্বাচন করুন৷</translation> <translation id="2379281330731083556">সিস্টেম কথোপকথন ব্যবহার করে প্রিন্ট করুন...<ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">আপনার যদি কখনও নিজের কম্পিউটারের অপারেটিং সিস্টেম পুনরুদ্ধারের দরকার হয় তাহলে আপনার একটি পুনরুদ্ধার SD কার্ড অথবা USB মেমোরি স্টিকের দরকার হবে৷</translation> <translation id="305932878998873762">HTTP এর জন্য সরল ক্যাশে হল একটি নতুন ক্যাশে ডিস্কের স্থান বরাদ্দকরণের জন্য এটি ফাইলসিস্টেমের ওপর নির্ভর করে৷</translation> <translation id="3062606427884046423">Chrome মিডিয়া বিজ্ঞপ্তির জন্য Android মিডিয়া-শৈলী বিজ্ঞপ্তিগুলি ব্যবহার করে।</translation> +<translation id="3063224679438508013">নোট-অ্যাপটি স্বয়ংক্রিয়ভাবে লঞ্চ করুন</translation> <translation id="3063844757726132584">এই সহজে ব্যবহারযোগ্য লঞ্চারটির মাধ্যমে আপনার সমস্ত অ্যাপ্লিকেশান অ্যাক্সেস করুন৷ গেম খেলুন, ভিডিও চ্যাট করুন, সংগীত শুনুন, দস্তাবেজ সম্পাদনা করুন, অথবা আরো অ্যাপ্লিকেশান পান৷</translation> <translation id="3064388234319122767">লিপ্যন্তরকরণ (zdravo → здраво)</translation> <translation id="3065041951436100775">ট্যাব নষ্ট হওয়ার প্রতিক্রিয়া।</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">পাসওয়ার্ডের জন্য Google Smart Lock</translation> <translation id="317583078218509884">পৃষ্ঠাটি পুনঃলোডের পরে নতুন সাইট অনুমতি সেটিংস প্রভাবী হবে৷</translation> <translation id="3177048931975664371">পাসওয়ার্ড লুকাতে ক্লিক করুন</translation> +<translation id="3177909033752230686">পৃষ্ঠার ভাষা:</translation> <translation id="3180365125572747493">এই শংসাপত্র ফাইলটি এনক্রিপ্ট করতে একটি পাসওয়ার্ড দিন৷</translation> <translation id="3183139917765991655">প্রোফাইল আমদানিকারক</translation> <translation id="3184560914950696195">$1এ সংরক্ষণ করা যাবে না৷ সম্পাদিত ছবি ডাউনলোডসমূহ ফোল্ডারে সংরক্ষিত হবে৷</translation> @@ -1993,6 +1993,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> এর দ্বারা ডাউনলোড হয়েছে</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> দেখান</translation> <translation id="3613422051106148727">&নতুন ট্যাবে খুলুন</translation> +<translation id="3616113530831147358">অডিও</translation> <translation id="3616741288025931835">ব্রাউজ করা ডেটা &সাফ করুন...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />” খুঁজে দেখুন</translation> <translation id="3620292326130836921">সব ব্যাকআপ নেওয়া হয়ে গেছে!</translation> @@ -2288,7 +2289,6 @@ <translation id="3994878504415702912">&জুম</translation> <translation id="3995964755286119116">Adobe Flash Player ক্যামেরা সেটিংস ভিন্ন।</translation> <translation id="39964277676607559">সামগ্রী স্ক্রিপ্টের জন্য '<ph name="RELATIVE_PATH" />' লোড করা যায়নি৷</translation> -<translation id="3996912167543967198">রিসেট করা হচ্ছে...</translation> <translation id="3997015411467176489">পরীক্ষামূলক ক্যানভাস বৈশিষ্ট্যগুলি</translation> <translation id="4002066346123236978">শিরোনাম</translation> <translation id="40027638859996362">শব্দ সরানো</translation> @@ -2321,7 +2321,7 @@ <translation id="406070391919917862">পৃষ্ঠভূমি অ্যাপ্লিকেশান</translation> <translation id="4062251648694601778">আপনার <ph name="SHORT_PRODUCT_NAME" /> এর মজা নিন৷ কোনো প্রশ্ন আছে? আপনি যখন খুশি স্থিতি ট্রেতে থাকা "?" এ ক্লিক করে সহায়তা নিতে পারেন৷</translation> <translation id="4065876735068446555">আপনি যে নেটওয়ার্কটি <ph name="NETWORK_ID" /> ব্যবহার করছেন সেটির জন্য অপনাকে এটির লগ ইন পৃষ্ঠাতে যেতে হতে পরে৷</translation> -<translation id="4068506536726151626">এই পৃষ্ঠাতে নিম্নলিখিত সাইটগুলি থেকে উপাদানগুলি রয়েছে যা আপনার অবস্থান নির্ধারণ করছে:</translation> +<translation id="4068506536726151626">এই পৃষ্ঠাতে নিম্নলিখিত সাইটগুলি থেকে এমন উপাদান রয়েছে যা আপনার অবস্থান নির্ধারণ করে:</translation> <translation id="4070370845051020638">ক্যান্টনীজ ইনপুট পদ্ধতি</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: প্রবেশ করুন ত্রুটি</translation> <translation id="4072248638558688893">তামিল কীবোর্ড (ফোনেটিক)</translation> @@ -2385,6 +2385,7 @@ <translation id="4140559601186535628">পুশ বার্তা</translation> <translation id="4146026355784316281">সর্বদা সিস্টেম নিরীক্ষকের সাথে খুলুন</translation> <translation id="4146175323503586871">আপনার Chrome OS ডিভাইস অফারের জন্য যোগ্য কিনা <ph name="SERVICE_NAME" /> তা চেক করতে চাইছে। <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">প্রদর্শন</translation> <translation id="4151403195736952345">গ্লোবাল ডিফল্ট (সনাক্ত করুন) ব্যবহার করুন</translation> <translation id="4152177296285305182">কেবলমাত্র আপনার পাসফ্রেজের কোন ব্যক্তি আপনার এনক্রিপ্ট হওয়া ডেটা পরতে পারে -- পাসফ্রেজটি Google এ পাঠানো বা সঞ্চয় করা হয় না৷ আপনি যদি নিজের পাসফ্রেজ ভুলে যান তাহলে, আপনাকে সিঙ্ক পুনঃসেট করতে হবে৷</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{১টি ট্যাব}one{#টি ট্যাব}other{#টি ট্যাব}}</translation> @@ -2449,6 +2450,7 @@ <translation id="4250229828105606438">স্ক্রীনশট</translation> <translation id="4250680216510889253">না</translation> <translation id="4253168017788158739">টিকা</translation> +<translation id="4254813446494774748">অনুবাদের ভাষা:</translation> <translation id="425573743389990240">ওয়াটে ব্যাটারি ডিসচার্জের হার (ঋণাত্মক মানের অর্থ হল ব্যাটারি চার্জ হচ্ছে)</translation> <translation id="4256316378292851214">এইরূপে ভিডিও সংর&ক্ষণ করুন...</translation> <translation id="4258348331913189841">ফাইল সিস্টেম</translation> @@ -2525,6 +2527,7 @@ <translation id="4365673000813822030">উপস, সিঙ্ক কাজ করা বন্ধ করে দিয়েছে৷</translation> <translation id="4366509400410520531">আপনার দ্বারা মঞ্জুরিপ্রাপ্ত</translation> <translation id="4367782753568896354">ইনস্টল করতে আমরা অক্ষম হয়েছি:</translation> +<translation id="436904870295243580">টীকা-লেখার আরো অ্যাপ্লিকেশান খুঁজুন</translation> <translation id="4370975561335139969">আপনার লেখা ইমেল এবং পাসওয়ার্ড মিলছে না</translation> <translation id="437184764829821926">উন্নত ফন্ট সেটিংস</translation> <translation id="4372884569765913867">১x১</translation> @@ -3202,6 +3205,7 @@ <translation id="5324674707192845912">আপনার ডিভাইসটিকে দূর থেকে সনাক্ত করা, মোছা ও লক করতে অক্ষম করার জন্য অাপনি আপনার <ph name="DEVICE_TYPE" /> কে Google থেকে তালিকামুক্ত করতে যাচ্ছেন। এ জন্য পুনরায় চালু করা প্রয়োজন। আপনি কি চালিয়ে যেতে চান?</translation> <translation id="5324780743567488672">আপনার অবস্থান ব্যবহার করে স্বয়ংক্রিয়ভাবে সময় অঞ্চল সেট করুন</translation> <translation id="5325120507747984426">এক নজরে মোডে একটি স্থিতিশীল উইন্ডো ক্রম ব্যবহার করে যা এক নজরে মোডে প্রবেশ/প্রস্থান এবং এক নজরের সেশনগুলোর মধ্যে পরিবর্তনের সময় উইন্ডোগুলির নড়াচড়া কমানোর চেষ্টা করে।</translation> +<translation id="5326182685622510062">2D ক্যানভাসের জন্য গ্রাফিক্স রেন্ডারিং পাইপলাইনের একাধিক রূপায়ণ আছে। এসব ভিন্ন ভিন্ন রূপায়ণের ভিন্ন ভিন্ন কার্যদক্ষতা বৈশিষ্ট্য আছে। এই ফ্ল্যাগ চালু করা হলে কার্যদক্ষতা বৃদ্ধির জন্য ক্যানভাসটি কিভাবে ব্যবহৃত হয়, তার উপর ভিত্তি করে চলতি অবস্থায় ক্যানভাস 2D প্রেক্ষিতকে এসব রূপায়ণের একটি থেকে অন্যটিতে যেতে দেয়। উদাহরণস্বরূপ, GPU ব্যবহার করে এমন একটি রূপায়ণ থেকে GPU ব্যবহার করে না এমন রূপায়ণে যাওয়া।</translation> <translation id="5327248766486351172">নাম</translation> <translation id="5328031682234198929">৮</translation> <translation id="5329858601952122676">&মুছুন</translation> @@ -3334,7 +3338,6 @@ <translation id="54870580363317966">এই তত্ত্বাবধানে থাকা ব্যবহারকারীর জন্য কোন অবতার চয়ন করুন৷</translation> <translation id="5488468185303821006">ছদ্মবেশে মঞ্জুর করুন</translation> <translation id="5489390182170331803">দস্তাবেজ স্তরে ইভেন্ট শ্রোতাদের অক্রিয় ডিফল্ট</translation> -<translation id="5489789060051091748">মুখে-বলার-জন্য-নির্বাচন-করুন: অনুসন্ধান চেপে ধরে রাখুন এবং যেকোনো কিছু মুখে বলার জন্য ক্লিক করুন অথবা টেনে আনুন</translation> <translation id="549294555051714732">স্বতঃপূর্ণ প্রস্তাবনাগুলির জন্য সাবস্ট্রিংয়ের মিল</translation> <translation id="5493996328530898436">নতুন অডিও রেন্ডারিং মিশ্রণ কৌশল</translation> <translation id="5494362494988149300">&সম্পন্ন হলে খুলুন</translation> @@ -3692,7 +3695,6 @@ <translation id="5991049340509704927">বিবর্ধিত করুন</translation> <translation id="5991774521050363748">ওয়েব বিজ্ঞপ্তিগুলির জন্য কাস্টম লেআউট সক্ষম করুন। সেগুলিতে সূক্ষ্ম লেআউট উন্নতি থাকবে যা অন্যভাবে পাওয়া সম্ভব নয়।</translation> <translation id="5993332328670040093">আপনার ডেটা ব্যবহার আর পরিমাপ করা হবে না।</translation> -<translation id="5996258716334177896">আপনার প্রোফাইলটি সঠিকভাবে খোলা যাবে না৷ কিছু বৈশিষ্ট্য অনুপলব্ধ হতে পারে৷ দয়া করে চেক করুন যে প্রোফাইলটি বিদ্যমান এবং এটির সামগ্রী পড়ার ও লেখার অনুমতি আপনার কাছে আছে৷</translation> <translation id="6001799583597751002">PINগুলি মিলছে না!</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> নিজেকে আপডেট রাখতে হয়ত সক্ষম নয়।</translation> <translation id="6003294706906016758">হোস্ট করা অ্যাপ্লিকেশানগুলির জন্য ওয়েব অ্যাপ্লিকেশান শৈলি ফ্রেমটি সক্ষম করে</translation> @@ -4142,7 +4144,6 @@ <translation id="6637362044401670482">ভার্চুয়াল কীবোর্ড ওভারস্ক্রোল সমর্থন সক্ষম করে।</translation> <translation id="6639554308659482635">SQLite স্মৃতি</translation> <translation id="6643016212128521049">সাফ করুন</translation> -<translation id="6644756108386233011">পরিবর্তিত <ph name="IDS_SHORT_PRODUCT_NAME" /> সেটিংস রিসেট করবেন?</translation> <translation id="6647228709620733774">Netscape শংসাপত্র কর্তৃপক্ষ নাকচের URL</translation> <translation id="6647838571840953560">বর্তমানে <ph name="CHANNEL_NAME" /> এ</translation> <translation id="6649018507441623493">একটু অপেক্ষা করুন…</translation> @@ -4252,7 +4253,6 @@ <translation id="6810613314571580006">সঞ্চিত শংসাপত্রগুলি ব্যবহার করে ওয়েবসাইটগুলিতে স্বয়ংক্রিয়ভাবে প্রবেশ করুন। যখন বৈশিষ্ট্যটি অক্ষম করা থাকে, তখন প্রতিবারই একটি ওয়েবসাইটে প্রবেশ করুন করার সময় আপনাকে নিশ্চিতকরণের জন্য বলা হবে।</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" />-কে রুট হিসাবে চালনা করা যাবে না৷</translation> <translation id="6812841287760418429">পরিবর্তন রাখুন</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> শনাক্ত করেছে যে হয়ত আপনার ব্রাউজারের সেটিংস আপনাকে না জানিয়ে পরিবর্তন করা হয়েছে৷ আপনি কি সেগুলিকে আগের মতন ডিফল্ট সেটিংস এ রিসেট করতে চান?</translation> <translation id="6815551780062710681">সম্পাদনা</translation> <translation id="6817358880000653228">এই সাইটের সংরক্ষিত পাসওয়ার্ডগুলি:</translation> <translation id="6820008762872335722">জিজ্ঞাসা করতে পুনরায় সেট করুন</translation> @@ -4369,6 +4369,7 @@ <translation id="6980956047710795611">সমস্ত Chrome OS ডেটা নতুন পাসওয়ার্ডে স্থানান্তর করুন (আগের পাসওয়ার্ড দরকার)</translation> <translation id="6981982820502123353">অ্যাক্সেযোগ্যতা</translation> <translation id="6981992744085917617">আপনি আপনার অ্যাকাউন্টে পুনরায় লগ ইন করার জন্য যে পদ্ধতি ব্যবহার করতে চান সেটি নির্বাচন করুন:</translation> +<translation id="698231206551913481">একবার এই ব্যবহারকারীকে সরানো হলে এর সঙ্গে সংশ্লিষ্ট সমস্ত ফাইল এবং স্থানীয় ডেটা স্থায়ীভাবে মুছে ফেলা হবে।</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" />-এর থেকে প্রাপ্ত মুদ্রক শনাক্ত করা হয়েছে</translation> <translation id="6983783921975806247">নিবন্ধীকৃত OID</translation> <translation id="6983991971286645866">সকল সম্পাদনা $1 এ সংরক্ষণ করা হবে।</translation> @@ -4453,6 +4454,7 @@ <translation id="7073555242265688099">যদি আপনার অন্য Chrome ডিভাইসগুলি থাকে, সেগুলি স্বয়ংক্রিয়ভাবে সিঙ্ক হবে, যাতে করে ফোন সেগুলিকেও আনলক করতে পারে৷</translation> <translation id="707392107419594760">আপনার কীবোর্ড নির্বাচন করুন:</translation> <translation id="7075513071073410194">RSA এনক্রিপশান সহ PKCS #1 MD5</translation> +<translation id="7075625805486468288">HTTPS/SSL শংসাপত্র এবং সেটিংস পরিচালনা করুন</translation> <translation id="7076293881109082629">প্রবেশ করুন হচ্ছে</translation> <translation id="7077829361966535409">সাইন-ইন পৃষ্ঠাটি বর্তমান প্রক্সি সেটিংস ব্যবহার করে লোড হতে ব্যর্থ হয়েছে৷ দয়া করে <ph name="GAIA_RELOAD_LINK_START" />আবার প্রবেশ করুন করার চেষ্টা করুন<ph name="GAIA_RELOAD_LINK_END" />, অথবা পৃথক <ph name="PROXY_SETTINGS_LINK_START" />প্রক্সি সেটিংস<ph name="PROXY_SETTINGS_LINK_END" /> ব্যবহার করুন৷</translation> <translation id="7077872827894353012">প্রোটোকল নিয়ন্ত্রণকারীকে এড়ানো হয়েছে</translation> @@ -4500,7 +4502,6 @@ <translation id="7141105143012495934">আপনার অ্যাকাউন্টের বিশদ বিবরণ পুনরুদ্ধার করতে না পারায় প্রবেশ করুন ব্যর্থ হয়েছে। দয়া করে আপনার প্রশাসকের সাথে যোগাযোগ করুন অথবা আবার চেষ্টা করুন।</translation> <translation id="7143207342074048698">সংযুক্ত হচ্ছে</translation> <translation id="7144878232160441200">পুনরায় চেষ্টা করুন</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> অক্ষম করা হয়েছে৷ এটিকে পুনঃসক্ষম করতে, দয়া করে <ph name="CHROME_PLUGINS_LINK" />-এ যান৷</translation> <translation id="715118844758971915">ক্লাসিক মুদ্রকগুলি</translation> <translation id="7154130902455071009">আপনার সূচনা পৃষ্ঠাকে এতে পরিবর্তন করুন: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">প্রাথমিক চীনা মোড হল সরলীকৃত চীনা</translation> @@ -4562,7 +4563,7 @@ <translation id="7243055093079293866">একটি নতুন ট্যাবে "Ok Google" বলুন এবং google.com</translation> <translation id="7243632151880336635">সাফ করে প্রস্থান করুন</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (সর্বোত্তম)</translation> -<translation id="724691107663265825">সম্মুখের সাইটটিতে ম্যালওয়্যার আছে</translation> +<translation id="724691107663265825">এই সাইটটিতে ম্যালওয়্যার আছে</translation> <translation id="725109152065019550">দুঃখিত, আপনার প্রশাসক আপনার অ্যাকাউন্টে বাহ্যিক সঞ্চয়স্থান অক্ষম করেছে৷</translation> <translation id="7252661675567922360">লোড করবেন না</translation> <translation id="7253521419891527137">এবং আরো জানুন</translation> @@ -4778,6 +4779,7 @@ <translation id="7540972813190816353">আপডেট পরীক্ষা করার সময় একটি ত্রুটি হয়েছে: <ph name="ERROR" /></translation> <translation id="7541121857749629630">চিত্র ব্যতিক্রম</translation> <translation id="7543104066686362383">এই <ph name="IDS_SHORT_PRODUCT_NAME" /> ডিভাইসে ডিবাগিং বৈশিষ্ট্যগুলি সক্ষম করুন৷</translation> +<translation id="7543393759143837504">আপনি যা খুঁজছেন তা খুঁজে না পেলে <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome সহায়তায়<ph name="END_LINK_CHROMIUM" /> যান।</translation> <translation id="7544853251252956727">শাফল করুন</translation> <translation id="7545288882499673859">উন্নত চাপ পরিচালনার জন্য মেমরি বাতিল কৌশল</translation> <translation id="7545415673537747415">অনুসন্ধান, বিজ্ঞাপন এবং অন্যান্য Google পরিষেবা ব্যক্তিগতকৃত করতে Google কিভাবে আপনার ব্রাউজিং ইতিহাস ব্যবহার করে তা <ph name="BEGIN_LINK" />Google কার্যকলাপের নিয়ন্ত্রণগুলি<ph name="END_LINK" /> থেকে নিয়ন্ত্রণ করুন।</translation> @@ -5015,7 +5017,6 @@ <translation id="7879478708475862060">ইনপুট মোড অনুসরণ করুন</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />"এই অ্যাপ্লিকেশান এবং এক্সটেনশানসমূহ যোগ করে:</translation> <translation id="7881969471599061635">সাবটাইটেল অক্ষম করুন</translation> -<translation id="7884988936047469945">পরীক্ষামূলক অ্যাক্সেসযোগ্যতার বৈশিষ্ট্যগুলি</translation> <translation id="7885253890047913815">সাম্প্রতিক গন্তব্যস্থল</translation> <translation id="7887192723714330082">স্ক্রিনটি চালু এবং আনলক থাকাকালীন "Ok Google" এ প্রতিক্রিয়া দিন</translation> <translation id="7887334752153342268">সদৃশ</translation> @@ -5083,6 +5084,7 @@ <translation id="7974067550340408553">প্রতিবার যখন Smart Lock আপনার <ph name="DEVICE_TYPE" /> আনলক করবে তখন আপনার ফোনে বিজ্ঞপ্তি পান৷</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" /> ব্যবহার করার জন্য আবার চেষ্টা করুন</translation> <translation id="7974936243149753750">ওভারস্ক্যান</translation> +<translation id="7976960358280528247">উইন্ডো চক্র UI ( Alt+Tab এর জন্য ভিজ্যুয়াল প্রতিক্রিয়া) সক্ষম করে।</translation> <translation id="7977551819349545646">Chromebox আপডেট করা হচ্ছে...</translation> <translation id="7978412674231730200">ব্যক্তিগত কী</translation> <translation id="7979036127916589816">সিঙ্ক ত্রুটি</translation> @@ -5110,6 +5112,7 @@ নিজের কী ফাইল কোন নিরাপদ স্থানে রাখুন৷ আপনাকে নিজের এক্সটেনশানের নতুন সংস্করণ তৈরি করতে হবে৷</translation> <translation id="799923393800005025">দেখতে পারবেন</translation> +<translation id="8000066093800657092">কোনও নেটওয়ার্ক নেই</translation> <translation id="8004582292198964060">ব্রাউজার</translation> <translation id="8007030362289124303">ব্যাটারি নিম্ন</translation> <translation id="8008356846765065031">ইন্টারনেট সংযোগ বিচ্ছিন্ন হয়েছে৷ দয়া করে আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন৷</translation> @@ -5184,6 +5187,7 @@ <translation id="8116190140324504026">আরো তথ্য...</translation> <translation id="8116483400482790018">কাস্টম বানান অভিধান</translation> <translation id="8116972784401310538">&বুকমার্ক পরিচালক</translation> +<translation id="8117838550640702864">নোট সেটিংস</translation> <translation id="8117957376775388318">ডায়ি ইনপুট পদ্ধতি</translation> <translation id="8118860139461251237">আপনার ডাউনলোডগুলি পরিচালনা করুন</translation> <translation id="8119572489781388874">সেটিংস সংশোধন করুন</translation> @@ -5464,7 +5468,6 @@ <translation id="8472623782143987204">hardware-backed</translation> <translation id="8475313423285172237">আপনার কম্পিউটারের অন্য একটি প্রোগ্রাম একটি এক্সটেনশন জুড়েছে যা Chrome এর কাজ করার পদ্ধতিকে পাল্টে দিতে পারে৷</translation> <translation id="8475647382427415476">Google ড্রাইভ এই মুহূর্তে "<ph name="FILENAME" />" সিঙ্ক করতে পারেনি। Google ড্রাইভ পরে আবার চেষ্টা করবে।</translation> -<translation id="8476195663057048998">সাফ করে পুনরায় সেট করুন</translation> <translation id="8477241577829954800">বাতিল করা</translation> <translation id="8477384620836102176">&সাধারণ</translation> <translation id="8480417584335382321">পৃষ্ঠা জুম:</translation> @@ -5694,7 +5697,6 @@ <translation id="8785135611469711856">প্ল্যাগ ইন প্রতিক্রিয়াবিহীন</translation> <translation id="8787254343425541995">শেয়ার করে নেওয়া নেটওয়ার্কগুলির জন্য প্রক্সিগুলির অনুমতি দিন</translation> <translation id="878763818693997570">এই নামটি খুবই লম্বা</translation> -<translation id="8787865569533773240">পরিবর্তিত <ph name="IDS_SHORT_PRODUCT_NAME" /> সেটিংস রিসেট করুন</translation> <translation id="8789375980715484686">অন্যান্য ব্যবহারকারিদের পরিচালনা করুন</translation> <translation id="8791534160414513928">আপনার ব্রাউজিং ট্র্যাফিকের মাধ্যমে একটি 'ট্র্যাক করবেন না' অনুরোধ পাঠান</translation> <translation id="8795668016723474529">একটি ক্রেডিট কার্ড যুক্ত করুন</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index dc3e213..2b08d2a 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -504,7 +504,7 @@ <translation id="1650709179466243265">Afegeix www. i .com i obre l'adreça</translation> <translation id="1652965563555864525">S&ilencia</translation> <translation id="1653526288038954982">{NUM_PRINTER,plural, =1{Afegiu la impressora a Google Cloud Print per poder imprimir des de qualsevol lloc.}other{Afegiu # impressores a Google Cloud Print per poder imprimir des de qualsevol lloc.}}</translation> -<translation id="1657406563541664238">Ajudeu-nos a millorar <ph name="PRODUCT_NAME" /> enviant estadístiques d'ús i informes d'error a Google automàticament.</translation> +<translation id="1657406563541664238">Ajuda'ns a millorar <ph name="PRODUCT_NAME" /> enviant estadístiques d'ús i informes d'error a Google automàticament.</translation> <translation id="1658424621194652532">Aquesta pàgina té accés al micròfon.</translation> <translation id="1661245713600520330">En aquesta pàgina s'enumeren tots els mòduls carregats al procés principal i els mòduls registrats per carregar-se més endavant.</translation> <translation id="166179487779922818">La contrasenya és massa curta.</translation> @@ -521,12 +521,11 @@ <translation id="1673103856845176271">No s'ha pogut accedir al fitxer per qüestions de seguretat.</translation> <translation id="1675023460278456180">Material híbrid</translation> <translation id="167832068858235403">menys vol.</translation> -<translation id="1678331212993975953">Detalls del lloc</translation> <translation id="1679068421605151609">Eines per a desenvolupadors</translation> <translation id="1681120471812444678">Configuració per afegir impressores...</translation> <translation id="1682324559341535203">Registreu el dispositiu <ph name="DEVICE_TYPE" /></translation> <translation id="1682548588986054654">Finestra d'incògnit nova</translation> -<translation id="168328519870909584">Els atacants del lloc <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> poden provar d'instal·lar aplicacions perilloses al dispositiu per robar o eliminar informació (com ara fotos, contrasenyes, missatges i targetes de crèdit).</translation> +<translation id="168328519870909584">Els atacants que actualment són al lloc <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> poden provar d'instal·lar aplicacions perilloses al dispositiu per robar o suprimir la teva informació (com ara fotos, contrasenyes, missatges i targetes de crèdit).</translation> <translation id="1685141618403317602">Cancel·la el registre</translation> <translation id="1685944703056982650">Excepcions del cursor del ratolí</translation> <translation id="1691063574428301566">El vostre equip es reiniciarà quan s'hagi completat l'actualització.</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Obre quan &acabi</translation> <translation id="2372036074421194686">Chrome ha detectat que hi ha un programa no desitjat (<ph name="UWS_NAME" />) instal·lat a l'ordinador. Executeu l'Eina per netejar Chrome per mirar de suprimir-lo.</translation> <translation id="2375701438512326360">Feu que la compatibilitat amb la pantalla tàctil estigui sempre activada o desactivada, o que s'activi en detectar una pantalla tàctil a l'inici (opció automàtica, valor predeterminat).</translation> -<translation id="2377619091472055321">Restableix la configuració de <ph name="IDS_SHORT_PRODUCT_NAME" /> modificada</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> fitxers seleccionats</translation> <translation id="2378982052244864789">Seleccioneu el directori de l'extensió.</translation> <translation id="2379281330731083556">Imprimeix des de la finestra de diàleg del sistema… <ph name="SHORTCUT_KEY" /></translation> @@ -1475,7 +1473,7 @@ <translation id="295947108480905647"><ph name="CHROME_EXTENSION_NAME" /> es vol connectar amb:</translation> <translation id="2959614062380389916">L'administrador ho ha desactivat</translation> <translation id="2960393411257968125">Manera en què el gestor de contrasenyes administra l'Emplenament automàtic per a les credencials de sincronització.</translation> -<translation id="29611076221683977">Els atacants que actualment són a <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> poden provar d'instal·lar programes perillosos al dispositiu Mac amb els quals es pot robar o suprimir la vostra informació (per exemple, les fotos, les contrasenyes, els missatges i les targetes de crèdit).</translation> +<translation id="29611076221683977">Els atacants que actualment són al lloc <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> poden provar d'instal·lar programes perillosos al dispositiu Mac per robar o suprimir la teva informació (per exemple, les fotos, les contrasenyes, els missatges i les targetes de crèdit).</translation> <translation id="2961695502793809356">Feu clic per anar endavant o manteniu premut per veure l'historial</translation> <translation id="296216853343927883">Inclusió de la marca Google al menú contextual</translation> <translation id="2963151496262057773">El connector següent no respon: <ph name="PLUGIN_NAME" />. Voleu aturar-lo?</translation> @@ -1557,6 +1555,7 @@ <translation id="3058212636943679650">Si mai necessiteu recuperar el sistema operatiu del vostre equip, necessitareu una targeta SD o un llapis de memòria USB de recuperació.</translation> <translation id="305932878998873762">La memòria cau senzilla per a HTTP és una memòria cau nova que utilitza el sistema de fitxers per assignar l'espai en disc.</translation> <translation id="3062606427884046423">Utilitza les notificacions de l'estil multimèdia d'Android a les notificacions multimèdia de Chrome.</translation> +<translation id="3063224679438508013">Inicia automàticament l'aplicació per prendre notes</translation> <translation id="3063844757726132584">Accediu a totes les vostres aplicacions des d'aquest pràctic menú. Jugueu, participeu en xats de vídeo, escolteu música, editeu documents o baixeu més aplicacions.</translation> <translation id="3064388234319122767">Transliteració (zdravo → здраво)</translation> <translation id="3065041951436100775">Suggeriments sobre el tancament sobtat de la pestanya</translation> @@ -1647,6 +1646,7 @@ <translation id="3172213052701798825">Google Smart Lock per a contrasenyes</translation> <translation id="317583078218509884">La nova configuració dels permisos del lloc es farà efectiva quan torneu a carregar la pàgina.</translation> <translation id="3177048931975664371">Feu clic per amagar la contrasenya</translation> +<translation id="3177909033752230686">Idioma de la pàgina:</translation> <translation id="3180365125572747493">Introduïu una contrasenya per encriptar aquest fitxer de certificat.</translation> <translation id="3183139917765991655">Importador de perfils</translation> <translation id="3184560914950696195">No es pot desar a $1. Les imatges modificades es desaran a la carpeta Baixades.</translation> @@ -1996,6 +1996,7 @@ <translation id="3612673635130633812">Baixat per <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Mostra <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Obre en una pestanya nova</translation> +<translation id="3616113530831147358">Àudio</translation> <translation id="3616741288025931835">&Elimina les dades de navegació...</translation> <translation id="3618849550573277856">Cerca "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Tots els elements tenen una còpia de seguretat.</translation> @@ -2291,7 +2292,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">La configuració de la càmera d'Adobe Flash Player és diferent.</translation> <translation id="39964277676607559">No s'ha pogut carregar el JavaScript "<ph name="RELATIVE_PATH" />" per a l'script de contingut.</translation> -<translation id="3996912167543967198">S'està restablint...</translation> <translation id="3997015411467176489">Funcions experimentals de llenç</translation> <translation id="4002066346123236978">Títol</translation> <translation id="40027638859996362">Desplaçament de paraules</translation> @@ -2324,7 +2324,7 @@ <translation id="406070391919917862">Aplicacions de fons</translation> <translation id="4062251648694601778">Gaudiu del vostre dispositiu <ph name="SHORT_PRODUCT_NAME" />. Teniu cap pregunta? Podeu obtenir ajuda en qualsevol moment fent clic al símbol ? de la safata d'estat.</translation> <translation id="4065876735068446555">És possible que la xarxa que esteu fent servir (<ph name="NETWORK_ID" />) sol·liciti que en visiteu la pàgina d'inici de sessió.</translation> -<translation id="4068506536726151626">Aquesta pàgina conté elements dels llocs següents que fan el seguiment de la vostra ubicació:</translation> +<translation id="4068506536726151626">Aquesta pàgina conté elements dels llocs següents que fan un seguiment de la teva ubicació:</translation> <translation id="4070370845051020638">Mètode d'introducció de cantonès</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: error d'inici de sessió</translation> <translation id="4072248638558688893">Teclat tàmil (fonètic)</translation> @@ -2388,6 +2388,7 @@ <translation id="4140559601186535628">Missatges de tramesa automàtica</translation> <translation id="4146026355784316281">Obrir sempre amb el visualitzador del sistema</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> vol comprovar si el dispositiu Chrome OS compleix els requisits per accedir a una oferta. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Pantalla</translation> <translation id="4151403195736952345">Utilitza el valor predeterminat global (detecta)</translation> <translation id="4152177296285305182">Només una persona que tingui la vostra contrasenya pot llegir les dades encriptades: la contrasenya no s'envia ni s'emmagatzema a Google. Si oblideu la contrasenya, haureu de restablir la sincronització.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 pestanya}other{# pestanyes}}</translation> @@ -2452,6 +2453,7 @@ <translation id="4250229828105606438">Captura de pantalla</translation> <translation id="4250680216510889253">No</translation> <translation id="4253168017788158739">Nota</translation> +<translation id="4254813446494774748">Idioma de la traducció:</translation> <translation id="425573743389990240">Velocitat de descàrrega de la bateria en watts (un valor negatiu significa que la bateria s'està carregant)</translation> <translation id="4256316378292851214">De&sa el vídeo com a...</translation> <translation id="4258348331913189841">Sistemes de fitxers</translation> @@ -2529,6 +2531,7 @@ <translation id="4365673000813822030">La sincronització ha deixat de funcionar.</translation> <translation id="4366509400410520531">Permès pel vostre usuari</translation> <translation id="4367782753568896354">No hem pogut instal·lar:</translation> +<translation id="436904870295243580">Cerca més aplicacions per prendre notes</translation> <translation id="4370975561335139969">El correu electrònic i la contrasenya indicats no coincideixen</translation> <translation id="437184764829821926">Configuració avançada de tipus de lletra</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3206,6 +3209,7 @@ <translation id="5324674707192845912">Esteu a punt de cancel·lar el registre d'aquest dispositiu <ph name="DEVICE_TYPE" /> a Google perquè no es pugui localitzar, esborrar-ne les dades ni bloquejar-lo remotament. Caldrà que el reinicieu. Voleu continuar?</translation> <translation id="5324780743567488672">Estableix la zona horària automàticament en funció de la meva ubicació</translation> <translation id="5325120507747984426">Utilitza una ordre de finestres estable al mode de visió general amb la finalitat de minimitzar el moviment de les finestres en entrar o sortir de la visió general o en canviar d'una sessió de visió general a una altra.</translation> +<translation id="5326182685622510062">Hi ha diverses implementacions del pipeline per a la renderització de gràfics del llenç 2D que, a més, tenen diferents característiques de rendiment. En activar aquesta marca, es permet que els contextos de llenç 2D canviïn sobre la marxa d'una d'aquestes implementacions a una altra en funció de com s'utilitzi el llenç per millorar el rendiment. Per exemple, poden canviar d'una implementació que utilitza la GPU a una que no.</translation> <translation id="5327248766486351172">Nom</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Suprimeix</translation> @@ -3338,7 +3342,6 @@ <translation id="54870580363317966">Trieu un avatar per a aquest usuari supervisat.</translation> <translation id="5488468185303821006">Permet en mode d'incògnit</translation> <translation id="5489390182170331803">Comportament predeterminat dels detectors d'esdeveniments passius al nivell de document</translation> -<translation id="5489789060051091748">Seleccioneu per llegir en veu alta: manteniu premut el botó de cerca i feu clic o arrossegueu per llegir en veu alta</translation> <translation id="549294555051714732">Coincidència per subcadenes per als suggeriments d'emplenament automàtic</translation> <translation id="5493996328530898436">Nova estratègia de mescla de renderització d'àudio</translation> <translation id="5494362494988149300">Obre quan &acabi</translation> @@ -3697,7 +3700,6 @@ <translation id="5991049340509704927">Amplia</translation> <translation id="5991774521050363748">Activa els dissenys personalitzats per a les notificacions web. Tindran millores subtils en el disseny que d'altra manera no són possibles.</translation> <translation id="5993332328670040093">Ja no es mesurarà el vostre ús de dades.</translation> -<translation id="5996258716334177896">El vostre perfil no s'ha pogut obrir correctament. És possible que algunes funcions no estiguin disponibles. Comproveu que el perfil existeixi i que tingueu permís per llegir-ne el contingut i escriure-hi.</translation> <translation id="6001799583597751002">Els PIN no coincideixen:</translation> <translation id="6003177993629630467">És possible que <ph name="PRODUCT_NAME" /> no pugui actualitzar-se tot sol.</translation> <translation id="6003294706906016758">Activa el marc d'estil de l'aplicació web per a aplicacions allotjades</translation> @@ -4146,7 +4148,6 @@ <translation id="6637362044401670482">Activa la compatibilitat amb el desplaçament del teclat virtual.</translation> <translation id="6639554308659482635">Memòria SQLite</translation> <translation id="6643016212128521049">Esborra</translation> -<translation id="6644756108386233011">Voleu restablir la configuració de <ph name="IDS_SHORT_PRODUCT_NAME" /> modificada?</translation> <translation id="6647228709620733774">URL de revocació de l'entitat emissora de certificats de Netscape</translation> <translation id="6647838571840953560">Actualment a <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Un moment…</translation> @@ -4240,7 +4241,7 @@ <translation id="6788210894632713004">Extensió sense empaquetar</translation> <translation id="6790428901817661496">Reprodueix</translation> <translation id="6790497603648687708"><ph name="EXTENSION_NAME" /> s'ha afegit de manera remota</translation> -<translation id="6790820461102226165">Afegiu una persona...</translation> +<translation id="6790820461102226165">Afegeix una persona...</translation> <translation id="6791443592650989371">Estat d'activació:</translation> <translation id="6793604637258913070">Ressalta la marca d'inserció de text quan es mostri o es mogui</translation> <translation id="6797493596609571643">S'ha produït un error.</translation> @@ -4254,7 +4255,6 @@ <translation id="6810613314571580006">Inicieu la sessió automàticament als llocs web amb les credencials emmagatzemades. Si la funció està desactivada, se us demana sempre que confirmeu les credencials per iniciar la sessió en un lloc web.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> no pot executar-se com a arrel.</translation> <translation id="6812841287760418429">Mantén els canvis</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> ha detectat que és possible que la configuració del navegador hagi canviat sense el vostre consentiment. Voleu tornar a establir la configuració predeterminada original?</translation> <translation id="6815551780062710681">edita</translation> <translation id="6817358880000653228">Contrasenyes desades per a aquest lloc:</translation> <translation id="6820008762872335722">Restableix i demana permís</translation> @@ -4372,6 +4372,7 @@ (requereix la contrasenya anterior)</translation> <translation id="6981982820502123353">Accessibilitat</translation> <translation id="6981992744085917617">Tria el mètode que vols fer servir per desbloquejar el dispositiu:</translation> +<translation id="698231206551913481">Tots els fitxers i les dades locals associats amb aquest usuari se suprimiran definitivament quan aquest usuari se suprimeixi.</translation> <translation id="6982896539684144327">S'ha detectat una impressora del proveïdor <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">OID registrat</translation> <translation id="6983991971286645866">Tots els canvis es desaran a $1.</translation> @@ -4456,6 +4457,7 @@ <translation id="7073555242265688099">Si teniu altres dispositius Chrome, se sincronitzaran de manera automàtica, així que el telèfon també els desbloquejarà.</translation> <translation id="707392107419594760">Seleccioneu el teclat:</translation> <translation id="7075513071073410194">PKCS #1 MD5 amb encriptació RSA</translation> +<translation id="7075625805486468288">Gestiona els certificats i la configuració d'HTTPS/SSL</translation> <translation id="7076293881109082629">Inicia la sessió</translation> <translation id="7077829361966535409">La pàgina d'inici de sessió no s'ha pogut carregar amb la configuració de servidor intermediari actual. <ph name="GAIA_RELOAD_LINK_START" />Proveu de tornar a iniciar la sessió<ph name="GAIA_RELOAD_LINK_END" /> o utilitzeu una <ph name="PROXY_SETTINGS_LINK_START" />configuració de servidor intermediari<ph name="PROXY_SETTINGS_LINK_END" /> diferent.</translation> <translation id="7077872827894353012">Gestors de protocols ignorats</translation> @@ -4503,7 +4505,6 @@ <translation id="7141105143012495934">S'ha produït un problema en iniciar la sessió perquè no s'ha pogut recuperar la informació del compte. Contacteu amb l'administrador o torneu a provar-ho.</translation> <translation id="7143207342074048698">S'està connectant</translation> <translation id="7144878232160441200">Torna-ho a provar</translation> -<translation id="7148311641502571842">S'ha desactivat <ph name="PLUGIN_NAME" />. Per tornar a activar-lo, aneu a <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Impressores clàssiques</translation> <translation id="7154130902455071009">Canvia la pàgina d'inici per: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">El mode xinès inicial és xinès simplificat</translation> @@ -4776,6 +4777,7 @@ <translation id="7540972813190816353">S'ha produït un error durant la cerca d'actualitzacions: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Excepcions d'imatges</translation> <translation id="7543104066686362383">Activa les funcions de depuració en aquest dispositiu <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Si no trobes el que busques, vés a l'<ph name="BEGIN_LINK_CHROMIUM" />ajuda de Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Aleatori</translation> <translation id="7545288882499673859">Estratègia per descartar la memòria per a una gestió avançada de la pressió</translation> <translation id="7545415673537747415">Utilitzeu els <ph name="BEGIN_LINK" />Controls d'activitat de Google<ph name="END_LINK" /> per controlar com utilitza Google el vostre historial de navegació per personalitzar la Cerca, els anuncis i altres serveis de Google.</translation> @@ -4809,7 +4811,7 @@ <translation id="7582844466922312471">Dades mòbils</translation> <translation id="7583242026904249212"><ph name="DOMAIN" /> vol que Google verifiqui la identitat del vostre dispositiu per determinar si s'hi pot utilitzar la reproducció millorada de contingut multimèdia protegit. <ph name="LEARN_MORE" />.</translation> <translation id="7584802760054545466">S'està connectant amb <ph name="NETWORK_ID" /></translation> -<translation id="7586312264284919041">Voleu traduir aquesta pàgina?</translation> +<translation id="7586312264284919041">Vols traduir aquesta pàgina?</translation> <translation id="7586498138629385861">Chrome continuarà funcionant mentre hi hagi aplicacions de Chrome obertes.</translation> <translation id="7587108133605326224">Bàltic</translation> <translation id="7589461650300748890">Aneu amb compte</translation> @@ -5011,7 +5013,6 @@ <translation id="7879478708475862060">Segueix el mode d'entrada</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" afegeix aquestes aplicacions i extensions</translation> <translation id="7881969471599061635">Desactiva els subtítols</translation> -<translation id="7884988936047469945">Funcions experimentals d'accessibilitat</translation> <translation id="7885253890047913815">Destinacions recents</translation> <translation id="7887192723714330082">Responeu a "Ok Google" quan la pantalla estigui encesa i desbloquejada</translation> <translation id="7887334752153342268">Duplica</translation> @@ -5079,6 +5080,7 @@ <translation id="7974067550340408553">Envia'm notificacions al telèfon cada vegada que Smart Lock desbloquegi <ph name="DEVICE_TYPE" /></translation> <translation id="7974566588408714340">Torna-ho a provar amb <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Ajusta la mida</translation> +<translation id="7976960358280528247">Activa la interfície d'usuari per moure's entre les finestres (Alt+tabulador).</translation> <translation id="7977551819349545646">S'està actualitzant Chromebox...</translation> <translation id="7978412674231730200">Clau privada</translation> <translation id="7979036127916589816">Error de sincronització</translation> @@ -5106,6 +5108,7 @@ Deseu el fitxer de clau en una ubicació segura. El necessitareu per crear versions noves de l'extensió.</translation> <translation id="799923393800005025">Pot consultar</translation> +<translation id="8000066093800657092">No hi ha xarxa</translation> <translation id="8004582292198964060">Navegador</translation> <translation id="8007030362289124303">Nivell de bateria baix</translation> <translation id="8008356846765065031">S'ha desconnectat Internet. Comproveu la connexió.</translation> @@ -5180,6 +5183,7 @@ <translation id="8116190140324504026">Més informació...</translation> <translation id="8116483400482790018">Diccionari ortogràfic personalitzat</translation> <translation id="8116972784401310538">&Gestor d'adreces d'interès</translation> +<translation id="8117838550640702864">Configuració de les notes</translation> <translation id="8117957376775388318">Mètode d'introducció de dayi</translation> <translation id="8118860139461251237">Gestionar les baixades</translation> <translation id="8119572489781388874">Modifica la configuració</translation> @@ -5273,7 +5277,7 @@ <translation id="8226222018808695353">Prohibit</translation> <translation id="8226742006292257240">A continuació, trobareu la contrasenya de TPM generada aleatòriament que s'ha assignat al vostre ordinador:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Els atacants que actualment són a <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> poden provar d'instal·lar programes perillosos a l'ordinador amb els quals es pot robar o suprimir la vostra informació (per exemple, les fotos, les contrasenyes, els missatges i les targetes de crèdit).</translation> +<translation id="8230421197304563332">Els atacants que actualment són al lloc <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> poden provar d'instal·lar programes perillosos a l'ordinador per robar o suprimir la teva informació (per exemple, les fotos, les contrasenyes, els missatges i les targetes de crèdit).</translation> <translation id="8233254008506535819">Inclou al quadre de diàleg Esborra les dades de navegació l'opció per afegir llocs importants a la llista blanca.</translation> <translation id="8236231079192337250">Aplicació Galeria de Chrome Web Store per a controladors d'impressora</translation> <translation id="8238649969398088015">Consell d'ajuda</translation> @@ -5458,7 +5462,6 @@ <translation id="8472623782143987204">recolzat per maquinari</translation> <translation id="8475313423285172237">Un altre programa de l'ordinador ha afegit una extensió que pot canviar el funcionament de Chrome.</translation> <translation id="8475647382427415476">En aquest moment, Google Drive no ha pogut sincronitzar "<ph name="FILENAME" />". Ho tornarà a provar més tard.</translation> -<translation id="8476195663057048998">Esborra i restableix</translation> <translation id="8477241577829954800">Reemplaçat</translation> <translation id="8477384620836102176">&General</translation> <translation id="8480417584335382321">Zoom de la pàgina:</translation> @@ -5688,7 +5691,6 @@ <translation id="8785135611469711856">El connector no respon</translation> <translation id="8787254343425541995">Permet servidors intermediaris per a xarxes compartides</translation> <translation id="878763818693997570">El nom és massa llarg.</translation> -<translation id="8787865569533773240">Restableix la configuració de <ph name="IDS_SHORT_PRODUCT_NAME" /> modificada</translation> <translation id="8789375980715484686">Gestionar altres usuaris</translation> <translation id="8791534160414513928">Envia una sol·licitud de no seguiment amb el trànsit de navegació</translation> <translation id="8795668016723474529">Afegir una targeta de crèdit</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 5b13e4db..7094fd2 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -522,7 +522,6 @@ <translation id="1673103856845176271">Soubor je z bezpečnostních důvodů nedostupný.</translation> <translation id="1675023460278456180">Material (hybridní)</translation> <translation id="167832068858235403">snížit hlasitost</translation> -<translation id="1678331212993975953">Podrobnosti webu</translation> <translation id="1679068421605151609">Nástroje pro vývojáře</translation> <translation id="1681120471812444678">Přidat a nastavit tiskárny…</translation> <translation id="1682324559341535203">Registrace zařízení <ph name="DEVICE_TYPE" /></translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">Po dokončení otevřít</translation> <translation id="2372036074421194686">Chrome ve vašem počítači nalezl nežádoucí program (<ph name="UWS_NAME" />). Program nejspíš bude možné odstranit pomocí nástroje Chrome Cleanup Tool.</translation> <translation id="2375701438512326360">Vynutí, aby byla podpora dotykové obrazovky vždy povolena nebo zakázána, popřípadě aby byla povolena, když je dotyková obrazovka zjištěna při spuštění (výchozí možnost Automaticky).</translation> -<translation id="2377619091472055321">Obnovit změněná nastavení prohlížeče <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Vybrané soubory: <ph name="SELCTED_FILE_COUNT" /></translation> <translation id="2378982052244864789">Vyberte adresář rozšíření.</translation> <translation id="2379281330731083556">Tisk pomocí dialogového okna systému... <ph name="SHORTCUT_KEY" /></translation> @@ -1477,7 +1475,7 @@ <translation id="295947108480905647">Rozšíření <ph name="CHROME_EXTENSION_NAME" /> se chcete připojit k:</translation> <translation id="2959614062380389916">Zakázáno administrátorem</translation> <translation id="2960393411257968125">Jak správce hesel nakládá s automatickým vyplňováním pro identifikační údaje k synchronizaci.</translation> -<translation id="29611076221683977">Útočníci, kteří se aktuálně nacházejí na webu <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />, se mohou pokusit nainstalovat do vašeho počítače Mac nebezpečné programy, které mohou ukrást nebo smazat vaše informace (například fotky, hesla, zprávy nebo platební karty).</translation> +<translation id="29611076221683977">Útočníci, kteří se aktuálně nacházejí na webu <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />, se mohou pokusit nainstalovat vám do počítače Mac nebezpečné programy, které mohou ukrást nebo smazat vaše informace (například fotky, hesla, zprávy nebo platební karty).</translation> <translation id="2961695502793809356">Kliknutím přejdete vpřed, přidržením se zobrazí historie</translation> <translation id="296216853343927883">Branding Google v kontextové nabídce</translation> <translation id="2963151496262057773">Následující plugin nereaguje: <ph name="PLUGIN_NAME" /> Chcete jej zastavit?</translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">K obnovení operačního systému počítače budete potřebovat kartu SD nebo paměťovou jednotku USB pro obnovení.</translation> <translation id="305932878998873762">Modul Simple Cache pro protokol HTTP je nová mezipaměť. Při alokaci místa na disku spoléhá na systém souborů.</translation> <translation id="3062606427884046423">Používat pro oznámení médií v Chromu oznámení ve stylu Android MediaStyle.</translation> +<translation id="3063224679438508013">Automaticky spustit aplikaci pro poznámky</translation> <translation id="3063844757726132584">Všechny své aplikace můžete snadno otevřít pomocí tohoto šikovného spouštěče. Hrajte hry, videochatujte, poslouchejte hudbu, upravujte dokumenty nebo si stáhněte další aplikace.</translation> <translation id="3064388234319122767">Přepis (zdravo → здраво)</translation> <translation id="3065041951436100775">Zpětná vazba k ukončení procesu karty</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock na hesla</translation> <translation id="317583078218509884">Nové nastavení oprávnění webových stránek se projeví po opětovném načtení stránky.</translation> <translation id="3177048931975664371">Kliknutím skryjete heslo</translation> +<translation id="3177909033752230686">Jazyk stránky:</translation> <translation id="3180365125572747493">Zadejte prosím heslo k zašifrování tohoto souboru certifikátu.</translation> <translation id="3183139917765991655">Nástroj na import profilů</translation> <translation id="3184560914950696195">Do složky $1 nelze ukládat. Upravené obrázky se uloží do složky Stažené soubory.</translation> @@ -1996,6 +1996,7 @@ <translation id="3612673635130633812">Staženo pomocí rozšíření <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Zobrazit <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Otevřít v nové kartě</translation> +<translation id="3616113530831147358">Zvuk</translation> <translation id="3616741288025931835">&Smazat údaje o prohlížení...</translation> <translation id="3618849550573277856">Vyhledat „<ph name="LOOKUP_STRING" />“</translation> <translation id="3620292326130836921">Vše je zálohováno</translation> @@ -2291,7 +2292,6 @@ <translation id="3994878504415702912">Velikost písma</translation> <translation id="3995964755286119116">Nastavení fotoaparátu v přehrávači Adobe Flash Player se liší.</translation> <translation id="39964277676607559">Pro skript obsahu nelze načíst soubor JavaScriptu „<ph name="RELATIVE_PATH" />“.</translation> -<translation id="3996912167543967198">Resetování...</translation> <translation id="3997015411467176489">Povolit experimentální funkce pro prvky canvas</translation> <translation id="4002066346123236978">Název</translation> <translation id="40027638859996362">Přesunutí slova</translation> @@ -2388,6 +2388,7 @@ <translation id="4140559601186535628">Nabízené zprávy</translation> <translation id="4146026355784316281">Vždy otevřít pomocí systémového prohlížeče</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> chce zkontrolovat, zda se nabídka vztahuje na vaše zařízení se systémem Chrome OS. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Displej</translation> <translation id="4151403195736952345">Použít globální výchozí nastavení (zjistit)</translation> <translation id="4152177296285305182">Šifrované údaje si může přečíst pouze osoba, která zná přístupové heslo. Přístupové heslo se společnosti Google neodesílá, ani jej společnost Google neuchovává. Pokud jej zapomenete, budete muset resetovat synchronizaci.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 karta}few{# karty}many{# karty}other{# karet}}</translation> @@ -2452,6 +2453,7 @@ <translation id="4250229828105606438">Snímek obrazovky</translation> <translation id="4250680216510889253">Ne</translation> <translation id="4253168017788158739">Poznámka</translation> +<translation id="4254813446494774748">Jazyk překladu:</translation> <translation id="425573743389990240">Rychlost vybíjení baterie ve wattech (záporná hodnota znamená nabíjení baterie)</translation> <translation id="4256316378292851214">Uložit &video jako...</translation> <translation id="4258348331913189841">Systémy souborů</translation> @@ -2529,6 +2531,7 @@ <translation id="4365673000813822030">Jejda, synchronizace přestala fungovat.</translation> <translation id="4366509400410520531">Povoleno vámi</translation> <translation id="4367782753568896354">Nepodařilo se nainstalovat:</translation> +<translation id="436904870295243580">Najít další aplikace na psaní poznámek</translation> <translation id="4370975561335139969">Zadaný e-mail a heslo se neshodují.</translation> <translation id="437184764829821926">Rozšířené nastavení písma</translation> <translation id="4372884569765913867">1:1</translation> @@ -3205,6 +3208,7 @@ <translation id="5324674707192845912">Chystáte se zrušit registraci tohoto zařízení <ph name="DEVICE_TYPE" /> na Googlu za účelem deaktivace možnosti vzdáleného vyhledání, smazání a uzamknutí zařízení. Tato akce bude vyžadovat restart. Opravdu chcete pokračovat?</translation> <translation id="5324780743567488672">Nastavit časové pásmo automaticky podle polohy</translation> <translation id="5325120507747984426">Použije v režimu přehledu stabilní pořadí oken, které minimalizuje pohyb oken při přechodu do přehledu a jeho ukončení i mezi relacemi přehledu.</translation> +<translation id="5326182685622510062">K dispozici je několik implementací procesu vykreslování grafiky pro 2D prvky canvas. Tyto různé implementace mají různé charakteristiky výkonu. Zapnutím tohoto příznaku u 2d kontextů prvků canvas povolíte přepínání mezi těmito implementacemi za běhu v závislosti na použití prvku canvas, což umožní dosáhnout vyššího výkonu. Bude například možné přejít z implementace, která používá GPU, na implementaci, která GPU nepoužívá.</translation> <translation id="5327248766486351172">Název</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Smazat</translation> @@ -3337,7 +3341,6 @@ <translation id="54870580363317966">Vyberte avatara pro dozorovaného uživatele.</translation> <translation id="5488468185303821006">Povolit v anonymním režimu</translation> <translation id="5489390182170331803">Pasivní výchozí chování posluchačů událostí na úrovni dokumentu</translation> -<translation id="5489789060051091748">Hlasité čtení vybraného textu: pokud podržíte tlačítko Hledat a kliknete na text nebo jej přetáhnete, bude nahlas přečten</translation> <translation id="549294555051714732">Porovnávání podřetězců pro návrhy Automatického vyplňování</translation> <translation id="5493996328530898436">Nová strategie mixování zvuku</translation> <translation id="5494362494988149300">Po &dokončení otevřít</translation> @@ -3694,9 +3697,6 @@ <translation id="5991049340509704927">Zvětšit</translation> <translation id="5991774521050363748">Bude povoleno vlastní rozvržení pro oznámení Web Notifications. Rozvržení oznámení bude nepatrně vylepšeno způsobem, který jinak není možný.</translation> <translation id="5993332328670040093">Vaše využití dat již nebude měřeno</translation> -<translation id="5996258716334177896">Profil nelze správně otevřít. - -Některé funkce nemusí být dostupné. Zkontrolujte, zda profil existuje a zda máte oprávnění ke čtení a zápisu jeho obsahu.</translation> <translation id="6001799583597751002">Kódy PIN se neshodují:</translation> <translation id="6003177993629630467">Je možné, že se <ph name="PRODUCT_NAME" /> nebude moci aktualizovat.</translation> <translation id="6003294706906016758">Aktivovat rámec ve stylu webových aplikací pro hostované aplikace</translation> @@ -4146,7 +4146,6 @@ <translation id="6637362044401670482">Aktivuje u vertikální klávesnice podporu posouvání za okraj.</translation> <translation id="6639554308659482635">Paměť SQLite</translation> <translation id="6643016212128521049">Vymazat</translation> -<translation id="6644756108386233011">Obnovit změněná nastavení aplikace <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">Adresa URL pro odvolání certifikační autority Netscape</translation> <translation id="6647838571840953560">Aktuální kanál: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Chviličku…</translation> @@ -4254,7 +4253,6 @@ <translation id="6810613314571580006">Přihlašovat se na weby automaticky pomocí uložených identifikačních údajů. Když je tato funkce vypnutá, budete před každým přihlášením na web požádáni o potvrzení.</translation> <translation id="6812349420832218321">Aplikaci <ph name="PRODUCT_NAME" /> nelze spustit jako uživatel root.</translation> <translation id="6812841287760418429">Uchovat změny</translation> -<translation id="6815353853907306610">Prohlížeč <ph name="IDS_SHORT_PRODUCT_NAME" /> rozpoznal, že se jeho nastavení možná změnilo bez vašeho vědomí. Chcete tato nastavení obnovit na původní výchozí hodnoty?</translation> <translation id="6815551780062710681">upravit</translation> <translation id="6817358880000653228">Uložená hesla pro tento web:</translation> <translation id="6820008762872335722">Resetovat a příště se zeptat</translation> @@ -4371,6 +4369,7 @@ (vyžaduje předchozí heslo)</translation> <translation id="6981982820502123353">Usnadnění</translation> <translation id="6981992744085917617">Zvolte metodu, pomocí které budete znovu získávat přístup do účtu.</translation> +<translation id="698231206551913481">Po odebrání tohoto uživatele budou trvale smazány všechny soubory a místní data, která jsou k němu přiřazena.</translation> <translation id="6982896539684144327">Zjištěna tiskárna výrobce <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">Registrovaný OID</translation> <translation id="6983991971286645866">Všechny úpravy budou uloženy do souboru $1.</translation> @@ -4457,6 +4456,7 @@ <translation id="7073555242265688099">Pokud máte jiná zařízení Chrome, automaticky se synchronizují a váš telefon je tedy odemkne také.</translation> <translation id="707392107419594760">Vyberte klávesnici:</translation> <translation id="7075513071073410194">Šifrování PKCS #1 MD5 s RSA</translation> +<translation id="7075625805486468288">Správa certifikátů a nastavení protokolů HTTPS/SSL</translation> <translation id="7076293881109082629">Přihlášení</translation> <translation id="7077829361966535409">Přihlašovací stránku se pomocí aktuálního nastavení proxy serveru nepodařilo načíst. <ph name="GAIA_RELOAD_LINK_START" />Zkuste se prosím přihlásit znovu<ph name="GAIA_RELOAD_LINK_END" />, nebo použijte jiné <ph name="PROXY_SETTINGS_LINK_START" />nastavení proxy serveru<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignorované obslužné nástroje protokolů</translation> @@ -4504,7 +4504,6 @@ <translation id="7141105143012495934">Přihlášení selhalo, protože se nepodařilo načíst podrobnosti účtu. Kontaktujte administrátora nebo to zkuste znovu.</translation> <translation id="7143207342074048698">Připojování</translation> <translation id="7144878232160441200">Opakovat</translation> -<translation id="7148311641502571842">Plugin <ph name="PLUGIN_NAME" /> byl deaktivován. Chcete-li jej znovu aktivovat, přejděte na stránku <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Klasické tiskárny</translation> <translation id="7154130902455071009">Změnit úvodní stránku na: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Výchozí režim čínštiny je zjednodušená čínština</translation> @@ -4781,6 +4780,7 @@ <translation id="7540972813190816353">Při kontrole aktualizací došlo k chybě: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Výjimky obrázků</translation> <translation id="7543104066686362383">Aktivovat v tomto zařízení <ph name="IDS_SHORT_PRODUCT_NAME" /> funkce ladění</translation> +<translation id="7543393759143837504">Pokud nemůžete najít, co hledáte, navštivte <ph name="BEGIN_LINK_CHROMIUM" />nápovědu Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Přehrávat náhodně</translation> <translation id="7545288882499673859">Strategie mazání paměti pro účely pokročilé správy zatížení</translation> <translation id="7545415673537747415">Způsob, jakým Google používá vaši historii procházení k přizpůsobení Vyhledávání, reklam a dalších služeb Google, můžete ovládat pomocí <ph name="BEGIN_LINK" />Ovládacích prvků aktivity Google<ph name="END_LINK" />.</translation> @@ -5016,7 +5016,6 @@ <translation id="7879478708475862060">Sledovat režim vstupu</translation> <translation id="7880836220014399562">Balíček <ph name="BUNDLE_NAME" /> přidá tyto aplikace a rozšíření:</translation> <translation id="7881969471599061635">Vypnout titulky</translation> -<translation id="7884988936047469945">Experimentální funkce přístupnosti</translation> <translation id="7885253890047913815">Nedávné cíle</translation> <translation id="7887192723714330082">Reagovat na „Ok Google“, když je zapnuta a odemknuta obrazovka</translation> <translation id="7887334752153342268">Duplikovat</translation> @@ -5084,6 +5083,7 @@ <translation id="7974067550340408553">Zasílat oznámení pokaždé, když funkce Smart Lock odemkne zařízení <ph name="DEVICE_TYPE" /></translation> <translation id="7974566588408714340">Zkusit znovu pomocí rozšíření <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Přesah obrazu</translation> +<translation id="7976960358280528247">Aktivuje uživatelské rozhraní procházení oken (vizuální zpětnou vazbu ke klávesové kombinaci Alt + Tab).</translation> <translation id="7977551819349545646">Aktualizace zařízení Chromebox...</translation> <translation id="7978412674231730200">Soukromý klíč</translation> <translation id="7979036127916589816">Chyba synchronizace</translation> @@ -5111,6 +5111,7 @@ Svůj soubor klíče uchovávejte na bezpečném místě. Budete jej potřebovat při vytváření nových verzí svého rozšíření.</translation> <translation id="799923393800005025">Může zobrazit</translation> +<translation id="8000066093800657092">Žádná síť</translation> <translation id="8004582292198964060">Prohlížeč</translation> <translation id="8007030362289124303">Baterie je téměř vybitá</translation> <translation id="8008356846765065031">Internet byl odpojen. Zkontrolujte prosím své internetové připojení.</translation> @@ -5185,6 +5186,7 @@ <translation id="8116190140324504026">Další informace...</translation> <translation id="8116483400482790018">Vlastní pravopisný slovník</translation> <translation id="8116972784401310538">&Správce záložek</translation> +<translation id="8117838550640702864">Nastavení poznámek</translation> <translation id="8117957376775388318">Metoda zadávání Dayi</translation> <translation id="8118860139461251237">Správa stahování</translation> <translation id="8119572489781388874">Změnit nastavení</translation> @@ -5279,7 +5281,7 @@ <translation id="8226222018808695353">Zakázané</translation> <translation id="8226742006292257240">Níže je náhodně vygenerované heslo modulu TPM, které bylo přiřazeno vašemu počítači:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Útočníci, kteří se aktuálně nacházejí na webu <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />, se mohou pokusit nainstalovat do vašeho počítače nebezpečné programy, které mohou ukrást nebo smazat vaše informace (například fotky, hesla, zprávy nebo platební karty).</translation> +<translation id="8230421197304563332">Útočníci, kteří se aktuálně nacházejí na webu <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />, se mohou pokusit nainstalovat vám do počítače nebezpečné programy, které mohou ukrást nebo smazat vaše informace (například fotky, hesla, zprávy nebo platební karty).</translation> <translation id="8233254008506535819">Zahrnout v dialogovém okně smazání údajů o prohlížení možnost přidání důležitých webů na seznam povolených.</translation> <translation id="8236231079192337250">Aplikace Galerie Internetového obchodu Chrome pro ovladače tiskáren</translation> <translation id="8238649969398088015">Tip nápovědy</translation> @@ -5465,7 +5467,6 @@ <translation id="8472623782143987204">hardwarová</translation> <translation id="8475313423285172237">Jiný program ve vašem počítači nainstaloval rozšíření, které může měnit funkce Chromu.</translation> <translation id="8475647382427415476">Soubor <ph name="FILENAME" /> nyní nebylo možné synchronizovat. Disk Google to zkusí znovu později.</translation> -<translation id="8476195663057048998">Vymazat a resetovat</translation> <translation id="8477241577829954800">Nahrazen</translation> <translation id="8477384620836102176">&Obecné</translation> <translation id="8480417584335382321">Přiblížit/oddálit stránku:</translation> @@ -5695,7 +5696,6 @@ <translation id="8785135611469711856">Plugin nereaguje</translation> <translation id="8787254343425541995">Povolit proxy servery u sdílených sítí</translation> <translation id="878763818693997570">Tento název je příliš dlouhý.</translation> -<translation id="8787865569533773240">Obnovit změněná nastavení aplikace <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Správa ostatních uživatelů</translation> <translation id="8791534160414513928">Posílat při procházení webů požadavek Do Not Track</translation> <translation id="8795668016723474529">Přidat platební kartu</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index 6d2bcf9..0650b780 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -518,7 +518,6 @@ <translation id="1673103856845176271">Der kunne ikke opnås adgang til filen af sikkerhedsmæssige årsager.</translation> <translation id="1675023460278456180">Material hybrid</translation> <translation id="167832068858235403">lyd ned</translation> -<translation id="1678331212993975953">Websiteoplysninger</translation> <translation id="1679068421605151609">Udviklerværktøjer</translation> <translation id="1681120471812444678">Konfigurer til at tilføje printere...</translation> <translation id="1682324559341535203">Tilføj <ph name="DEVICE_TYPE" /></translation> @@ -1007,7 +1006,6 @@ <translation id="2371076942591664043">Åbn når &færdigt</translation> <translation id="2372036074421194686">Chrome har registreret, at et uønsket program (<ph name="UWS_NAME" />) er installeret på din computer. Du kan muligvis fjerne det ved at køre Oprydningsværktøj til Chrome.</translation> <translation id="2375701438512326360">Tving support for touchskærm til altid at være aktiveret eller deaktiveret eller til at være aktiveret, når der registreres en touchskærm ved opstart (standard er Automatisk).</translation> -<translation id="2377619091472055321">Nulstil de ændrede indstillinger for <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> filer valgt</translation> <translation id="2378982052244864789">Vælg udvidelsens mappe.</translation> <translation id="2379281330731083556">Dialogboks til Udskriv via system... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Hvis du skulle få brug for at genoprette din computers operativsystem, skal du bruge et SD-kort til genoprettelse eller en USB-nøgle.</translation> <translation id="305932878998873762">Simple Cache til HTTP er en ny cache. Den kræver tildeling af diskplads af filsystemet.</translation> <translation id="3062606427884046423">Brug underretninger om Android MediaStyle til Chrome-medieunderretninger.</translation> +<translation id="3063224679438508013">Åbn noteappen automatisk</translation> <translation id="3063844757726132584">Få adgang til alle dine apps via denne smarte appliste. Du kan spille spil, videochatte, lytte til musik, redigere dokumenter eller hente flere apps.</translation> <translation id="3064388234319122767">Translitteration (zdravo → здраво)</translation> <translation id="3065041951436100775">Feedback i tilfælde, hvor fanen døde.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock til adgangskoder</translation> <translation id="317583078218509884">De nye indstillinger for websitetilladelser træder i kraft, når du har genindlæst siden.</translation> <translation id="3177048931975664371">Klik for at skjule adgangskode</translation> +<translation id="3177909033752230686">Sidens sprog:</translation> <translation id="3180365125572747493">Angiv en adgangskode til kryptering af denne certifikatfil.</translation> <translation id="3183139917765991655">Profilimport</translation> <translation id="3184560914950696195">Der kunne ikke gemmes til $1. Redigerede billeder vil blive gemt i mappen Downloads.</translation> @@ -1836,7 +1836,7 @@ <translation id="3414856743105198592">Formatering af de flytbare medier kommer til at slette alle data. Vil du fortsætte?</translation> <translation id="3414952576877147120">Størrelse:</translation> <translation id="3420980393175304359">Skift person</translation> -<translation id="342383653005737728">Din ejer kan vælge at sende diagnostik og brugsdata for denne enhed til Google. Du kan se <ph name="BEGIN_LINK1" />indstillingen<ph name="END_LINK1" /> her. <ph name="BEGIN_LINK2" />Få flere oplysninger<ph name="END_LINK2" /></translation> +<translation id="342383653005737728">Ejeren kan vælge at sende diagnostik og brugsdata for denne enhed til Google. Du kan se <ph name="BEGIN_LINK1" />indstillingen<ph name="END_LINK1" /> her. <ph name="BEGIN_LINK2" />Få flere oplysninger<ph name="END_LINK2" /></translation> <translation id="3423858849633684918">Genstart <ph name="PRODUCT_NAME" /></translation> <translation id="3425233587047449821">Ny koreansk IME</translation> <translation id="3426704822745136852">Angiv antallet af rastertråde.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Downloadet af <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Vis <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Åbn på ny fane</translation> +<translation id="3616113530831147358">Lyd</translation> <translation id="3616741288025931835">&Slet browserdata...</translation> <translation id="3618849550573277856">Slå "<ph name="LOOKUP_STRING" />" op</translation> <translation id="3620292326130836921">Alt er sikkerhedskopieret.</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">Kameraindstillinger for Adobe Flash Player er forskellige.</translation> <translation id="39964277676607559">Javascriptet '<ph name="RELATIVE_PATH" />' til indholdsscript kunne ikke indlæses.</translation> -<translation id="3996912167543967198">Nulstiller...</translation> <translation id="3997015411467176489">Eksperimentelle kanvasfunktioner</translation> <translation id="4002066346123236978">Titel</translation> <translation id="40027638859996362">Flytning af ord</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">Push-meddelelser</translation> <translation id="4146026355784316281">Åbn altid med systemets visningsprogram</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> vil gerne kontrollere, om din Chrome OS-enhed er berettiget til et tilbud. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Visning</translation> <translation id="4151403195736952345">Brug globale standardindstillinger (registrer)</translation> <translation id="4152177296285305182">Det er kun personer med din adgangssætning, der kan læse dine krypterede data. Adgangssætningen sendes ikke til eller lagres ikke af Google. Hvis du glemmer din adgangssætning, skal du nulstille synkroniseringen.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 fane}one{# faner}other{# faner}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">Skærmbillede</translation> <translation id="4250680216510889253">Nej</translation> <translation id="4253168017788158739">Note</translation> +<translation id="4254813446494774748">Sprog, der skal oversættes til:</translation> <translation id="425573743389990240">Batteriets afladningshastighed i watt (en negativ værdi betyder, at batteriet oplader)</translation> <translation id="4256316378292851214">Ge&m video som...</translation> <translation id="4258348331913189841">Filsystemer</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">Ups, synkroniseringen fungerer ikke.</translation> <translation id="4366509400410520531">Tilladt af dig</translation> <translation id="4367782753568896354">Vi kunne ikke installere:</translation> +<translation id="436904870295243580">Find flere noteapps</translation> <translation id="4370975561335139969">Den e-mail og adgangskode, du indtastede, stemmer ikke overens</translation> <translation id="437184764829821926">Avancerede indstillinger for skrifttype</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3210,6 +3213,7 @@ <translation id="5324674707192845912">Du er ved at framelde denne <ph name="DEVICE_TYPE" /> på Google og deaktivere muligheden for at finde, slette og låse enheden via fjernadgang. Dette kræver en genstart. Vil du fortsætte?</translation> <translation id="5324780743567488672">Indstil tidszonen automatisk ved hjælp af din placering</translation> <translation id="5325120507747984426">Anvender en stabil vinduesrækkefølge i oversigtstilstand, som forsøger at minimere bevægelsen af vinduer, når du åbner/lukker oversigten og skifter mellem oversigtssessionerne.</translation> +<translation id="5326182685622510062">Der er flere implementeringer af kanalen til gengivelse af grafik for lærreder i 2D. Disse forskellige implementeringer har forskellige kendetegn, der viser deres effektivitet. Hvis du vælger denne markering, gør du det muligt for lærredskontekst i 2D at skifte mellem disse implementeringer på et øjeblik, baseret på hvordan lærredet bruges med henblik på at forbedre effektiviteten. Der kan f.eks. skiftes fra en implementering, der anvender en grafikprocessor til én, der ikke gør det.</translation> <translation id="5327248766486351172">Navn</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Slet</translation> @@ -3342,7 +3346,6 @@ <translation id="54870580363317966">Vælg en avatar for denne administrerede bruger.</translation> <translation id="5488468185303821006">Tillad i inkognito</translation> <translation id="5489390182170331803">Lyttefunktioner for hændelser på dokumentniveau er passive som standard</translation> -<translation id="5489789060051091748">Markér for at få læst højt: Hold Søg nede, og klik eller træk for at få noget læst højt</translation> <translation id="549294555051714732">Understrengsmatchning for AutoFyld-forslag</translation> <translation id="5493996328530898436">Ny strategi for blanding af lydgengivelse</translation> <translation id="5494362494988149300">Åbn når &færdigt</translation> @@ -3699,7 +3702,6 @@ <translation id="5991049340509704927">Forstør</translation> <translation id="5991774521050363748">Aktivér tilpassede layouts for Webunderretninger. De har diskrete layoutforbedringer, som ellers ikke er mulige.</translation> <translation id="5993332328670040093">Dit dataforbrug måles ikke længere.</translation> -<translation id="5996258716334177896">Din profil blev ikke åbnet korrekt. Nogle funktioner er muligvis ikke tilgængelige. Kontroller, at profilen eksisterer, og at du har tilladelse til at læse og skrive dens indhold.</translation> <translation id="6001799583597751002">Pinkoderne stemmer ikke overens:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> kan muligvis ikke holdes opdateret af sig selv.</translation> <translation id="6003294706906016758">Aktiverer rammen i webappformat for hostede apps</translation> @@ -4150,7 +4152,6 @@ <translation id="6637362044401670482">Aktiverer understøttelse af overscrolling på virtuelt tastatur.</translation> <translation id="6639554308659482635">SQLite-hukommelse</translation> <translation id="6643016212128521049">Ryd</translation> -<translation id="6644756108386233011">Vil du nulstille de ændrede indstillinger for <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">Webadresse for tilbagekaldelse af Netscape-certifikatautoritet</translation> <translation id="6647838571840953560">I øjeblikket på <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Vent et øjeblik…</translation> @@ -4258,7 +4259,6 @@ <translation id="6810613314571580006">Log automatisk ind på websites ved hjælp af gemte loginoplysninger. Når funktionen er slået fra, bliver du bedt om at bekræfte, hver gang du vil logge ind på et website.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> kan ikke køres med rodcertifikat.</translation> <translation id="6812841287760418429">Behold ændringer</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> registrerede, at dine browserindstillinger muligvis er ændret, uden at du er klar over det. Vil du nulstille dem til de oprindelige standardværdier?</translation> <translation id="6815551780062710681">rediger</translation> <translation id="6817358880000653228">Gemte adgangskoder for dette website:</translation> <translation id="6820008762872335722">Nulstil til at spørge</translation> @@ -4375,6 +4375,7 @@ <translation id="6980956047710795611">Overfør alle Chrome OS-data til den nye adgangskode (kræver forrige adgangskode)</translation> <translation id="6981982820502123353">Hjælpefunktioner</translation> <translation id="6981992744085917617">Vælg den metode, du vil bruge til at logge ind på din konto igen:</translation> +<translation id="698231206551913481">Alle filer og lokale data, der er knyttet til denne bruger, slettes permanent, når brugeren fjernes.</translation> <translation id="6982896539684144327">En printer fra <ph name="VENDOR_NAME" /> blev fundet</translation> <translation id="6983783921975806247">Registreret OID</translation> <translation id="6983991971286645866">Alle ændringer gemmes i $1.</translation> @@ -4459,6 +4460,7 @@ <translation id="7073555242265688099">Hvis du har andre Chrome-enheder, vil de blive synkroniseret automatisk, så telefonen vil også låse dem op.</translation> <translation id="707392107419594760">Vælg dit tastatur:</translation> <translation id="7075513071073410194">PKCS #1 MD5 med RSA-kryptering</translation> +<translation id="7075625805486468288">Administrer HTTPS-/SSL-certifikater og -indstillinger</translation> <translation id="7076293881109082629">Login</translation> <translation id="7077829361966535409">Loginsiden kunne ikke indlæses med de aktuelle proxyindstillinger. <ph name="GAIA_RELOAD_LINK_START" />Prøv at logge ind igen<ph name="GAIA_RELOAD_LINK_END" />, eller brug nogle andre <ph name="PROXY_SETTINGS_LINK_START" />proxyindstillinger<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignorerede protokolhåndteringer</translation> @@ -4506,7 +4508,6 @@ <translation id="7141105143012495934">Login mislykkedes, da dine kontooplysninger ikke kunne hentes. Kontakt din administrator, eller prøv igen.</translation> <translation id="7143207342074048698">Opretter forbindelse</translation> <translation id="7144878232160441200">Prøv igen</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> er blevet deaktiveret. Gå til <ph name="CHROME_PLUGINS_LINK" /> for at aktivere den igen .</translation> <translation id="715118844758971915">Klassiske printere</translation> <translation id="7154130902455071009">Skifte din startside til: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Den oprindelige tilstand af kinesisk er forenklet kinesisk</translation> @@ -4785,6 +4786,7 @@ <translation id="7540972813190816353">Der opstod en fejl ved søgning efter opdateringer: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Undtagelser for billeder</translation> <translation id="7543104066686362383">Aktivér fejlfindingsfunktioner på denne <ph name="IDS_SHORT_PRODUCT_NAME" />-enhed</translation> +<translation id="7543393759143837504">Gå til <ph name="BEGIN_LINK_CHROMIUM" />Hjælp til Google Chrome<ph name="END_LINK_CHROMIUM" />, hvis du ikke kan finde det, du leder efter.</translation> <translation id="7544853251252956727">Bland</translation> <translation id="7545288882499673859">Strategi for kassering af hukommelse for avanceret håndtering af hukommelsespres</translation> <translation id="7545415673537747415">Kontrollér, hvordan Google bruger din browserhistorik til at personliggøre Søgning, annoncer og andre Google-tjenester fra <ph name="BEGIN_LINK" />Administration af aktivitet på Google<ph name="END_LINK" />.</translation> @@ -5022,7 +5024,6 @@ <translation id="7879478708475862060">Følg indtastningstilstand</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" tilføjer disse apps og udvidelser.</translation> <translation id="7881969471599061635">Deaktiver undertekster</translation> -<translation id="7884988936047469945">Eksperimentelle hjælpefunktioner</translation> <translation id="7885253890047913815">Seneste destinationer</translation> <translation id="7887192723714330082">Reager på "Ok Google", når skærmen er tændt og låst op</translation> <translation id="7887334752153342268">Dupliker</translation> @@ -5090,6 +5091,7 @@ <translation id="7974067550340408553">Få underretninger på din telefon, hver gang Smart Lock låser din <ph name="DEVICE_TYPE" /> op.</translation> <translation id="7974566588408714340">Prøv igen ved hjælp af <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Overscan</translation> +<translation id="7976960358280528247">Aktivér brugerfladen for vinduescyklus (visuel feedback for Alt+Tab).</translation> <translation id="7977551819349545646">Chromebox opdateres...</translation> <translation id="7978412674231730200">Privat nøgle</translation> <translation id="7979036127916589816">Synkroniseringsfejl</translation> @@ -5117,6 +5119,7 @@ Opbevar din nøglefil på et sikkert sted. Du skal bruge den til at oprette nye versioner af din udvidelse.</translation> <translation id="799923393800005025">Kan se</translation> +<translation id="8000066093800657092">Intet netværk</translation> <translation id="8004582292198964060">Browser</translation> <translation id="8007030362289124303">Lavt batteriniveau</translation> <translation id="8008356846765065031">Internetforbindelsen blev afbrudt. Kontrollér din internetforbindelse.</translation> @@ -5191,6 +5194,7 @@ <translation id="8116190140324504026">Flere oplysninger...</translation> <translation id="8116483400482790018">Brugerdefineret retskrivningsordbog</translation> <translation id="8116972784401310538">&Bogmærkeadministrator</translation> +<translation id="8117838550640702864">Noteindstillinger</translation> <translation id="8117957376775388318">Dayi indtastningsmetode</translation> <translation id="8118860139461251237">Administrere dine downloads</translation> <translation id="8119572489781388874">Rediger indstillinger</translation> @@ -5470,7 +5474,6 @@ <translation id="8472623782143987204">hardwarebaseret</translation> <translation id="8475313423285172237">Et andet program på din computer tilføjede en udvidelse, der kan ændre den måde, hvorpå Chrome fungerer.</translation> <translation id="8475647382427415476">Google Drev kunne ikke synkronisere "<ph name="FILENAME" />" på nuværende tidspunkt. Google Drev prøver igen senere.</translation> -<translation id="8476195663057048998">Ryd og nulstil</translation> <translation id="8477241577829954800">Tilsidesat</translation> <translation id="8477384620836102176">&Generelt</translation> <translation id="8480417584335382321">Sidezoom:</translation> @@ -5701,7 +5704,6 @@ <translation id="8785135611469711856">Plugin svarer ikke</translation> <translation id="8787254343425541995">Tillad proxyer til delte netværk</translation> <translation id="878763818693997570">Navnet er for langt</translation> -<translation id="8787865569533773240">Nulstil de ændrede indstillinger for <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Administrer andre brugere</translation> <translation id="8791534160414513928">Send en anmodning om "Do Not Track" sammen med din browsertrafik</translation> <translation id="8795668016723474529">Tilføj et kreditkort</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index b99c6123..67300ac7 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -518,7 +518,6 @@ <translation id="1673103856845176271">Auf die Datei konnte aus Sicherheitsgründen nicht zugegriffen werden.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">Leiser</translation> -<translation id="1678331212993975953">Websitedetails</translation> <translation id="1679068421605151609">Entwicklertools</translation> <translation id="1681120471812444678">Einrichten und Drucker hinzufügen…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> registrieren</translation> @@ -1007,7 +1006,6 @@ <translation id="2371076942591664043">Nach &Download öffnen</translation> <translation id="2372036074421194686">Chrome hat ein unerwünschtes Programm auf Ihrem Computer gefunden: <ph name="UWS_NAME" />. Sie können es möglicherweise entfernen, indem Sie den Chrome Software Cleaner ausführen.</translation> <translation id="2375701438512326360">Touchscreen-Unterstützung bleibt immer deaktiviert oder aktiviert oder wird aktiviert, wenn beim Systemstart ein Touchscreen erkannt wird (automatisch, Standardeinstellung)</translation> -<translation id="2377619091472055321">Geänderte <ph name="IDS_SHORT_PRODUCT_NAME" />-Einstellungen zurücksetzen</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> Dateien ausgewählt</translation> <translation id="2378982052244864789">Erweiterungsverzeichnis auswählen</translation> <translation id="2379281330731083556">Über das Systemdialogfeld drucken... <ph name="SHORTCUT_KEY" /></translation> @@ -1554,6 +1552,7 @@ <translation id="3058212636943679650">Falls Sie das Betriebssystem Ihres Computers einmal wiederherstellen müssen, benötigen Sie eine Wiederherstellungs-SD-Karte oder einen Wiederherstellungs-USB-Speicherstick.</translation> <translation id="305932878998873762">Der einfache Cache für HTTP ist eine neue Art von Zwischenspeicher, bei dem die Zuweisung von Festplattenspeicherplatz vom Dateisystem übernommen wird.</translation> <translation id="3062606427884046423">Android-MediaStyle-Benachrichtigungen für Chrome-Medienbenachrichtigungen verwenden.</translation> +<translation id="3063224679438508013">Notizen-App automatisch starten</translation> <translation id="3063844757726132584">Greifen Sie über diesen praktischen Launcher auf alle Ihre Apps zu. Spielen Sie Spiele, führen Sie Videochats, hören Sie Musik, bearbeiten Sie Dokumente oder laden Sie weitere Apps herunter.</translation> <translation id="3064388234319122767">Transliteration (zdravo → здраво)</translation> <translation id="3065041951436100775">Feedback zur Tab-Beendigung</translation> @@ -1644,6 +1643,7 @@ <translation id="3172213052701798825">Google Smart Lock für Passwörter</translation> <translation id="317583078218509884">Neue Einstellungen zu Websiteberechtigungen werden nach dem Aktualisieren der Seite wirksam.</translation> <translation id="3177048931975664371">Hier klicken, um Passwort zu verbergen</translation> +<translation id="3177909033752230686">Sprache der Seite:</translation> <translation id="3180365125572747493">Bitte geben Sie ein Passwort zur Verschlüsselung dieser Zertifikatdatei ein.</translation> <translation id="3183139917765991655">Profilimport</translation> <translation id="3184560914950696195">Fehler beim Speichern unter $1. Bearbeitete Bilder werden im Ordner "Downloads" gespeichert.</translation> @@ -1994,6 +1994,7 @@ <translation id="3612673635130633812">Heruntergeladen von <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">"<ph name="FOLDER_NAME" />" anzeigen</translation> <translation id="3613422051106148727">In &neuem Tab öffnen</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Browserdaten löschen...</translation> <translation id="3618849550573277856">"<ph name="LOOKUP_STRING" />" nachschlagen</translation> <translation id="3620292326130836921">Alle Daten gesichert</translation> @@ -2290,7 +2291,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">Die Adobe Flash Player-Kameraeinstellungen unterscheiden sich von den Standardeinstellungen.</translation> <translation id="39964277676607559">JavaScript-Datei "<ph name="RELATIVE_PATH" />" konnte nicht für das Content-Skript geladen werden.</translation> -<translation id="3996912167543967198">Einstellungen werden zurückgesetzt...</translation> <translation id="3997015411467176489">Experimentelle Canvas-Funktionen</translation> <translation id="4002066346123236978">Titel</translation> <translation id="40027638859996362">Wort verschieben</translation> @@ -2323,7 +2323,7 @@ <translation id="406070391919917862">Apps im Hintergrund</translation> <translation id="4062251648694601778">Viel Spaß mit Ihrem <ph name="SHORT_PRODUCT_NAME" />-Gerät. Sie haben Fragen? Hilfe erhalten Sie ganz einfach durch Klicken auf "?" in der Statusleiste.</translation> <translation id="4065876735068446555">Eventuell müssen Sie die Anmeldeseite des verwendeten Netzwerks (<ph name="NETWORK_ID" />) aufrufen.</translation> -<translation id="4068506536726151626">Diese Seite enthält Elemente von folgenden Websites, die Ihren Standort verfolgen:</translation> +<translation id="4068506536726151626">Diese Seite enthält Elemente von folgenden Websites, die Ihren Standort nachverfolgen:</translation> <translation id="4070370845051020638">Kantonesische Eingabemethode</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: Anmeldefehler</translation> <translation id="4072248638558688893">Tamil-Tastatur (phonetisch)</translation> @@ -2387,6 +2387,7 @@ <translation id="4140559601186535628">Push-Nachrichten</translation> <translation id="4146026355784316281">Immer mit System Viewer öffnen</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> möchte überprüfen, ob ein Angebot für Ihr Chrome OS-Gerät gültig ist. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Ansicht</translation> <translation id="4151403195736952345">Globalen Standard verwenden (Erkennen)</translation> <translation id="4152177296285305182">Verschlüsselte Daten können nur von jemandem gelesen werden, der Ihre Passphrase kennt. Diese wird nicht an Google gesendet oder von Google gespeichert. Falls Sie Ihre Passphrase vergessen, müssen Sie die Synchronisierung zurücksetzen.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 Tab}other{# Tabs}}</translation> @@ -2451,6 +2452,7 @@ <translation id="4250229828105606438">Screenshot</translation> <translation id="4250680216510889253">Nein</translation> <translation id="4253168017788158739">Notiz</translation> +<translation id="4254813446494774748">Zielsprache:</translation> <translation id="425573743389990240">Entladerate des Akkus in Watt. Ein negativer Wert bedeutet, dass der Akku gerade aufgeladen wird.</translation> <translation id="4256316378292851214">Video &speichern unter...</translation> <translation id="4258348331913189841">Dateisysteme</translation> @@ -2528,6 +2530,7 @@ <translation id="4365673000813822030">Hoppla, die Synchronisierung funktioniert nicht mehr.</translation> <translation id="4366509400410520531">Von Ihnen zugelassen</translation> <translation id="4367782753568896354">Folgende Erweiterungen konnten nicht installiert werden:</translation> +<translation id="436904870295243580">Weitere Notizen-Apps suchen</translation> <translation id="4370975561335139969">Die E-Mail-Adresse und das Passwort, die Sie eingegeben haben, stimmen nicht überein.</translation> <translation id="437184764829821926">Erweiterte Schriftarteinstellungen</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3204,6 +3207,7 @@ <translation id="5324674707192845912">Sie möchten die <ph name="DEVICE_TYPE" />-Registrierung bei Google aufheben, um das Lokalisieren, Löschen und Sperren des Geräts per Remotezugriff zu deaktivieren. Dazu ist ein Neustart erforderlich. Möchten Sie fortfahren?</translation> <translation id="5324780743567488672">Zeitzone automatisch anhand des Standorts einstellen</translation> <translation id="5325120507747984426">Verwendet eine stabile Fensteranordnung im Übersichtsmodus, um die Verschiebung von Fenstern beim Starten bzw. Beenden des Übersichtsmodus und zwischen Übersichtssitzungen zu minimieren</translation> +<translation id="5326182685622510062">Es gibt mehrere Implementierungen der Grafik-Rendering-Pipelines für das 2D-Canvas. Diese Implementierungen weisen unterschiedliche Leistungsmerkmale auf. Durch Aktivieren dieser Einstellung können Canvas-2D-Kontexte unmittelbar zwischen den Implementierungen wechseln, um die Leistung je nach Canvas-Nutzung zu optimieren. So ist beispielsweise der Wechsel von einer Implementierung, bei der die GPU verwendet wird, zu einer ohne GPU-Nutzung möglich.</translation> <translation id="5327248766486351172">Name</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Löschen</translation> @@ -3336,7 +3340,6 @@ <translation id="54870580363317966">Wählen Sie einen Avatar für den betreuten Nutzer aus.</translation> <translation id="5488468185303821006">Im Inkognitomodus zulassen</translation> <translation id="5489390182170331803">Standardeinstellung "Passiv" für Ereignis-Listener auf Dokumentebene</translation> -<translation id="5489789060051091748">Sprachausgabe durch Auswählen: Halten Sie die Suchtaste gedrückt und klicken oder ziehen Sie, um etwas gesprochen zu hören</translation> <translation id="549294555051714732">Teilstring-Übereinstimmung für AutoFill-Vorschläge</translation> <translation id="5493996328530898436">Neue Mixing-Strategie für die Audiowiedergabe</translation> <translation id="5494362494988149300">Nach &Fertigstellung öffnen</translation> @@ -3693,7 +3696,6 @@ <translation id="5991049340509704927">Vergrößern</translation> <translation id="5991774521050363748">Aktivieren Sie benutzerdefinierte Layouts für Webbenachrichtigungen. Sie bieten kleinere Verbesserungen beim Layout, die anderenfalls nicht möglich sind.</translation> <translation id="5993332328670040093">Ihre Datennutzung wird nicht mehr gemessen.</translation> -<translation id="5996258716334177896">Ihr Profil konnte nicht ordnungsgemäß geöffnet werden. Möglicherweise stehen nicht alle Funktionen zur Verfügung. Überprüfen Sie, ob das Profil vorhanden ist und Sie Lese- und Schreibzugriff für die Profilinhalte besitzen.</translation> <translation id="6001799583597751002">PINs stimmen nicht überein:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> kann sich möglicherweise nicht selbst aktualisieren.</translation> <translation id="6003294706906016758">Aktiviert den Web-App-Framestil für gehostete Apps</translation> @@ -4143,7 +4145,6 @@ <translation id="6637362044401670482">Dies aktiviert die Unterstützung des Overscroll-Effekts für die Bildschirmtastatur.</translation> <translation id="6639554308659482635">SQLite-Speicher</translation> <translation id="6643016212128521049">Löschen</translation> -<translation id="6644756108386233011">Geänderte <ph name="IDS_SHORT_PRODUCT_NAME" />-Einstellungen zurücksetzen?</translation> <translation id="6647228709620733774">URL zum Zurückrufen der Zertifizierungsstelle von Netscape-Zertifikaten</translation> <translation id="6647838571840953560">Derzeit auf <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Bitte warten...</translation> @@ -4251,7 +4252,6 @@ <translation id="6810613314571580006">Sie werden mit gespeicherten Anmeldedaten automatisch auf Websites angemeldet. Wenn diese Funktion deaktiviert ist, werden Sie bei jeder Anmeldung auf einer Website nach einer Bestätigung gefragt.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> kann nicht als Root ausgeführt werden.</translation> <translation id="6812841287760418429">Änderungen beibehalten</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> hat ermittelt, dass Ihre Browsereinstellungen möglicherweise ohne Ihr Wissen geändert wurden. Möchten Sie den ursprünglichen Zustand der Einstellungen wiederherstellen?</translation> <translation id="6815551780062710681">Bearbeiten</translation> <translation id="6817358880000653228">Für diese Website gespeicherte Passwörter:</translation> <translation id="6820008762872335722">Auf Nachfragemodus zurücksetzen</translation> @@ -4367,6 +4367,7 @@ <translation id="6980956047710795611">Alle Chrome OS-Daten auf das neue Passwort migrieren (vorheriges Passwort erforderlich)</translation> <translation id="6981982820502123353">Bedienungshilfen</translation> <translation id="6981992744085917617">Wählen Sie die Methode aus, mit der Sie sich wieder in Ihrem Konto anmelden möchten:</translation> +<translation id="698231206551913481">Durch das Entfernen des Nutzers werden alle mit ihm verknüpften Dateien und lokalen Daten endgültig gelöscht.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" />-Drucker gefunden</translation> <translation id="6983783921975806247">Registrierte OID</translation> <translation id="6983991971286645866">Alle Änderungen werden in $1 gespeichert.</translation> @@ -4451,6 +4452,7 @@ <translation id="7073555242265688099">Wenn Sie weitere Chrome-Geräte haben, werden diese automatisch synchronisiert, sodass Sie sie ebenfalls mit Ihrem Telefon entsperren können.</translation> <translation id="707392107419594760">Tastatur auswählen:</translation> <translation id="7075513071073410194">PKCS #1 MD5 mit RSA-Verschlüsselung</translation> +<translation id="7075625805486468288">HTTPS/SSL-Zertifikate und -Einstellungen verwalten</translation> <translation id="7076293881109082629">Anmeldung</translation> <translation id="7077829361966535409">Die Anmeldeseite konnte mit den aktuellen Proxy-Einstellungen nicht geladen werden. <ph name="GAIA_RELOAD_LINK_START" />Versuchen Sie erneut, sich anzumelden<ph name="GAIA_RELOAD_LINK_END" />, oder verwenden Sie andere <ph name="PROXY_SETTINGS_LINK_START" />Proxy-Einstellungen<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignorierte Protokoll-Handler</translation> @@ -4498,7 +4500,6 @@ <translation id="7141105143012495934">Sie konnten nicht angemeldet werden, weil Ihre Kontodetails nicht abgerufen werden konnten. Bitte wenden Sie sich an Ihren Administrator oder versuchen Sie es erneut.</translation> <translation id="7143207342074048698">Verbindung wird hergestellt.</translation> <translation id="7144878232160441200">Wiederholen</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> wurde deaktiviert. Rufen Sie <ph name="CHROME_PLUGINS_LINK" /> auf, um es wieder zu aktivieren.</translation> <translation id="715118844758971915">Klassische Drucker</translation> <translation id="7154130902455071009">Startseite in <ph name="START_PAGE" /> ändern</translation> <translation id="715487527529576698">Anfänglicher chinesischer Modus ist vereinfachtes Chinesisch.</translation> @@ -4780,6 +4781,7 @@ <translation id="7540972813190816353">Fehler beim Suchen nach Updates: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Ausnahmen für Bilder</translation> <translation id="7543104066686362383">Debugging-Funktionen auf diesem <ph name="IDS_SHORT_PRODUCT_NAME" />-Gerät aktivieren</translation> +<translation id="7543393759143837504">Wenn Sie keine Ergebnisse erhalten, <ph name="BEGIN_LINK_CHROMIUM" />rufen Sie die Google Chrome-Hilfe auf<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Zufallsmix</translation> <translation id="7545288882499673859">Speicherfreigabestrategie für die erweiterte Auslastungsbehandlung</translation> <translation id="7545415673537747415">In den <ph name="BEGIN_LINK" />Google-Aktivitätseinstellungen<ph name="END_LINK" /> können Sie festlegen, wie Google Ihren Browserverlauf nutzt, um die Suche, Werbung und andere Google-Dienste zu personalisieren.</translation> @@ -5017,7 +5019,6 @@ <translation id="7879478708475862060">Dieselbe Methode wie bei der Eingabe verwenden</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" fügt diese Apps und Erweiterungen hinzu:</translation> <translation id="7881969471599061635">Untertitel deaktivieren</translation> -<translation id="7884988936047469945">Experimentelle Bedienungshilfen</translation> <translation id="7885253890047913815">Letzte Ziele</translation> <translation id="7887192723714330082">Auf "Ok Google" reagieren, wenn das Display eingeschaltet und entsperrt ist</translation> <translation id="7887334752153342268">Duplizieren</translation> @@ -5085,6 +5086,7 @@ <translation id="7974067550340408553">Erhalten Sie bei jeder <ph name="DEVICE_TYPE" />-Entsperrung mit Smart Lock eine Benachrichtigung auf Ihrem Telefon.</translation> <translation id="7974566588408714340">Über <ph name="EXTENSIONNAME" /> erneut versuchen</translation> <translation id="7974936243149753750">Overscan</translation> +<translation id="7976960358280528247">Benutzeroberfläche für das Wechseln zwischen Fenstern aktivieren (visuelles Feedback für Alt + Tabulatortaste).</translation> <translation id="7977551819349545646">Chromebox wird aktualisiert...</translation> <translation id="7978412674231730200">Privater Schlüssel</translation> <translation id="7979036127916589816">Synchronisierungsfehler</translation> @@ -5112,6 +5114,7 @@ Speichern Sie Ihre Schlüsseldatei an einem sicheren Ort. Sie benötigen die Datei, um neue Versionen Ihrer Erweiterung zu erstellen.</translation> <translation id="799923393800005025">Darf ansehen</translation> +<translation id="8000066093800657092">Nicht verbunden</translation> <translation id="8004582292198964060">Browser</translation> <translation id="8007030362289124303">Schwacher Akku</translation> <translation id="8008356846765065031">Sie haben keine Verbindung mit dem Internet. Bitte überprüfen Sie Ihre Internetverbindung.</translation> @@ -5186,6 +5189,7 @@ <translation id="8116190140324504026">Weitere Informationen</translation> <translation id="8116483400482790018">Benutzerdefiniertes Wörterbuch zur Rechtschreibprüfung</translation> <translation id="8116972784401310538">&Lesezeichen-Manager</translation> +<translation id="8117838550640702864">Einstellungen für Notizen</translation> <translation id="8117957376775388318">Dayi-Eingabemethode</translation> <translation id="8118860139461251237">Downloads verwalten</translation> <translation id="8119572489781388874">Einstellungen ändern</translation> @@ -5464,7 +5468,6 @@ <translation id="8472623782143987204">Hardwaregestützt</translation> <translation id="8475313423285172237">Ein anderes Programm auf Ihrem Computer hat eine Erweiterung hinzugefügt, die sich möglicherweise auf die Funktionsweise von Chrome auswirkt.</translation> <translation id="8475647382427415476">"<ph name="FILENAME" />" konnte nicht in Google Drive synchronisiert werden. Google Drive versucht es später erneut.</translation> -<translation id="8476195663057048998">Löschen & zurücksetzen</translation> <translation id="8477241577829954800">Außer Kraft gesetzt</translation> <translation id="8477384620836102176">&Allgemein</translation> <translation id="8480417584335382321">Seitenzoom:</translation> @@ -5694,7 +5697,6 @@ <translation id="8785135611469711856">Plug-in reagiert nicht</translation> <translation id="8787254343425541995">Proxys für freigegebene Netzwerke zulassen</translation> <translation id="878763818693997570">Der Name ist zu lang.</translation> -<translation id="8787865569533773240">Geänderte <ph name="IDS_SHORT_PRODUCT_NAME" />-Einstellungen zurücksetzen</translation> <translation id="8789375980715484686">Andere Nutzer verwalten</translation> <translation id="8791534160414513928">Mit Browserzugriffen eine "Do Not Track"-Anforderung senden</translation> <translation id="8795668016723474529">Kreditkarte hinzufügen</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index 188db0f..e6180a3 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -523,7 +523,6 @@ <translation id="1673103856845176271">Για λόγους ασφαλείας, η πρόσβαση στο αρχείο δεν ήταν δυνατή.</translation> <translation id="1675023460278456180">Με υβριδικό υλικό</translation> <translation id="167832068858235403">μείωση έντασης</translation> -<translation id="1678331212993975953">Λεπτομέρειες ιστότοπου</translation> <translation id="1679068421605151609">Εργαλεία για Προγραμματιστές</translation> <translation id="1681120471812444678">Ρύθμιση για την προσθήκη εκτυπωτών…</translation> <translation id="1682324559341535203">Εγγραφή συσκευής <ph name="DEVICE_TYPE" /></translation> @@ -1014,7 +1013,6 @@ <translation id="2371076942591664043">Άνοιγμα κατά την &ολοκλήρωση</translation> <translation id="2372036074421194686">Το Chrome εντόπισε ένα ανεπιθύμητο πρόγραμμα (<ph name="UWS_NAME" />) εγκατεστημένο στον υπολογιστή σας. Ενδεχομένως να μπορείτε να το καταργήσετε εκτελώντας το Εργαλείο καθαρισμού του Chrome.</translation> <translation id="2375701438512326360">Ορίστε την υποστήριξη οθόνης αφής έτσι ώστε να είναι πάντα ενεργή ή ανενεργή ή να ενεργοποιείται όταν εντοπίζεται μια οθόνη αφής κατά την εκκίνηση (Αυτόματο, προεπιλογή).</translation> -<translation id="2377619091472055321">Επαναφορά των τροποποιημένων ρυθμίσεων του <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Έχουν επιλεγεί <ph name="SELCTED_FILE_COUNT" /> αρχεία</translation> <translation id="2378982052244864789">Επιλέξτε τον κατάλογο επεκτάσεων.</translation> <translation id="2379281330731083556">Εκτύπωση με χρήση του παραθύρου διαλόγου συστήματος... <ph name="SHORTCUT_KEY" /></translation> @@ -1564,6 +1562,7 @@ <translation id="3058212636943679650">Αν χρειαστεί κάποια στιγμή να επαναφέρετε το λειτουργικό σύστημα του υπολογιστή σας, θα χρειαστείτε μια κάρτα SD ή μια συσκευή αποθήκευσης USB.</translation> <translation id="305932878998873762">Η Simple Cache για HTTP είναι μια νέα προσωρινή μνήμη. Βασίζεται στο σύστημα αρχείων για την κατανομή χώρου στο δίσκο.</translation> <translation id="3062606427884046423">Να χρησιμοποιείτε τις ειδοποιήσεις Android MediaStyle για τις ειδοποιήσεις μέσων του Chrome.</translation> +<translation id="3063224679438508013">Αυτόματη εκκίνηση της εφαρμογής σημειώσεων</translation> <translation id="3063844757726132584">Αποκτήστε πρόσβαση σε όλες τις εφαρμογές σας από αυτήν την πρακτική εφαρμογή εκκίνησης. Παίξτε παιχνίδια, συνομιλήστε μέσω βίντεο, ακούστε μουσική, επεξεργαστείτε έγγραφα ή αποκτήστε περισσότερες εφαρμογές.</translation> <translation id="3064388234319122767">Μεταγραφή (zdravo → здраво)</translation> <translation id="3065041951436100775">Σχόλια για απότομο κλείσιμο καρτέλας.</translation> @@ -1654,6 +1653,7 @@ <translation id="3172213052701798825">Google Smart Lock για κωδικούς πρόσβασης</translation> <translation id="317583078218509884">Οι νέες ρυθμίσεις αδειών ιστότοπου θα τεθούν σε ισχύ μετά την επανάληψη φόρτωσης της σελίδας.</translation> <translation id="3177048931975664371">Κάντε κλικ για να αποκρύψετε τον κωδικό πρόσβασης</translation> +<translation id="3177909033752230686">Γλώσσα σελίδας:</translation> <translation id="3180365125572747493">Εισαγάγετε έναν κωδικό πρόσβασης για να κρυπτογραφήσετε αυτό το αρχείο πιστοποιητικού.</translation> <translation id="3183139917765991655">Εργαλείο εισαγωγής προφίλ</translation> <translation id="3184560914950696195">Δεν είναι δυνατή η αποθήκευση στο $1. Οι επεξεργασμένες εικόνες θα αποθηκεύονται στο φάκελο "Λήψεις".</translation> @@ -2007,6 +2007,7 @@ <translation id="3612673635130633812">Λήψη από <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Εμφάνιση <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">Άνοιγμα σε νέα καρτέ&λα</translation> +<translation id="3616113530831147358">Ήχος</translation> <translation id="3616741288025931835">&Διαγραφή δεδομένων περιήγησης...</translation> <translation id="3618849550573277856">Αναζήτηση "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Δημιουργήθηκαν αντίγραφα ασφαλείας για όλα τα αρχεία!</translation> @@ -2304,7 +2305,6 @@ <translation id="3994878504415702912">&Εστίαση</translation> <translation id="3995964755286119116">Οι ρυθμίσεις κάμερας του Adobe Flash Player είναι διαφορετικές.</translation> <translation id="39964277676607559">Δεν ήταν δυνατή η φόρτωση του javascript "<ph name="RELATIVE_PATH" />" για το σενάριο περιεχομένου.</translation> -<translation id="3996912167543967198">Γίνεται επαναφορά…</translation> <translation id="3997015411467176489">Πειραματικές λειτουργίες καμβά</translation> <translation id="4002066346123236978">Τίτλος</translation> <translation id="40027638859996362">Μετακίνηση λέξης</translation> @@ -2401,6 +2401,7 @@ <translation id="4140559601186535628">Μηνύματα push</translation> <translation id="4146026355784316281">Άνοιγμα πάντα με πρόγραμμα προβολής συστήματος</translation> <translation id="4146175323503586871">Το <ph name="SERVICE_NAME" /> θέλει να ελέγξει εάν η συσκευή σας Chrome OS είναι κατάλληλη για κάποια προσφορά. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Οθόνη</translation> <translation id="4151403195736952345">Χρήση καθολικής προεπιλογής (Εντοπισμός)</translation> <translation id="4152177296285305182">Μόνο κάποιος με τη δική σας φράση πρόσβασης μπορεί να διαβάσει τα κρυπτογραφημένα δεδομένα σας. Η φράση πρόσβασης δεν αποστέλλεται στην Google, ούτε αποθηκεύεται από αυτήν. Αν ξεχάσετε τη φράση πρόσβασης, θα χρειαστεί να επαναφέρετε το συγχρονισμό.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 καρτέλα}other{# καρτέλες}}</translation> @@ -2465,6 +2466,7 @@ <translation id="4250229828105606438">Στιγμιότυπο οθόνης</translation> <translation id="4250680216510889253">Όχι</translation> <translation id="4253168017788158739">Σημείωση</translation> +<translation id="4254813446494774748">Γλώσσα μετάφρασης:</translation> <translation id="425573743389990240">Ρυθμός αποφόρτισης μπαταρίας σε Watt (Τυχόν αρνητική τιμή σημαίνει ότι η μπαταρία φορτίζεται)</translation> <translation id="4256316378292851214">Απο&θήκευση Βίντεο Ως...</translation> <translation id="4258348331913189841">Συστήματα αρχείων</translation> @@ -2542,6 +2544,7 @@ <translation id="4365673000813822030">Ωχ, ο συγχρονισμός σταμάτησε να λειτουργεί.</translation> <translation id="4366509400410520531">Επιτρέπεται από εσάς</translation> <translation id="4367782753568896354">Δεν ήταν δυνατή η εγκατάσταση:</translation> +<translation id="436904870295243580">Βρείτε περισσότερες εφαρμογές σημειώσεων</translation> <translation id="4370975561335139969">Η διεύθυνση ηλεκτρονικού ταχυδρομείου και ο κωδικός πρόσβασης δεν ταιριάζουν</translation> <translation id="437184764829821926">Σύνθετες ρυθμίσεις γραμματοσειράς</translation> <translation id="4372884569765913867">1x1</translation> @@ -3227,6 +3230,7 @@ <translation id="5324674707192845912">Πρόκειται να αφαιρέσετε αυτή τη συσκευή <ph name="DEVICE_TYPE" /> από το Google για να απενεργοποιήσετε τη δυνατότητα απομακρυσμένου εντοπισμού τοποθεσίας, διαγραφής και κλειδώματος της συσκευής. Αυτή η διαδικασία απαιτεί επανεκκίνηση. Θέλετε να συνεχίσετε;</translation> <translation id="5324780743567488672">Αυτόματη ρύθμιση ζώνης ώρας με χρήση της τοποθεσίας σας</translation> <translation id="5325120507747984426">Χρησιμοποιεί σταθερή σειρά παραθύρων στη λειτουργία επισκόπησης η οποία προσπαθεί να ελαχιστοποιήσει την κίνηση των παραθύρων κατά την ενεργοποίηση/απενεργοποίηση της επισκόπησης και μεταξύ των περιόδων σύνδεσης επισκόπησης.</translation> +<translation id="5326182685622510062">Υπάρχουν πολλές υλοποιήσεις της διοχέτευσης απόδοσης γραφικών για τον καμβά 2D. Αυτές οι διαφορετικές υλοποιήσεις έχουν διαφορετικά χαρακτηριστικά απόδοσης. Η ενεργοποίηση αυτής της σημαίας επιτρέπει στα περιβάλλοντα καμβά 2D την ταχύτατη εναλλαγή μεταξύ των υλοποιήσεων, με βάση τον τρόπο χρήσης του καμβά προκειμένου να αυξηθεί η απόδοση. Για παράδειγμα, μετάβαση από μια υλοποίηση που χρησιμοποιεί GPU σε μια που δεν το κάνει.</translation> <translation id="5327248766486351172">Όνομα</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Διαγραφή</translation> @@ -3360,7 +3364,6 @@ <translation id="54870580363317966">Επιλέξτε avatar για αυτόν το χρήστη υπό επίβλεψη.</translation> <translation id="5488468185303821006">Να επιτρέπονται στην ανώνυμη περιήγηση</translation> <translation id="5489390182170331803">Προεπιλογή παθητικών λειτουργιών ακρόασης συμβάντων σε επίπεδο εγγράφου</translation> -<translation id="5489789060051091748">Επιλέξτε την εκφώνηση: Κρατήστε το πλήκτρο Αναζήτησης πατημένο και κάντε κλικ ή σύρετε για να εκφωνήσετε οτιδήποτε</translation> <translation id="549294555051714732">Τμήμα συμβολοσειράς που αντιστοιχεί στις προτάσεις αυτόματης συμπλήρωσης</translation> <translation id="5493996328530898436">Νέα στρατηγική μίξης απόδοσης ήχου</translation> <translation id="5494362494988149300">Άνοιγμα κατά την &ολοκλήρωση</translation> @@ -3718,7 +3721,6 @@ <translation id="5991049340509704927">Μεγέθυνση</translation> <translation id="5991774521050363748">Ενεργοποίηση προσαρμοσμένων διατάξεων για Ειδοποιήσεις ιστού. Θα φέρουν ανεπαίσθητες βελτιώσεις διάταξης που δεν είναι δυνατές διαφορετικά.</translation> <translation id="5993332328670040093">Δεν θα εκτελείται πλέον μέτρηση της χρήσης δεδομένων σας.</translation> -<translation id="5996258716334177896">Το προφίλ σας δεν ήταν δυνατό να ανοίξει σωστά. Ορισμένες λειτουργίες ενδεχομένως να είναι μη διαθέσιμες. Ελέγξτε ότι το προφίλ υπάρχει και ότι έχετε άδεια ανάγνωσης και εγγραφής των περιεχομένων του.</translation> <translation id="6001799583597751002">Τα PIN δεν ταιριάζουν:</translation> <translation id="6003177993629630467">Ενδέχεται να μην είναι δυνατή η αυτόματη ενημέρωση του <ph name="PRODUCT_NAME" />.</translation> <translation id="6003294706906016758">Ενεργοποιεί το πλαίσιο στυλ εφαρμογών ιστού για φιλοξενούμενες εφαρμογές</translation> @@ -4168,7 +4170,6 @@ <translation id="6637362044401670482">Ενεργοποιεί την υποστήριξη overscroll εικονικού πληκτρολογίου.</translation> <translation id="6639554308659482635">Μνήμη SQLite</translation> <translation id="6643016212128521049">Διαγραφή</translation> -<translation id="6644756108386233011">Επαναφορά των τροποποιημένων ρυθμίσεων του <ph name="IDS_SHORT_PRODUCT_NAME" />;</translation> <translation id="6647228709620733774">URL ανάκλησης Αρχής πιστοποίησης του Netscape</translation> <translation id="6647838571840953560">Αυτήν τη στιγμή στο κανάλι <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Περιμένετε μια στιγμή…</translation> @@ -4276,7 +4277,6 @@ <translation id="6810613314571580006">Αυτόματη σύνδεση σε ιστότοπους με χρήση αποθηκευμένων διαπιστευτηρίων. Όταν η λειτουργία είναι απενεργοποιημένη, θα σας ζητείται επιβεβαίωση κάθε φορά που προσπαθείτε να συνδεθείτε σε έναν ιστότοπο.</translation> <translation id="6812349420832218321">Δεν είναι δυνατή η εκτέλεση του <ph name="PRODUCT_NAME" /> ως ρίζα</translation> <translation id="6812841287760418429">Διατήρηση αλλαγών</translation> -<translation id="6815353853907306610">Το <ph name="IDS_SHORT_PRODUCT_NAME" /> διαπίστωσε ότι οι ρυθμίσεις του προγράμματος περιήγησης ενδέχεται να έχουν αλλάξει χωρίς να το γνωρίζετε. Θέλετε να τις επαναφέρετε στις αρχικές προεπιλογές;</translation> <translation id="6815551780062710681">επεξεργασία</translation> <translation id="6817358880000653228">Αποθηκευμένοι κωδικοί πρόσβασης για αυτόν τον ιστότοπο:</translation> <translation id="6820008762872335722">Επαναφορά για ερώτηση</translation> @@ -4395,6 +4395,7 @@ <translation id="6980956047710795611">Μετεγκατάσταση όλων των δεδομένων του Chrome OS για το νέο κωδικό πρόσβασης (απαιτείται ο προηγούμενος κωδικός πρόσβασης)</translation> <translation id="6981982820502123353">Προσβασιμότητα</translation> <translation id="6981992744085917617">Επιλέξτε τη μέθοδο που θέλετε να χρησιμοποιήσετε, για να συνδεθείτε ξανά στον λογαριασμό σας:</translation> +<translation id="698231206551913481">Όλα τα αρχεία και τα τοπικά δεδομένα που σχετίζονται με τον χρήστη θα διαγραφούν οριστικά μόλις καταργηθεί ο χρήστης.</translation> <translation id="6982896539684144327">Εντοπίστηκε εκτυπωτής από <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">Εγγεγραμμένο OID</translation> <translation id="6983991971286645866">Όλες οι τροποποιήσεις θα αποθηκευτούν στο $1.</translation> @@ -4481,6 +4482,7 @@ <translation id="7073555242265688099">Εάν έχετε άλλες συσκευές Chrome, αυτές θα συγχρονίζονται αυτόματα, και έτσι το τηλέφωνό σας θα τις ξεκλειδώσει εξίσου.</translation> <translation id="707392107419594760">Επιλέξτε το πληκτρολόγιό σας:</translation> <translation id="7075513071073410194">PKCS #1 MD5 με κρυπτογράφηση RSA</translation> +<translation id="7075625805486468288">Διαχειριστείτε τα πιστοποιητικά HTTPS/SSL και τις ρυθμίσεις</translation> <translation id="7076293881109082629">Σύνδεση</translation> <translation id="7077829361966535409">Αποτυχία φόρτωσης σελίδας σύνδεσης με χρήση των τρεχουσών ρυθμίσεων διακομιστή μεσολάβησης. <ph name="GAIA_RELOAD_LINK_START" />Δοκιμάστε να συνδεθείτε ξανά<ph name="GAIA_RELOAD_LINK_END" />, ή χρησιμοποιήστε διαφορετικές <ph name="PROXY_SETTINGS_LINK_START" />ρυθμίσεις διακομιστή μεσολάβησης<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Χειριστές πρωτοκόλλου που αγνοούνται</translation> @@ -4528,7 +4530,6 @@ <translation id="7141105143012495934">Η σύνδεση απέτυχε επειδή δεν ήταν δυνατή η ανάκτηση των στοιχείων του λογαριασμού σας. Επικοινωνήστε με τον διαχειριστή σας ή προσπαθήστε ξανά.</translation> <translation id="7143207342074048698">Σύνδεση</translation> <translation id="7144878232160441200">Δοκιμάστε ξανά</translation> -<translation id="7148311641502571842">Η προσθήκη <ph name="PLUGIN_NAME" /> έχει απενεργοποιηθεί. Για να την ενεργοποιήσετε ξανά, μεταβείτε στον σύνδεσμο <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Συμβατικοί εκτυπωτές</translation> <translation id="7154130902455071009">Αλλαγή της σελίδας έναρξης σε: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Η αρχική ρύθμιση για τα Κινέζικα είναι "Απλοποιημένα Κινέζικα"</translation> @@ -4809,6 +4810,7 @@ <translation id="7540972813190816353">Παρουσιάστηκε σφάλμα κατά τον έλεγχο για ενημερώσεις: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Εξαιρέσεις εικόνων</translation> <translation id="7543104066686362383">Ενεργοποίηση λειτουργιών εντοπισμού σφαλμάτων σε αυτήν τη συσκευή <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Μεταβείτε στη <ph name="BEGIN_LINK_CHROMIUM" />βοήθεια του Google Chrome<ph name="END_LINK_CHROMIUM" /> εάν δεν μπορείτε να βρείτε αυτό που αναζητάτε.</translation> <translation id="7544853251252956727">Τυχαία αναπαραγωγή</translation> <translation id="7545288882499673859">Στρατηγική απόρριψης μνήμης για σύνθετη διαχείριση πίεσης</translation> <translation id="7545415673537747415">Ελέγξτε τον τρόπο με τον οποίο η Google χρησιμοποιεί το ιστορικό περιήγησής σας για την εξατομίκευση της Αναζήτησης, των διαφημίσεων και άλλων υπηρεσιών Google από τα <ph name="BEGIN_LINK" />Στοιχεία ελέγχου δραστηριότητας Google<ph name="END_LINK" />.</translation> @@ -5047,7 +5049,6 @@ <translation id="7879478708475862060">Ακολουθήστε τη λειτουργία εισόδου</translation> <translation id="7880836220014399562">Το πακέτο "<ph name="BUNDLE_NAME" />" προσθέτει αυτές τις εφαρμογές και επεκτάσεις:</translation> <translation id="7881969471599061635">Απενεργοποίηση υπότιτλων</translation> -<translation id="7884988936047469945">Πειραματικές λειτουργίες προσβασιμότητας</translation> <translation id="7885253890047913815">Πρόσφατοι προορισμοί</translation> <translation id="7887192723714330082">Απάντηση στο "Ok Google" όταν η οθόνη είναι αναμμένη και ξεκλειδωμένη</translation> <translation id="7887334752153342268">Αντιγραφή</translation> @@ -5115,6 +5116,7 @@ <translation id="7974067550340408553">Λήψη ειδοποιήσεων στο τηλέφωνό σας κάθε φορά που η λειτουργία Smart Lock ξεκλειδώνει τη συσκευή σας <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Επανάληψη προσπάθειας με χρήση <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Υπερσάρωση</translation> +<translation id="7976960358280528247">Ενεργοποίηση διεπαφής χρήστη περιστροφής παραθύρων (οπτικό σχόλιο για τη συντόμευση Alt+Tab).</translation> <translation id="7977551819349545646">Ενημέρωση του Chromebox…</translation> <translation id="7978412674231730200">Ιδιωτικό κλειδί</translation> <translation id="7979036127916589816">Σφάλμα συγχρονισμού</translation> @@ -5142,6 +5144,7 @@ Διατηρείτε το αρχείο κλειδιού σε ασφαλές μέρος. Θα το χρειαστείτε για τη δημιουργία νέων εκδόσεων της επέκτασής σας.</translation> <translation id="799923393800005025">Δυνατότητα προβολής</translation> +<translation id="8000066093800657092">Κανένα δίκτυο</translation> <translation id="8004582292198964060">Πρόγραμμα περιήγησης</translation> <translation id="8007030362289124303">Χαμηλή στάθμη μπαταρίας</translation> <translation id="8008356846765065031">Η σύνδεση στο διαδίκτυο διακόπηκε. Ελέγξτε τη σύνδεσή σας στο διαδίκτυο.</translation> @@ -5217,6 +5220,7 @@ <translation id="8116190140324504026">Περισσότερες πληροφορίες...</translation> <translation id="8116483400482790018">Προσαρμοσμένο ορθογραφικό λεξικό</translation> <translation id="8116972784401310538">&Διαχείριση σελιδοδεικτών</translation> +<translation id="8117838550640702864">Ρυθμίσεις σημειώσεων</translation> <translation id="8117957376775388318">Μέθοδος εισαγωγής Dayi</translation> <translation id="8118860139461251237">Διαχείριση των λήψεών σας</translation> <translation id="8119572489781388874">Τροποποίηση ρυθμίσεων</translation> @@ -5498,7 +5502,6 @@ <translation id="8472623782143987204">υποστηριζόμενο από υλικό</translation> <translation id="8475313423285172237">Κάποιο άλλο πρόγραμμα στον υπολογιστή σας πρόσθεσε μια επέκταση, η οποία ενδέχεται να αλλάξει τον τρόπο λειτουργίας του Chrome.</translation> <translation id="8475647382427415476">Το Google Drive δεν ήταν δυνατό να συγχρονίσει το "<ph name="FILENAME" />" αυτήν τη στιγμή. Δοκιμάστε ξανά αργότερα.</translation> -<translation id="8476195663057048998">Διαγραφή και επαναφορά</translation> <translation id="8477241577829954800">Αντικαταστάθηκε</translation> <translation id="8477384620836102176">&Γενικά</translation> <translation id="8480417584335382321">Μεγέθυνση σελίδας:</translation> @@ -5729,7 +5732,6 @@ <translation id="8785135611469711856">Μη ανταποκρίσιμη προσθήκη</translation> <translation id="8787254343425541995">Να επιτρέπονται οι διακομιστές μεσολάβησης για κοινόχρηστα δίκτυα</translation> <translation id="878763818693997570">Αυτό το όνομα είναι υπερβολικά μεγάλο</translation> -<translation id="8787865569533773240">Επαναφορά των τροποποιημένων ρυθμίσεων του <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Διαχείριση άλλων χρηστών</translation> <translation id="8791534160414513928">Να αποστέλλεται ένα αίτημα "Να μην γίνεται εντοπισμός" με την επισκεψιμότητα της περιήγησής σας</translation> <translation id="8795668016723474529">Προσθήκη πιστωτικής κάρτας</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 7aaa5dce..261afedb 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -75,7 +75,7 @@ <translation id="1104652314727136854">Enable OS integration of file associations for Chrome Apps.</translation> <translation id="1105162038795579389">"<ph name="BUNDLE_NAME" />" adds these apps and extensions for <ph name="USER_NAME" />:</translation> <translation id="1108600514891325577">&Stop</translation> -<translation id="1108685299869803282">More than 80% of people who see this warning go back to safety instead of risking malware. However, if you understand the risks to your security, you may <ph name="BEGIN_LINK" />visit this unsafe site<ph name="END_LINK" /> before the dangerous programmes have been removed.</translation> +<translation id="1108685299869803282">More than 80% of people who see this warning go back to safety instead of risking malware. However, if you understand the risks to your security, you may <ph name="BEGIN_LINK" />visit this unsafe site<ph name="END_LINK" /> before the dangerous programs have been removed.</translation> <translation id="110918622319006905">Third Party VPN</translation> <translation id="1110155001042129815">Wait</translation> <translation id="1110753181581583968">{NUM_DOWNLOAD,plural, =1{Continue Download}other{Continue Downloads}}</translation> @@ -522,7 +522,6 @@ <translation id="1673103856845176271">The file could not be accessed for security reasons.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">vol. down</translation> -<translation id="1678331212993975953">Site Details</translation> <translation id="1679068421605151609">Developer Tools</translation> <translation id="1681120471812444678">Set up to add printers…</translation> <translation id="1682324559341535203">Enrol <ph name="DEVICE_TYPE" /></translation> @@ -1012,7 +1011,6 @@ <translation id="2371076942591664043">Open when &done</translation> <translation id="2372036074421194686">Chrome found an unwanted program (<ph name="UWS_NAME" />) installed on your computer. You may be able to remove it by running the Chrome Clean-Up Tool.</translation> <translation id="2375701438512326360">Force touchscreen support to always be enabled or disabled, or to be enabled when a touchscreen is detected on startup (Automatic, the default).</translation> -<translation id="2377619091472055321">Reset Altered <ph name="IDS_SHORT_PRODUCT_NAME" /> Settings</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> files selected</translation> <translation id="2378982052244864789">Select the extension directory.</translation> <translation id="2379281330731083556">Print using system dialogue... <ph name="SHORTCUT_KEY" /></translation> @@ -1067,7 +1065,7 @@ <translation id="2448312741937722512">Types</translation> <translation id="2449267011068443460">Disallow</translation> <translation id="2450223707519584812">You will not be able to add users because Google API keys are missing. See <ph name="DETAILS_URL" /> for details.</translation> -<translation id="2450531422290975480">If you understand the risks to your security, you may <ph name="BEGIN_LINK" />visit this unsafe site<ph name="END_LINK" /> (not recommended) before the dangerous programmes have been removed.</translation> +<translation id="2450531422290975480">If you understand the risks to your security, you may <ph name="BEGIN_LINK" />visit this unsafe site<ph name="END_LINK" /> (not recommended) before the dangerous programs have been removed.</translation> <translation id="2452539774207938933">Switch to user: <ph name="PROFILE_NAME" /></translation> <translation id="2453021845418314664">Advanced sync settings</translation> <translation id="2453576648990281505">File already exists</translation> @@ -1477,7 +1475,7 @@ <translation id="295947108480905647">"<ph name="CHROME_EXTENSION_NAME" />" wants to connect to:</translation> <translation id="2959614062380389916">Disabled by administrator</translation> <translation id="2960393411257968125">How the password manager handles autofill for the sync credential.</translation> -<translation id="29611076221683977">Attackers currently on <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> might attempt to install dangerous programmes on your Mac that steal or delete your information (for example, photos, passwords, messages and credit cards).</translation> +<translation id="29611076221683977">Attackers currently on <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> might attempt to install dangerous programs on your Mac that steal or delete your information (for example photos, passwords, messages and credit cards).</translation> <translation id="2961695502793809356">Click to go forward, hold to see history</translation> <translation id="296216853343927883">Google branding in the context menu</translation> <translation id="2963151496262057773">The following plug-in is unresponsive: <ph name="PLUGIN_NAME" />Would you like to stop it?</translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">If you ever need to restore your computer's operating system, you'll need a recovery SD card or USB memory stick.</translation> <translation id="305932878998873762">The Simple Cache for HTTP is a new cache. It relies on the file system for disk space allocation.</translation> <translation id="3062606427884046423">Use Android MediaStyle notifications for Chrome media notifications.</translation> +<translation id="3063224679438508013">Auto-launch the note-app</translation> <translation id="3063844757726132584">Access all of your apps from this handy launcher. Play games, video chat, listen to music, edit documents or get more apps.</translation> <translation id="3064388234319122767">Transliteration (zdravo → здраво)</translation> <translation id="3065041951436100775">Tab killed feedback.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock for Passwords</translation> <translation id="317583078218509884">New site permissions settings will take effect after reloading the page.</translation> <translation id="3177048931975664371">Click to hide password</translation> +<translation id="3177909033752230686">Page language:</translation> <translation id="3180365125572747493">Please enter a password to encrypt this certificate file.</translation> <translation id="3183139917765991655">Profile Importer</translation> <translation id="3184560914950696195">Cannot save to $1. Edited images will be saved in the Downloads folder.</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">Downloaded by <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Show <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Open in new tab</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Clear Browsing Data...</translation> <translation id="3618849550573277856">Look Up “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">All backed up!</translation> @@ -2085,7 +2086,7 @@ <translation id="3728067901555601989">OTP:</translation> <translation id="3730639321086573427">Local destinations</translation> <translation id="3733127536501031542">SSL Server with Step-up</translation> -<translation id="3736520371357197498">If you understand the risks to your security, you may <ph name="BEGIN_LINK" />visit this unsafe site<ph name="END_LINK" /> before the dangerous programmes have been removed.</translation> +<translation id="3736520371357197498">If you understand the risks to your security, you may <ph name="BEGIN_LINK" />visit this unsafe site<ph name="END_LINK" /> before the dangerous programs have been removed.</translation> <translation id="3738924763801731196"><ph name="OID" />:</translation> <translation id="3739798227959604811">Delay before repeat:</translation> <translation id="3741158646617793859"><ph name="DEVICE_NAME" /> will now appear in the Admin Console</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">Adobe Flash Player camera settings are different.</translation> <translation id="39964277676607559">Could not load JavaScript '<ph name="RELATIVE_PATH" />' for content script.</translation> -<translation id="3996912167543967198">Resetting...</translation> <translation id="3997015411467176489">Experimental canvas features</translation> <translation id="4002066346123236978">Title</translation> <translation id="40027638859996362">Word move</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">Push Messages</translation> <translation id="4146026355784316281">Always Open With System Viewer</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> wants to check if your Chrome OS device is eligible for an offer. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Display</translation> <translation id="4151403195736952345">Use global default (Detect)</translation> <translation id="4152177296285305182">Only someone with your passphrase can read your encrypted data. The passphrase is not sent to or stored by Google. If you forget your passphrase, you will need to reset sync.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tabs}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">Screenshot</translation> <translation id="4250680216510889253">No</translation> <translation id="4253168017788158739">Note</translation> +<translation id="4254813446494774748">Translation language:</translation> <translation id="425573743389990240">Battery Discharge Rate in Watts (Negative value means battery is charging)</translation> <translation id="4256316378292851214">Sa&ve Video As...</translation> <translation id="4258348331913189841">File System</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">Whoops, Sync has stopped working.</translation> <translation id="4366509400410520531">Allowed by you</translation> <translation id="4367782753568896354">We were unable to install:</translation> +<translation id="436904870295243580">Find more note-taking applications</translation> <translation id="4370975561335139969">The email and password that you entered don't match.</translation> <translation id="437184764829821926">Advanced font settings</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3214,6 +3217,7 @@ <translation id="5324674707192845912">You are about to unenrol this <ph name="DEVICE_TYPE" /> with Google to disable the ability to remotely locate, wipe and lock the device. This will require a reboot. Do you wish to continue?</translation> <translation id="5324780743567488672">Set time zone automatically using your location</translation> <translation id="5325120507747984426">Uses a stable window ordering in overview mode which attempts to minimise movement of windows when entering/exiting overview and between overview sessions.</translation> +<translation id="5326182685622510062">There are multiple implementations of the graphics rendering pipeline for the 2D canvas. These different implementations have different performance characteristics. Turning on this flag allows canvas 2D contexts to switch between these implementations on the fly based on how the canvas is used in order to increase performance. For example, going from an implementation that uses the GPU to one that doesn't.</translation> <translation id="5327248766486351172">Name</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Delete</translation> @@ -3346,7 +3350,6 @@ <translation id="54870580363317966">Choose an avatar for this supervised user.</translation> <translation id="5488468185303821006">Allow in incognito</translation> <translation id="5489390182170331803">Document Level Event Listeners Passive Default</translation> -<translation id="5489789060051091748">Select-to-speak: Hold down Search and click or drag to speak anything</translation> <translation id="549294555051714732">Substring matching for Auto-fill suggestions</translation> <translation id="5493996328530898436">New audio rendering mixing strategy</translation> <translation id="5494362494988149300">Open When &Finished</translation> @@ -3703,9 +3706,6 @@ <translation id="5991049340509704927">Magnify</translation> <translation id="5991774521050363748">Enable customised layouts for Web Notifications. They will have subtle layout improvements that are otherwise not possible.</translation> <translation id="5993332328670040093">Your data use will no longer be measured.</translation> -<translation id="5996258716334177896">Your profile could not be opened correctly. - -Some features may be unavailable. Please check that the profile exists and you have permission to read and write its contents.</translation> <translation id="6001799583597751002">PIN's don't match:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> may not be able to keep itself updated.</translation> <translation id="6003294706906016758">Enables the web app style frame for hosted apps</translation> @@ -4155,7 +4155,6 @@ <translation id="6637362044401670482">Enables virtual keyboard overscroll support.</translation> <translation id="6639554308659482635">SQLite memory</translation> <translation id="6643016212128521049">Clear</translation> -<translation id="6644756108386233011">Reset altered <ph name="IDS_SHORT_PRODUCT_NAME" /> settings?</translation> <translation id="6647228709620733774">Netscape Certification Authority Revocation URL</translation> <translation id="6647838571840953560">Currently on <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Just a sec...</translation> @@ -4263,7 +4262,6 @@ <translation id="6810613314571580006">Automatically sign in to websites using stored credentials. When the feature is disabled, you will be asked for confirmation every time before signing in to a website.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> cannot be run as root.</translation> <translation id="6812841287760418429">Keep changes</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> detected that your browser settings may have been changed without your knowledge. Would you like to reset them to their original defaults?</translation> <translation id="6815551780062710681">edit</translation> <translation id="6817358880000653228">Saved passwords for this site:</translation> <translation id="6820008762872335722">Reset to ask</translation> @@ -4381,6 +4379,7 @@ (requires previous password)</translation> <translation id="6981982820502123353">Accessibility</translation> <translation id="6981992744085917617">Choose the method you would like to use to log back in to your account:</translation> +<translation id="698231206551913481">All files and local data associated with this user will be permanently deleted once this user is removed.</translation> <translation id="6982896539684144327">Printer from <ph name="VENDOR_NAME" /> detected</translation> <translation id="6983783921975806247">Registered OID</translation> <translation id="6983991971286645866">All edits will be saved to $1.</translation> @@ -4467,6 +4466,7 @@ <translation id="7073555242265688099">If you have other Chrome devices, they’ll be synced automatically, so your phone will unlock them too.</translation> <translation id="707392107419594760">Select your keyboard:</translation> <translation id="7075513071073410194">PKCS #1 MD5 With RSA Encryption</translation> +<translation id="7075625805486468288">Manage HTTPS/SSL certificates and settings</translation> <translation id="7076293881109082629">Signing in</translation> <translation id="7077829361966535409">The sign-in page failed to load using the current proxy settings. Please <ph name="GAIA_RELOAD_LINK_START" />try to sign in again<ph name="GAIA_RELOAD_LINK_END" /> or use different <ph name="PROXY_SETTINGS_LINK_START" />proxy settings<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignored protocol handlers</translation> @@ -4514,7 +4514,6 @@ <translation id="7141105143012495934">Sign-in failed because your account details could not be retrieved. Please contact your administrator or try again.</translation> <translation id="7143207342074048698">Connecting ...</translation> <translation id="7144878232160441200">Retry</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> has been disabled. To re-enable it, please go to <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Classic printers</translation> <translation id="7154130902455071009">Change your start page to: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Initial Chinese mode is Simplified Chinese</translation> @@ -4793,6 +4792,7 @@ <translation id="7540972813190816353">An error occurred while checking for updates: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Image exceptions</translation> <translation id="7543104066686362383">Enable debugging features on this <ph name="IDS_SHORT_PRODUCT_NAME" /> device</translation> +<translation id="7543393759143837504">Go to <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome help<ph name="END_LINK_CHROMIUM" /> if you can't find what you're looking for.</translation> <translation id="7544853251252956727">Shuffle</translation> <translation id="7545288882499673859">Memory discard strategy for advanced pressure handling</translation> <translation id="7545415673537747415">Control how Google uses your browsing history to personalise Search, ads and other Google services from <ph name="BEGIN_LINK" />Google Activity Controls<ph name="END_LINK" />.</translation> @@ -5030,7 +5030,6 @@ <translation id="7879478708475862060">Follow input mode</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" adds these apps and extensions:</translation> <translation id="7881969471599061635">Disable subtitles</translation> -<translation id="7884988936047469945">Experimental acecssibility features</translation> <translation id="7885253890047913815">Recent destinations</translation> <translation id="7887192723714330082">Respond to "OK Google" when the screen is on and unlocked</translation> <translation id="7887334752153342268">Duplicate</translation> @@ -5098,6 +5097,7 @@ <translation id="7974067550340408553">Get notified on your phone every time that Smart Lock unlocks your <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Retry using <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Overscan</translation> +<translation id="7976960358280528247">Enable window cycle UI (visual feedback for Alt+Tab).</translation> <translation id="7977551819349545646">Updating Chromebox...</translation> <translation id="7978412674231730200">Private key</translation> <translation id="7979036127916589816">Sync Error</translation> @@ -5125,6 +5125,7 @@ Keep your key file in a safe place. You will need it to create new versions of your extension.</translation> <translation id="799923393800005025">Can view</translation> +<translation id="8000066093800657092">No network</translation> <translation id="8004582292198964060">Browser</translation> <translation id="8007030362289124303">Battery Low</translation> <translation id="8008356846765065031">Internet disconnected. Please check your Internet connection.</translation> @@ -5199,6 +5200,7 @@ <translation id="8116190140324504026">More info...</translation> <translation id="8116483400482790018">Custom spelling dictionary</translation> <translation id="8116972784401310538">&Bookmark manager</translation> +<translation id="8117838550640702864">Note settings</translation> <translation id="8117957376775388318">Dayi input method</translation> <translation id="8118860139461251237">Manage your downloads</translation> <translation id="8119572489781388874">Modify settings</translation> @@ -5293,7 +5295,7 @@ <translation id="8226222018808695353">Forbidden</translation> <translation id="8226742006292257240">Below is the randomly generated TPM password that has been assigned to your computer:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Attackers currently on <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> might attempt to install dangerous programmes on your computer that steal or delete your information (for example, photos, passwords, messages and credit cards).</translation> +<translation id="8230421197304563332">Attackers currently on <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> might attempt to install dangerous programs on your computer that steal or delete your information (for example photos, passwords, messages and credit cards).</translation> <translation id="8233254008506535819">Include the option to whitelist important sites in the clear browsing data dialogue.</translation> <translation id="8236231079192337250">Chrome Web Store Gallery app for printer drivers</translation> <translation id="8238649969398088015">Help tip</translation> @@ -5479,7 +5481,6 @@ <translation id="8472623782143987204">hardware-backed</translation> <translation id="8475313423285172237">Another programme on your computer added an extension that may change the way Chrome works.</translation> <translation id="8475647382427415476">Google Drive was unable to sync "<ph name="FILENAME" />" right now. Google Drive will try again later.</translation> -<translation id="8476195663057048998">Clear & Reset</translation> <translation id="8477241577829954800">Superseded</translation> <translation id="8477384620836102176">&General</translation> <translation id="8480417584335382321">Page zoom:</translation> @@ -5709,7 +5710,6 @@ <translation id="8785135611469711856">Plug-in Unresponsive</translation> <translation id="8787254343425541995">Allow proxies for shared networks</translation> <translation id="878763818693997570">This name is too long</translation> -<translation id="8787865569533773240">Reset altered <ph name="IDS_SHORT_PRODUCT_NAME" /> settings</translation> <translation id="8789375980715484686">Manage other users</translation> <translation id="8791534160414513928">Send a "Do Not Track" request with your browsing traffic</translation> <translation id="8795668016723474529">Add a credit card</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index c6483097c..55346f5 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -518,7 +518,6 @@ <translation id="1673103856845176271">No se pudo acceder al archivo por razones de seguridad.</translation> <translation id="1675023460278456180">Híbrido de material</translation> <translation id="167832068858235403">reducir volumen</translation> -<translation id="1678331212993975953">Detalles del sitio</translation> <translation id="1679068421605151609">Herramientas del programador</translation> <translation id="1681120471812444678">Configurar para agregar impresoras…</translation> <translation id="1682324559341535203">Registrar <ph name="DEVICE_TYPE" /></translation> @@ -1007,7 +1006,6 @@ <translation id="2371076942591664043">Abrir al &finalizar</translation> <translation id="2372036074421194686">Chrome encontró un programa no deseado (<ph name="UWS_NAME" />) que se instaló en tu computadora. Para eliminarlo, ejecuta la Herramienta para limpiar Chrome.</translation> <translation id="2375701438512326360">Fuerza la compatibilidad de pantalla táctil para que siempre esté habilitada o inhabilitada, o para que se habilite cuando se detecta una pantalla táctil al iniciar el sistema (la configuración predeterminada es Automática).</translation> -<translation id="2377619091472055321">Restablecer configuración modificada de <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> archivos seleccionados</translation> <translation id="2378982052244864789">Seleccionar el directorio de extensión.</translation> <translation id="2379281330731083556">Imprimir mediante el sistema de diálogo... <ph name="SHORTCUT_KEY" /></translation> @@ -1555,6 +1553,7 @@ <translation id="3058212636943679650">Si alguna vez el sistema operativo de tu computadora requiere una restauración, necesitarás una tarjeta SD de recuperación o una tarjeta de memoria USB.</translation> <translation id="305932878998873762">La caché simple para HTTP es una nueva caché. Depende del sistema de archivos para la asignación de espacio en disco.</translation> <translation id="3062606427884046423">Usar las notificaciones de Android MediaStyle para las notificaciones de medios de Chrome</translation> +<translation id="3063224679438508013">Ejecutar de forma automática la app para tomar notas</translation> <translation id="3063844757726132584">Accede a tus apps con este menú práctico. Juega, participa de videochats, escucha música, edita documentos o consigue más apps.</translation> <translation id="3064388234319122767">Transliteración (zdravo → здраво)</translation> <translation id="3065041951436100775">La pestaña terminó los comentarios.</translation> @@ -1645,6 +1644,7 @@ <translation id="3172213052701798825">Google Smart Lock para contraseñas</translation> <translation id="317583078218509884">La nueva configuración de permisos del sitio se aplicará al volver a cargar la página.</translation> <translation id="3177048931975664371">Haz clic para ocultar la contraseña</translation> +<translation id="3177909033752230686">Idioma de la página:</translation> <translation id="3180365125572747493">Ingresa una contraseña para encriptar este archivo de certificado.</translation> <translation id="3183139917765991655">Importador de perfiles</translation> <translation id="3184560914950696195">No se puede guardar en $1. Las imágenes editadas se guardarán en la carpeta de descargas.</translation> @@ -1995,6 +1995,7 @@ <translation id="3612673635130633812">Descargado por <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Mostrar <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Abrir en una pestaña nueva</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">Eliminar datos de navega&ción...</translation> <translation id="3618849550573277856">Buscar "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Todos los archivos están guardados en una copia de seguridad.</translation> @@ -2291,7 +2292,6 @@ <translation id="3994878504415702912">&Tamaño</translation> <translation id="3995964755286119116">Las opciones de configuración de la cámara de Adobe Flash Player son diferentes.</translation> <translation id="39964277676607559">No se pudo cargar JavaScript <ph name="RELATIVE_PATH" /> css para la secuencia de comandos del contenido.</translation> -<translation id="3996912167543967198">Restableciendo…</translation> <translation id="3997015411467176489">Elementos canvas experimentales</translation> <translation id="4002066346123236978">Título</translation> <translation id="40027638859996362">Movimiento de palabra</translation> @@ -2388,6 +2388,7 @@ <translation id="4140559601186535628">Mensajes de inserción</translation> <translation id="4146026355784316281">Abrir siempre con el visualizador del sistema</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> desea comprobar si tu dispositivo con Sistema operativo Chrome es elegible para una oferta. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Pantalla</translation> <translation id="4151403195736952345">Utilizar opción predeterminada global (detectar)</translation> <translation id="4152177296285305182">Solo alguien con tu frase de contraseña puede leer tus datos encriptados. Google no almacena ni recibe la frase de contraseña; si la olvidas, deberás restablecer la sincronización.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 pestaña}other{# pestañas}}</translation> @@ -2452,6 +2453,7 @@ <translation id="4250229828105606438">Captura de pantalla</translation> <translation id="4250680216510889253">No</translation> <translation id="4253168017788158739">Nota</translation> +<translation id="4254813446494774748">Idioma de la traducción:</translation> <translation id="425573743389990240">Tasa de descarga de batería en vatios (un valor negativo significa que la batería se está cargando)</translation> <translation id="4256316378292851214">Guardar &video como...</translation> <translation id="4258348331913189841">Sistemas de archivos</translation> @@ -2529,6 +2531,7 @@ <translation id="4365673000813822030">¡Vaya! La sincronización ha dejado de funcionar.</translation> <translation id="4366509400410520531">Permitido por ti</translation> <translation id="4367782753568896354">No pudimos instalar:</translation> +<translation id="436904870295243580">Encontrar más aplicaciones para tomar notas</translation> <translation id="4370975561335139969">El correo electrónico y la contraseña que ingresaste no coinciden.</translation> <translation id="437184764829821926">Configuración de fuentes avanzadas</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3209,6 +3212,7 @@ <translation id="5324674707192845912">Estás a punto de anular el registro de tu <ph name="DEVICE_TYPE" /> en Google para inhabilitar la función que permite localizar el dispositivo, bloquearlo y borrar sus datos de forma remota. Para esto, debes reiniciar el dispositivo. ¿Quieres continuar?</translation> <translation id="5324780743567488672">Configurar la zona horaria automáticamente mediante la ubicación</translation> <translation id="5325120507747984426">Permite usar un ordenamiento de ventana estable en el modo de vista general cuando se intenta minimizar el movimiento de las ventanas al ingresar a la vista general o salir de ella, y entre distintas sesiones de vista general.</translation> +<translation id="5326182685622510062">Existen diferentes implementaciones en el flujo de procesamiento de gráficos para lienzos 2D. Estas implementaciones tienen diferentes características de rendimiento. Si activas esta opción, los contextos 2D de lienzos pueden alternar entre estas implementaciones al instante (según la forma en que se usa el lienzo) para mejorar el rendimiento, p. ej., el cambio de una implementación que usa la GPU a una que no la usa.</translation> <translation id="5327248766486351172">Nombre</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Suprimir</translation> @@ -3341,7 +3345,6 @@ <translation id="54870580363317966">Elige un avatar para este usuario supervisado.</translation> <translation id="5488468185303821006">Permitir modo incógnito</translation> <translation id="5489390182170331803">Comportamiento pasivo predeterminado para los objetos de escucha de eventos en el nivel de documentos</translation> -<translation id="5489789060051091748">Seleccionar para hablar: Mantener presionada la opción de Búsqueda y, luego, hacer clic o arrastrar para hablar</translation> <translation id="549294555051714732">Coincidencia de subcadenas para las sugerencias de Autocompletar</translation> <translation id="5493996328530898436">Nueva estrategia para la mezcla en el procesamiento de audio</translation> <translation id="5494362494988149300">Abrir cuan&do esté listo</translation> @@ -3698,7 +3701,6 @@ <translation id="5991049340509704927">Ampliar</translation> <translation id="5991774521050363748">Habilitar diseños personalizados para las notificaciones web. Tendrán mejoras de diseño sutiles que, de otro modo, no serían posibles.</translation> <translation id="5993332328670040093">Ya no se medirá el uso de datos.</translation> -<translation id="5996258716334177896">No se pudo abrir correctamente tu perfil. Algunas funciones pueden no estar disponibles. Verifica que el perfil exista y que tienes la autorización para leer y escribir su contenido.</translation> <translation id="6001799583597751002">Los números de PIN no coinciden:</translation> <translation id="6003177993629630467">Es posible que <ph name="PRODUCT_NAME" /> no se mantenga actualizado.</translation> <translation id="6003294706906016758">Habilitar el marco de estilo de la aplicación web para apps alojadas</translation> @@ -4148,7 +4150,6 @@ <translation id="6637362044401670482">Habilita la compatibilidad con el sobredesplazamiento del teclado virtual.</translation> <translation id="6639554308659482635">Memoria SQLite</translation> <translation id="6643016212128521049">Borrar</translation> -<translation id="6644756108386233011">¿Quieres restablecer la configuración modificada de <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">URL de revocación de entidad de certificación de Netscape</translation> <translation id="6647838571840953560">Actualmente estás en el canal <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Un segundo…</translation> @@ -4256,7 +4257,6 @@ <translation id="6810613314571580006">Accede automáticamente a los sitios web con las credenciales almacenadas. Si la función está inhabilitada, deberás confirmar siempre tu identidad para acceder a un sitio web.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> no se puede ejecutar como raíz.</translation> <translation id="6812841287760418429">Conservar cambios</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> detectó que posiblemente la configuración del navegador se haya cambiado sin tu conocimiento. ¿Quieres volver a restablecer la configuración predeterminada original?</translation> <translation id="6815551780062710681">editar</translation> <translation id="6817358880000653228">Contraseñas guardadas para este sitio:</translation> <translation id="6820008762872335722">Restablecer y preguntar la próxima vez</translation> @@ -4373,6 +4373,7 @@ <translation id="6980956047710795611">Migrar todos los datos del sistema operativo de Chrome a la nueva contraseña (requiere la contraseña anterior)</translation> <translation id="6981982820502123353">Accesibilidad</translation> <translation id="6981992744085917617">Selecciona el método que deseas usar para volver a acceder a tu cuenta:</translation> +<translation id="698231206551913481">Todos los archivos y datos locales asociados a este usuario se borrarán de forma permanente una vez que se quite este usuario.</translation> <translation id="6982896539684144327">Se detectó una impresora de <ph name="VENDOR_NAME" />.</translation> <translation id="6983783921975806247">OID registrado</translation> <translation id="6983991971286645866">Todas las modificaciones se guardarán en $1.</translation> @@ -4457,6 +4458,7 @@ <translation id="7073555242265688099">Si tienes otros dispositivos Chrome, se sincronizarán automáticamente, por lo que el teléfono también los desbloqueará.</translation> <translation id="707392107419594760">Selecciona tu teclado:</translation> <translation id="7075513071073410194">PKCS N. º 1 MD5 con encriptación RSA</translation> +<translation id="7075625805486468288">Administrar la configuración y los certificados HTTPS/SSL</translation> <translation id="7076293881109082629">Accediendo</translation> <translation id="7077829361966535409">No se pudo cargar la página de acceso a la cuenta con la configuración de proxy actual. <ph name="GAIA_RELOAD_LINK_START" />Intenta volver a acceder<ph name="GAIA_RELOAD_LINK_END" /> o utiliza otra <ph name="PROXY_SETTINGS_LINK_START" />configuración de proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Controladores de protocolo ignorados</translation> @@ -4504,7 +4506,6 @@ <translation id="7141105143012495934">Se produjo un error de acceso porque no se pudieron recuperar los datos de tu cuenta. Comunícate con el administrador o vuelve a intentarlo.</translation> <translation id="7143207342074048698">Conectando</translation> <translation id="7144878232160441200">Volver a intentarlo</translation> -<translation id="7148311641502571842">Se desactivó <ph name="PLUGIN_NAME" />. Para volver a activarlo, accede a <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Impresoras clásicas</translation> <translation id="7154130902455071009">Cambiar la página de inicio por <ph name="START_PAGE" /></translation> <translation id="715487527529576698">El modo Chino inicial es chino simplificado</translation> @@ -4783,6 +4784,7 @@ <translation id="7540972813190816353">Se produjo un error al buscar actualizaciones: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Excepciones de imágenes</translation> <translation id="7543104066686362383">Habilitar funciones de depuración en este dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Ve a <ph name="BEGIN_LINK_CHROMIUM" />Ayuda de Google Chrome<ph name="END_LINK_CHROMIUM" /> si no encuentras lo que estás buscando.</translation> <translation id="7544853251252956727">Reproducir aleatoriamente</translation> <translation id="7545288882499673859">Estrategia de descarte de la memoria para el manejo avanzado de la presión</translation> <translation id="7545415673537747415">Controla la forma en que Google usa tu historial de búsqueda para personalizar Búsqueda, Ads y otros servicios de Google en <ph name="BEGIN_LINK" />Controles de actividad de Google<ph name="END_LINK" />.</translation> @@ -5020,7 +5022,6 @@ <translation id="7879478708475862060">Seguir el modo de entrada de texto</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" agrega las siguientes aplicaciones y excepciones:</translation> <translation id="7881969471599061635">Inhabilitar subtítulos</translation> -<translation id="7884988936047469945">Funciones de accesibilidad experimentales</translation> <translation id="7885253890047913815">Destinos recientes</translation> <translation id="7887192723714330082">Responder a "OK Google" cuando la pantalla se encuentre encendida y desbloqueada</translation> <translation id="7887334752153342268">Duplicar</translation> @@ -5088,6 +5089,7 @@ <translation id="7974067550340408553">Recibir notificaciones en el teléfono cada vez que Smart Lock desbloquee tu <ph name="DEVICE_TYPE" /></translation> <translation id="7974566588408714340">Volver a intentarlo con <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Desajuste de dimensiones</translation> +<translation id="7976960358280528247">Habilita la IU del cambio entre ventanas (respuesta visual para la combinación de teclas Alt+tabulador).</translation> <translation id="7977551819349545646">Actualizando la Chromebox…</translation> <translation id="7978412674231730200">Clave privada</translation> <translation id="7979036127916589816">Error de sincronización</translation> @@ -5115,6 +5117,7 @@ Mantén el archivo de clave en un lugar seguro. Debes crear las nuevas versiones de tu extensión.</translation> <translation id="799923393800005025">Se puede ver</translation> +<translation id="8000066093800657092">Sin red</translation> <translation id="8004582292198964060">Navegador</translation> <translation id="8007030362289124303">Batería baja</translation> <translation id="8008356846765065031">No hay conexión a Internet. Comprueba la conexión.</translation> @@ -5189,6 +5192,7 @@ <translation id="8116190140324504026">Más información...</translation> <translation id="8116483400482790018">Diccionario ortográfico personalizado</translation> <translation id="8116972784401310538">&Administrador de marcadores</translation> +<translation id="8117838550640702864">Configuración de las notas</translation> <translation id="8117957376775388318">Método de entrada Dayi</translation> <translation id="8118860139461251237">Administrar tus descargas</translation> <translation id="8119572489781388874">Modificar la configuración</translation> @@ -5384,7 +5388,7 @@ <translation id="8373281062075027970">Nombre del partido: <ph name="PARTY_NAME" /></translation> <translation id="8373360586245335572">Permitir que todos los sitios muestren notificaciones</translation> <translation id="8373553483208508744">Silenciar pestañas</translation> -<translation id="8378285435971754261">Permite que el servicio de ubicación de Google ayude a las apps a encontrar tu ubicación de forma rápida y precisa, lo que permite reducir el consumo de la batería. Se enviarán datos de ubicación anónimos a Google, incluso cuando no se ejecuta ninguna app. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> +<translation id="8378285435971754261">Permite que el servicio de ubicación de Google ayude a las apps a encontrar tu ubicación de forma rápida y precisa, lo que permite reducir el consumo de la batería. Se enviarán datos de ubicación anónimos a Google, incluso cuando no se ejecute ninguna app. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8379970328220427967">Espacio libre: <ph name="SPACE_AVAILABLE" /></translation> <translation id="8381055888183086563">Habilita las opciones de menú contextual de depuración como Inspect Element para aplicaciones empaquetadas.</translation> <translation id="8381179624334829711">Administrar la configuración de la cámara…</translation> @@ -5467,7 +5471,6 @@ <translation id="8472623782143987204">respaldado por hardware</translation> <translation id="8475313423285172237">Otro programa en tu computadora agregó una extensión que puede cambiar el funcionamiento de Chrome.</translation> <translation id="8475647382427415476">En este momento, Google Drive no puede sincronizar "<ph name="FILENAME" />". Google Drive volverá a intentarlo más tarde.</translation> -<translation id="8476195663057048998">Borrar y restablecer</translation> <translation id="8477241577829954800">Reemplazado</translation> <translation id="8477384620836102176">&General</translation> <translation id="8480417584335382321">Zoom de página:</translation> @@ -5697,7 +5700,6 @@ <translation id="8785135611469711856">El complemento no responde</translation> <translation id="8787254343425541995">Permitir proxies para redes compartidas</translation> <translation id="878763818693997570">Este nombre es demasiado largo.</translation> -<translation id="8787865569533773240">Restablecer configuración modificada de <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Administrar otros usuarios</translation> <translation id="8791534160414513928">Enviar solicitud de "No realizar seguimiento" con el tráfico de navegación</translation> <translation id="8795668016723474529">Agregar una tarjeta de crédito</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 9107dad..899e8352 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -521,12 +521,11 @@ <translation id="1673103856845176271">No se ha podido acceder al archivo por razones de seguridad.</translation> <translation id="1675023460278456180">Híbrido de Material</translation> <translation id="167832068858235403">disminuir volumen</translation> -<translation id="1678331212993975953">Detalles del sitio web</translation> <translation id="1679068421605151609">Herramientas para desarrolladores</translation> <translation id="1681120471812444678">Configurar para añadir impresoras…</translation> <translation id="1682324559341535203">Registrar <ph name="DEVICE_TYPE" /></translation> <translation id="1682548588986054654">Nueva ventana de incógnito</translation> -<translation id="168328519870909584">Los actuales atacantes del sitio <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> podrían intentar instalar aplicaciones peligrosas en tu dispositivo para robar o eliminar tu información (como fotos, contraseñas, mensajes y tarjetas de crédito).</translation> +<translation id="168328519870909584">Los atacantes que se encuentran actualmente en el sitio <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> podrían intentar instalar aplicaciones peligrosas en tu dispositivo para robar o eliminar tu información (como fotos, contraseñas, mensajes y tarjetas de crédito).</translation> <translation id="1685141618403317602">Anular registro</translation> <translation id="1685944703056982650">Excepciones de cursor del ratón</translation> <translation id="1691063574428301566">El ordenador se reiniciará cuando se complete la actualización.</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">Abrir al &finalizar</translation> <translation id="2372036074421194686">Chrome ha encontrado un programa no deseado (<ph name="UWS_NAME" />) instalado en tu ordenador. Para eliminarlo, ejecuta el Limpiador de Chrome.</translation> <translation id="2375701438512326360">Fuerza la compatibilidad de pantalla táctil para que siempre esté habilitada o inhabilitada, o para que se habilite al detectar una pantalla táctil al iniciar el sistema (la opción predeterminada es la configuración automática).</translation> -<translation id="2377619091472055321">Restablecer Configuración de <ph name="IDS_SHORT_PRODUCT_NAME" /> Modificada</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> archivos seleccionados</translation> <translation id="2378982052244864789">Selecciona el directorio de la extensión.</translation> <translation id="2379281330731083556">Imprimir utilizando el cuadro de diálogo del sistema <ph name="SHORTCUT_KEY" /></translation> @@ -1479,7 +1477,7 @@ <translation id="295947108480905647"><ph name="CHROME_EXTENSION_NAME" /> quiere conectarse a:</translation> <translation id="2959614062380389916">Inhabilitada por el administrador</translation> <translation id="2960393411257968125">Establece cómo gestiona el administrador de contraseñas la introducción automática de las credenciales de sincronización.</translation> -<translation id="29611076221683977">Los actuales atacantes del sitio <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> podrían intentar instalar programas peligrosos en tu Mac para robar o eliminar tu información (por ejemplo, fotos, contraseñas, mensajes y tarjetas de crédito).</translation> +<translation id="29611076221683977">Los atacantes que se encuentran actualmente en el sitio <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> podrían intentar instalar programas peligrosos en tu Mac para robar o eliminar tu información (por ejemplo, fotos, contraseñas, mensajes y tarjetas de crédito).</translation> <translation id="2961695502793809356">Haz clic para avanzar una página o pulsa unos segundos para ver el historial</translation> <translation id="296216853343927883">Marcas de Google en el menú contextual</translation> <translation id="2963151496262057773">El complemento <ph name="PLUGIN_NAME" /> no responde. ¿Quieres detenerlo?</translation> @@ -1561,6 +1559,7 @@ <translation id="3058212636943679650">Si en algún momento necesitas restaurar el sistema operativo de tu ordenador, necesitarás una tarjeta SD de recuperación o una memoria USB.</translation> <translation id="305932878998873762">La caché simple para HTTP es una nueva caché que utiliza el sistema de archivos para la asignación de espacio de disco.</translation> <translation id="3062606427884046423">Utiliza las notificaciones MediaStyle de Android para las notificaciones multimedia de Chrome.</translation> +<translation id="3063224679438508013">Iniciar automáticamente la aplicación para tomar notas</translation> <translation id="3063844757726132584">Accede a todas tus aplicaciones desde este práctico menú. Juega, participa en chats de vídeo, escucha música, edita documentos o descarga más aplicaciones.</translation> <translation id="3064388234319122767">Transliteración (zdravo → здраво)</translation> <translation id="3065041951436100775">Comentarios sobre una pestaña que se ha cerrado.</translation> @@ -1651,6 +1650,7 @@ <translation id="3172213052701798825">Google Smart Lock para contraseñas</translation> <translation id="317583078218509884">La nueva configuración de permisos del sitio se aplicará una vez que la página se haya vuelto a cargar.</translation> <translation id="3177048931975664371">Haz clic aquí para ocultar la contraseña</translation> +<translation id="3177909033752230686">Idioma de la página:</translation> <translation id="3180365125572747493">Introduce una contraseña para cifrar este archivo de certificado.</translation> <translation id="3183139917765991655">Importador de perfiles</translation> <translation id="3184560914950696195">No se puede guardar en $1. Las imágenes editadas se guardarán en la carpeta de descargas.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Descargado a través de <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Mostrar <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Abrir en una pestaña nueva</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Borrar datos de navegación...</translation> <translation id="3618849550573277856">Buscar <ph name="LOOKUP_STRING" /></translation> <translation id="3620292326130836921">Se ha realizado la copia de seguridad de todos los archivos</translation> @@ -2293,7 +2294,6 @@ <translation id="3994878504415702912">&Tamaño</translation> <translation id="3995964755286119116">La configuración de cámara de Adobe Flash Player es diferente.</translation> <translation id="39964277676607559">No se ha podido cargar la ruta "<ph name="RELATIVE_PATH" />" de JavaScript para el script de contenido.</translation> -<translation id="3996912167543967198">Restableciendo...</translation> <translation id="3997015411467176489">Elementos canvas experimentales</translation> <translation id="4002066346123236978">Título</translation> <translation id="40027638859996362">Movimiento de palabras</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">Mensajes push</translation> <translation id="4146026355784316281">Abrir siempre con el visor del sistema</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> quiere comprobar si tu dispositivo Chrome OS puede optar a una oferta. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Pantalla</translation> <translation id="4151403195736952345">Utilizar valor predeterminado global (por defecto)</translation> <translation id="4152177296285305182">Solo alguien con tu frase de contraseña puede leer tus datos cifrados (Google no envía ni almacena la frase de contraseña). Si la olvidas, deberás restablecer la sincronización.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 pestaña}other{# pestañas}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">Captura de pantalla</translation> <translation id="4250680216510889253">No</translation> <translation id="4253168017788158739">Nota</translation> +<translation id="4254813446494774748">Idioma de traducción:</translation> <translation id="425573743389990240">Tasa de descarga de la batería en vatios (si el valor es negativo, significa que la batería se está cargando)</translation> <translation id="4256316378292851214">Gu&ardar vídeo como...</translation> <translation id="4258348331913189841">Sistemas de archivos</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">¡Ups! La sincronización ha dejado de funcionar.</translation> <translation id="4366509400410520531">Permitido por ti</translation> <translation id="4367782753568896354">No se ha podido instalar lo siguiente:</translation> +<translation id="436904870295243580">Buscar más aplicaciones para tomar notas</translation> <translation id="4370975561335139969">La dirección de correo electrónico y la contraseña que has introducido no coinciden</translation> <translation id="437184764829821926">Configuración de fuentes avanzada</translation> <translation id="4372884569765913867">1x1</translation> @@ -3208,6 +3211,7 @@ <translation id="5324674707192845912">Vas a anular el registro de este <ph name="DEVICE_TYPE" /> en Google para inhabilitar la función que permite localizar, borrar y bloquear el dispositivo de forma remota. Para hacerlo, debes reiniciar el dispositivo. ¿Quieres continuar?</translation> <translation id="5324780743567488672">Establecer la zona horaria de forma automática según tu ubicación</translation> <translation id="5325120507747984426">Utiliza un orden de ventana estable en modo de vista general para intentar minimizar el movimiento de ventanas al entrar o salir de la vista general y entre las sesiones de vista general.</translation> +<translation id="5326182685622510062">Hay varias implementaciones del flujo de procesamiento de gráficos para lienzos 2D. Estas implementaciones presentan diferentes características de rendimiento. Activar esta opción permite que los contextos de lienzos 2D puedan pasar de una implementación a otra de forma instantánea según el modo en que se utilicen estos lienzos para mejorar el rendimiento. Por ejemplo, pasar de una implementación que utiliza GPU a otra que no.</translation> <translation id="5327248766486351172">Nombre</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Suprimir</translation> @@ -3340,7 +3344,6 @@ <translation id="54870580363317966">Selecciona un avatar para este usuario supervisado.</translation> <translation id="5488468185303821006">Permitir en modo incógnito</translation> <translation id="5489390182170331803">Comportamiento predeterminado de procesadores de eventos en el documento</translation> -<translation id="5489789060051091748">Seleccionar para hablar: mantén pulsada la tecla de búsqueda y haz clic en ella o arrastra el dedo para decir algo</translation> <translation id="549294555051714732">Asociación de subcadenas para sugerencias de Autocompletar</translation> <translation id="5493996328530898436">Nueva estrategia de mezcla de procesado de audio</translation> <translation id="5494362494988149300">Abrir al &finalizar</translation> @@ -3697,9 +3700,6 @@ <translation id="5991049340509704927">Ampliar</translation> <translation id="5991774521050363748">Habilitar diseños personalizados para las notificaciones web. Tendrán pequeñas mejoras en el diseño que, de otra forma, no serían posibles.</translation> <translation id="5993332328670040093">El uso de datos dejará de medirse.</translation> -<translation id="5996258716334177896">No se ha podido abrir correctamente tu perfil. - -Es posible que algunas funciones no estén disponibles. Comprueba si el perfil existe y si tienes permiso para leer y escribir su contenido.</translation> <translation id="6001799583597751002">Los PIN no coinciden:</translation> <translation id="6003177993629630467">Es posible que <ph name="PRODUCT_NAME" /> no se pueda mantener actualizado.</translation> <translation id="6003294706906016758">Habilita el marco de estilo de aplicaciones web para aplicaciones alojadas</translation> @@ -4148,7 +4148,6 @@ <translation id="6637362044401670482">Habilita la compatibilidad de desplazamiento con rebote del teclado virtual.</translation> <translation id="6639554308659482635">Memoria de SQLite</translation> <translation id="6643016212128521049">Eliminar</translation> -<translation id="6644756108386233011">¿Quieres restablecer la configuración de <ph name="IDS_SHORT_PRODUCT_NAME" /> modificada?</translation> <translation id="6647228709620733774">URL de revocación de la entidad emisora de certificados de Netscape</translation> <translation id="6647838571840953560">Actualmente en <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Un segundo...</translation> @@ -4256,7 +4255,6 @@ <translation id="6810613314571580006">Permite iniciar sesión automáticamente en sitios web con credenciales almacenadas. Si esta función está inhabilitada, se solicitará la confirmación cada vez que se intente iniciar sesión en un sitio web.</translation> <translation id="6812349420832218321">No se puede ejecutar <ph name="PRODUCT_NAME" /> como raíz.</translation> <translation id="6812841287760418429">Mantener cambios</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> ha detectado que posiblemente la configuración del navegador haya cambiado sin tu conocimiento. ¿Quieres volver a establecer la configuración predeterminada original?</translation> <translation id="6815551780062710681">editar</translation> <translation id="6817358880000653228">Contraseñas guardadas para este sitio:</translation> <translation id="6820008762872335722">Restablecer para preguntar</translation> @@ -4372,6 +4370,7 @@ <translation id="6980956047710795611">Realizar migración de todos los datos de Chrome OS con la nueva contraseña (se necesita la contraseña anterior)</translation> <translation id="6981982820502123353">Accesibilidad</translation> <translation id="6981992744085917617">Selecciona el método que quieras utilizar para volver a iniciar sesión en la cuenta:</translation> +<translation id="698231206551913481">Una vez que se haya quitado este usuario, todos los archivos y datos asociados a él se eliminarán de forma permanente.</translation> <translation id="6982896539684144327">Impresora de <ph name="VENDOR_NAME" /> detectada</translation> <translation id="6983783921975806247">OID registrado</translation> <translation id="6983991971286645866">Todos los cambios se guardarán en $1.</translation> @@ -4458,6 +4457,7 @@ <translation id="7073555242265688099">Si tienes otros dispositivos Chrome, estos se sincronizarán automáticamente, por lo que también podrás desbloquearlos con tu teléfono.</translation> <translation id="707392107419594760">Selecciona el teclado:</translation> <translation id="7075513071073410194">PKCS #1 MD5 con cifrado RSA</translation> +<translation id="7075625805486468288">Administrar configuración y certificados HTTPS/SSL</translation> <translation id="7076293881109082629">Iniciando sesión</translation> <translation id="7077829361966535409">No se ha podido cargar la página de inicio de sesión con la configuración de proxy actual. <ph name="GAIA_RELOAD_LINK_START" />Intenta iniciar sesión de nuevo<ph name="GAIA_RELOAD_LINK_END" /> o utiliza otra <ph name="PROXY_SETTINGS_LINK_START" />configuración de proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Controladores de protocolos ignorados</translation> @@ -4505,7 +4505,6 @@ <translation id="7141105143012495934">Se ha producido un error al iniciar sesión porque no ha sido posible recuperar la información de la cuenta. Ponte en contacto con el administrador o vuelve a intentarlo.</translation> <translation id="7143207342074048698">Conectando</translation> <translation id="7144878232160441200">Volver a intentar</translation> -<translation id="7148311641502571842">Se ha inhabilitado <ph name="PLUGIN_NAME" />. Para volver a habilitarlo, accede a <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Impresoras clásicas</translation> <translation id="7154130902455071009">Cambiar página de inicio por: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">El modo inicial para el chino es el chino simplificado.</translation> @@ -4783,6 +4782,7 @@ <translation id="7540972813190816353">Se ha producido un error al comprobar las actualizaciones: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Excepciones de imágenes</translation> <translation id="7543104066686362383">Se habilitarán las funciones de depurado en este dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Si no puedes encontrar lo que estás buscando, consulta la <ph name="BEGIN_LINK_CHROMIUM" />ayuda de Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Reproducir aleatoriamente</translation> <translation id="7545288882499673859">Estrategia de prescindencia de memoria para la gestión de presión avanzada</translation> <translation id="7545415673537747415">Controla cómo utiliza Google tu historial de navegación para personalizar la Búsqueda, los anuncios y otros servicios en la página <ph name="BEGIN_LINK" />Controles de actividad de Google<ph name="END_LINK" />.</translation> @@ -5020,7 +5020,6 @@ <translation id="7879478708475862060">Seguir modo de entrada</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" añade estas aplicaciones y extensiones:</translation> <translation id="7881969471599061635">Inhabilitar subtítulos</translation> -<translation id="7884988936047469945">Funciones de accesibilidad experimentales</translation> <translation id="7885253890047913815">Destinos recientes</translation> <translation id="7887192723714330082">Responder a "Ok Google" cuando la pantalla esté encendida y desbloqueada</translation> <translation id="7887334752153342268">Duplicar</translation> @@ -5088,6 +5087,7 @@ <translation id="7974067550340408553">Recibe notificaciones en tu teléfono cada vez que Smart Lock desbloquea tu <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Intentar de nuevo con <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Reajuste</translation> +<translation id="7976960358280528247">Habilitar IU de cambio de ventana (aparece al pulsar Alt+Tabulador).</translation> <translation id="7977551819349545646">Actualizando Chromebox…</translation> <translation id="7978412674231730200">Clave privada</translation> <translation id="7979036127916589816">Error de sincronización</translation> @@ -5115,6 +5115,7 @@ Guarda tu archivo de clave en un lugar seguro, ya que lo necesitarás para crear nuevas versiones de tu extensión.</translation> <translation id="799923393800005025">Puede ver</translation> +<translation id="8000066093800657092">Ninguna red</translation> <translation id="8004582292198964060">Navegador</translation> <translation id="8007030362289124303">Batería baja</translation> <translation id="8008356846765065031">No hay conexión a Internet. Comprueba la conexión.</translation> @@ -5189,6 +5190,7 @@ <translation id="8116190140324504026">Más información...</translation> <translation id="8116483400482790018">Diccionario ortográfico personalizado</translation> <translation id="8116972784401310538">Administrador de &marcadores</translation> +<translation id="8117838550640702864">Configuración de notas</translation> <translation id="8117957376775388318">Método de entrada de dayi</translation> <translation id="8118860139461251237">Administrar tus descargas</translation> <translation id="8119572489781388874">Modificar configuración</translation> @@ -5283,7 +5285,7 @@ <translation id="8226222018808695353">Prohibido</translation> <translation id="8226742006292257240">Esta es la contraseña del TPM generada aleatoriamente que se ha asignado a tu ordenador:</translation> <translation id="822964464349305906"><ph name="TYPE_1" /> o <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Los actuales atacantes del sitio <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> podrían intentar instalar programas peligrosos en tu ordenador para robar o eliminar tu información (por ejemplo, fotos, contraseñas, mensajes y tarjetas de crédito).</translation> +<translation id="8230421197304563332">Los atacantes que se encuentran actualmente en el sitio <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> podrían intentar instalar programas peligrosos en tu ordenador para robar o eliminar tu información (por ejemplo, fotos, contraseñas, mensajes y tarjetas de crédito).</translation> <translation id="8233254008506535819">Incluye la opción para añadir a una lista blanca sitios web importantes en el cuadro de diálogo Borrar datos de navegación.</translation> <translation id="8236231079192337250">Aplicación Galería de Chrome Web Store para controladores de impresora</translation> <translation id="8238649969398088015">Sugerencia de ayuda</translation> @@ -5386,7 +5388,7 @@ <translation id="8373281062075027970">Nombre de la parte: <ph name="PARTY_NAME" /></translation> <translation id="8373360586245335572">Permitir que todos los sitios muestren notificaciones</translation> <translation id="8373553483208508744">Silenciar pestañas</translation> -<translation id="8378285435971754261">Permite que los servicios de ubicación de Google ayuden a las aplicaciones a encontrar tu ubicación de forma rápida y precisa, lo que puede reducir el consumo de la batería. Se enviarán datos de ubicación anónimos a Google, aunque no se estén utilizando aplicaciones. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> +<translation id="8378285435971754261">Permite que los servicios de ubicación de Google ayuden a las aplicaciones a encontrar tu ubicación de forma rápida y precisa, lo que puede reducir el consumo de la batería. Se enviarán datos de ubicación anónimos a Google aunque no se estén utilizando aplicaciones. <ph name="BEGIN_LINK1" />Más información<ph name="END_LINK1" /></translation> <translation id="8379970328220427967">Quedan <ph name="SPACE_AVAILABLE" />.</translation> <translation id="8381055888183086563">Permite habilitar las opciones de menú contextual de depuración (por ejemplo, la opción para inspeccionar elementos en aplicaciones comprimidas).</translation> <translation id="8381179624334829711">Administrar configuración de la cámara...</translation> @@ -5469,7 +5471,6 @@ <translation id="8472623782143987204">respaldado por hardware</translation> <translation id="8475313423285172237">Otro programa de tu ordenador ha añadido una extensión que puede cambiar el funcionamiento de Chrome.</translation> <translation id="8475647382427415476">Google Drive no ha podido sincronizar <ph name="FILENAME" /> en este momento. Este servicio volverá a intentarlo más tarde.</translation> -<translation id="8476195663057048998">Borrar y restablecer</translation> <translation id="8477241577829954800">Reemplazado</translation> <translation id="8477384620836102176">&General</translation> <translation id="8480417584335382321">Zoom de página:</translation> @@ -5699,7 +5700,6 @@ <translation id="8785135611469711856">El complemento no responde</translation> <translation id="8787254343425541995">Permitir servidores proxy en redes compartidas</translation> <translation id="878763818693997570">Este nombre es demasiado largo.</translation> -<translation id="8787865569533773240">Restablecer configuración de <ph name="IDS_SHORT_PRODUCT_NAME" /> modificada</translation> <translation id="8789375980715484686">Administrar otros usuarios</translation> <translation id="8791534160414513928">Enviar una solicitud de no seguimiento con tu tráfico de navegación</translation> <translation id="8795668016723474529">Añadir una tarjeta de crédito</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index cbc9c898..a5608a2 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Turvalisuse tagamiseks on juurdepääs failile keelatud.</translation> <translation id="1675023460278456180">Materiaalne hübriid</translation> <translation id="167832068858235403">heli vaiksemaks</translation> -<translation id="1678331212993975953">Saidi üksikasjad</translation> <translation id="1679068421605151609">Arendaja tööriistad</translation> <translation id="1681120471812444678">Seadistage printerite lisamiseks ...</translation> <translation id="1682324559341535203">Seadme <ph name="DEVICE_TYPE" /> registreerimine</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">Ava, kui on &valmis</translation> <translation id="2372036074421194686">Chrome leidis soovimatu programmi (<ph name="UWS_NAME" />), mis on teie arvutisse installitud. Saate selle võib-olla eemaldada, käitades Chrome Cleanup Tooli.</translation> <translation id="2375701438512326360">Lubage või keelake puuteekraani tugi alatiseks või lubage see juhul, kui käivitamisel tuvastatakse puuteekraan (vaikeseade on automaatne).</translation> -<translation id="2377619091472055321">Teenuse <ph name="IDS_SHORT_PRODUCT_NAME" /> muudetud seadete lähtestamine</translation> <translation id="2378075407703503998">Valitud on <ph name="SELCTED_FILE_COUNT" /> faili</translation> <translation id="2378982052244864789">Laiendi kataloogi valimine.</translation> <translation id="2379281330731083556">Prindi süsteemidialoogi abil ... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">Kui teil on vaja arvuti operatsioonisüsteem taastada, vajate taaste SD-kaarti või USB-mälupulka.</translation> <translation id="305932878998873762">HTTP lihtne vahemälu on uus vahemälu. See kasutab kettaruumi jaotamiseks failisüsteemi.</translation> <translation id="3062606427884046423">Chrome'i meediamärguannete puhul kasutatakse Android MediaStyle'i märguandeid.</translation> +<translation id="3063224679438508013">Märkmete tegemise rakendus käivitatakse automaatselt</translation> <translation id="3063844757726132584">Selles mugavas käivitusprogrammis saate juurdepääsu oma kõikidele rakendustele. Mängige mänge, pidage videovestlusi, kuulake muusikat, muutke dokumente või hankige rohkem rakendusi.</translation> <translation id="3064388234319122767">Transliteratsioon (zdravo → здраво)</translation> <translation id="3065041951436100775">Tagasiside vahelehe sulgumise kohta.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock paroolidele</translation> <translation id="317583078218509884">Saidi uute lubade seaded jõustuvad pärast lehe uuesti laadimist.</translation> <translation id="3177048931975664371">Parooli peitmiseks klõpsake</translation> +<translation id="3177909033752230686">Lehe keel:</translation> <translation id="3180365125572747493">Sisestage parool selle sertifikaadifaili krüpteerimiseks.</translation> <translation id="3183139917765991655">Profiili importija</translation> <translation id="3184560914950696195">Asukohta $1 ei saa salvestada. Muudetud pildid salvestatakse kausta Allalaadimised.</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">Laadis alla <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Kuva <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Ava uuel vahelehel</translation> +<translation id="3616113530831147358">Heli</translation> <translation id="3616741288025931835">Kustuta sirvi&mise andmed...</translation> <translation id="3618849550573277856">Otsi terminit „<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Kõik on varundatud.</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&Suumi</translation> <translation id="3995964755286119116">Adobe Flash Playeri kaameraseaded on erinevad.</translation> <translation id="39964277676607559">Sisuskripti jaoks ei õnnestunud laadida JavaScripti <ph name="RELATIVE_PATH" />.</translation> -<translation id="3996912167543967198">Lähtestamine ...</translation> <translation id="3997015411467176489">Lõuendi katselised funktsioonid</translation> <translation id="4002066346123236978">Pealkiri</translation> <translation id="40027638859996362">Sõna liigutamine</translation> @@ -2328,7 +2328,7 @@ <translation id="406070391919917862">Taustarakendused</translation> <translation id="4062251648694601778">Head <ph name="SHORT_PRODUCT_NAME" />'i seadme kasutamist. Kas teil on küsimusi? Leiate alati abi, kui klõpsate olekualal nupul „?”.</translation> <translation id="4065876735068446555">Teie kasutatav võrk (<ph name="NETWORK_ID" />) võib nõuda sisselogimislehe külastamist.</translation> -<translation id="4068506536726151626">See leht sisaldab järgmiste lehtede elemente, mis jälgivad teie asukohta:</translation> +<translation id="4068506536726151626">See leht sisaldab järgmiste saitide elemente, mis jälgivad teie asukohta:</translation> <translation id="4070370845051020638">Kantoni sisestusmeetod</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: sisselogimise viga</translation> <translation id="4072248638558688893">Tamili klaviatuur (foneetiline)</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">Tõukesõnumid</translation> <translation id="4146026355784316281">Ava alati süsteemivaaturiga</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> tahab kontrollida, kas teie Chrome OS-i seade on sobilik pakkumise kasutamiseks. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Kuva</translation> <translation id="4151403195736952345">Kasuta üldist vaikevalikut (tuvasta)</translation> <translation id="4152177296285305182">Teie krüpteeritud andmeid saavad lugeda vaid isikud, kes teavad teie parooli – seda ei saadeta Google'ile ja Google ei talleta seda. Kui unustate parooli, tuleb teil sünkroonimine lähtestada.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 vaheleht}other{# vahelehte}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">Ekraanipilt</translation> <translation id="4250680216510889253">Ei</translation> <translation id="4253168017788158739">Märkus</translation> +<translation id="4254813446494774748">Tõlkimiskeel:</translation> <translation id="425573743389990240">Aku tühjenemise määr vattides (negatiivne väärtus tähendab, et akut laetakse)</translation> <translation id="4256316378292851214">Salvesta video &nimega...</translation> <translation id="4258348331913189841">Failisüsteemid</translation> @@ -2532,6 +2534,7 @@ <translation id="4365673000813822030">Vabandust, sünkroonimine on lakanud töötamast.</translation> <translation id="4366509400410520531">Teie olete lubanud</translation> <translation id="4367782753568896354">Me ei saanud installida:</translation> +<translation id="436904870295243580">Otsi rohkem märkmete tegemise rakendusi</translation> <translation id="4370975561335139969">Sisestatud e-posti aadress ja parool ei ühildu</translation> <translation id="437184764829821926">Täiustatud fondiseaded</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3213,6 +3216,7 @@ <translation id="5324674707192845912">Soovite tühistada seadme <ph name="DEVICE_TYPE" /> registreerimise Google'is, et keelata kaughalduse abil asukoha tuvastamine, andmete kustutamine ja seadme lukustamine. See nõuab seadme taaskäivitamist. Kas soovite jätkata?</translation> <translation id="5324780743567488672">Määra ajavöönd asukoha alusel automaatselt</translation> <translation id="5325120507747984426">Kasutab ülevaaterežiimis stabiilset akende järjestust, mis vähendab akende liikumist ülevaaterežiimi sisenedes ja sellest väljudes ning ülevaateseansside vahel.</translation> +<translation id="5326182685622510062">2D-lõuendi jaoks on mitu graafikarenderduse konveieri versiooni. Eri versioonide jõudluse omadused on erinevad. Kui see märgistus lülitatakse sisse, saavad lõuendi 2D-kontekstid lõuendi kasutamise põhjal nende versioonide vahel jooksvalt vahetada, et jõudlust suurendada. Näiteks saab lülitada GPU-d kasutavalt versioonilt versioonile, mis seda ei kasuta.</translation> <translation id="5327248766486351172">Nimi</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Kustuta</translation> @@ -3345,7 +3349,6 @@ <translation id="54870580363317966">Valige sellele jälgitavale kasutajale avatar.</translation> <translation id="5488468185303821006">Luba inkognito-režiimis</translation> <translation id="5489390182170331803">Dokumendi tasemel sündmusekuulajad on vaikimisi passiivsed</translation> -<translation id="5489789060051091748">Rääkimiseks valimine: hoidke all otsinguklahvi ja klõpsake või lohistage rääkimiseks</translation> <translation id="549294555051714732">Alamstringide vastendamine automaattäite soovituste hankimiseks</translation> <translation id="5493996328530898436">Uus helirenderduse miksimisstrateegia</translation> <translation id="5494362494988149300">Ava, kui on &valmis</translation> @@ -3702,9 +3705,6 @@ <translation id="5991049340509704927">Suurenda</translation> <translation id="5991774521050363748">Lubage veebimärguannete puhul kohandatud paigutused. Need sisaldavad väikseid paigutuse täiustusi, mis muidu poleks võimalikud.</translation> <translation id="5993332328670040093">Teie andmemahu kasutust ei mõõdeta enam.</translation> -<translation id="5996258716334177896">Teie profiili ei õnnestunud õigesti avada. - -Mõned funktsioonid ei pruugi olla saadaval. Veenduge, et profiil on olemas ning teil on luba sisu lugeda ja kirjutada.</translation> <translation id="6001799583597751002">PIN-koodid ei ühti:</translation> <translation id="6003177993629630467">Võimalik, et <ph name="PRODUCT_NAME" />'il ei õnnestu ennast värskendada.</translation> <translation id="6003294706906016758">Lubab veebirakenduse stiilis raamid hostitud rakenduste jaoks</translation> @@ -4154,7 +4154,6 @@ <translation id="6637362044401670482">Lubatakse virtuaalse klaviatuuri ülekerimise tugi.</translation> <translation id="6639554308659482635">SQLite'i mälu</translation> <translation id="6643016212128521049">Tühjenda</translation> -<translation id="6644756108386233011">Kas lähtestada teenuse <ph name="IDS_SHORT_PRODUCT_NAME" /> muudetud seaded?</translation> <translation id="6647228709620733774">Netscape'i sertifitseerimisorgani tühistus-URL</translation> <translation id="6647838571840953560">Praegu kanalil <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Oodake pisut …</translation> @@ -4262,7 +4261,6 @@ <translation id="6810613314571580006">Teid logitakse salvestatud mandaadiga veebisaitidele automaatselt sisse. Kui funktsioon on keelatud, palutakse teilt kinnitust iga kord enne veebisaidile sisselogimist.</translation> <translation id="6812349420832218321">Toodet <ph name="PRODUCT_NAME" /> ei saa juurkasutajana käitada.</translation> <translation id="6812841287760418429">Säilita muudatused</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> tuvastas, et teie brauseri seadeid võib olla teie teadmata muudetud. Kas soovite need lähtestada algsetele vaikeseadetele?</translation> <translation id="6815551780062710681">muuda</translation> <translation id="6817358880000653228">Selle saidi jaoks salvestatud paroolid:</translation> <translation id="6820008762872335722">Lähtesta küsimiseks</translation> @@ -4379,6 +4377,7 @@ <translation id="6980956047710795611">Vii kõik Chrome OS-i andmed üle uuele paroolile (teil tuleb sisestada eelmine parool)</translation> <translation id="6981982820502123353">Juurdepääsetavus</translation> <translation id="6981992744085917617">Valige meetod, mida soovite kasutada oma kontole uuesti sisselogimiseks:</translation> +<translation id="698231206551913481">Kõik selle kasutajaga seotud failid ja kohalikud andmed kustutatakse jäädavalt kohe, kui see kasutaja eemaldatakse.</translation> <translation id="6982896539684144327">Tuvastati teenusepakkuja <ph name="VENDOR_NAME" /> printer</translation> <translation id="6983783921975806247">Registreeritud OID</translation> <translation id="6983991971286645866">Kõik muudatused salvestatakse koopiasse $1.</translation> @@ -4465,6 +4464,7 @@ <translation id="7073555242265688099">Kui kasutate muid Chrome'i seadmeid, siis sünkroonitakse need automaatselt, nii et telefon avab ka need seadmed.</translation> <translation id="707392107419594760">Vali klaviatuur:</translation> <translation id="7075513071073410194">PKCS 1 MD5 koos RSA krüpteerimisega</translation> +<translation id="7075625805486468288">HTTPS-/SSL-sertifikaatide ja seadete haldamine</translation> <translation id="7076293881109082629">Sisselogimine</translation> <translation id="7077829361966535409">Sisselogimislehte ei saanud praeguste puhverserveri seadetega laadida. <ph name="GAIA_RELOAD_LINK_START" />Proovige uuesti sisse logida<ph name="GAIA_RELOAD_LINK_END" /> või kasutage teisi <ph name="PROXY_SETTINGS_LINK_START" />puhverserveri seadeid<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Protokolli ignoreeritud töötlejad</translation> @@ -4512,7 +4512,6 @@ <translation id="7141105143012495934">Sisselogimine ebaõnnestus, kuna teie konto üksikasju ei saanud tuua. Võtke ühendust administraatoriga või proovige uuesti.</translation> <translation id="7143207342074048698">Ühendamine</translation> <translation id="7144878232160441200">Proovi uuesti</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> on keelatud. Lubamiseks külastage aadressi <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Tavaprinterid</translation> <translation id="7154130902455071009">Määrake avaleheks <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Esialgne hiina keele režiim on lihtsustatud hiina keel</translation> @@ -4791,6 +4790,7 @@ <translation id="7540972813190816353">Värskenduste otsimisel ilmnes viga: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Piltide erandid</translation> <translation id="7543104066686362383">Luba silumisfunktsioonid selles toote <ph name="IDS_SHORT_PRODUCT_NAME" /> seadmes</translation> +<translation id="7543393759143837504">Kui te ei leia otsitavat, avage <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome'i abi<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Esita juhuslikus järjekorras</translation> <translation id="7545288882499673859">Mälu tühistamise strateegia täpsemaks koormuse töötlemiseks</translation> <translation id="7545415673537747415"><ph name="BEGIN_LINK" />Google'i kontotegevuste haldus<ph name="END_LINK" /> võimaldab juhtida seda, kuidas Google kasutab teie sirvimisajalugu otsingu, reklaamide ja muude Google'i teenuste isikupärastamiseks.</translation> @@ -5028,7 +5028,6 @@ <translation id="7879478708475862060">Sisestusmeetodi jälgimine</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" lisab järgmised rakendused ja laiendused.</translation> <translation id="7881969471599061635">Keela subtiitrid</translation> -<translation id="7884988936047469945">Katselised juurdepääsetavuse funktsioonid</translation> <translation id="7885253890047913815">Hiljutised sihtkohad</translation> <translation id="7887192723714330082">Reageerimine otsetee sõnale „Ok Google”, kui ekraan on sisse lülitatud ja avatud</translation> <translation id="7887334752153342268">Tee koopia</translation> @@ -5096,6 +5095,7 @@ <translation id="7974067550340408553">Saate telefonis märguande iga kord, kui funktsioon Smart Lock avab teie seadme <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Proovi uuesti, kasutades laiendust <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Üleskannimine</translation> +<translation id="7976960358280528247">Akna tsükli kasutajaliidese lubamine (klahvikombinatsiooni Alt + Tabulaator visuaalne tagasiside).</translation> <translation id="7977551819349545646">Chromeboxi värskendamine ...</translation> <translation id="7978412674231730200">Privaatvõti</translation> <translation id="7979036127916589816">Sünkroonimise viga</translation> @@ -5123,6 +5123,7 @@ Hoidke oma võtmefail kindlas kohas. Teil läheb seda oma laiendi uute versioonide loomiseks vaja.</translation> <translation id="799923393800005025">Saab vaadata</translation> +<translation id="8000066093800657092">Võrku pole</translation> <translation id="8004582292198964060">Brauser</translation> <translation id="8007030362289124303">Aku tühjenemas</translation> <translation id="8008356846765065031">Interneti-ühendus puudub. Kontrollige Interneti-ühendust.</translation> @@ -5197,6 +5198,7 @@ <translation id="8116190140324504026">Rohkem teavet ...</translation> <translation id="8116483400482790018">Õigekirjakontrolli kohandatud sõnastik</translation> <translation id="8116972784401310538">&Järjehoidjate haldur</translation> +<translation id="8117838550640702864">Märkme seaded</translation> <translation id="8117957376775388318">Dayi sisestusmeetod</translation> <translation id="8118860139461251237">Allalaadimiste haldamine</translation> <translation id="8119572489781388874">Muuda seadeid</translation> @@ -5476,7 +5478,6 @@ <translation id="8472623782143987204">riistvaraga toetatud</translation> <translation id="8475313423285172237">Teine programm teie arvutis lisas laienduse, mis võib muuta Chrome'i toimimist.</translation> <translation id="8475647382427415476">Google Drive ei saanud praegu sünkroonida faili „<ph name="FILENAME" />”. Google Drive proovib hiljem uuesti.</translation> -<translation id="8476195663057048998">Kustuta ja lähtesta</translation> <translation id="8477241577829954800">Asendatud</translation> <translation id="8477384620836102176">&Üldine</translation> <translation id="8480417584335382321">Lehe suum:</translation> @@ -5706,7 +5707,6 @@ <translation id="8785135611469711856">Pistikprogramm ei reageeri</translation> <translation id="8787254343425541995">Lubage puhverserverid jagatud võrkudes</translation> <translation id="878763818693997570">Nimi on liiga pikk</translation> -<translation id="8787865569533773240">Lähtesta teenuse <ph name="IDS_SHORT_PRODUCT_NAME" /> muudetud seaded</translation> <translation id="8789375980715484686">Muude kasutajate haldamine</translation> <translation id="8791534160414513928">Saada sirvimisliiklusega taotlus „Ära jälgi”</translation> <translation id="8795668016723474529">Krediitkaardi lisamine</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index deeb6c95..fc84543 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -519,12 +519,11 @@ <translation id="1673103856845176271">دسترسی به این فایل به دلایل امنیتی ممکن نبود.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">کاهش صدا</translation> -<translation id="1678331212993975953">جزئیات سایت</translation> <translation id="1679068421605151609">ابزار برنامهنویس</translation> <translation id="1681120471812444678">تنظیم برای افزودن چاپگرها...</translation> <translation id="1682324559341535203">ثبت <ph name="DEVICE_TYPE" /></translation> <translation id="1682548588986054654">پنجره جدید ناشناس</translation> -<translation id="168328519870909584">ممکن است مهاجمین حاضر در <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> تلاش کنند برنامههای خطرناکی در دستگاهتان نصب کنند که اطلاعات شما (مانند عکسها، گذرواژهها، پیامها و کارتهای اعتباری) را سرقت یا حذف میکنند.</translation> +<translation id="168328519870909584">مهاجمها در <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> درحالحاضر ممکن است تلاش کنند تا برنامههای خطرناکی در دستگاهتان نصب کنند که اطلاعات شما (مانند کارتهای اعتباری، عکسها، گذرواژهها و پیامهایتان) را سرقت یا حذف میکنند.</translation> <translation id="1685141618403317602">لغو ثبت</translation> <translation id="1685944703056982650">موارد استثنای مکاننمای موشواره</translation> <translation id="1691063574428301566">وقتی بهروزرسانی کامل شد، رایانهٔ شما راهاندازی مجدد میشود.</translation> @@ -1008,7 +1007,6 @@ <translation id="2371076942591664043">پس از &تکمیل باز شود</translation> <translation id="2372036074421194686">Chrome برنامه ناخواسته نصبشدهای (<ph name="UWS_NAME" />) را در رایانه شما پیدا کرده است. ممکن است بتوانید با اجرای «ابزار پاکسازی Chrome» آن را حذف کنید.</translation> <translation id="2375701438512326360">کاری کنید که پشتیبانی صفحه لمسی فعال یا غیرفعال شود، یا وقتی صفحه لمسی هنگام شروع به کار ردیابی میشود (خودکار، پیشفرض) فعال شود.</translation> -<translation id="2377619091472055321">بازنشانی تنظیمات تغییریافته <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> فایل انتخاب شد</translation> <translation id="2378982052244864789">دایرکتوری برنامهٔ افزودنی را انتخاب کنید.</translation> <translation id="2379281330731083556">چاپ با استفاده از گفتگوی سیستم... <ph name="SHORTCUT_KEY" /></translation> @@ -1473,7 +1471,7 @@ <translation id="295947108480905647">«<ph name="CHROME_EXTENSION_NAME" />» میخواهد به این مورد متصل شود:</translation> <translation id="2959614062380389916">سرپرست سیستم غیرفعال کرده است</translation> <translation id="2960393411257968125">نحوه تکمیل خودکار اعتبارنامه همگامسازی توسط مدیریت گذرواژه.</translation> -<translation id="29611076221683977">ممکن است مهاجمین حاضر در <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> تلاش کنند تا برنامههای مخربی در Mac شما نصب کنند تا اطلاعات شما (مانند عکسها، گذرواژهها، پیامها و کارتهای اعتباری) را سرقت یا حذف کنند.</translation> +<translation id="29611076221683977">مهاجمها در <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> درحالحاضر ممکن است تلاش کنند تا برنامههای خطرناکی در Mac شما نصب کنند که اطلاعات شما (مانند کارتهای اعتباری، عکسها، گذرواژهها و پیامهایتان) را سرقت یا حذف میکنند.</translation> <translation id="2961695502793809356">برای رفتن به جلو کلیک کنید، برای دیدن سابقه نگه دارید</translation> <translation id="296216853343927883">نام تجاری Google در منوی بافت</translation> <translation id="2963151496262057773">این افزایه جواب نمیدهد: <ph name="PLUGIN_NAME" />آیا میخواهید متوقف شود؟</translation> @@ -1555,6 +1553,7 @@ <translation id="3058212636943679650">درصورتیکه لازم شود سیستم عامل رایانهٔ خود را بازیابی کنید، به یک کارت SD بازیابی یا کارت حافظهٔ USB نیاز خواهید داشت.</translation> <translation id="305932878998873762">حافظه داخلی ساده HTTP حافظه داخلی جدیدی است. این قابلیت برای تخصیص فضای دیسک به سیستم پروندهای تکیه میکند.</translation> <translation id="3062606427884046423">از اعلانهای Android MediaStyle برای اعلانهای رسانه Chrome استفاده میکند.</translation> +<translation id="3063224679438508013">راهاندازی خودکار برنامه یادداشتبرداری</translation> <translation id="3063844757726132584">از این راهانداز راحت به تمام برنامههایتان دسترسی داشته باشید. بازی کنید، گپ ویدیویی بزنید، به موسیقی گوش دهید، اسناد را ویرایش کنید یا برنامههای بیشتری دریافت کنید.</translation> <translation id="3064388234319122767">نویسهگردانی (zdravo ← здраво)</translation> <translation id="3065041951436100775">بازخورد بسته شدن برگه.</translation> @@ -1645,6 +1644,7 @@ <translation id="3172213052701798825">Google Smart Lock برای گذرواژهها</translation> <translation id="317583078218509884">تنظیمات مجوزهای جدید سایت پس از بارگیری مجدد صفحه اعمال میشوند.</translation> <translation id="3177048931975664371">برای پنهان کردن گذرواژه، کلیک کنید</translation> +<translation id="3177909033752230686">زبان صفحه:</translation> <translation id="3180365125572747493">برای رمزگذاری این فایل مجوز، یک گذرواژه وارد کنید.</translation> <translation id="3183139917765991655">واردکننده نمایه</translation> <translation id="3184560914950696195">نمیتوان در $1 ذخیره کرد. تصاویر ویرایش شده در پوشه بارگیریها ذخیره میشوند.</translation> @@ -1995,6 +1995,7 @@ <translation id="3612673635130633812">بارگیریشده توسط <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">نشان دادن <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">باز &کردن در برگهٔ جدید</translation> +<translation id="3616113530831147358">صوتی</translation> <translation id="3616741288025931835">&پاک کردن دادههای مرور...</translation> <translation id="3618849550573277856">جستجوی «<ph name="LOOKUP_STRING" />»</translation> <translation id="3620292326130836921">همه پشتیبانگیری شدند.</translation> @@ -2291,7 +2292,6 @@ <translation id="3994878504415702912">&بزرگنمایی</translation> <translation id="3995964755286119116">تنظیمات دوربین Adobe Flash Player فرق میکند.</translation> <translation id="39964277676607559">بارگیری جاوا اسکریپت "<ph name="RELATIVE_PATH" />" برای اسکریپت محتوا ممکن نیست.</translation> -<translation id="3996912167543967198">در حال بازنشانی...</translation> <translation id="3997015411467176489">قابلیتهای کانواس آزمایشی</translation> <translation id="4002066346123236978">عنوان</translation> <translation id="40027638859996362">انتقال کلمه</translation> @@ -2324,7 +2324,7 @@ <translation id="406070391919917862">برنامههای پسزمینه</translation> <translation id="4062251648694601778">از دستگاه <ph name="SHORT_PRODUCT_NAME" /> خودتان لذت ببرید. سؤال دارید؟ همیشه میتوانید با کلیک روی «؟» در سینی وضعیت راهنمایی دریافت کنید.</translation> <translation id="4065876735068446555">ممکن است شبکهای که استفاده میکنید (<ph name="NETWORK_ID" />)، بازدید از صفحه ورود به سیستم خود را برای شما ضروری کرده باشد.</translation> -<translation id="4068506536726151626">این صفحه دارای عناصری از سایتهای زیر است که مکان شما را ردیابی میکنند:</translation> +<translation id="4068506536726151626">این صفحه کنشگرهایی از سایتهای زیر دارد که مکان شما را ردیابی میکنند:</translation> <translation id="4070370845051020638">روش ورودی کانتونی</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: خطای ورود به سیستم</translation> <translation id="4072248638558688893">صفحهکلید تامیل (آوایی)</translation> @@ -2388,6 +2388,7 @@ <translation id="4140559601186535628">پیامهای فشاری</translation> <translation id="4146026355784316281">همیشه با نظارهگر سیستم باز شود</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> میخواهد بررسی کند که آیا سیستم عامل Chrome شما برای یک پیشنهاد ویژه واجد شرایط است. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">صفحهنمایش</translation> <translation id="4151403195736952345">استفاده از پیشفرض کلی (تشخیص)</translation> <translation id="4152177296285305182">فقط فردی با عبارت عبور شما میتواند داده رمزگذاریشده شما را بخواند. عبارت عبور توسط Google ارسال یا ذخیره نمیشود. اگر عبارت عبور خود را فراموش کردهاید، باید همگامسازی را بازنشانی کنید.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{۱ برگه}one{# برگه}other{# برگه}}</translation> @@ -2452,6 +2453,7 @@ <translation id="4250229828105606438">عکس صفحهنمایش</translation> <translation id="4250680216510889253">نه</translation> <translation id="4253168017788158739">یادداشت</translation> +<translation id="4254813446494774748">زبان ترجمه:</translation> <translation id="425573743389990240">نسبت تخلیه باتری به وات (مقدار منفی به معنی این است که باتری در حال شارژ شدن است)</translation> <translation id="4256316378292851214">ذ&خیره فایل ویدئویی بهعنوان...</translation> <translation id="4258348331913189841">سیستمهای فایل</translation> @@ -2529,6 +2531,7 @@ <translation id="4365673000813822030">وای، همگامسازی متوقف شده است.</translation> <translation id="4366509400410520531">مجاز توسط شما</translation> <translation id="4367782753568896354">ما نتوانستیم این موارد را نصب کنیم:</translation> +<translation id="436904870295243580">پیدا کردن برنامههای یادداشتبرداری بیشتر</translation> <translation id="4370975561335139969">رایانامه و گذرواژهای که وارد کردهاید، مطابقت ندارند</translation> <translation id="437184764829821926">تنظیمات پیشرفته قلم</translation> <translation id="4372884569765913867">۱x۱</translation> @@ -2946,7 +2949,7 @@ <translation id="4974733135013075877">خروج و قفل کودک</translation> <translation id="497490572025913070">مرزهای لایه تبدیل مرکب</translation> <translation id="4977942889532008999">تأیید دسترسی</translation> -<translation id="4980805016576257426">این افزونه حاوی بدافزار است.</translation> +<translation id="4980805016576257426">این افزونه بدافزار دارد.</translation> <translation id="4982319280615426980">واسط کاربر قفل موشواره/تمام صفحه سادهشده.</translation> <translation id="4982718461356080574">پنهان کردن دکمههای بستن در برگههای غیرفعال جمعشده</translation> <translation id="498294082491145744">تغییر تنظیمات که دسترسی وبسایتها به قابلیتهایی مثل کوکیها، جاوا اسکرپیت، افزایهها، موقعیت جغرافیایی، میکروفن، دوربین و غیره را کنترل میکنند.</translation> @@ -3209,6 +3212,7 @@ <translation id="5324674707192845912">در حال لغو ثبت این <ph name="DEVICE_TYPE" /> در Google هستید تا قابلیت پاککردن، قفلکردن و تعیین مکان دستگاه را از راه دور غیرفعال کنید. این کار به راهاندازی مجدد نیاز دارد. میخواهید ادامه دهید؟</translation> <translation id="5324780743567488672">تنظیم خودکار منطقه زمانی با استفاده از موقعیت مکانی شما</translation> <translation id="5325120507747984426">از یک ترتیب پنجره پایدار در حالت نمای کلی استفاده میکند که تلاش میکند جابهجایی پنجرهها را هنگام ورود / خروج از نمای کلی و میان جلسههای نمای کلی، به حداقل برساند.</translation> +<translation id="5326182685622510062">چندین پیادهسازی پایپلاین پردازش تصاویر گرافیکی برای کانواس دوبعدی وجود دارد. این پیادهسازیهای مختلف، ویژگیهای عملکردی متفاوتی دارند. روشن کردن این پرچم به زمینههای دوبعدی کانواس امکان میدهد برای افزایش عملکرد، میان این پیادهسازیهای درحال اجرا (براساس چگونگی استفاده از کانواس) جابهجا شوند. برای مثال، رفتن از یک پیادهسازی که از GPU استفاده میکند به پیادهسازیای که از آن استفاده نمیکند.</translation> <translation id="5327248766486351172">نام</translation> <translation id="5328031682234198929">۸</translation> <translation id="5329858601952122676">&حذف</translation> @@ -3341,7 +3345,6 @@ <translation id="54870580363317966">یک چهرهنما برای این کاربر نظارتشده انتخاب کنید.</translation> <translation id="5488468185303821006">در ناشناس مجاز است</translation> <translation id="5489390182170331803">Document Level Event Listeners Passive Default</translation> -<translation id="5489789060051091748">انتخاب برای بازگو کردن: «جستجو» را پایین نگه دارید و برای بازگو کردن هر چیزی کلیک کنید یا بکشید.</translation> <translation id="549294555051714732">تطبیق رشته فرعی برای پیشنهادهای تکمیل خودکار</translation> <translation id="5493996328530898436">استراتژی جدید ترکب پردازش صوتی</translation> <translation id="5494362494988149300">پس از &تکمیل باز شود</translation> @@ -3698,7 +3701,6 @@ <translation id="5991049340509704927">بزرگنمایی</translation> <translation id="5991774521050363748">فعال کردن طرحبندیهای سفارشی برای اعلانهای وب. بهبودهایی در این طرحبندیها وجود خواهد داشت که در شرایط دیگر ممکن نبودند.</translation> <translation id="5993332328670040093">دادههای شما دیگر اندازهگیری نمیشود</translation> -<translation id="5996258716334177896">نمایهٔ شما را نمیتوان درست باز کرد. ممکن است برخی از ویژگیها موجود نباشند. لطفاً بررسی کنید که نمایه موجود باشد و شما اجازه خواندن محتوای آن و نوشتن در آن را دارید.</translation> <translation id="6001799583597751002">پینها مطابقت ندارند:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> ممکن است نتواند خود را به روز نگه دارد.</translation> <translation id="6003294706906016758">قاب سبک برنامه وب را برای برنامههای میزبانیشده فعال میکند</translation> @@ -4148,7 +4150,6 @@ <translation id="6637362044401670482">پشتیبانی کلی از صفحهکلید مجازی را فعال میکند.</translation> <translation id="6639554308659482635">حافظه SQLite</translation> <translation id="6643016212128521049">پاک کردن</translation> -<translation id="6644756108386233011">تنظیمات تغییریافته <ph name="IDS_SHORT_PRODUCT_NAME" /> بازنشانی شوند؟</translation> <translation id="6647228709620733774">نشانی وب ابطال ارائه دهنده مجوز Netscape</translation> <translation id="6647838571840953560">درحالحاضر در کانال <ph name="CHANNEL_NAME" /> است</translation> <translation id="6649018507441623493">یک لحظه…</translation> @@ -4256,7 +4257,6 @@ <translation id="6810613314571580006">با استفاده از اعتبارنامههای ذخیرهشده، بهطور خودکار به سیستم وبسایتها وارد شوید. وقتی این قابلیت غیرفعال است، هر بار قبل از وارد شدن به وبسایت از شما برای تأیید اطلاعات درخواست میشود.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> را نمیتوان بهعنوان ریشه اجرا کرد.</translation> <translation id="6812841287760418429">حفظ تغییرات</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> تشخیص داده که ممکن است تنظیمات مرورگرتان بدون آگاهی شما تغییر کرده باشند. آیا مایلید آنها را به پیشفرضهای اصلیشان بازنشانی کنید؟</translation> <translation id="6815551780062710681">ویرایش</translation> <translation id="6817358880000653228">گذرواژههای ذخیره شده برای این سایت:</translation> <translation id="6820008762872335722">بازنشانی برای درخواست</translation> @@ -4373,6 +4373,7 @@ <translation id="6980956047710795611">تمام دادههای سیستم عامل Chrome به گذرواژه جدید منتقل شوند (نیاز به گذرواژه قبلی دارد)</translation> <translation id="6981982820502123353">قابلیت دسترسی</translation> <translation id="6981992744085917617">روشی را که میخواهید برای ورود دوباره به حسابتان استفاده شود، انتخاب کنید:</translation> +<translation id="698231206551913481">اگر کاربر حذف شود، همه فایلها و دادههای محلی مربوط به او بهطور دائم حذف خواهند شد.</translation> <translation id="6982896539684144327">چاپگر <ph name="VENDOR_NAME" /> شناسایی شد</translation> <translation id="6983783921975806247">OID ثبت شده</translation> <translation id="6983991971286645866">همه ویرایشها در $1 ذخیره میشوند.</translation> @@ -4457,6 +4458,7 @@ <translation id="7073555242265688099">اگر دستگاههای Chrome دیگری دارید، به صورت خودکار همگامسازی میشوند بنابراین تلفنتان قفل آنها را هم باز میکند.</translation> <translation id="707392107419594760">صفحهکلید خود را انتخاب کنید:</translation> <translation id="7075513071073410194">PKCS #1 MD5 با رمزگذاری RSA</translation> +<translation id="7075625805486468288">مدیریت گواهیها و تنظیمات HTTPS/SSL</translation> <translation id="7076293881109082629">در حال ورود به سیستم</translation> <translation id="7077829361966535409">بارگیری صفحه ورود به سیستم با استفاده از تنظمیات کنونی پروکسی انجام نشد. لطفاً <ph name="GAIA_RELOAD_LINK_START" />دوباره به سیستم وارد شوید<ph name="GAIA_RELOAD_LINK_END" /> یا از <ph name="PROXY_SETTINGS_LINK_START" />تنظمیات پروکسی<ph name="PROXY_SETTINGS_LINK_END" /> متفاوتی استفاده نمایید.</translation> <translation id="7077872827894353012">کنترل کنندههای پروتکل نادیده گرفته شده</translation> @@ -4504,7 +4506,6 @@ <translation id="7141105143012495934">به دلیل اینکه جزئيات حساب شما بازیابی نشد، ورود به سیستم ناموفق بود. لطفاً با سرپرستتان تماس بگیرید یا دوباره امتحان کنید.</translation> <translation id="7143207342074048698">در حال اتصال</translation> <translation id="7144878232160441200">سعی مجدد</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> غیرفعال شده است. برای فعال کردن مجدد آن، لطفاً به <ph name="CHROME_PLUGINS_LINK" /> بروید.</translation> <translation id="715118844758971915">چاپگرهای کلاسیک</translation> <translation id="7154130902455071009">تغییر صفحه شروعتان به: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">حالت چینی اولیه، چینی ساده است</translation> @@ -4566,7 +4567,7 @@ <translation id="7243055093079293866">در برگه جدید و google.com بگویید «Ok Google»</translation> <translation id="7243632151880336635">پاک کردن و خروج از سیستم</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> × <ph name="HEIGHT" /> (بهترین)</translation> -<translation id="724691107663265825">وبسایت پیش رو حاوی بدافزار است</translation> +<translation id="724691107663265825">این وبسایت بدافزار دارد</translation> <translation id="725109152065019550">متأسفیم، سرپرست سیستم، حافظه خارجی را برای حساب شما غیرفعال کرده است.</translation> <translation id="7252661675567922360">بارگیری نشود</translation> <translation id="7253521419891527137">&بیشتر بیاموزید</translation> @@ -4785,6 +4786,7 @@ <translation id="7540972813190816353">در هنگام بررسی برای وجود بهروزرسانی خطایی رخ داد: <ph name="ERROR" /></translation> <translation id="7541121857749629630">موارد استثنای تصویر</translation> <translation id="7543104066686362383">فعال کردن ویژگیهای رفع اشکال در این دستگاه <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">اگر نمیتوانید چیزی را که میخواهید پیدا کنید، به <ph name="BEGIN_LINK_CHROMIUM" />راهنمای Google Chrome<ph name="END_LINK_CHROMIUM" /> بروید.</translation> <translation id="7544853251252956727">درهم</translation> <translation id="7545288882499673859">راهبرد آزادسازی حافظه برای مدیریت پیشرفته فشار</translation> <translation id="7545415673537747415">نحوه استفاده Google را از سابقه مرورتان برای شخصیسازی جستجو، آگهیها و سایر سرویسهای Google، در <ph name="BEGIN_LINK" />کنترلهای فعالیت Google<ph name="END_LINK" /> کنترل کنید.</translation> @@ -5021,7 +5023,6 @@ <translation id="7879478708475862060">پیروی از روش ورودی</translation> <translation id="7880836220014399562">«<ph name="BUNDLE_NAME" />» این برنامهها و افزونهها را اضافه میکند:</translation> <translation id="7881969471599061635">غیرفعال کردن زیرنویس</translation> -<translation id="7884988936047469945">قابلیتهای دسترسپذیری آزمایشی</translation> <translation id="7885253890047913815">مقصدهای اخیر</translation> <translation id="7887192723714330082">پاسخ دادن به «Ok Google» وقتی صفحه روشن است و قفل نیست</translation> <translation id="7887334752153342268">کپیبرداری</translation> @@ -5089,6 +5090,7 @@ <translation id="7974067550340408553">هر بار که Smart Lock قفل <ph name="DEVICE_TYPE" /> شما را باز میکند در تلفنتان از آن مطلع شوید.</translation> <translation id="7974566588408714340">تلاش مجدد با <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">تصویر بزرگتر از صفحه</translation> +<translation id="7976960358280528247">فعال کردن رابط کاربری چرخه پنجره (بازخورد بصری برای Alt+Tab)</translation> <translation id="7977551819349545646">در حال بهروزرسانی Chromebox...</translation> <translation id="7978412674231730200">کلید خصوصی</translation> <translation id="7979036127916589816">خطای همگامسازی</translation> @@ -5116,6 +5118,7 @@ فایل کلید خود را در جای امن نگه دارید. برای ایجاد نسخههای جدید برنامهٔ افزودنی خود به آن نیاز دارید.</translation> <translation id="799923393800005025">میتواند مشاهده کند</translation> +<translation id="8000066093800657092">بدون شبکه</translation> <translation id="8004582292198964060">مرورگر</translation> <translation id="8007030362289124303">باتری ضعیف است</translation> <translation id="8008356846765065031">اینترنت قطع است. لطفاً اتصال اینترنتتان را بررسی کنید.</translation> @@ -5190,6 +5193,7 @@ <translation id="8116190140324504026">اطلاعات بیشتر...</translation> <translation id="8116483400482790018">واژهنامه املای سفارشی</translation> <translation id="8116972784401310538">مدیر &نشانک</translation> +<translation id="8117838550640702864">تنظیمات یادداشتبرداری</translation> <translation id="8117957376775388318">روش ورودی دایی</translation> <translation id="8118860139461251237">مدیریت بارگیریها</translation> <translation id="8119572489781388874">تغییر تنظیمات</translation> @@ -5283,7 +5287,7 @@ <translation id="8226222018808695353">ممنوع</translation> <translation id="8226742006292257240">در زیر گذرواژه TPM ایجاد شده به صورت تصادفی، آورده شده که به رایانهٔ شما اختصاص داده شده است:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />، <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">ممکن است مهاجمین حاضر در <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> تلاش کنند تا برنامههای خطرناکی در رایانه شما نصب کنند که اطلاعات شما (مانند عکسها، گذرواژهها، پیامها و کارتهای اعتباری شما) را سرقت یا حذف میکنند.</translation> +<translation id="8230421197304563332">مهاجمها در <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ممکن است تلاش کنند تا برنامههای خطرناکی در رایانه شما نصب کنند که اطلاعات شما (مانند کارتهای اعتباری، عکسها، گذرواژهها و پیامهایتان) را سرقت یا حذف میکنند.</translation> <translation id="8233254008506535819">برای قرار دادن سایتهای مهم در فهرست مجاز، این گزینه را به کادر گفتگوی پاک کردن دادههای محصول مرور اضافه کنید.</translation> <translation id="8236231079192337250">برنامه گالری فروشگاه وب Chrome برای درایورهای چاپگر</translation> <translation id="8238649969398088015">نکته راهنمایی</translation> @@ -5468,7 +5472,6 @@ <translation id="8472623782143987204">سختافزار پشتیبانی</translation> <translation id="8475313423285172237">برنامهای دیگر بر روی رایانه شما یک برنامه افزودنی را اضافه کرده است که ممکن است نحوه کارکرد Chrome را تغییر دهد.</translation> <translation id="8475647382427415476">Google Drive نتوانست در این لحظه «<ph name="FILENAME" />» را همگامسازی کند. Google Drive بعداً دوباره امتحان میکند.</translation> -<translation id="8476195663057048998">پاک کردن و بازنشانی</translation> <translation id="8477241577829954800">از دور خارج شده</translation> <translation id="8477384620836102176">&عمومی</translation> <translation id="8480417584335382321">بزرگنمایی صفحه:</translation> @@ -5698,7 +5701,6 @@ <translation id="8785135611469711856">عدم پاسخگویی افزایه</translation> <translation id="8787254343425541995">پراکسیهای شبکههای مشترک مجاز باشند</translation> <translation id="878763818693997570">این نام بیش از حد طولانی است</translation> -<translation id="8787865569533773240">بازنشانی تنظیمات <ph name="IDS_SHORT_PRODUCT_NAME" /> تغییریافته</translation> <translation id="8789375980715484686">مدیریت کاربران دیگر</translation> <translation id="8791534160414513928">ارسال درخواست «ردیابی نشود» با ترافیک مرور</translation> <translation id="8795668016723474529">افزودن کارت اعتباری</translation> @@ -5834,7 +5836,7 @@ <translation id="8982248110486356984">تغییر کاربران</translation> <translation id="8986267729801483565">مکان دانلود:</translation> <translation id="8986362086234534611">فراموش شود</translation> -<translation id="8986494364107987395">ارسال خودکار آمار مصرف و گزارشهای خرابی به Google</translation> +<translation id="8986494364107987395">ارسال خودکار آمار کاربرد و گزارشهای خرابی به Google</translation> <translation id="8987736167266086032">ادامه دادن از جایی که ترک کردهاید</translation> <translation id="8987927404178983737">ماه</translation> <translation id="899403249577094719">نشانی وب گواهی Netscape</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index d071b504c..64fd76a 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Tiedostoa ei voi käyttää turvallisuussyistä.</translation> <translation id="1675023460278456180">Material hybrid</translation> <translation id="167832068858235403">vähennä äänenvoim.</translation> -<translation id="1678331212993975953">Sivuston tiedot</translation> <translation id="1679068421605151609">Kehittäjän työkalut</translation> <translation id="1681120471812444678">Lisää tulostimia…</translation> <translation id="1682324559341535203">Rekisteröi <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Avaa, kun val&mis</translation> <translation id="2372036074421194686">Chrome havaitsi, että tietokoneelle on asennettu ei-toivottu ohjelma (<ph name="UWS_NAME" />). Voit ehkä poistaa sen suorittamalla Chrome Cleanup Toolin.</translation> <translation id="2375701438512326360">Pakota kosketusnäytön tuki aina käyttöön tai pois käytöstä, tai pakota käyttöönotto, kun kosketusnäyttö havaitaan käynnistyksen yhteydessä (Automaattinen, oletusasetus).</translation> -<translation id="2377619091472055321">Palauta muutetut <ph name="IDS_SHORT_PRODUCT_NAME" />-asetukset</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> tiedostoa on valittu</translation> <translation id="2378982052244864789">Valitse laajennuksen hakemisto.</translation> <translation id="2379281330731083556">Tulosta järjestelmän tulostusikkunalla... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">Tietokoneen käyttöjärjestelmän palauttamiseen tarvitaan palautustiedot sisältävä SD-kortti tai USB-muistitikku.</translation> <translation id="305932878998873762">Simple Cache HTTP:lle on uusi välimuisti, joka käyttää levytilan varaamiseen tiedostojärjestelmää.</translation> <translation id="3062606427884046423">Näyttää Chromen mediailmoitukset Android MediaStyle -ilmoituksina.</translation> +<translation id="3063224679438508013">Käynnistä muistiinpanosovellus automaattisesti</translation> <translation id="3063844757726132584">Käytä kaikkia sovelluksiasi tällä kätevällä käynnistysohjelmalla. Pelaa pelejä, soita videopuheluita, kuuntele musiikkia, muokkaa dokumentteja tai hanki lisää sovelluksia.</translation> <translation id="3064388234319122767">Translitterointi (zdravo → здраво)</translation> <translation id="3065041951436100775">Välilehti sulki palautesivun.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock salasanoille</translation> <translation id="317583078218509884">Uudet sivuston käyttölupa-asetukset tulevat voimaan päivitettyäsi sivun.</translation> <translation id="3177048931975664371">Piilota salasana klikkaamalla</translation> +<translation id="3177909033752230686">Sivun kieli:</translation> <translation id="3180365125572747493">Anna salasana salataksesi tämän varmennetiedoston.</translation> <translation id="3183139917765991655">Profiilien tuoja</translation> <translation id="3184560914950696195">Kohteeseen $1 ei voi tallentaa. Muokatut kuvat tallennetaan Lataukset-kansioon.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Lataaja: <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Näytä <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">Avaa uudessa välilehdessä</translation> +<translation id="3616113530831147358">Ääni</translation> <translation id="3616741288025931835">&Poista selaustiedot...</translation> <translation id="3618849550573277856">Hae ”<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Kaikki on varmuuskopioitu!</translation> @@ -2291,7 +2292,6 @@ <translation id="3994878504415702912">&Koko</translation> <translation id="3995964755286119116">Adobe Flash Player käyttää eri kamera-asetuksia.</translation> <translation id="39964277676607559">JavaScript-tiedoston <ph name="RELATIVE_PATH" /> lataaminen sisältöohjelmalle epäonnistui.</translation> -<translation id="3996912167543967198">Nollataan…</translation> <translation id="3997015411467176489">Kokeelliset canvas-ominaisuudet</translation> <translation id="4002066346123236978">Nimi</translation> <translation id="40027638859996362">Sanan siirto</translation> @@ -2388,6 +2388,7 @@ <translation id="4140559601186535628">Push-viestit</translation> <translation id="4146026355784316281">Avaa aina järjestelmän katselusovelluksella</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> haluaa tarkistaa, voiko Chrome-käyttöjärjestelmälaitteellasi lunastaa tarjouksen. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Näyttö</translation> <translation id="4151403195736952345">Käytä yleistä oletusta (havaitse)</translation> <translation id="4152177296285305182">Salatut tietosi voi lukea vain tunnuslauseesi avulla. Tunnuslausetta ei lähetetä Googlelle eikä Google tallenna sitä. Jos unohdat tunnuslauseesi, sinun tulee käynnistää synkronointi uudestaan.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 välilehti}other{# välilehteä}}</translation> @@ -2452,6 +2453,7 @@ <translation id="4250229828105606438">Kuvakaappaus</translation> <translation id="4250680216510889253">Ei</translation> <translation id="4253168017788158739">Huomautus</translation> +<translation id="4254813446494774748">Käännöksen kieli:</translation> <translation id="425573743389990240">Akun purkautumisnopeus watteina (negatiivinen arvo tarkoittaa, että akkua ladataan)</translation> <translation id="4256316378292851214">Tallenna &video nimellä...</translation> <translation id="4258348331913189841">Tiedostojärjestelmät</translation> @@ -2528,6 +2530,7 @@ <translation id="4365673000813822030">Hups, synkronointi on lakannut toimimasta.</translation> <translation id="4366509400410520531">Itse sallimasi</translation> <translation id="4367782753568896354">Asennus epäonnistui:</translation> +<translation id="436904870295243580">Löydä lisää muistiinpanosovelluksia</translation> <translation id="4370975561335139969">Antamasi sähköpostiosoite ja salasana eivät vastaa toisiaan.</translation> <translation id="437184764829821926">Kirjasimen lisäasetukset</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3202,6 +3205,7 @@ <translation id="5324674707192845912">Olet poistamassa laitteen <ph name="DEVICE_TYPE" /> Google-rekisteröintiä. Tämän jälkeen et voi paikantaa, tyhjentää ja lukita laitetta etäyhteyden kautta. Laite täytyy käynnistää uudelleen. Haluatko jatkaa?</translation> <translation id="5324780743567488672">Aseta aikavyöhyke automaattisesti käyttämällä sijaintiasi.</translation> <translation id="5325120507747984426">Käyttää vakaata ikkunoiden järjestystä yleiskatsaustilassa, joka pyrkii minimoimaan ikkunoiden liikkumisen siirryttäessä yleiskatsaukseen ja sieltä pois sekä yleiskatsausistuntojen välissä.</translation> +<translation id="5326182685622510062">2D Canvasin grafiikanpiirtoympäristö käyttää useita tekniikoita, joilla on erilaisia suorituskykyyn liittyviä ominaisuuksia. Jos otat tämän merkinnän käyttöön, Canvasin 2D-kontekstit voivat parantaa suorituskykyä siirtymällä eri tekniikoiden välillä Canvasin käytön mukaan. Tämä mahdollistaa esimerkiksi siirtymisen grafiikkasuoritinta käyttävästä tekniikasta sellaiseen, joka ei käytä grafiikkasuoritinta.</translation> <translation id="5327248766486351172">Nimi</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Poista</translation> @@ -3334,7 +3338,6 @@ <translation id="54870580363317966">Valitse avatar tälle valvotulle käyttäjälle.</translation> <translation id="5488468185303821006">Salli incognito-tilassa</translation> <translation id="5489390182170331803">Kohtele dokumenttitason tapahtumaseuraimia oletuksena passiivisina</translation> -<translation id="5489789060051091748">Valinnan ääneen lukeminen: Klikkaa tai vedä sisältöä, kun Haku-näppäin on painettuna, niin se luetaan ääneen</translation> <translation id="549294555051714732">Automaattisen täytön ehdotuksien alimerkkijonotarkistus</translation> <translation id="5493996328530898436">Uusi miksausstrategia äänen toistamisen yhteydessä</translation> <translation id="5494362494988149300">Avaa, kun val&mis</translation> @@ -3691,7 +3694,6 @@ <translation id="5991049340509704927">Suurenna</translation> <translation id="5991774521050363748">Ota käyttöön verkkoilmoitusten muokatut asettelut. Niissä on hienovaraisia asetteluparannuksia, jotka eivät muuten ole mahdollisia.</translation> <translation id="5993332328670040093">Datankäyttöäsi ei enää mitata.</translation> -<translation id="5996258716334177896">Profiilisi avaaminen ei onnistunut. Kaikki ominaisuudet eivät ole välttämättä saatavilla. Tarkista, että profiili on olemassa ja että sinulla on sen sisältöön luku- ja kirjoitusoikeudet.</translation> <translation id="6001799583597751002">PIN-koodit eivät täsmää:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> ei välttämättä pysty päivittämään itseään.</translation> <translation id="6003294706906016758">Ottaa käyttöön verkkosovellusten tyyppisen kehyksen isännöidyissä sovelluksissa</translation> @@ -4143,7 +4145,6 @@ <translation id="6637362044401670482">Ottaa käyttöön ylivierityksen tuen virtuaalisella näppäimistöllä.</translation> <translation id="6639554308659482635">SQLiten käyttämä muisti</translation> <translation id="6643016212128521049">Tyhjennä</translation> -<translation id="6644756108386233011">Palautetaanko muutetut <ph name="IDS_SHORT_PRODUCT_NAME" />-asetukset?</translation> <translation id="6647228709620733774">Netscape-varmenteen myöntäjän kumoamis-URL</translation> <translation id="6647838571840953560">Käytössä: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Hetki vain…</translation> @@ -4251,7 +4252,6 @@ <translation id="6810613314571580006">Kirjaudu automaattisesti verkkosivustoille käyttämällä tallennettuja kirjautumistietoja. Jos tämä toiminto ei ole käytössä, sinua pyydetään vahvistamaan kirjautuminen aina, kun kirjaudut sivustolle.</translation> <translation id="6812349420832218321">Tuotetta <ph name="PRODUCT_NAME" /> ei voi käynnistää pääkäyttäjätilassa.</translation> <translation id="6812841287760418429">Säilytä muutokset</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> havaitsi, että selaimesi asetukset ovat saattaneet muuttua tietämättäsi. Haluatko palauttaa alkuperäiset asetukset?</translation> <translation id="6815551780062710681">muokkaa</translation> <translation id="6817358880000653228">Tämän sivuston tallennetut salasanat:</translation> <translation id="6820008762872335722">Nollaa ja kysy seuraavalla kerralla uudelleen</translation> @@ -4367,6 +4367,7 @@ <translation id="6980956047710795611">Siirrä kaikki Chrome-käyttöjärjestelmän tiedot uuden salasanan alaisiksi (vaatii edellisen salasanan)</translation> <translation id="6981982820502123353">Esteettömyys</translation> <translation id="6981992744085917617">Valitse tapa, jolla haluat kirjautua takaisin tilillesi:</translation> +<translation id="698231206551913481">Kun käyttäjä poistetaan, kaikki kyseiseen käyttäjään yhdistetyt tiedostot ja paikalliset tiedot poistetaan pysyvästi.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" />-tulostin havaittiin</translation> <translation id="6983783921975806247">Rekisteröity OID</translation> <translation id="6983991971286645866">Kaikki muokkaukset tallennetaan kohteeseen $1.</translation> @@ -4451,6 +4452,7 @@ <translation id="7073555242265688099">Jos sinulla on muita Chrome-laitteita, ne synkronoidaan automaattisesti, joten puhelimesi avaa niidenkin lukituksen.</translation> <translation id="707392107419594760">Valitse näppäimistö:</translation> <translation id="7075513071073410194">PKCS #1 MD5 ja RSA-salaus</translation> +<translation id="7075625805486468288">Hallitse HTTPS/SSL-varmenteita ja ‑asetuksia.</translation> <translation id="7076293881109082629">Kirjautuminen</translation> <translation id="7077829361966535409">Kirjautumissivun lataaminen epäonnistui nykyisillä välityspalvelimen asetuksilla. <ph name="GAIA_RELOAD_LINK_START" />Kirjaudu sisään uudelleen<ph name="GAIA_RELOAD_LINK_END" /> tai muokkaa <ph name="PROXY_SETTINGS_LINK_START" />välityspalvelimen asetuksia<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ohitetut protokollan käsittelijät</translation> @@ -4498,7 +4500,6 @@ <translation id="7141105143012495934">Sisäänkirjautuminen epäonnistui, koska tilitietojasi ei löytynyt. Ota yhteyttä järjestelmänvalvojaan tai yritä uudelleen.</translation> <translation id="7143207342074048698">Yhdistetään</translation> <translation id="7144878232160441200">Yritä uudelleen</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> on poistettu käytöstä. Jos haluat ottaa sen uudelleen käyttöön, avaa <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Perinteiset tulostimet</translation> <translation id="7154130902455071009">Vaihda aloitussivuksi <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Alkuperäinen kiinan kielen tila on yksinkertaistettu kiina</translation> @@ -4776,6 +4777,7 @@ <translation id="7540972813190816353">Virhe tarkistettaessa päivityksiä: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Kuvapoikkeukset</translation> <translation id="7543104066686362383">Ota virheenkorjausominaisuudet käyttöön tällä <ph name="IDS_SHORT_PRODUCT_NAME" />-laitteella..</translation> +<translation id="7543393759143837504">Jos et löydä etsimääsi, siirry <ph name="BEGIN_LINK_CHROMIUM" />Google Chromen ohjeeseen<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Satunnaistoisto</translation> <translation id="7545288882499673859">Muistin hylkäämisstrategia edistyneeseen paineenhallintaan</translation> <translation id="7545415673537747415">Voit hallita haun, mainosten ja muiden Google-palveluiden muokkaamista selaushistoriasi perusteella <ph name="BEGIN_LINK" />Google-toimintojen hallinnassa<ph name="END_LINK" />.</translation> @@ -5013,7 +5015,6 @@ <translation id="7879478708475862060">Seuraa syöttötapaa</translation> <translation id="7880836220014399562"><ph name="BUNDLE_NAME" /> lisää seuraavat sovellukset ja laajennukset:</translation> <translation id="7881969471599061635">Poista tekstitykset käytöstä</translation> -<translation id="7884988936047469945">Kokeelliset esteettömyysominaisuudet</translation> <translation id="7885253890047913815">Uusimmat kohteet</translation> <translation id="7887192723714330082">Vastaa Ok Googleen, kun näyttö on päällä ja lukitsematta.</translation> <translation id="7887334752153342268">Monista</translation> @@ -5081,6 +5082,7 @@ <translation id="7974067550340408553">Haluan puhelimeeni ilmoituksen aina Smart Lockin avatessa <ph name="DEVICE_TYPE" />-laitteen lukituksen.</translation> <translation id="7974566588408714340">Yritä uudelleen laajennuksella <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Yliskannaus</translation> +<translation id="7976960358280528247">Ota käyttöön ikkunavalitsimen käyttöliittymä (visuaalinen Alt + Sarkain ‑näkymä).</translation> <translation id="7977551819349545646">Päivitetään Chromeboxia…</translation> <translation id="7978412674231730200">Yksityinen avain</translation> <translation id="7979036127916589816">Synkronointivirhe</translation> @@ -5108,6 +5110,7 @@ Tallenna avaintiedosto suojattuun sijaintiin. Tarvitset sitä, jos haluat luoda uusia laajennusversioita.</translation> <translation id="799923393800005025">Voi tarkastella</translation> +<translation id="8000066093800657092">Ei verkkoa</translation> <translation id="8004582292198964060">Selain</translation> <translation id="8007030362289124303">Akku on lähes tyhjä</translation> <translation id="8008356846765065031">Internetyhteys katkaistu. Tarkista internetyhteytesi.</translation> @@ -5182,6 +5185,7 @@ <translation id="8116190140324504026">Lisätietoja...</translation> <translation id="8116483400482790018">Muokattu oikeinkirjoitussanakirja</translation> <translation id="8116972784401310538">&Kirjanmerkkien hallinta</translation> +<translation id="8117838550640702864">Muistiinpanoasetukset</translation> <translation id="8117957376775388318">Dayi-syöttötapa</translation> <translation id="8118860139461251237">hallinnoida latauksiasi</translation> <translation id="8119572489781388874">Muokkaa asetuksia</translation> @@ -5460,7 +5464,6 @@ <translation id="8472623782143987204">laitteiston tukema</translation> <translation id="8475313423285172237">Toinen tietokoneellasi oleva ohjelma lisäsi laajennuksen, joka voi muuttaa Chromen toimintaa.</translation> <translation id="8475647382427415476">Google Drive ei onnistunut synkronoimaan tiedostoa <ph name="FILENAME" />. Google Drive yrittää myöhemmin uudelleen.</translation> -<translation id="8476195663057048998">Tyhjennä ja nollaa</translation> <translation id="8477241577829954800">Tarpeeton</translation> <translation id="8477384620836102176">&Yleistä</translation> <translation id="8480417584335382321">Sivun zoomaus:</translation> @@ -5690,7 +5693,6 @@ <translation id="8785135611469711856">Laajennus ei vastaa</translation> <translation id="8787254343425541995">Salli välityspalvelimet jaetuilla verkoilla</translation> <translation id="878763818693997570">Nimi on liian pitkä</translation> -<translation id="8787865569533773240">Palauta muutetut <ph name="IDS_SHORT_PRODUCT_NAME" />-asetukset</translation> <translation id="8789375980715484686">Hallinnoi muita käyttäjiä</translation> <translation id="8791534160414513928">Lähetä selaustietojesi mukana Do Not Track -pyyntö</translation> <translation id="8795668016723474529">Lisää luottokortti</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index ff4558d..16d743af 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -522,7 +522,6 @@ <translation id="1673103856845176271">Hindi ma-access ang file sa mga kadahilanang pang-seguridad.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">hinaan ang volume</translation> -<translation id="1678331212993975953">Mga Detalye ng Site</translation> <translation id="1679068421605151609">Mga Tool ng Developer</translation> <translation id="1681120471812444678">I-set up upang magdagdag ng mga printer…</translation> <translation id="1682324559341535203">I-enroll ang <ph name="DEVICE_TYPE" /></translation> @@ -1013,7 +1012,6 @@ <translation id="2371076942591664043">Buksan kapag &tapos na</translation> <translation id="2372036074421194686">May nakita ang Chrome na hindi kanais-nais na program (<ph name="UWS_NAME" />) na naka-install sa iyong computer. Maaari mong alisin ito sa pamamagitan ng pagpapatakbo ng Chrome Cleanup Tool.</translation> <translation id="2375701438512326360">Puwersahin ang suportang touchscreen na palaging maging pinapagana o hindi pinapagana, o maging pinapagana kapag nakakita ng touchscreen sa startup (Awtomatiko, ang default).</translation> -<translation id="2377619091472055321">I-reset ang Mga Binagong Setting ng <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> (na) file ang pinili</translation> <translation id="2378982052244864789">Piliin ang direktoryo ng extension.</translation> <translation id="2379281330731083556">I-print gamit ang dialog ng system... <ph name="SHORTCUT_KEY" /></translation> @@ -1561,6 +1559,7 @@ <translation id="3058212636943679650">Kung sakaling kailangan mong ibalik ang operating system ng iyong computer kakailanganin mo ng recovery SD card o USB memory stick.</translation> <translation id="305932878998873762">Ang Simpleng Cache para sa HTTP ay isang bagong cache. Umaasa ito sa filesystem para sa paglalaan ng espasyo sa disk.</translation> <translation id="3062606427884046423">Gamitin ang mga notification ng Android MediaStyle para sa mga notification ng media ng Chrome.</translation> +<translation id="3063224679438508013">Awtomatikong ilunsad ang app sa pagsusulat ng tala</translation> <translation id="3063844757726132584">I-access ang lahat ng iyong app mula sa kapaki-pakinabang na launcher na ito. Maglaro, makipag-video chat, makinig sa musika, mag-edit ng mga dokumento o kumuha ng higit pang mga app.</translation> <translation id="3064388234319122767">Transliteration (zdravo → здраво)</translation> <translation id="3065041951436100775">Feedback na isinara ang tab</translation> @@ -1651,6 +1650,7 @@ <translation id="3172213052701798825">Google Smart Lock para sa Mga Password</translation> <translation id="317583078218509884">Magkakaroon ng bisa ang mga bagong setting ng pahintulot sa site pagkatapos i-reload ang pahina.</translation> <translation id="3177048931975664371">I-click upang itago ang password</translation> +<translation id="3177909033752230686">Wika ng Page:</translation> <translation id="3180365125572747493">Mangyaring magpasok ng password upang i-encrypt ang certificate file na ito.</translation> <translation id="3183139917765991655">Pang-import ng Profile</translation> <translation id="3184560914950696195">Hindi mai-save sa $1. Ang mga na-edit na larawan ay mase-save sa folder na Mga Download.</translation> @@ -2001,6 +2001,7 @@ <translation id="3612673635130633812">Na-download ng <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Ipakita ang <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Buksan sa bagong tab</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&I-clear ang Data ng Pag-browse...</translation> <translation id="3618849550573277856">Hanapin ang “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Naka-back up na ang lahat!</translation> @@ -2298,7 +2299,6 @@ <translation id="3994878504415702912">&I-zoom</translation> <translation id="3995964755286119116">Magkakaiba ang mga setting ng camera sa Adobe Flash Player.</translation> <translation id="39964277676607559">Maaaring hindi mai-load ang javascript '<ph name="RELATIVE_PATH" />' para sa script ng nilalaman.</translation> -<translation id="3996912167543967198">Inire-reset...</translation> <translation id="3997015411467176489">Mga pang-eksperimentong feature ng canvas</translation> <translation id="4002066346123236978">Pamagat</translation> <translation id="40027638859996362">Ilipat ang salita</translation> @@ -2331,7 +2331,7 @@ <translation id="406070391919917862">Background na Apps</translation> <translation id="4062251648694601778">Masiyahan sa iyong <ph name="SHORT_PRODUCT_NAME" /> device. May mga tanong? Maaari kang makakuha ng tulong anumang oras sa pamamagitan ng pag-click sa "?" sa status tray.</translation> <translation id="4065876735068446555">Maaaring hilingin sa iyo ng network na ginagamit mo (<ph name="NETWORK_ID" />) na bisitahin ang page sa pag-log in nito.</translation> -<translation id="4068506536726151626">Naglalaman ng mga elemento ang pahinang ito mula sa sumusunod na mga site na sinusubaybayan ang iyong lokasyon:</translation> +<translation id="4068506536726151626">Naglalaman ang page na ito ng mga elemento mula sa sumusunod na mga site na sumusubaybay sa lokasyon mo:</translation> <translation id="4070370845051020638">Cantonese na pamamaraan ng pag-input</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: error sa pag-sign in</translation> <translation id="4072248638558688893">Tamil keyboard (Phonetic)</translation> @@ -2395,6 +2395,7 @@ <translation id="4140559601186535628">Mga Push Message</translation> <translation id="4146026355784316281">Palaging Buksan Gamit ang System Viewer</translation> <translation id="4146175323503586871">Gustong tingnan ng <ph name="SERVICE_NAME" /> kung kwalipikado ang iyong Chrome OS device para sa isang alok. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Display</translation> <translation id="4151403195736952345">Gamitin ang pangkalahatang default (Tukuyin)</translation> <translation id="4152177296285305182">Tanging isang tao na mayroon ng iyong passphrase ang makakabasa sa iyong naka-encrypt na data. Hindi ipinapadala sa o iniimbak ng Google ang passphrase. Kung makalimutan mo ang iyong passphrase, kakailanganin mong i-reset ang pag-sync.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}one{# tab}other{# na tab}}</translation> @@ -2459,6 +2460,7 @@ <translation id="4250229828105606438">Screenshot</translation> <translation id="4250680216510889253">Hindi</translation> <translation id="4253168017788158739">Tala</translation> +<translation id="4254813446494774748">Wika ng Pagsasalin:</translation> <translation id="425573743389990240">Rate ng Pagdiskarga ng Baterya sa Watts (Ang ibig sabihin ng negatibong halaga ay nagcha-charge ang baterya)</translation> <translation id="4256316378292851214">I-sa&ve ang Video Bilang...</translation> <translation id="4258348331913189841">Mga system ng file</translation> @@ -2536,6 +2538,7 @@ <translation id="4365673000813822030">Oops, tumigil sa paggana ang Sync.</translation> <translation id="4366509400410520531">Pinapayagan mo</translation> <translation id="4367782753568896354">Hindi namin na-install ang:</translation> +<translation id="436904870295243580">Maghanap ng higit pang mga application sa pagsusulat ng tala</translation> <translation id="4370975561335139969">Hindi nagtutugma ang inilagay mong email at password</translation> <translation id="437184764829821926">Mga advanced na setting ng font</translation> <translation id="4372884569765913867">1x1</translation> @@ -3217,6 +3220,7 @@ <translation id="5324674707192845912">Ia-unenroll mo na ang <ph name="DEVICE_TYPE" /> na ito sa Google upang ma-disable ang kakayahang mahanap, ma-wipe at ma-lock ang device nang malayuan. Mangangailangan ito ng pag-reboot. Gusto mo bang magpatuloy?</translation> <translation id="5324780743567488672">Awtomatikong itakda ang time zone gamit ang iyong lokasyon</translation> <translation id="5325120507747984426">Gumagamit ng isang stable window ordering sa mode ng pangkalahatang-ideya na sinusubukang i-minimize ang paggalaw ng mga window kapag pumapasok / lumalabas sa pangkalahatang-ideya at sa pagitan ng mga session ng pangkalahatang-ideya.</translation> +<translation id="5326182685622510062">Marami ang pagpapatupad ng graphics rendering pipeline para sa mga 2D na canvas. Ang iba't ibang pagpapatupad na ito ay may iba't ibang katangian ng performance. Kapag na-on ang flag na ito, magagawa ng mga 2D context ng canvas na magpalipat-lipat nang mabilis sa mga pagpapatupad na ito batay sa kung paano ginagamit ang canvas upang mapataas ang performance. Halimbawa, mula sa pagpapatupad na gumagamit ng GPU papunta sa isang hindi gumagamit.</translation> <translation id="5327248766486351172">Pangalan</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Tanggalin</translation> @@ -3349,7 +3353,6 @@ <translation id="54870580363317966">Pumili ng isang avatar para sa pinangangasiwaang user na ito.</translation> <translation id="5488468185303821006">Payagan sa incognito</translation> <translation id="5489390182170331803">Default para sa Mga Passive na Listener ng Kaganapan sa Antas ng Dokumento</translation> -<translation id="5489789060051091748">Select-to-speak: Pindutin nang matagal ang Maghanap at mag-click o mag-drag upang magsabi ng kahit ano</translation> <translation id="549294555051714732">Pagtutugma ng substring para sa mga suhestyon sa Autofill</translation> <translation id="5493996328530898436">Bagong diskarte sa pagmi-mix sa pagre-render ng audio</translation> <translation id="5494362494988149300">Buksan Kapag &Tapos Na</translation> @@ -3591,7 +3594,7 @@ <translation id="5828228029189342317">Pinili mong awtomatikong buksan ang ilang uri ng file pagkatapos ng pag-download. </translation> <translation id="5828633471261496623">Nagpi-print...</translation> <translation id="5829401023154985950">Pamahalaan...</translation> -<translation id="5830410401012830739">Pamahalaan ang lokasyon ng mga setting...</translation> +<translation id="5830410401012830739">Pamahalaan ang mga setting ng lokasyon...</translation> <translation id="5830720307094128296">Save Page &As...</translation> <translation id="5832669303303483065">Magdagdag ng bagong address ng kalye...</translation> <translation id="5832805196449965646">Magdagdag ng Tao</translation> @@ -3706,9 +3709,6 @@ <translation id="5991049340509704927">I-magnify</translation> <translation id="5991774521050363748">I-enable ang mga custom na layout para sa Mga Notification sa Web. Magkakaroon ang mga ito ng mga hindi halatang pagpapahusay sa layout na hindi posibleng mangyari kung hindi ito ie-enable.</translation> <translation id="5993332328670040093">Hindi na susukatin ang paggamit mo ng data.</translation> -<translation id="5996258716334177896">Hindi mabubuksan nang tama ang iyong profile. - -Maaaring hindi available ang ilang tampok. Mangyaring suriin na umiiral ang profile at mayroon kang pagpapahintulot na magbasa at magsulat ng mga nilalaman nito.</translation> <translation id="6001799583597751002">Hindi tumutugma ang mga PIN:</translation> <translation id="6003177993629630467">Maaaring hindi magawa ng <ph name="PRODUCT_NAME" /> na mapanatiling naa-update ang sarili nito.</translation> <translation id="6003294706906016758">Ine-enable ang style frame ng web app para sa mga naka-host na app</translation> @@ -4158,7 +4158,6 @@ <translation id="6637362044401670482">Nag-e-enable ng suporta sa pag-overscroll sa virtual na keyboard.</translation> <translation id="6639554308659482635">Memorya sa SQLite</translation> <translation id="6643016212128521049">I-clear</translation> -<translation id="6644756108386233011">I-reset ang mga binagong setting ng <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">Netscape Certification Authority Revocation URL</translation> <translation id="6647838571840953560">Kasalukuyang nasa <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Sandali lang...</translation> @@ -4266,7 +4265,6 @@ <translation id="6810613314571580006">Awtomatikong mag-sign in sa mga website gamit ang mga nakaimbak na kredensyal. Kapag naka-disable ang feature, palagi kang hihingan ng kumpirmasyon bago ka mag-sign in sa isang website.</translation> <translation id="6812349420832218321">Hindi mapatakbo ang <ph name="PRODUCT_NAME" /> bilang root.</translation> <translation id="6812841287760418429">Panatilihin ang mga pagbabago</translation> -<translation id="6815353853907306610">Nakita ng <ph name="IDS_SHORT_PRODUCT_NAME" /> na maaaring nabago ang iyong mga setting ng browser nang hindi mo alam. Gusto mo bang i-reset ang mga ito sa mga orihinal na default ng mga ito?</translation> <translation id="6815551780062710681">i-edit</translation> <translation id="6817358880000653228">Mga naka-save na password para sa site na ito.</translation> <translation id="6820008762872335722">I-reset upang magtanong</translation> @@ -4385,6 +4383,7 @@ (nangangailangan ng nakaraang password)</translation> <translation id="6981982820502123353">Pagiging Maa-access</translation> <translation id="6981992744085917617">Piliin ang paraang gusto mong gamitin upang muling mag-log in sa iyong account:</translation> +<translation id="698231206551913481">Permanenteng made-delete ang lahat ng file at lokal na data na nauugnay sa user na ito kapag inalis na ang user na ito.</translation> <translation id="6982896539684144327">Na-detect ang printer mula sa <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">Nakarehistrong OID</translation> <translation id="6983991971286645866">Ise-save ang lahat ng pag-edit sa $1.</translation> @@ -4471,6 +4470,7 @@ <translation id="7073555242265688099">Kung mayroon kang iba pang mga Chrome device, awtomatikong isi-sync ang mga ito, kaya ia-unlock din ng iyong telepono ang mga ito.</translation> <translation id="707392107419594760">Piliin ang iyong keyboard:</translation> <translation id="7075513071073410194">PKCS #1 MD5 na May RSA Encryption</translation> +<translation id="7075625805486468288">Pamahalaan ang mga certificate at setting ng HTTPS/SSL</translation> <translation id="7076293881109082629">Nagsa-sign in</translation> <translation id="7077829361966535409">Nabigong ma-load ang pahina sa pag-sign in gamit ang mga kasalukuyang setting ng proxy. Mangyaring <ph name="GAIA_RELOAD_LINK_START" />subukang mag-sign in muli<ph name="GAIA_RELOAD_LINK_END" />, o gumamit ng ibang <ph name="PROXY_SETTINGS_LINK_START" />mga setting ng proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Mga hindi pinansing handler ng protocol</translation> @@ -4518,7 +4518,6 @@ <translation id="7141105143012495934">Hindi nakapag-sign dahil hindi maibalik ang mga detalye ng iyong account. Mangyaring makipag-ugnayan sa iyong administrator o subukang muli.</translation> <translation id="7143207342074048698">Kumokonekta</translation> <translation id="7144878232160441200">Subukang muli</translation> -<translation id="7148311641502571842">Hindi na pinapagana ang <ph name="PLUGIN_NAME" />. Upang muli itong paganahin, mangyaring pumunta sa <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Mga classic na printer</translation> <translation id="7154130902455071009">Gawing ito ang iyong panimulang pahina: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Ang paunang mode na Chinese ay Pinasimpleng Chinese</translation> @@ -4797,6 +4796,7 @@ <translation id="7540972813190816353">Naganap ang isang error habang nagsusuri ng mga update: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Mga pagbubukod ng larawan</translation> <translation id="7543104066686362383">I-enable ang mga feature para sa pagde-debug sa <ph name="IDS_SHORT_PRODUCT_NAME" /> device na ito</translation> +<translation id="7543393759143837504">Pumunta sa <ph name="BEGIN_LINK_CHROMIUM" />tulong sa Google Chrome<ph name="END_LINK_CHROMIUM" /> kung hindi mo mahanap ang hinahanap mo.</translation> <translation id="7544853251252956727">I-shuffle</translation> <translation id="7545288882499673859">Diskarte sa pag-discard ng memory para sa advanced na pamamahala ng pressure</translation> <translation id="7545415673537747415">Kontrolin kung paano ginagamit ng Google ang iyong history ng pagba-browse upang i-personalize ang Search, mga ad at iba pang mga serbisyo ng Google mula sa <ph name="BEGIN_LINK" />Mga Kontrol sa Aktibidad ng Google<ph name="END_LINK" />.</translation> @@ -5034,7 +5034,6 @@ <translation id="7879478708475862060">Sundin ang pamamaraan ng pag-input</translation> <translation id="7880836220014399562">Dinaragdag ng "<ph name="BUNDLE_NAME" />" ang mga app at extension na ito:</translation> <translation id="7881969471599061635">I-disable ang mga subtitle</translation> -<translation id="7884988936047469945">Mga pang-eksperimentong feature ng accessibility</translation> <translation id="7885253890047913815">Mga Kamakailang Patutunguhan</translation> <translation id="7887192723714330082">Tumugon sa "Ok Google" kapag naka-on at naka-unlock ang screen</translation> <translation id="7887334752153342268">Doblehin</translation> @@ -5102,6 +5101,7 @@ <translation id="7974067550340408553">Makatanggap ng paunawa sa iyong telepono sa tuwing ina-unlock ng Smart Lock ang iyong <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Subukang muli gamit ang <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Overscan</translation> +<translation id="7976960358280528247">I-enable ang UI ng window cycle (visual na feedback para sa Alt+Tab).</translation> <translation id="7977551819349545646">Ina-update ang Chromebox...</translation> <translation id="7978412674231730200">Private na key</translation> <translation id="7979036127916589816">Error sa Pag-sync</translation> @@ -5129,6 +5129,7 @@ Ilagay ang iyong key file sa ligtas na lugar. Kailangan mo ito upang lumikha ng mga bagong bersyon ng iyong extension.</translation> <translation id="799923393800005025">Makakatingin</translation> +<translation id="8000066093800657092">Walang network</translation> <translation id="8004582292198964060">Browser</translation> <translation id="8007030362289124303">Mahina na ang Baterya</translation> <translation id="8008356846765065031">Nadiskonekta ang Internet. Pakisuri ang iyong koneksyon sa internet.</translation> @@ -5203,6 +5204,7 @@ <translation id="8116190140324504026">Higit pang impormasyon...</translation> <translation id="8116483400482790018">Custom na diksyunaryo ng spelling</translation> <translation id="8116972784401310538">&Tagapangasiwa ng bookmark</translation> +<translation id="8117838550640702864">Mga setting ng tala</translation> <translation id="8117957376775388318">Dayi na paraan ng pag-input</translation> <translation id="8118860139461251237">Pamahalaan ang iyong mga download</translation> <translation id="8119572489781388874">Baguhin ang mga setting</translation> @@ -5485,7 +5487,6 @@ <translation id="8472623782143987204">na-hardware-back</translation> <translation id="8475313423285172237">Ang isa pang program sa iyong computer ay nagdagdag ng extension na maaaring magpabago sa paraan ng paggana ng Chrome.</translation> <translation id="8475647382427415476">Hindi na-sync ng Google Drive ang "<ph name="FILENAME" />" sa ngayon. Susubukang muli ng Google Drive sa ibang pagkakataon.</translation> -<translation id="8476195663057048998">I-clear at I-reset</translation> <translation id="8477241577829954800">Humalili</translation> <translation id="8477384620836102176">&Pangkalahatan</translation> <translation id="8480417584335382321">Zoom ng page:</translation> @@ -5715,7 +5716,6 @@ <translation id="8785135611469711856">Hindi tumutugon ang Plugin</translation> <translation id="8787254343425541995">Payagan ang mga proxy para sa mga nakabahaging network</translation> <translation id="878763818693997570">Masyadong mahaba ang pangalang ito</translation> -<translation id="8787865569533773240">I-reset ang mga binagong setting ng <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Pamahalaan ang ibang user</translation> <translation id="8791534160414513928">Magpadala ng kahilingang ‘Huwag Subaybayan’ kasama ng iyong trapiko ng pagba-browse</translation> <translation id="8795668016723474529">Magdagdag ng credit card</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index d8df064f..d197021 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -521,12 +521,11 @@ <translation id="1673103856845176271">Impossible d'accéder au fichier pour des raisons de sécurité.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">baisser le volume</translation> -<translation id="1678331212993975953">Détails du site</translation> <translation id="1679068421605151609">Outils de développement</translation> <translation id="1681120471812444678">Configurer pour ajouter des imprimantes…</translation> <translation id="1682324559341535203">Enregistrer le <ph name="DEVICE_TYPE" /></translation> <translation id="1682548588986054654">Nouvelle fenêtre de navigation privée</translation> -<translation id="168328519870909584">Les individus malveillants actuellement à l'œuvre sur le site <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pourraient tenter d'installer des applications dangereuses sur votre appareil, de manière à récupérer ou à supprimer vos informations (des photos, des mots de passe, des messages et des numéros de carte de paiement, par exemple).</translation> +<translation id="168328519870909584">Des individus malveillants à l'œuvre sur le site <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pourraient tenter d'installer des applications dangereuses sur votre appareil afin de récupérer ou de supprimer certaines informations : photos, mots de passe, messages, numéros de carte de paiement, etc.</translation> <translation id="1685141618403317602">Annuler l'enregistrement</translation> <translation id="1685944703056982650">Exceptions du curseur de la souris</translation> <translation id="1691063574428301566">Votre ordinateur redémarrera une fois la mise à jour effectuée.</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Ouvrir une fois le téléchargement &terminé</translation> <translation id="2372036074421194686">Un programmes indésirable (<ph name="UWS_NAME" />) a été détecté via Chrome sur votre ordinateur. Vous devriez être mesure de le supprimer en exécutant l'outil de nettoyage Chrome.</translation> <translation id="2375701438512326360">Fait en sorte que les fonctionnalités tactiles soient toujours activées ou toujours désactivées, ou qu'elles soient activées lorsqu'un un écran tactile est détecté au démarrage (automatique, par défaut).</translation> -<translation id="2377619091472055321">Réinitialiser les paramètres <ph name="IDS_SHORT_PRODUCT_NAME" /> qui ont été modifiés</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> fichiers sélectionnés</translation> <translation id="2378982052244864789">Sélectionner le répertoire de l'extension</translation> <translation id="2379281330731083556">Imprimer via la boîte de dialogue du système... <ph name="SHORTCUT_KEY" /></translation> @@ -1170,7 +1168,7 @@ <translation id="2580889980133367162">Toujours autoriser <ph name="HOST" /> à télécharger plusieurs fichiers</translation> <translation id="2580924999637585241">Total : <ph name="NUMBER_OF_SHEETS" /> <ph name="SHEETS_LABEL" /></translation> <translation id="258095186877893873">Longue</translation> -<translation id="2581475589551312226">Sauvegardez automatiquement les données des applications Google Play dans Google Drive pour pouvoir les restaurer ensuite depuis ce service. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> +<translation id="2581475589551312226">Sauvegardez et restaurez automatiquement les données des applications Google Play via Google Drive. <ph name="BEGIN_LINK1" />En savoir plus<ph name="END_LINK1" /></translation> <translation id="2582253231918033891"><ph name="PRODUCT_NAME" /> <ph name="PRODUCT_VERSION" /> (Plate-forme <ph name="PLATFORM_VERSION" />) <ph name="DEVICE_SERIAL_NUMBER" /></translation> <translation id="2585116156172706706">Cette extension a peut-être été ajoutée à votre insu.</translation> <translation id="2585300050980572691">Paramètres de recherche par défaut</translation> @@ -1476,7 +1474,7 @@ <translation id="295947108480905647">"<ph name="CHROME_EXTENSION_NAME" />" tente de se connecter à :</translation> <translation id="2959614062380389916">Désactivé par l'administrateur</translation> <translation id="2960393411257968125">Méthode de saisie automatique utilisée par le gestionnaire de mots de passe dans le cas des identifiants de synchronisation</translation> -<translation id="29611076221683977">Les individus malveillants actuellement à l'œuvre sur le site <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pourraient tenter d'installer des programmes dangereux sur votre Mac, de manière à récupérer vos informations (par exemple des photos, des mots de passe, des messages et des numéros de carte de paiement) sans votre autorisation, ou à les supprimer.</translation> +<translation id="29611076221683977">Des individus malveillants à l'œuvre sur le site <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pourraient tenter d'installer des applications dangereuses sur votre Mac afin de récupérer ou de supprimer certaines informations : photos, mots de passe, messages, numéros de carte de paiement, etc.</translation> <translation id="2961695502793809356">Cliquer pour avancer, maintenir pour voir l'historique</translation> <translation id="296216853343927883">Affichage de la marque Google dans le menu contextuel.</translation> <translation id="2963151496262057773">Le plug-in "<ph name="PLUGIN_NAME" />" ne répond pas. Voulez-vous l'interrompre ?</translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Si la restauration du système d'exploitation de votre ordinateur s'avère nécessaire, une carte SD ou une clé USB de récupération vous sera demandée.</translation> <translation id="305932878998873762">Le cache simple pour HTTP est un nouveau cache. Il dépend du système de fichiers pour l'allocation d'espace disque.</translation> <translation id="3062606427884046423">Utilise les notifications MediaStyle Android pour les notifications de média Chrome.</translation> +<translation id="3063224679438508013">Lancer automatiquement l'application de prise de notes</translation> <translation id="3063844757726132584">Accédez à toutes vos applications depuis ce lanceur bien pratique. Jouez, participez à des chats vidéo, écoutez de la musique, modifiez des documents ou téléchargez d'autres applications.</translation> <translation id="3064388234319122767">Translittération (zdravo → здраво)</translation> <translation id="3065041951436100775">Commentaires relatifs à l'arrêt de l'onglet</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock pour les mots de passe</translation> <translation id="317583078218509884">Les nouveaux paramètres des autorisations de site seront appliqués lorsque vous actualiserez la page.</translation> <translation id="3177048931975664371">Cliquer pour masquer le mot de passe</translation> +<translation id="3177909033752230686">Langue de la page :</translation> <translation id="3180365125572747493">Saisissez un mot de passe pour chiffrer ce fichier de certificat.</translation> <translation id="3183139917765991655">Importation de profils</translation> <translation id="3184560914950696195">Impossible d'enregistrer les fichiers dans le dossier $1. Les images modifiées seront enregistrées dans le dossier Téléchargements.</translation> @@ -1836,7 +1836,7 @@ <translation id="3414856743105198592">Si vous formatez le périphérique amovible, toutes les données seront effacées. Voulez-vous continuer ?</translation> <translation id="3414952576877147120">Taille :</translation> <translation id="3420980393175304359">Changer de profil</translation> -<translation id="342383653005737728">Votre administrateur peut choisir d'envoyer à Google des données de diagnostic et d'utilisation relatives à cet appareil. Vous pouvez consulter <ph name="BEGIN_LINK1" />ce paramètre<ph name="END_LINK1" /> ici. <ph name="BEGIN_LINK2" />En savoir plus<ph name="END_LINK2" /></translation> +<translation id="342383653005737728">Le propriétaire de l'appareil peut choisir d'envoyer à Google des données de diagnostic et d'utilisation. Vous pouvez consulter <ph name="BEGIN_LINK1" />ce paramètre<ph name="END_LINK1" /> ici. <ph name="BEGIN_LINK2" />En savoir plus<ph name="END_LINK2" /></translation> <translation id="3423858849633684918">Veuillez relancer <ph name="PRODUCT_NAME" />.</translation> <translation id="3425233587047449821">Nouvelle interface de saisie pour le coréen</translation> <translation id="3426704822745136852">Indiquez le nombre de fils de trame.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Téléchargé par <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Afficher "<ph name="FOLDER_NAME" />"</translation> <translation id="3613422051106148727">&Ouvrir dans un nouvel onglet</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Effacer les données de navigation...</translation> <translation id="3618849550573277856">Rechercher "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Tout le contenu a été sauvegardé</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">Les paramètres Adobe Flash Player utilisés pour l'appareil photo sont différents.</translation> <translation id="39964277676607559">Impossible de charger le JavaScript "<ph name="RELATIVE_PATH" />" du script de contenu.</translation> -<translation id="3996912167543967198">Réinitialisation en cours…</translation> <translation id="3997015411467176489">Fonctionnalités canvas expérimentales</translation> <translation id="4002066346123236978">Titre</translation> <translation id="40027638859996362">Déplacer un mot</translation> @@ -2391,6 +2391,7 @@ <translation id="4140559601186535628">Messages Push</translation> <translation id="4146026355784316281">Toujours ouvrir avec le lecteur système</translation> <translation id="4146175323503586871">Une demande de vérification pour déterminer si votre appareil Chrome OS est éligible à une offre a été envoyée depuis <ph name="SERVICE_NAME" />. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Écran</translation> <translation id="4151403195736952345">Utiliser la valeur par défaut globale (Détection)</translation> <translation id="4152177296285305182">Seule une personne en possession de votre mot de passe multiterme peut lire vos données chiffrées. Google ne reçoit ni n'enregistre votre mot de passe multiterme. Si vous oubliez votre mot de passe multiterme, vous devrez réinitialiser la synchronisation.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 onglet}one{# onglet}other{# onglets}}</translation> @@ -2455,6 +2456,7 @@ <translation id="4250229828105606438">Capture d'écran</translation> <translation id="4250680216510889253">Non</translation> <translation id="4253168017788158739">Remarque</translation> +<translation id="4254813446494774748">Langue de traduction :</translation> <translation id="425573743389990240">Taux de décharge de la batterie en watts (une valeur négative signifie que la batterie est en charge)</translation> <translation id="4256316378292851214">En&registrer la vidéo sous...</translation> <translation id="4258348331913189841">Systèmes de fichiers</translation> @@ -2532,6 +2534,7 @@ <translation id="4365673000813822030">Petit problème… La synchronisation s'est arrêtée.</translation> <translation id="4366509400410520531">Autorisée par vous-même</translation> <translation id="4367782753568896354">L'installation des éléments suivants a échoué :</translation> +<translation id="436904870295243580">Plus d'applications de prise de notes</translation> <translation id="4370975561335139969">L'adresse e-mail et le mot de passe saisis ne correspondent pas.</translation> <translation id="437184764829821926">Paramètres de police avancés</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -2950,7 +2953,7 @@ <translation id="4974733135013075877">Fermer et activer le verrouillage enfant</translation> <translation id="497490572025913070">Ajout de bordures aux couches de rendu composées</translation> <translation id="4977942889532008999">Confirmer l'accès</translation> -<translation id="4980805016576257426">Cette extension contient un logiciel malveillant.</translation> +<translation id="4980805016576257426">Cette extension contient des logiciels malveillants.</translation> <translation id="4982319280615426980">Interface utilisateur simplifiée pour le mode plein écran et le verrouillage de la souris.</translation> <translation id="4982718461356080574">Masquage du bouton de fermeture des onglets inactifs en mode empilé</translation> <translation id="498294082491145744">Modifier les paramètres qui contrôlent l'accès des sites Web à des fonctionnalités telles que les cookies, le code JavaScript, les plug-ins, la géolocalisation, le micro, la caméra, etc.</translation> @@ -3104,7 +3107,7 @@ <translation id="5186650237607254032">Mettez à jour le verrouillage de l'écran de votre téléphone afin de le désactiver lorsque vous êtes à proximité. Vous déverrouillerez ainsi votre téléphone plus rapidement et profiterez d'une meilleure expérience Smart Lock sur votre <ph name="DEVICE_TYPE" />.</translation> <translation id="5187295959347858724">Vous êtes maintenant connecté à <ph name="SHORT_PRODUCT_NAME" />. Vos favoris, votre historique et d'autres paramètres sont synchronisés avec votre compte Google.</translation> <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation> -<translation id="5187902302719680252">L'option de déverrouillage rapide vous permet d'utiliser un code pour déverrouiller votre Chromebook après vous être connecté à l'appareil.</translation> +<translation id="5187902302719680252">L'option de déverrouillage rapide vous permet d'utiliser un code pour déverrouiller votre Chromebook après vous être connecté.</translation> <translation id="5188893945248311098">Exiger un geste de l'utilisateur pour lire des éléments multimédias</translation> <translation id="5189060859917252173">Le certificat "<ph name="CERTIFICATE_NAME" />" représente une autorité de certification.</translation> <translation id="5196716972587102051">2</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">Vous allez annuler l'enregistrement de ce <ph name="DEVICE_TYPE" /> auprès de Google afin de désactiver la possibilité de localiser l'appareil, de le verrouiller et d'effacer les données qu'il contient à distance. Cette opération requiert un redémarrage. Souhaitez-vous continuer ?</translation> <translation id="5324780743567488672">Définir le fuseau horaire automatiquement à l'aide de votre position</translation> <translation id="5325120507747984426">Permet d'utiliser un agencement stable des fenêtres en mode aperçu pour minimiser le déplacement des fenêtres lors de l'ouverture ou de la fermeture de l'aperçu et entre les sessions d'aperçu.</translation> +<translation id="5326182685622510062">Plusieurs implémentations de rendu graphique sont proposées dans Canvas 2D, chacune présentant différentes caractéristiques en termes de performances. Si vous activez cet indicateur, les contextes Canvas 2D peuvent basculer instantanément entre ces implémentations en fonction du Canvas utilisé afin d'améliorer les performances. Par exemple, en passant d'une implémentation qui utilise le GPU à une autre qui ne l'utilise pas.</translation> <translation id="5327248766486351172">Nom</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Supprimer</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">Sélectionnez un avatar pour cet utilisateur supervisé.</translation> <translation id="5488468185303821006">Autoriser en mode navigation privée</translation> <translation id="5489390182170331803">Comportement par défaut pour les écouteurs d'événements passifs au niveau du document</translation> -<translation id="5489789060051091748">Transcription audio : appuyez de manière prolongée sur Rechercher, puis cliquez sur le contenu de votre choix ou faites-le glisser pour entendre ce qui est écrit.</translation> <translation id="549294555051714732">Mise en correspondance des sous-chaînes pour les suggestions de la saisie automatique</translation> <translation id="5493996328530898436">Nouvelle stratégie de mixage du rendu audio</translation> <translation id="5494362494988149300">Ouvrir une fois le téléchargement &terminé</translation> @@ -3702,9 +3705,6 @@ <translation id="5991049340509704927">Agrandir</translation> <translation id="5991774521050363748">Activer les mises en page personnalisées pour les notifications Web. Vous pourrez ainsi profiter d'améliorations subtiles de la mise en page, qui ne seraient pas disponibles autrement.</translation> <translation id="5993332328670040093">Votre utilisation des données ne sera plus mesurée.</translation> -<translation id="5996258716334177896">Impossible d'ouvrir votre profil correctement. - -Il est possible que certaines fonctionnalités ne soient pas disponibles. Veuillez vérifier que ce profil existe et que vous disposez d'une autorisation d'accès à son contenu en lecture et en écriture.</translation> <translation id="6001799583597751002">Les codes sont différents :</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> risque de ne pas rester à jour.</translation> <translation id="6003294706906016758">Afficher les applications hébergées dans un cadre de style "site Web"</translation> @@ -4154,7 +4154,6 @@ <translation id="6637362044401670482">Active la compatibilité avec le défilement prolongé du clavier virtuel</translation> <translation id="6639554308659482635">Mémoire SQLite</translation> <translation id="6643016212128521049">Effacer</translation> -<translation id="6644756108386233011">Réinitialiser les paramètres <ph name="IDS_SHORT_PRODUCT_NAME" /> qui ont été modifiés ?</translation> <translation id="6647228709620733774">URL de révocation de l'autorité de certification Netscape</translation> <translation id="6647838571840953560">Version actuelle : <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Un instant…</translation> @@ -4262,7 +4261,6 @@ <translation id="6810613314571580006">Permet de se connecter automatiquement aux sites Web à l'aide des identifiants enregistrés. Lorsque la fonctionnalité est désactivée, vous êtes invité à confirmer chaque connexion à un site Web.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> ne peut pas être exécuté en tant que root.</translation> <translation id="6812841287760418429">Conserver les modifications</translation> -<translation id="6815353853907306610">Il est possible que les paramètres de votre navigateur <ph name="IDS_SHORT_PRODUCT_NAME" /> aient été modifiés à votre insu. Voulez-vous réinitialiser les paramètres par défaut d'origine ?</translation> <translation id="6815551780062710681">modifier</translation> <translation id="6817358880000653228">Mots de passe enregistrés pour ce site :</translation> <translation id="6820008762872335722">Redemander</translation> @@ -4379,6 +4377,7 @@ <translation id="6980956047710795611">Transférer toutes les données Chrome OS vers le nouveau mot de passe (nécessite le mot de passe précédent)</translation> <translation id="6981982820502123353">Accessibilité</translation> <translation id="6981992744085917617">Choisissez la méthode à utiliser pour vous reconnecter à votre compte :</translation> +<translation id="698231206551913481">L'ensemble des données locales et des fichiers associés à cet utilisateur seront définitivement supprimés en même temps que ce dernier.</translation> <translation id="6982896539684144327">Imprimante de "<ph name="VENDOR_NAME" />" détectée</translation> <translation id="6983783921975806247">OID enregistré</translation> <translation id="6983991971286645866">Toutes les modifications seront enregistrées dans le fichier $1.</translation> @@ -4463,6 +4462,7 @@ <translation id="7073555242265688099">Si vous possédez d'autres appareils Chrome, ils seront synchronisés automatiquement, de telle sorte que votre téléphone les déverrouille également.</translation> <translation id="707392107419594760">Sélectionnez votre clavier :</translation> <translation id="7075513071073410194">PKCS #1 MD5 avec chiffrement RSA</translation> +<translation id="7075625805486468288">Gérer les certifications et paramètres HTTPS/SSL</translation> <translation id="7076293881109082629">Connexion</translation> <translation id="7077829361966535409">Échec du chargement de la page de connexion avec les paramètres de proxy actuels. Veuillez <ph name="GAIA_RELOAD_LINK_START" />essayer de vous reconnecter<ph name="GAIA_RELOAD_LINK_END" /> ou utiliser d'autres <ph name="PROXY_SETTINGS_LINK_START" />paramètres de proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Gestionnaires de protocole ignorés</translation> @@ -4510,7 +4510,6 @@ <translation id="7141105143012495934">Échec de la connexion, car il est impossible de récupérer les informations relatives à votre compte. Veuillez contacter votre administrateur ou réessayer.</translation> <translation id="7143207342074048698">Connexion en cours</translation> <translation id="7144878232160441200">Réessayer</translation> -<translation id="7148311641502571842">Le plug-in <ph name="PLUGIN_NAME" /> a été désactivé. Pour le réactiver, veuillez accéder à <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Imprimantes standards</translation> <translation id="7154130902455071009">Utiliser l'adresse <ph name="START_PAGE" /> comme page de démarrage ?</translation> <translation id="715487527529576698">Le chinois simplifié est le mode de saisie initial</translation> @@ -4572,7 +4571,7 @@ <translation id="7243055093079293866">Dire "Ok Google" dans un nouvel onglet et google.com</translation> <translation id="7243632151880336635">Effacer et se déconnecter</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (résolution optimale)</translation> -<translation id="724691107663265825">Le site Web que vous allez ouvrir contient un logiciel malveillant</translation> +<translation id="724691107663265825">Le site que vous allez ouvrir contient des logiciels malveillants</translation> <translation id="725109152065019550">Désolé, votre administrateur a désactivé les périphériques de stockage externe pour votre compte.</translation> <translation id="7252661675567922360">Ne pas charger</translation> <translation id="7253521419891527137">&En savoir plus</translation> @@ -4656,7 +4655,7 @@ <translation id="7366909168761621528">Données de navigation</translation> <translation id="7369521049655330548">Les plug-ins suivants ont été bloqués sur cette page :</translation> <translation id="7371490661692457119">Largeur par défaut des mosaïques</translation> -<translation id="7373789336584437724">Cet appareil envoie actuellement des données de diagnostic et d'utilisation à Google. Vous pouvez modifier cette option à tout moment <ph name="BEGIN_LINK1" />depuis les paramètres<ph name="END_LINK1" /> de votre appareil. <ph name="BEGIN_LINK2" />En savoir plus<ph name="END_LINK2" /></translation> +<translation id="7373789336584437724">Cet appareil envoie actuellement des données de diagnostic et d'utilisation à Google. Vous pouvez modifier cette option à tout moment <ph name="BEGIN_LINK1" />dans les paramètres<ph name="END_LINK1" /> de votre appareil. <ph name="BEGIN_LINK2" />En savoir plus<ph name="END_LINK2" /></translation> <translation id="7374461526650987610">Gestionnaires de protocoles</translation> <translation id="7375125077091615385">Type :</translation> <translation id="7376553024552204454">Mettre en surbrillance le curseur de la souris lorsqu'il se déplace</translation> @@ -4789,6 +4788,7 @@ <translation id="7540972813190816353">Une erreur s'est produite pendant la vérification des mises à jour : <ph name="ERROR" />.</translation> <translation id="7541121857749629630">Exceptions liées aux images</translation> <translation id="7543104066686362383">Activer les fonctionnalités de débogage sur cet appareil <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Si vous ne trouvez pas ce que vous recherchez, consultez l'<ph name="BEGIN_LINK_CHROMIUM" />Aide Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Aléatoire</translation> <translation id="7545288882499673859">Stratégie de suppression de la mémoire pour le traitement avancé de la pression</translation> <translation id="7545415673537747415">Contrôlez la façon dont Google utilise votre historique de navigation pour personnaliser la recherche, les annonces et d'autres services Google, à partir de la page <ph name="BEGIN_LINK" />Commandes Google relatives à l'activité<ph name="END_LINK" />.</translation> @@ -5026,7 +5026,6 @@ <translation id="7879478708475862060">Suivre le mode de saisie</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" permet d'ajouter les applications et les extensions suivantes :</translation> <translation id="7881969471599061635">Désactiver les sous-titres</translation> -<translation id="7884988936047469945">Fonctionnalités d'accessibilité expérimentales</translation> <translation id="7885253890047913815">Emplacements de destination récents</translation> <translation id="7887192723714330082">Répondez à "Ok Google" lorsque l'écran est actif et déverrouillé.</translation> <translation id="7887334752153342268">Dupliquer</translation> @@ -5094,6 +5093,7 @@ <translation id="7974067550340408553">Recevez des notifications sur votre téléphone chaque fois que Smart Lock déverrouille votre <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Réessayer avec "<ph name="EXTENSIONNAME" />"</translation> <translation id="7974936243149753750">Surbalayage</translation> +<translation id="7976960358280528247">Permet d'activer le raccourci pour passer d'une fenêtre à l'autre (Alt+Tabulation).</translation> <translation id="7977551819349545646">Mise à jour de Chromebox en cours…</translation> <translation id="7978412674231730200">Clé privée</translation> <translation id="7979036127916589816">Erreur de synchronisation</translation> @@ -5121,6 +5121,7 @@ Conservez votre fichier de clé en lieu sûr. Vous en aurez besoin lors de la création de nouvelles versions de l'extension.</translation> <translation id="799923393800005025">Lecteur</translation> +<translation id="8000066093800657092">Aucun réseau détecté</translation> <translation id="8004582292198964060">Navigateur</translation> <translation id="8007030362289124303">Batterie faible</translation> <translation id="8008356846765065031">Connexion Internet interrompue. Veuillez vérifier votre connexion.</translation> @@ -5195,6 +5196,7 @@ <translation id="8116190140324504026">Plus d'informations...</translation> <translation id="8116483400482790018">Dictionnaire orthographique personnalisé</translation> <translation id="8116972784401310538">&Gestionnaire de favoris</translation> +<translation id="8117838550640702864">Options de prise de notes</translation> <translation id="8117957376775388318">Mode de saisie dayi</translation> <translation id="8118860139461251237">Gérer vos téléchargements</translation> <translation id="8119572489781388874">Modifier les paramètres</translation> @@ -5289,7 +5291,7 @@ <translation id="8226222018808695353">Interdit</translation> <translation id="8226742006292257240">Le mot de passe TPM ci-dessous, généré de façon aléatoire, a été attribué à votre ordinateur :</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Les individus malveillants actuellement à l'œuvre sur le site <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pourraient tenter d'installer des programmes dangereux sur votre ordinateur, de manière à récupérer vos informations (par exemple des photos, des mots de passe, des messages et des numéros de carte de paiement) sans votre autorisation, ou à les supprimer.</translation> +<translation id="8230421197304563332">Des individus malveillants à l'œuvre sur le site <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pourraient tenter d'installer des applications dangereuses sur votre ordinateur afin de récupérer ou de supprimer certaines informations : photos, mots de passe, messages, numéros de carte de paiement, etc.</translation> <translation id="8233254008506535819">Inclure l'option permettant d'ajouter des sites importants à la liste blanche dans la boîte de dialogue "Effacer les données de navigation"</translation> <translation id="8236231079192337250">Application Chrome Web Store Gallery pour les pilotes d'imprimante</translation> <translation id="8238649969398088015">Astuce</translation> @@ -5474,7 +5476,6 @@ <translation id="8472623782143987204">matériel requis</translation> <translation id="8475313423285172237">Un autre programme sur votre ordinateur a ajouté une extension qui risque de modifier le fonctionnement de Google Chrome.</translation> <translation id="8475647382427415476">Impossible de synchroniser "<ph name="FILENAME" />" sur Google Drive pour le moment. Une nouvelle tentative aura lieu plus tard.</translation> -<translation id="8476195663057048998">Effacer et réinitialiser</translation> <translation id="8477241577829954800">Remplacé</translation> <translation id="8477384620836102176">&Général</translation> <translation id="8480417584335382321">Niveau de zoom par défaut :</translation> @@ -5704,7 +5705,6 @@ <translation id="8785135611469711856">Le plug-in ne répond pas</translation> <translation id="8787254343425541995">Autoriser les proxys pour les réseaux partagés</translation> <translation id="878763818693997570">Ce nom est trop long.</translation> -<translation id="8787865569533773240">Réinitialiser les paramètres <ph name="IDS_SHORT_PRODUCT_NAME" /> qui ont été modifiés</translation> <translation id="8789375980715484686">Gérer les autres utilisateurs</translation> <translation id="8791534160414513928">Envoyer une demande "Interdire le suivi" pendant la navigation</translation> <translation id="8795668016723474529">Ajouter une carte de paiement</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index f1f12e0..84fe8f0 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -517,7 +517,6 @@ <translation id="1673103856845176271">સુરક્ષા કારણોસર ફાઇલ ઍક્સેસ કરી શકાઈ નથી.</translation> <translation id="1675023460278456180">સામગ્રી હાઇબ્રિડ</translation> <translation id="167832068858235403">વૉલ્યુમ ઘટાડો</translation> -<translation id="1678331212993975953">સાઇટની વિગતો</translation> <translation id="1679068421605151609">વિકાસકર્તા સાધનો</translation> <translation id="1681120471812444678">પ્રિન્ટર્સ ઉમેરવા માટે સેટ કરો…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> ની નોંધણી કરો</translation> @@ -1007,7 +1006,6 @@ <translation id="2371076942591664043">&પૂર્ણ થાય ત્યારે ખોલો</translation> <translation id="2372036074421194686">Chrome ને તમારા કમ્પ્યુટર પર વણજોઇતો પ્રોગ્રામ (<ph name="UWS_NAME" />) ઇન્સ્ટૉલ થયેલ મળ્યો છે. તમે Chrome સફાઈ સાધન ચલાવીને તેને દૂર કરવામાં સમર્થ થઈ શકો છો.</translation> <translation id="2375701438512326360">હંમેશા સક્ષમ અથવા અક્ષમ રહેવા અથવા જ્યારે સ્ટાર્ટઅપ પર ટચસ્ક્રીન શોધવામાં આવે ત્યારે સક્ષમ રહેવા માટે ફોર્સ ટચસ્ક્રીન સપોર્ટ (સ્વત:, ડિફોલ્ટ)</translation> -<translation id="2377619091472055321">બદલાયેલ <ph name="IDS_SHORT_PRODUCT_NAME" /> સેટિંગ્સને ફરીથી સેટ કરો</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> ફાઇલો પસંદ કરી</translation> <translation id="2378982052244864789">એક્સ્ટેંશન ડાયરેક્ટરી પસંદ કરો.</translation> <translation id="2379281330731083556">સિસ્ટમ સંવાદનો ઉપયોગ કરીને છાપો... <ph name="SHORTCUT_KEY" /></translation> @@ -1555,6 +1553,7 @@ <translation id="3058212636943679650">જો કોઈવાર તમને તમારા કમ્પ્યુટરની ઑપરેટિંગ સિસ્ટમ પુનઃસ્થાપિત કરવાની જરૂર પડે, તો તમને SD કાર્ડ અથવા USB મેમરી સ્ટિકની પુનઃપ્રાપ્તિ કરવાની જરૂર પડશે.</translation> <translation id="305932878998873762">HTTP માટેની સરળ કેશ એ નવી કેશ છે. તે ડિસ્ક જગ્યા ફાળવણી માટેની ફાઇલસિસ્ટમ પર આધાર રાખે છે.</translation> <translation id="3062606427884046423">Chrome મીડિયા સૂચનાઓ માટે Android MediaStyle સૂચનાઓનો ઉપયોગ કરો.</translation> +<translation id="3063224679438508013">નોંધ-ઍપ્લિકેશન સ્વતઃ-લોંચ કરો</translation> <translation id="3063844757726132584">આ હાથવગા લોન્ચરથી તમારી તમામ ઍપ્લિકેશનોને ઍક્સેસ કરો. રમતો રમો, વિડિઓ ચેટ કરો, સંગીત સાંભળો, દસ્તાવેજોને સંપાદિત કરો અથવા વધુ ઍપ્લિકેશનો મેળવો.</translation> <translation id="3064388234319122767">લિવ્યંતરણ (zdravo → здраво)</translation> <translation id="3065041951436100775">ટેબ ફરજિયાત બંધ કરવાનો પ્રતિસાદ.</translation> @@ -1645,6 +1644,7 @@ <translation id="3172213052701798825">પાસવર્ડ્સ માટે Google Smart Lock</translation> <translation id="317583078218509884">નવી સાઇટ પરવાનગીઓ સેટિંગ્સ પૃષ્ઠ ફરીથી લોડ કર્યા પછી પ્રભાવમાં આવશે.</translation> <translation id="3177048931975664371">પાસવર્ડ છુપાવવા માટે ક્લિક કરો</translation> +<translation id="3177909033752230686">પૃષ્ઠ ભાષા:</translation> <translation id="3180365125572747493">આ પ્રમાણપત્ર ફાઇલને એન્ક્રિપ્ટ કરવા માટે કૃપા કરીને પાસવર્ડ દાખલ કરો.</translation> <translation id="3183139917765991655">પ્રોફાઇલ આયાતકાર</translation> <translation id="3184560914950696195">$1 પર સાચવી શકાતું નથી. સંપાદિત છબીઓ ડાઉનલોડ્સ ફોલ્ડરમાં સાચવવામાં આવશે.</translation> @@ -1995,6 +1995,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> એ ડાઉનલોડ કરી</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ને દર્શાવો</translation> <translation id="3613422051106148727">નવા ટૅબમાં &ખોલો</translation> +<translation id="3616113530831147358">ઑડિઓ</translation> <translation id="3616741288025931835">બ્રાઉઝિંગ ડેટા &સાફ કરો...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />” શોધો</translation> <translation id="3620292326130836921">તમામનો બેક અપ લેવાયો!</translation> @@ -2291,7 +2292,6 @@ <translation id="3994878504415702912">&ઝૂમ કરો</translation> <translation id="3995964755286119116">Adobe Flash Player કૅમેરા સેટિંગ્સ અલગ છે.</translation> <translation id="39964277676607559">સામગ્રી સ્ક્રિપ્ટ માટે JavaScript '<ph name="RELATIVE_PATH" />' લોડ કરી શકાયું નથી.</translation> -<translation id="3996912167543967198">ફરીથી સેટ કરી રહ્યું છે...</translation> <translation id="3997015411467176489">પ્રાયોગિક કૅન્વાસ સુવિધાઓ</translation> <translation id="4002066346123236978">શીર્ષક</translation> <translation id="40027638859996362">શબ્દ ખસેડો</translation> @@ -2388,6 +2388,7 @@ <translation id="4140559601186535628">પુશ સંદેશાઓ</translation> <translation id="4146026355784316281">હંમેશા સિસ્ટમ દર્શક સાથે ખોલો</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> તપાસવા માગે છે કે તમારું Chrome OS ઉપકરણ ઓફર માટે પાત્ર છે કે કેમ. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">પ્રદર્શિત કરો</translation> <translation id="4151403195736952345">વૈશ્વિક ડિફોલ્ટનો ઉપયોગ કરો (શોધો)</translation> <translation id="4152177296285305182">ફક્ત અમુક લોકો જ તમારા પાસફ્રેઝથી તમારો એન્ક્રિપ્ટેડ ડેટા વાંચી શકે છે. પાસફ્રેઝ Google દ્વારા સ્ટોર કરવામાં કે મોકલવામાં આવતો નથી. જો તમે તમારો પાસફ્રેઝ ભૂલી ગયા હો, તો તમારે સમન્વયનને ફરીથી સેટ કરવાની જરૂર પડશે.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 ટેબ}one{# ટેબ્સ}other{# ટેબ્સ}}</translation> @@ -2452,6 +2453,7 @@ <translation id="4250229828105606438">સ્ક્રીનશૉટ</translation> <translation id="4250680216510889253">નહીં</translation> <translation id="4253168017788158739">નોંધ</translation> +<translation id="4254813446494774748">અનુવાદ ભાષા:</translation> <translation id="425573743389990240">બેટરી ડિસ્ચાર્જ દર વોટ્સમાં (ઋણ મૂલ્યનો અર્થ છે બેટરી ચાર્જ થઈ રહી છે)</translation> <translation id="4256316378292851214">વિડિઓને આ રૂપે સા&ચવો...</translation> <translation id="4258348331913189841">ફાઇલ સિસ્ટમ્સ</translation> @@ -2529,6 +2531,7 @@ <translation id="4365673000813822030">ઊફ્ફ, સમન્વયન કામ કરતું બંધ થઈ ગયું છે. </translation> <translation id="4366509400410520531">તમારા દ્વારા મંજૂર</translation> <translation id="4367782753568896354">અમે ઇન્સ્ટોલ કરવામાં અક્ષમ હતા:</translation> +<translation id="436904870295243580">વધુ નોંધ-લેવા માટેની ઍપ્લિકેશનો શોધો</translation> <translation id="4370975561335139969">તમે દાખલ કરેલ ઇમેઇલ અને પાસવર્ડ મેળ ખાતા નથી</translation> <translation id="437184764829821926">વિગતવાર ફોન્ટ સેટિંગ્સ</translation> <translation id="4372884569765913867">1x1</translation> @@ -3207,6 +3210,7 @@ <translation id="5324674707192845912">ઉપકરણને રિમોટલી સ્થિત કરવા, વાઇપ કરવા અને લૉક કરવાની ક્ષમતાને અક્ષમ કરવા માટે Google સાથે આ <ph name="DEVICE_TYPE" /> ની નોંધણી રદ કરવાના છો. આને રીબૂટની જરૂર પડશે. શું તમે ચાલુ રાખવા માગો છો?</translation> <translation id="5324780743567488672">તમારા સ્થાનનો ઉપયોગ કરીને આપમેળે સમય ઝોન સેટ કરો</translation> <translation id="5325120507747984426">વિહંગાવલોકન મોડમાં સ્થિર વિંડો ક્રમાંકનનો ઉપયોગ કરે છે જે વિહંગાવલોકનમાં દાખલ થવા / બહાર નીકળવા પર અને વિહંગાવલોકન સત્રો વચ્ચે વિંડોઝની ગતિને ઘટાડવા માટેનો પ્રયત્ન કરે છે.</translation> +<translation id="5326182685622510062">2D કૅન્વાસ માટે ગ્રાફિક્સ રેન્ડરિંગ પાઇપલાઇનના બહુવિધ અમલીકરણો છે. આ ભિન્ન અમલીકરણોની ભિન્ન પ્રદર્શન લાક્ષણિકતાઓ છે. આ ફ્લેગને ચાલુ કરવું, પ્રદર્શન વધારવા માટે કૅન્વાસના ઉપયોગની રીતના આધારે આ અમલીકરણો વચ્ચે જલ્દીથી સ્વિચ કરવા માટે 2D સંદર્ભોને મંજૂરી આપે છે. ઉદાહરણ તરીકે, GPU નો ઉપયોગ કરતાં કોઈ અમલીકરણથી લઈને GPU નો ઉપયોગ ન કરતાં કોઈ અમલીકરણ સુધી.</translation> <translation id="5327248766486351172">નામ</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&કાઢી નાખો</translation> @@ -3339,7 +3343,6 @@ <translation id="54870580363317966">આ નિરીક્ષિત વપરાશકર્તા માટે એક અવતાર પસંદ કરો.</translation> <translation id="5488468185303821006">છૂપા મોડમાં મંજૂરી આપો</translation> <translation id="5489390182170331803">દસ્તાવેજ સ્તર ઇવેન્ટ શ્રોતા નિષ્ક્રિય ડિફૉલ્ટ</translation> -<translation id="5489789060051091748">બોલવા માટે પસંદ કરો: શોધોને પકડી રાખો અને કંઈપણ બોલવા માટે ક્લિક કરો અથવા ખેંચો</translation> <translation id="549294555051714732">સ્વતઃભરણ સૂચનો માટે સબસ્ટ્રિંગ મેળ</translation> <translation id="5493996328530898436">નવી ઑડિઓ રેન્ડરિંગ મિક્સિંગ વ્યૂહરચના</translation> <translation id="5494362494988149300">&પૂર્ણ થાય ત્યારે ખોલો</translation> @@ -3697,7 +3700,6 @@ <translation id="5991049340509704927">મૅગ્નિફાઇ</translation> <translation id="5991774521050363748">વેબ સૂચનાઓ માટે કસ્ટમ લેઆઉટને સક્ષમ કરો. તેઓ અન્યથા શક્ય ન હોય તેવા સુક્ષ્મ લેઆઉટ સુધારાઓ ધરાવતા હશે.</translation> <translation id="5993332328670040093">ડેટા વપરાશનું હવેથી માપન કરવામાં આવશે નહિ.</translation> -<translation id="5996258716334177896">તમારી પ્રોફાઇલ બરાબર ખોલી શકાઈ નથી.કેટલીક વિશેષતાઓ અનુપલબ્ધ હોઈ શકે છે. કૃપા કરીને તપાસો કે પ્રોફાઇલ અસ્તિત્વમાં છે અને તમારી પાસે તેની સામગ્રી વાંચવા અને લખવાની પરવાનગી છે.</translation> <translation id="6001799583597751002">PIN મેળ ખાતાં નથી:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> પોતાને અપડેટ રાખી શકશે નહીં.</translation> <translation id="6003294706906016758">હોસ્ટ કરેલ ઍપ્લિકેશનો માટે વેબ ઍપ્લિકેશન સ્ટાઇલ ફ્રેમ સક્ષમ કરે છે.</translation> @@ -4148,7 +4150,6 @@ <translation id="6637362044401670482">વર્ચ્યુઅલ કીબોર્ડ ઓવરસ્ક્રોલ સમર્થનને સક્ષમ કરે છે.</translation> <translation id="6639554308659482635">SQLite મેમરી</translation> <translation id="6643016212128521049">સાફ કરો</translation> -<translation id="6644756108386233011">બદલાયેલ <ph name="IDS_SHORT_PRODUCT_NAME" /> સેટિંગ્સને ફરીથી સેટ કરીએ?</translation> <translation id="6647228709620733774">નેટસ્કેપ પ્રમાણન અધિકારી રિવોકેશન URL</translation> <translation id="6647838571840953560">હાલમાં <ph name="CHANNEL_NAME" /> પર છે</translation> <translation id="6649018507441623493">માત્ર એક જ સેકંડ…</translation> @@ -4256,7 +4257,6 @@ <translation id="6810613314571580006">સંગ્રહિત ઓળખપત્રોનો ઉપયોગ કરીને વેબસાઇટ્સમાં આપમેળે સાઇન ઇન કરો. જ્યારે સુવિધા અક્ષમ હોય છે, ત્યારે વેબસાઇટમાં સાઇન ઇન કરતાં પહેલાં દર વખતે તમને પુષ્ટિકરણ માટે કહેવામાં આવશે.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> એક મૂળ તરીકે ચાલી શકતું નથી.</translation> <translation id="6812841287760418429">ફેરફારો રાખો</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> એ શોધ્યું છે કે તમારી બ્રાઉઝર સેટિંગ્સ કદાચ તમારી જાણ વિના બદલવામાં આવી છે. તમે તેમને તેમના મૂળ ડિફોલ્ટ્સ પર ફરીથી સેટ કરવા માંગો છો?</translation> <translation id="6815551780062710681">સંપાદિત કરો</translation> <translation id="6817358880000653228">આ સાઇટ માટે સાચવેલા પાસવર્ડ્સ:</translation> <translation id="6820008762872335722">પૂછવા માટે ફરીથી સેટ કરો</translation> @@ -4374,6 +4374,7 @@ (પહેલાનો પાસવર્ડ આવશ્યક છે)</translation> <translation id="6981982820502123353">ઍક્સેસિબિલિટી</translation> <translation id="6981992744085917617">તમારા એકાઉન્ટમાં પાછા લૉગ કરવા માટે તમે ઉપયોગમાં લેવા માગો છો તે પદ્ધતિ પસંદ કરો:</translation> +<translation id="698231206551913481">આ વપરાશકર્તા દૂર કરી દેવામાં આવે તે પછી આ વપરાશકર્તા સાથે સંકળાયેલ તમામ ફાઇલો અને સ્થાનિક ડેટા કાયમીરૂપે કાઢી નાખવામાં આવશે.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> નું પ્રિન્ટર મળ્યું</translation> <translation id="6983783921975806247">નોંધાયેલ OID</translation> <translation id="6983991971286645866">બધા સંપાદનો $1 પર સાચવવામાં આવશે.</translation> @@ -4458,6 +4459,7 @@ <translation id="7073555242265688099">જો તમારી પાસે અન્ય Chrome ઉપકરણો છે, તો તેઓ આપમેળે સમન્વયિત થશે, જેથી કરીને તમારો ફોન તેમને પણ અનલૉક કરી શકશે.</translation> <translation id="707392107419594760">તમારા કીબોર્ડને પસંદ કરો:</translation> <translation id="7075513071073410194">RSA એન્ક્રિપ્શનવાળું PKCS #1 MD5</translation> +<translation id="7075625805486468288">HTTPS/SSL પ્રમાણપત્રો અને સેટિંગ્સ સંચાલિત કરો</translation> <translation id="7076293881109082629">સાઇન ઇન કરી રહ્યું છે</translation> <translation id="7077829361966535409">સાઇન-ઇન પૃષ્ઠ વર્તમાન પ્રોક્સી સેટિંગ્સનો ઉપયોગ કરીને લોડ થવામાં નિષ્ફળ થયું. કૃપા કરીને <ph name="GAIA_RELOAD_LINK_START" />ફરીથી સાઇન ઇન કરવાનો પ્રયાસ કરો<ph name="GAIA_RELOAD_LINK_END" /> અથવા ભિન્ન <ph name="PROXY_SETTINGS_LINK_START" />પ્રોક્સી સેટિંગ્સ<ph name="PROXY_SETTINGS_LINK_END" />નો ઉપયોગ કરો.</translation> <translation id="7077872827894353012">ધ્યાન ન આપેલ પ્રોટોકૉલ હેન્ડલર્સ</translation> @@ -4505,7 +4507,6 @@ <translation id="7141105143012495934">સાઇન-ઇન નિષ્ફળ થયું કારણ કે તમારી એકાઉન્ટ વિગતો પુનઃપ્રાપ્ત કરી શકાઈ નથી. કૃપા કરીને તમારા વ્યવસ્થાપકનો સંપર્ક કરો અથવા ફરી પ્રયાસ કરો.</translation> <translation id="7143207342074048698">કનેક્ટ કરી રહ્યું છે</translation> <translation id="7144878232160441200">ફરી પ્રયાસ કરો</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> પ્લગ-ઇન અક્ષમ કરવામાં આવ્યું છે. તેને ફરીથી સક્ષમ કરવા માટે, કૃપા કરીને <ph name="CHROME_PLUGINS_LINK" /> પર જાઓ.</translation> <translation id="715118844758971915">ક્લાસિક પ્રિન્ટર્સ</translation> <translation id="7154130902455071009">તમારા પ્રારંભ પૃષ્ઠને આ પર બદલો: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">પ્રારંભિક ચીની મોડ એ સરળીકૃત ચીની છે</translation> @@ -4784,6 +4785,7 @@ <translation id="7540972813190816353">અપડેટ્સ માટે તપાસ કરતી વખતે એક ભૂલ આવી: <ph name="ERROR" /></translation> <translation id="7541121857749629630">છબી અપવાદો</translation> <translation id="7543104066686362383">આ <ph name="IDS_SHORT_PRODUCT_NAME" /> ઉપકરણ પર ડીબગિંગ સુવિધાઓ સક્ષમ કરો</translation> +<translation id="7543393759143837504">જો તમે શોધી રહ્યાં છો તે શોધી શકતાં ન હોવ તો <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome સહાય<ph name="END_LINK_CHROMIUM" /> પર જાઓ.</translation> <translation id="7544853251252956727">શફલ કરો</translation> <translation id="7545288882499673859">પ્રગત દબાણને હેન્ડલ કરવા માટે મેમરી કાઢી નાખવાની વ્યૂહરચના</translation> <translation id="7545415673537747415"><ph name="BEGIN_LINK" />Google પ્રવૃત્તિ નિયંત્રણો<ph name="END_LINK" />થી એ નિયંત્રિત કરો કે શોધ, જાહેરાતો અને અન્ય Google સેવાઓને વ્યક્તિગત કરવા માટે Google, તમારા બ્રાઉઝિંગ ઇતિહાસનો ઉપયોગ કેવી રીતે કરે છે.</translation> @@ -5021,7 +5023,6 @@ <translation id="7879478708475862060">ઇનપુટ મોડને અનુસરો</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" આ ઍપ્લિકેશનો અને એક્સટેન્શન્સ ઉમેરે છે:</translation> <translation id="7881969471599061635">ઉપશીર્ષકો અક્ષમ કરો</translation> -<translation id="7884988936047469945">પ્રાયોગિક અૅક્સેસિબિલિટી સુવિધાઓ</translation> <translation id="7885253890047913815">તાજેતરનાં ગંતવ્યો</translation> <translation id="7887192723714330082">જ્યારે સ્ક્રીન ચાલુ અને અનલૉક કરેલી હોય ત્યારે "Ok Google" સાથે જવાબ આપો</translation> <translation id="7887334752153342268">ડુપ્લિકેટ</translation> @@ -5089,6 +5090,7 @@ <translation id="7974067550340408553">Smart Lock તમારા <ph name="DEVICE_TYPE" /> ને અનલૉક કરે તે દરેક વખતે તમારા ફોન પર સૂચિત કરો.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" /> નો ઉપયોગ કરીને ફરીથી પ્રયાસ કરો</translation> <translation id="7974936243149753750">ઓવરસ્કૅન</translation> +<translation id="7976960358280528247">વિંડો આવર્તન UI સક્ષમ કરો (Alt+Tab માટે વિઝ્યુઅલ પ્રતિસાદ).</translation> <translation id="7977551819349545646">Chromebox અપડેટ થઈ રહ્યું છે...</translation> <translation id="7978412674231730200">ખાનગી કી</translation> <translation id="7979036127916589816">સમન્વય ભૂલ</translation> @@ -5111,6 +5113,7 @@ <translation id="7999087758969799248">માનક ઇનપુટ મેથડ</translation> <translation id="7999229196265990314">નીચેની ફાઇલો બનાવાઈ: એક્સટેન્શન: <ph name="EXTENSION_FILE" />કી ફાઇલ: <ph name="KEY_FILE" />તમારી કી ફાઇલને સુરક્ષિત સ્થાન પર મૂકો. તમને તેની જરૂરિયાત તમારા એક્સટેન્શનના નવા સંસ્કરણ બનાવવા માટે પડશે.</translation> <translation id="799923393800005025">જોઇ શકે છે</translation> +<translation id="8000066093800657092">નેટવર્ક નથી</translation> <translation id="8004582292198964060">બ્રાઉઝર</translation> <translation id="8007030362289124303">બૅટરી ઓછી</translation> <translation id="8008356846765065031">ઇન્ટરનેટ ડિસ્કનેક્ટ કર્યું. કૃપા કરીને તમારું ઇન્ટરનેટ કનેક્શન તપાસો.</translation> @@ -5185,6 +5188,7 @@ <translation id="8116190140324504026">વધુ માહિતી...</translation> <translation id="8116483400482790018">કસ્ટમ જોડણી કોશ</translation> <translation id="8116972784401310538">&બુકમાર્ક વ્યવસ્થાપક</translation> +<translation id="8117838550640702864">નોંધ સેટિંગ્સ</translation> <translation id="8117957376775388318">ડાયી ઇનપુટ પદ્ધતિ</translation> <translation id="8118860139461251237">તમારા ડાઉનલોડ્સનું સંચાલન કરો</translation> <translation id="8119572489781388874">સેટિંગ્સ સંશોધિત કરો</translation> @@ -5466,7 +5470,6 @@ <translation id="8472623782143987204">હાર્ડવેર-બેક્ડ</translation> <translation id="8475313423285172237">તમારા કમ્પ્યુટર પરના બીજા પ્રોગ્રામે એક એક્સ્ટેંશન ઉમેર્યું જે Chrome કાર્ય કરે છે તે રીતને બદલી શકે છે.</translation> <translation id="8475647382427415476">Google ડ્રાઇવ "<ph name="FILENAME" />" ને અત્યારે જ સમન્વયિત કરવા અસમર્થ હતી. Google ડ્રાઇવ પછી ફરીથી પ્રયાસ કરશે.</translation> -<translation id="8476195663057048998">સાફ કરો અને ફરીથી સેટ કરો</translation> <translation id="8477241577829954800">જૂનું થયેલું</translation> <translation id="8477384620836102176">&સામાન્ય</translation> <translation id="8480417584335382321">પૃષ્ઠ ઝૂમ કરો:</translation> @@ -5696,7 +5699,6 @@ <translation id="8785135611469711856">પ્લગિન પ્રતિભાવવિહીન</translation> <translation id="8787254343425541995">શેર કરેલા નેટવર્ક્સ માટે પ્રોક્સીસને મંજૂરી આપો</translation> <translation id="878763818693997570">આ નામ ખૂબ લાંબું છે</translation> -<translation id="8787865569533773240">બદલાયેલ <ph name="IDS_SHORT_PRODUCT_NAME" /> સેટિંગ્સને ફરીથી સેટ કરો</translation> <translation id="8789375980715484686">અન્ય વપરાશકર્તાઓને સંચાલિત કરો</translation> <translation id="8791534160414513928">તમારા બ્રાઉઝિંગ ટ્રાફિક સાથે એક ‘ટ્રૅક કરશો નહીં’ વિનંતી મોકલો</translation> <translation id="8795668016723474529">ક્રેડિટ કાર્ડ ઉમેરો </translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index 1086d58..ee4d5ea9 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -521,12 +521,11 @@ <translation id="1673103856845176271">सुरक्षा कारणों से फ़ाइल तक नहीं पहुंचा जा सका.</translation> <translation id="1675023460278456180">मटीरियल हाइब्रिड</translation> <translation id="167832068858235403">वॉल्यूम कम करें</translation> -<translation id="1678331212993975953">साइट के विवरण</translation> <translation id="1679068421605151609">डेवलपर टूल</translation> <translation id="1681120471812444678">प्रिंटर जोड़ने के लिए सेट करना…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> को नामांकित करना</translation> <translation id="1682548588986054654">नई &गुप्त विंडो</translation> -<translation id="168328519870909584">वर्तमान में <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> पर मौजूद हमलावर आपके डिवाइस पर ऐसे खतरनाक प्रोग्राम इंस्टॉल करने का प्रयास कर सकते हैं जो आपकी जानकारी (उदाहरण के लिए, फ़ोटो, पासवर्ड, संदेश और क्रेडिट कार्ड) को चुरा लेते हैं या उसे हटा देते हैं.</translation> +<translation id="168328519870909584"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> पर मौजूद हमलावर आपके डिवाइस पर ऐसे खतरनाक प्रोग्राम इंस्टॉल करने की कोशिश कर सकते हैं जो आपकी जानकारी (उदाहरण के लिए, फ़ोटो, पासवर्ड, संदेश और क्रेडिट कार्ड) को चुरा लेते हैं या उसे हटा देते हैं.</translation> <translation id="1685141618403317602">नामांकन रहने दें</translation> <translation id="1685944703056982650">माउस कर्सर अपवाद</translation> <translation id="1691063574428301566">अपडेट पूरा होने पर आपका कंप्यूटर फिर से प्रारंभ होगा.</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">&पू्र्ण होने पर खोलें</translation> <translation id="2372036074421194686">Chrome को आपके कंप्यूटर पर एक अवांछित प्रोग्राम (<ph name="UWS_NAME" />) इंस्टॉल किया हुआ मिला है. आप Chrome सॉफ़्टवेयर सफ़ाई टूल चलाकर उसे निकाल सकेंगे.</translation> <translation id="2375701438512326360">टचस्क्रीन सहायता को हमेशा बलपूर्वक सक्षम या अक्षम अभी नहीं, या तब सक्षम अभी नहीं जब स्टार्टअप पर किसी टचस्क्रीन का पता लगे (स्वचालित, डिफ़ॉल्ट).</translation> -<translation id="2377619091472055321">बदली गईं <ph name="IDS_SHORT_PRODUCT_NAME" /> सेटिंग रीसेट करें</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> फ़ाइलें चयनित</translation> <translation id="2378982052244864789">विस्तार निर्देशिका को चुनें.</translation> <translation id="2379281330731083556">सिस्टम डॉयलॉग का उपयोग करके प्रिंट करें… <ph name="SHORTCUT_KEY" /></translation> @@ -1476,7 +1474,7 @@ <translation id="295947108480905647">"<ph name="CHROME_EXTENSION_NAME" />" इसके साथ कनेक्ट करना चाहता है:</translation> <translation id="2959614062380389916">व्यवस्थापक द्वारा अक्षम किया गया</translation> <translation id="2960393411257968125">पासवर्ड प्रबंधक समन्वयन प्रमाणिकता के लिए ऑटोमैटिक भरना को कैसे प्रबंधित करता है.</translation> -<translation id="29611076221683977">वर्तमान में <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> पर मौजूद हमलावर आपके Mac पर ऐसे खतरनाक प्रोग्राम इंस्टॉल करने का प्रयास कर सकते हैं जो आपकी जानकारी (उदाहरण के लिए, फ़ोटो, पासवर्ड, संदेश और क्रेडिट कार्ड) को चुराते हैं या उसे हटा देते हैं.</translation> +<translation id="29611076221683977"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> पर मौजूद हमलावर आपके Mac पर ऐसे खतरनाक प्रोग्राम इंस्टॉल करने की कोशिश कर सकते हैं जो आपकी जानकारी (उदाहरण के लिए, फ़ोटो, पासवर्ड, संदेश और क्रेडिट कार्ड) को चुराते हैं या उसे हटा देते हैं.</translation> <translation id="2961695502793809356">आगे जाने के लिए क्लिक करें, इतिहास देखने के लिए दबाए रखें</translation> <translation id="296216853343927883">प्रसंग मेनू में Google ब्रांडिंग</translation> <translation id="2963151496262057773">निम्न प्लग इन प्रतिसाद नहीं दे रहा है: <ph name="PLUGIN_NAME" />क्या उसे रोकना चाहते हैं?</translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">यदि आपको कभी अपने कंप्यूटर के ऑपरेटिंग सिस्टम को पुनर्स्थापित करने की आवश्यकता हो, तो आपको एक पुनर्प्राप्ति SD कार्ड या USB मेमोरी स्टिक की आवश्यकता होगी.</translation> <translation id="305932878998873762">HTTP के लिए सरल संचय एक नया संचय है. डिस्क स्थान आवंटन के लिए यह फ़ाइल सिस्टम पर निर्भर करता है.</translation> <translation id="3062606427884046423">Chrome मीडिया नोटिफ़िकेशन के लिए Android MediaStyle नोटिफ़िकेशन का उपयोग करें.</translation> +<translation id="3063224679438508013">नोट ऐप्लिकेशन स्वत: लॉन्च करें</translation> <translation id="3063844757726132584">इस आसान लॉन्चर से अपने सभी ऐप्लिकेशन एक्सेस करें. गेम खेलें, वीडियो चैट करें, संगीत सुनें, दस्तावेज़ संपादित करें, या और अधिक ऐप्लिकेशन प्राप्त करें.</translation> <translation id="3064388234319122767">लिप्यंतरण (zdravo → здраво)</translation> <translation id="3065041951436100775">टैब किल्ड फ़ीडबैक.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">पासवर्ड के लिए Google Smart Lock</translation> <translation id="317583078218509884">पृष्ठ को पुन: लोड करने के बाद नई साइट अनुमतियां सेटिंग प्रभावी हो जाएंगी.</translation> <translation id="3177048931975664371">पासवर्ड छुपाने के लिए क्लिक करें</translation> +<translation id="3177909033752230686">पृष्ठ की भाषा:</translation> <translation id="3180365125572747493">इस प्रमाणपत्र फ़ाइल को एन्क्रिप्ट करने के लिए कृपया पासवर्ड डालें.</translation> <translation id="3183139917765991655">प्रोफ़ाइल आयातकर्ता</translation> <translation id="3184560914950696195">$1 पर नहीं सहेजी जा सकती. संपादित चित्र, डाउनलोड फ़ोल्डर में सहेजी जाएंगी.</translation> @@ -1836,7 +1836,7 @@ <translation id="3414856743105198592">निकालने योग्य मीडिया को स्वरूपित करने से संपूर्ण डेटा मिट जाएगा. क्या आप जारी रखना चाहते हैं?</translation> <translation id="3414952576877147120">आकार:</translation> <translation id="3420980393175304359">व्यक्ति स्विच करें</translation> -<translation id="342383653005737728">स्वामी Google को इस डिवाइस के लिए निदान और उपयोग का डेटा भेजना चुन सकता है. आप इस <ph name="BEGIN_LINK1" />सेटिंग<ph name="END_LINK1" /> को यहां देख सकते हैं. <ph name="BEGIN_LINK2" />अधिक जानें<ph name="END_LINK2" /></translation> +<translation id="342383653005737728">स्वामी Google को इस डिवाइस के लिए निदान और उपयोग डेटा भेजना चुन सकता है. आप इस <ph name="BEGIN_LINK1" />सेटिंग<ph name="END_LINK1" /> को यहां देख सकते हैं. <ph name="BEGIN_LINK2" />अधिक जानें<ph name="END_LINK2" /></translation> <translation id="3423858849633684918">कृपया <ph name="PRODUCT_NAME" /> को पुन: लॉन्च करें</translation> <translation id="3425233587047449821">नई कोरियाई IME</translation> <translation id="3426704822745136852">रास्टर थ्रेड की संख्या निर्दिष्ट करें.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> के द्वारा डाउनलोड किया गया</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> दिखाएं</translation> <translation id="3613422051106148727">नए टैब में &खोलें</translation> +<translation id="3616113530831147358">ऑडियो</translation> <translation id="3616741288025931835">ब्राउज़िंग डेटा &साफ़ करें...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />” को खोजें</translation> <translation id="3620292326130836921">सभी का बैक अप लिया गया!</translation> @@ -2293,7 +2294,6 @@ <translation id="3994878504415702912">&ज़ूम</translation> <translation id="3995964755286119116">Adobe Flash Player की कैमरा सेटिंग अलग हैं.</translation> <translation id="39964277676607559">सामग्री स्क्रिप्ट के लिए javascript '<ph name="RELATIVE_PATH" />' लोड नहीं कर सका.</translation> -<translation id="3996912167543967198">रीसेट हो रही हैं...</translation> <translation id="3997015411467176489">प्रयोगात्मक कैनवस सुविधाएं</translation> <translation id="4002066346123236978">शीर्षक</translation> <translation id="40027638859996362">शब्द स्थानांतरण</translation> @@ -2326,7 +2326,7 @@ <translation id="406070391919917862">पृष्ठभूमि ऐप्स </translation> <translation id="4062251648694601778">अपने <ph name="SHORT_PRODUCT_NAME" /> डिवाइस का आनंद लें. क्या आपके पास प्रश्न हैं? आप स्थिति ट्रे में "?" क्लिक करके कभी भी सहायता प्राप्त कर सकते हैं.</translation> <translation id="4065876735068446555">आप जिस नेटवर्क (<ph name="NETWORK_ID" />) का उपयोग कर रहे हैं उसके लिए आपको लॉगिन पृष्ठ पर जाने की आवश्यकता हो सकती है.</translation> -<translation id="4068506536726151626">इस पृष्ठ में आपकी स्थिति ट्रैक कर रहे निम्न साइटों के तत्व हैं:</translation> +<translation id="4068506536726151626">इस पेज पर आपके स्थान की जानकारी रखने वाली निम्न साइटों की कुछ चीजें मौजूद हैं:</translation> <translation id="4070370845051020638">कैंटोनीज़ इनपुट पद्धति</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: प्रवेश करने संबंधी त्रुटि</translation> <translation id="4072248638558688893">तमिल कीबोर्ड (फ़ोनेटिक)</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">पुश संदेश</translation> <translation id="4146026355784316281">हमेशा सिस्टम व्यूअर से खोलें</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> जांचना चाहती है कि क्या आपका Chrome OS डिवाइस ऑफ़र के लिए पात्र है या नहीं. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">प्रदर्शन</translation> <translation id="4151403195736952345">वैश्विक डिफ़ॉल्ट का उपयोग करें (पता करें)</translation> <translation id="4152177296285305182">केवल वही व्यक्ति आपका एन्क्रिप्ट किया गया डेटा पढ़ सकता है जिसके पास आपका पासफ़्रेज़ है -- पासफ़्रेज़ Google द्वारा भेजा या संग्रहीत नहीं किया जाता है. यदि आप अपना पासफ़्रेज़ भूल जाते हैं, तो आपको समन्वयन रीसेट करना होगा.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 टैब}one{# टैब}other{# टैब}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">स्क्रीनशॉट</translation> <translation id="4250680216510889253">नहीं</translation> <translation id="4253168017788158739">नोट</translation> +<translation id="4254813446494774748">अनुवाद की भाषा:</translation> <translation id="425573743389990240">बैटरी डिस्चार्ज दर वॉट में (ऋणात्मक मान का अर्थ है कि बैटरी चार्ज हो रही है)</translation> <translation id="4256316378292851214">इस रूप में वीडियो स&हेजें...</translation> <translation id="4258348331913189841">फ़ाइल सिस्टम</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">ओह, समन्वयन ने कार्य करना बंद कर दिया.</translation> <translation id="4366509400410520531">आपके द्वारा अनुमत</translation> <translation id="4367782753568896354">हम इन्हें इंस्टॉल करने में असमर्थ रहे:</translation> +<translation id="436904870295243580">नोट लेने वाले और अधिक ऐप्लिकेशन ढूंढें</translation> <translation id="4370975561335139969">आपके द्वारा डाले गए ईमेल और पासवर्ड का मिलान नहीं हो रहा</translation> <translation id="437184764829821926">उन्नत फ़ॉन्ट सेटिंग</translation> <translation id="4372884569765913867">1x1</translation> @@ -3104,7 +3107,7 @@ <translation id="5186650237607254032">अपने फ़ोन का स्क्रीन लॉक अपडेट करें ताकि जब आप आस-पास हों तो वह बंद हो जाए. आप फ़ोन को अधिक तेज़ी से अनलॉक करेंगे और अपने <ph name="DEVICE_TYPE" /> पर एक बेहतर Smart Lock अनुभव का आनंद लेंगे.</translation> <translation id="5187295959347858724">आप अब <ph name="SHORT_PRODUCT_NAME" /> में प्रवेश हो गए हैं. आपके बुकमार्क, इतिहास, और अन्य सेटिंग आपके Google खाते में समन्वयित की जा रही हैं.</translation> <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation> -<translation id="5187902302719680252">तुरंत अनलॉक पिन करें को सक्षम करने से, आप अपने डिवाइस में प्रवेश करने के बाद लॉक स्क्रीन पर अपना Chromebook अनलॉक करने के लिए पिन का उपयोग कर सकते हैं.</translation> +<translation id="5187902302719680252">पिन तुरंत अनलॉक करें को सक्षम करने से, आप अपने डिवाइस में प्रवेश करने के बाद लॉक स्क्रीन पर अपना Chromebook अनलॉक करने के लिए पिन का उपयोग कर सकते हैं.</translation> <translation id="5188893945248311098">मीडिया प्लेबैक के लिए हावभाव आवश्यकता</translation> <translation id="5189060859917252173">प्रमाणपत्र "<ph name="CERTIFICATE_NAME" />" एक प्रमाणन प्राधिकरण का प्रतिनिधित्व करता है.</translation> <translation id="5196716972587102051">2</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">डिवाइस का दूरस्थ रूप से पता लगाने, वाइप करने और उसे लॉक करने की क्षमता को अक्षम करने के लिए आप Google से इस <ph name="DEVICE_TYPE" /> का नामांकन रद्द करने वाले हैं. इसके लिए पुन: बूट करने की आवश्यकता होगी. क्या आप जारी रखना चाहते हैं?</translation> <translation id="5324780743567488672">अपने स्थान का उपयोग करके अपने आप समय क्षेत्र सेट करें</translation> <translation id="5325120507747984426">अवलोकन मोड में एक स्थिर विंडो क्रमिकता का उपयोग करता है जो अवलोकन में प्रवेश / निकलने पर और अवलोकन सत्रों के बीच विंडो की गतिविधि को न्यूनतम करने का प्रयास करता है.</translation> +<translation id="5326182685622510062">2D कैनवास की ग्राफ़िक्स रेंडरिंग पाइपलाइन के एकाधिक क्रियान्वयन हैं. इन विभिन्न क्रियान्वयनों की अलग-अलग प्रदर्शन विशेषताएं हैं. इस फ़्लैग को चालू करने से कैनवास 2D प्रसंग, इन क्रियान्वयनों के बीच इस आधार पर तेज़ी से स्विच होते हैं कि प्रदर्शन को बढ़ाने के लिए कैनवास का उपयोग किस तरह किया जाता है. उदाहरण के लिए, GPU का उपयोग करने वाले क्रियान्वयन से लेकर उसका उपयोग ना करने वाले क्रियान्वयन तक जाना.</translation> <translation id="5327248766486351172">नाम</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&हटाएं</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">इस निगरानी में रखे गए उपयोगकर्ता के लिए कोई अवतार चुनें.</translation> <translation id="5488468185303821006">गुप्त विंडो में अनुमति दें</translation> <translation id="5489390182170331803">दस्तावेज़ स्तरीय घटना श्रोता निष्क्रिय डिफ़ॉल्ट</translation> -<translation id="5489789060051091748">बोलने-हेतु-चुनें: खोज को दबाकर रखें और कुछ बोलने के लिए क्लिक करें या खींचें</translation> <translation id="549294555051714732">ऑटोमैटिक भरने वाले सुझावों के लिए सबस्ट्रिंग का मिलान करना</translation> <translation id="5493996328530898436">ऑडियो रेंडरिंग मिलाने की नई कार्यनीति</translation> <translation id="5494362494988149300">&पू्र्ण होने पर खोलें</translation> @@ -3701,9 +3704,6 @@ <translation id="5991049340509704927">आवर्धित करें</translation> <translation id="5991774521050363748">वेब नोटिफिकेशन के लिए कस्टम लेआउट सक्षम करें. उनमें परिष्कृत लेआउट सुधार होंगे जो अन्यथा संभव नहीं होते हैं.</translation> <translation id="5993332328670040093">अब आपके डेटा उपयोग का मापन नहीं किया जाएगा.</translation> -<translation id="5996258716334177896">आपकी प्रोफ़ाइल ठीक से खोली नहीं जा सकती. - -कुछ विशेषताएं अनुपलब्ध हो सकती हैं. कृपया जांचें कि प्रोफ़ाइल मौजूद है और आपको इसकी सामग्री पढ़ने और लिखने की अनुमति है.</translation> <translation id="6001799583597751002">पिन का मिलान नहीं हो रहा है:</translation> <translation id="6003177993629630467">हो सकता है कि <ph name="PRODUCT_NAME" /> स्वयं को अपडेट रखने में समर्थ न हो.</translation> <translation id="6003294706906016758">होस्ट किए गए ऐप्स के लिए वेब ऐप शैली की फ़्रेम सक्षम करता है</translation> @@ -4153,7 +4153,6 @@ <translation id="6637362044401670482">वर्चुअल कीबोर्ड ओवरस्क्रॉल सहायता सक्षम करता है.</translation> <translation id="6639554308659482635">SQLite मेमोरी</translation> <translation id="6643016212128521049">साफ़ करें</translation> -<translation id="6644756108386233011">बदली गईं <ph name="IDS_SHORT_PRODUCT_NAME" /> सेटिंग रीसेट करें?</translation> <translation id="6647228709620733774">Netscape प्रमाणन प्राधिकरण खण्डन URL</translation> <translation id="6647838571840953560">वर्तमान में <ph name="CHANNEL_NAME" /> पर</translation> <translation id="6649018507441623493">बस एक सेकंड...</translation> @@ -4261,7 +4260,6 @@ <translation id="6810613314571580006">संग्रहीत क्रेडेंशियल का उपयोग करके वेबसाइट में अपने आप प्रवेश करें. सुविधा के अक्षम होने पर, किसी वेबसाइट में प्रवेश करने से पहले आपसे हर बार पुष्टि के लिए कहा जाएगा.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> को रूट की तरह नहीं चलाया जा सकता.</translation> <translation id="6812841287760418429">बदलावों को बनाए रखें</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> को पता चला है कि संभवतः आपके ब्राउज़र की सेटिंग आपकी जानकारी के बिना बदल दी गई हैं. क्या आप उन्हें उनके मूल डिफ़ॉल्ट पर रीसेट करना चाहते हैं?</translation> <translation id="6815551780062710681">संपादित करें</translation> <translation id="6817358880000653228">इस साइट के लिए सहेजे गए पासवर्ड:</translation> <translation id="6820008762872335722">पूछने के लिए रीसेट करें</translation> @@ -4379,6 +4377,7 @@ (पिछला पासवर्ड आवश्यक है)</translation> <translation id="6981982820502123353">पहुंच क्षमता</translation> <translation id="6981992744085917617">वह विधि चुनें जिसका उपयोग आप अपने खाते में वापस प्रवेश करने के लिए करना चाहते हैं:</translation> +<translation id="698231206551913481">इस उपयोगकर्ता को निकाल दिए जाने पर, इस उपयोगकर्ता से संबद्ध सभी फ़ाइलों और स्थानीय डेटा को स्थायी रूप से हटा दिया जाएगा.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> के प्रिंटर का पता चला</translation> <translation id="6983783921975806247">पंजीकृत OID</translation> <translation id="6983991971286645866">सभी संपादन $1 पर सहेजे जाएंगे.</translation> @@ -4465,6 +4464,7 @@ <translation id="7073555242265688099">यदि आपके पास अन्य Chrome डिवाइस हैं, तो उन्हें अपने आप समन्वयित किया जाएगा, जिससे आपका फ़ोन उन्हें भी अनलॉक कर देगा.</translation> <translation id="707392107419594760">अपने कीबोर्ड को चुनें:</translation> <translation id="7075513071073410194">RSA सुरक्षित तरीका के साथ PKCS #1 MD5</translation> +<translation id="7075625805486468288">HTTPS/SSL प्रमाणपत्र और सेटिंग प्रबंधित करें</translation> <translation id="7076293881109082629">प्रवेश किया जा रहा है...</translation> <translation id="7077829361966535409">साइन-इन पृष्ठ वर्तमान प्रॉक्सी सेटिंग का उपयोग करके लोड होने में विफल रहा. कृपया <ph name="GAIA_RELOAD_LINK_START" />पुन: प्रवेश करने का प्रयास करें<ph name="GAIA_RELOAD_LINK_END" />, या अलग-अलग <ph name="PROXY_SETTINGS_LINK_START" />प्रॉक्सी सेटिंग<ph name="PROXY_SETTINGS_LINK_END" /> का उपयोग करें.</translation> <translation id="7077872827894353012">उपेक्षित प्रोटोकॉल हैंडलर</translation> @@ -4512,7 +4512,6 @@ <translation id="7141105143012495934">प्रवेश करना विफल रहा क्योंकि आपका खाता विवरण पुनः प्राप्त नहीं किया जा सका. कृपया अपने नियंत्रक से संपर्क करें या पुनः प्रयास करें.</translation> <translation id="7143207342074048698">कनेक्ट हो रहा है</translation> <translation id="7144878232160441200">पुन: प्रयास करें</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> को अक्षम कर दिया गया है. उसे पुन:-सक्षम करने के लिए, कृपया <ph name="CHROME_PLUGINS_LINK" /> पर जाएं.</translation> <translation id="715118844758971915">क्लासिक प्रिंटर</translation> <translation id="7154130902455071009">अपना आरंभ पृष्ठ इसमें बदलें: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">आरंभिक चीनी मोड सरलीकृत चीनी है</translation> @@ -4791,6 +4790,7 @@ <translation id="7540972813190816353">अपडेट की जांच करते समय कोई त्रुटि आई: <ph name="ERROR" /></translation> <translation id="7541121857749629630">चित्र अपवाद</translation> <translation id="7543104066686362383">इस <ph name="IDS_SHORT_PRODUCT_NAME" /> डिवाइस पर डीबग करने की सुविधाएं सक्षम करें</translation> +<translation id="7543393759143837504">आप जो खोज रहे हैं यदि वह आपको नहीं मिल पा रहा है तो <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome सहायता<ph name="END_LINK_CHROMIUM" /> पर जाएं.</translation> <translation id="7544853251252956727">शफ़ल करें</translation> <translation id="7545288882499673859">उन्नत दबाव प्रबंधन के लिए मेमोरी छोड़ने की रणनीति</translation> <translation id="7545415673537747415">नियंत्रित करें कि <ph name="BEGIN_LINK" />Google गतिविधि नियंत्रण<ph name="END_LINK" /> से खोज, विज्ञापन और अन्य Google सेवाओं को वैयक्तिकृत करने के लिए Google आपके ब्राउज़िंग इतिहास का उपयोग कैसे करता है.</translation> @@ -4826,7 +4826,7 @@ <translation id="7582844466922312471">मोबाइल डेटा</translation> <translation id="7583242026904249212"><ph name="DOMAIN" />, Google द्वारा, आपके डिवाइस की पहचान सत्यापित करना चाहता है, जिससे संरक्षित मीडिया के उन्नत प्लेबैक की योग्यता निर्धारित की जा सके. <ph name="LEARN_MORE" />.</translation> <translation id="7584802760054545466"><ph name="NETWORK_ID" /> से कनेक्ट हो रहा है</translation> -<translation id="7586312264284919041">क्या आप इस पृष्ठ का अनुवाद करना चाहते हैं?</translation> +<translation id="7586312264284919041">क्या आप इस पेज का अनुवाद देखना चाहते हैं?</translation> <translation id="7586498138629385861">Chrome Apps के खुले होने पर Chrome चलता रहेगा.</translation> <translation id="7587108133605326224">Baltic</translation> <translation id="7589461650300748890">अरे, सुनिए. सतर्क रहें.</translation> @@ -5028,7 +5028,6 @@ <translation id="7879478708475862060">इनपुट मोड का अनुसरण करें</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" इन ऐप्स और एक्सटेंशन को जोड़ता है:</translation> <translation id="7881969471599061635">उपशीर्षक अक्षम करें</translation> -<translation id="7884988936047469945">प्रयोगात्मक सरल-योग्यता सुविधाएं</translation> <translation id="7885253890047913815">हाल ही के गंतव्य</translation> <translation id="7887192723714330082">स्क्रीन के चालू होने तथा अनलॉक होने पर "Ok Google" को प्रतिसाद दें</translation> <translation id="7887334752153342268">डुप्लिकेट</translation> @@ -5096,6 +5095,7 @@ <translation id="7974067550340408553">Smart Lock द्वारा आपके <ph name="DEVICE_TYPE" /> को अनलॉक करने पर हर बार अपने फ़ोन पर सूचना प्राप्त करें.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" /> का उपयोग करके पुन: प्रयास करें</translation> <translation id="7974936243149753750">ओवरस्कैन</translation> +<translation id="7976960358280528247">विंडो परिवर्तन UI (Alt+Tab के लिए विज़ुअल फ़ीडबैक) सक्षम करें.</translation> <translation id="7977551819349545646">Chromebox अपडेट कर रहा है...</translation> <translation id="7978412674231730200">निजी कुंजी</translation> <translation id="7979036127916589816">समन्वयन त्रुटि</translation> @@ -5123,6 +5123,7 @@ अपनी मुख्य फ़ाइल को किसी सुरक्षित स्थान पर रखें. आपको अपने एक्सटेंशन के नए वर्शन बनाने के लिए इसकी आवश्यकता होगी.</translation> <translation id="799923393800005025">देख सकते हैं</translation> +<translation id="8000066093800657092">नेटवर्क नहीं है</translation> <translation id="8004582292198964060">ब्राउज़र</translation> <translation id="8007030362289124303">बैटरी कम</translation> <translation id="8008356846765065031">इंटरनेट डिस्कनेक्ट हो गया है. कृपया अपना इंटरनेट कनेक्शन जांचें.</translation> @@ -5197,6 +5198,7 @@ <translation id="8116190140324504026">अधिक जानकारी...</translation> <translation id="8116483400482790018">कस्टम वर्तनी शब्दकोश</translation> <translation id="8116972784401310538">&बुकमार्क प्रबंधक</translation> +<translation id="8117838550640702864">नोट की सेटिंग</translation> <translation id="8117957376775388318">डायी इनपुट पद्धति</translation> <translation id="8118860139461251237">अपने डाउनलोड प्रबंधित करें</translation> <translation id="8119572489781388874">सेटिंग संशोधित करें</translation> @@ -5290,7 +5292,7 @@ <translation id="8226222018808695353">निषिद्ध</translation> <translation id="8226742006292257240">नीचे यादृच्छिक रूप से निर्मित TPM पासवर्ड है जो कि आपके कंप्यूटर के लिए असाइन किया गया है:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">वर्तमान में <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> पर मौजूद हमलावर आपके कंप्यूटर पर ऐसे खतरनाक प्रोग्राम इंस्टॉल करने का प्रयास कर सकते हैं जो आपकी जानकारी (उदाहरण के लिए, फ़ोटो, पासवर्ड, संदेश और क्रेडिट कार्ड) चुरा लेते हैं या उसे हटा देते हैं.</translation> +<translation id="8230421197304563332"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> पर मौजूद हमलावर आपके कंप्यूटर पर ऐसे खतरनाक प्रोग्राम इंस्टॉल करने की कोशिश कर सकते हैं जो आपकी जानकारी (उदाहरण के लिए, फ़ोटो, पासवर्ड, संदेश और क्रेडिट कार्ड) चुरा लेते हैं या उसे हटा देते हैं.</translation> <translation id="8233254008506535819">ब्राउज़िंग डेटा साफ़ करें संवाद में महत्वपूर्ण साइटें श्वेतसूची में डालने का विकल्प शामिल है.</translation> <translation id="8236231079192337250">प्रिंटर ड्राइवर के लिए Chrome वेब स्टोर गैलरी ऐप</translation> <translation id="8238649969398088015">सहायता युक्ति</translation> @@ -5475,7 +5477,6 @@ <translation id="8472623782143987204">हार्डवेयर-समर्थित</translation> <translation id="8475313423285172237">आपके कंप्यूटर पर किसी अन्य प्रोग्राम ने एक्सटेंशन जोड़ा है, जो Chrome के काम करने के तरीके को बदल सकता है.</translation> <translation id="8475647382427415476">Google डिस्क अभी "<ph name="FILENAME" />" को समन्वयित करने में असमर्थ थी. Google डिस्क द्वारा बाद में पुनः प्रयास किया जाएगा.</translation> -<translation id="8476195663057048998">साफ़ करें और रीसेट करें</translation> <translation id="8477241577829954800">अधिक्रमित किया गया</translation> <translation id="8477384620836102176">&सामान्य</translation> <translation id="8480417584335382321">पृष्ठ ज़ूम:</translation> @@ -5705,7 +5706,6 @@ <translation id="8785135611469711856">प्लग इन उदासीन है</translation> <translation id="8787254343425541995">साझा किए गए नेटवर्क के लिए प्रॉक्सी की अनुमति दें</translation> <translation id="878763818693997570">यह नाम बहुत बड़ा है</translation> -<translation id="8787865569533773240">बदली गईं <ph name="IDS_SHORT_PRODUCT_NAME" /> सेटिंग रीसेट करें</translation> <translation id="8789375980715484686">अन्य उपयोगकर्ताओं को प्रबंधित करें</translation> <translation id="8791534160414513928">अपने ब्राउज़िंग ट्रैफ़िक के साथ "ट्रैक न करें" अनुरोध भेजें</translation> <translation id="8795668016723474529">कोई क्रेडिट कार्ड जोड़ें</translation> @@ -5841,7 +5841,7 @@ <translation id="8982248110486356984">उपयोगकर्ताओं को स्विच करें</translation> <translation id="8986267729801483565">डाउनलोड स्थान:</translation> <translation id="8986362086234534611">भूल जाएं</translation> -<translation id="8986494364107987395">Google को उपयोग के आंकड़े और क्रैश रिपोर्ट अपने आप भेजें</translation> +<translation id="8986494364107987395">उपयोग संबंधी आंकड़े और क्रैश रिपोर्ट अपने आप Google को भेजने की अनुमति दें</translation> <translation id="8987736167266086032">वहीं से प्रारंभ करें जहां आपने छोड़ा था</translation> <translation id="8987927404178983737">माह</translation> <translation id="899403249577094719">Netscape प्रमाणपत्र आधार URL</translation> @@ -5884,7 +5884,7 @@ <translation id="9033580282188396791">ऑउट-ऑफ़-प्रोसेस V8 प्रॉक्सी रिज़ॉल्वर को सक्षम करें. ब्राउज़र की प्रक्रिया में V8 प्रॉक्सी सर्वर चलाने के बजाय उसे किसी उपयोगिता प्रक्रिया में चलाता है.</translation> <translation id="9033780830059217187">प्रॉक्सी को एक एक्सटेंशन द्वारा लागू किया जाता है.</translation> <translation id="9033857511263905942">&चिपकाएं</translation> -<translation id="9035022520814077154">सुरक्षा त्रुटि</translation> +<translation id="9035022520814077154">सुरक्षा गड़बड़ी</translation> <translation id="9037008143807155145">https://www.google.com/calendar/render?cid=%s</translation> <translation id="9038649477754266430">अधिक तेज़ी से पृष्ठ लोड करने के लिए किसी पूर्वानुमान सेवा का उपयोग करें</translation> <translation id="9039663905644212491">PEAP</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index 113abdd..f76a90e 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Nije bilo moguće pristupiti datoteci zbog sigurnosnih razloga.</translation> <translation id="1675023460278456180">Hibrid materijala</translation> <translation id="167832068858235403">stišavanje</translation> -<translation id="1678331212993975953">Pojedinosti o web-lokaciji</translation> <translation id="1679068421605151609">Alati za razvojne programere</translation> <translation id="1681120471812444678">Postavite kako biste dodali pisače...</translation> <translation id="1682324559341535203">Registracija uređaja <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Otvori nakon &dovršetka</translation> <translation id="2372036074421194686">Chrome je pronašao neželjeni program na računalu (<ph name="UWS_NAME" />). Možda ćete ga moći ukloniti Chromeovim alatom za čišćenje.</translation> <translation id="2375701438512326360">Prisilno trajno omogućite ili onemogućite podršku za dodirni zaslon ili je omogućite kada je pri pokretanju otkriven dodirni zaslon (automatski, zadano).</translation> -<translation id="2377619091472055321">Vraćanje izmijenjenih postavki usluge <ph name="IDS_SHORT_PRODUCT_NAME" /> na zadano</translation> <translation id="2378075407703503998">Odabrane datoteke: <ph name="SELCTED_FILE_COUNT" /></translation> <translation id="2378982052244864789">Odaberi direktorij proširenja.</translation> <translation id="2379281330731083556">Ispis pomoću dijaloškog okvira sustava... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Ako ćete ikad trebati oporaviti operativni sustav računala, bit će vam potrebna SD kartica ili USB memorijski privjesak za oporavak sustava.</translation> <translation id="305932878998873762">Jednostavna predmemorija za HTTP nova je predmemorija. Prostor na disku dodjeljuje se putem datotečnog sustava.</translation> <translation id="3062606427884046423">Upotrebljavaju se obavijesti Android MediaStyle za Chromeove obavijesti o medijskim sadržajima.</translation> +<translation id="3063224679438508013">Automatsko pokretanje aplikacije za bilješke</translation> <translation id="3063844757726132584">Pristupajte svim svojim aplikacijama iz ovog praktičnog pokretača. Igrajte igre, sudjelujte u videochatovima, slušajte glazbu, uređujte dokumente ili preuzmite još aplikacija.</translation> <translation id="3064388234319122767">transliteracija (zdravo → здраво)</translation> <translation id="3065041951436100775">Povratne informacije o zatvorenoj kartici.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock za zaporke</translation> <translation id="317583078218509884">Nove postavke dozvola za web-lokacije postat će aktivne nakon ponovnog učitavanja stranice.</translation> <translation id="3177048931975664371">Kliknite za skrivanje zaporke</translation> +<translation id="3177909033752230686">Jezik stranice:</translation> <translation id="3180365125572747493">Unesite zaporku da biste kriptirali ovu datoteku certifikata.</translation> <translation id="3183139917765991655">Uvoz profila</translation> <translation id="3184560914950696195">Spremanje u direktorij $1 nije moguće. Uređene slike bit će spremljene u mapu Preuzimanja.</translation> @@ -1997,6 +1997,7 @@ <translation id="3612673635130633812">Datoteku je preuzelo proširenje <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Prikaži <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Otvori u novoj kartici</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Obriši podatke o pregledavanju...</translation> <translation id="3618849550573277856">Potraži "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Sve je sigurnosno kopirano!</translation> @@ -2293,7 +2294,6 @@ <translation id="3994878504415702912">&Zum</translation> <translation id="3995964755286119116">Adobe Flash Player upotrebljava različite postavke za fotoaparat.</translation> <translation id="39964277676607559">Nije uspjelo učitavanje javascripta "<ph name="RELATIVE_PATH" />" za sadržajnu skriptu.</translation> -<translation id="3996912167543967198">Vraćanje na zadano...</translation> <translation id="3997015411467176489">Eksperimentalne značajke platna</translation> <translation id="4002066346123236978">Naslov</translation> <translation id="40027638859996362">Pomicanje riječi</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">Push poruke</translation> <translation id="4146026355784316281">Uvijek otvori u pregledniku sustava</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> želi provjeriti ispunjava li vaš uređaj s OS-om Chrome uvjete ponude. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Zaslon</translation> <translation id="4151403195736952345">Upotrijebi globalnu zadanu postavku (Otkrij)</translation> <translation id="4152177296285305182">Vaše šifrirane podatke može pročitati samo osoba s vašom zaporkom. Zaporka se ne šalje Googleu niti se pohranjuje na Googleu. Ako zaboravite svoju zaporku, morat ćete ponovo postaviti sinkronizaciju.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 kartica}one{# kartica}few{# kartice}other{# kartica}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">Snimka zaslona</translation> <translation id="4250680216510889253">Ne</translation> <translation id="4253168017788158739">Napomena</translation> +<translation id="4254813446494774748">Jezik prijevoda:</translation> <translation id="425573743389990240">Stopa pražnjenja baterije u vatima (negativna vrijednost znači da se baterija puni)</translation> <translation id="4256316378292851214">Sp&remi videozapis kao...</translation> <translation id="4258348331913189841">Datotečni sustavi</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">Ups, sinkronizacija je prekinuta.</translation> <translation id="4366509400410520531">Vi dopuštate</translation> <translation id="4367782753568896354">Nismo mogli instalirati:</translation> +<translation id="436904870295243580">Pronađite više aplikacija za bilješke</translation> <translation id="4370975561335139969">Unijeli ste e-adresu i zaporku koje se ne podudaraju</translation> <translation id="437184764829821926">Napredne postavke fonta</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">Poništit ćete registraciju ovog uređaja <ph name="DEVICE_TYPE" /> na Googleu kako biste onemogućili njegovo daljinsko lociranje, brisanje i zaključavanje. Uređaj će se morati ponovo pokrenuti. Želite li nastaviti?</translation> <translation id="5324780743567488672">Automatski postavi vremensku zonu pomoću vlastite lokacije</translation> <translation id="5325120507747984426">Upotrebljava se stabilan redoslijed prozora u načinu pregleda kojim se pokušava smanjiti pomicanje prozora prilikom otvaranja/zatvaranja načina pregleda i između sesija pregleda.</translation> +<translation id="5326182685622510062">Postoji više implementacija kanala za grafičko generiranje na 2D platnu. Te različite implementacije imaju različite karakteristike izvedbe. Uključivanjem ove oznake omogućujete da 2D konteksti platna u hodu izmjenjuju te implementacije na temelju načina na koji se platno upotrebljava radi poboljšanja izvedbe. Na primjer, iz implementacije koja upotrebljava GPU mogu prijeći na implementaciju koja ne upotrebljava GPU.</translation> <translation id="5327248766486351172">Naziv</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Obriši</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">Odaberite avatar za tog zaštićenog korisnika.</translation> <translation id="5488468185303821006">Dopusti u anonimnom načinu</translation> <translation id="5489390182170331803">Zadane postavke za pasivne slušatelje događaja na razini dokumenta</translation> -<translation id="5489789060051091748">Odaberite da biste govorili: pritisnite Pretraži i kliknite ili povucite da biste izgovorili naredbu</translation> <translation id="549294555051714732">Uparivanje podnizova za prijedloge automatskog popunjavanja</translation> <translation id="5493996328530898436">Nova strategija renderiranja i miksanja audiozapisa</translation> <translation id="5494362494988149300">Otvori nakon &dovršetka</translation> @@ -3701,7 +3704,6 @@ <translation id="5991049340509704927">Uvećanje</translation> <translation id="5991774521050363748">Omogućuje prilagođeni izgled za web-obavijesti. Njihov će izgled imati fina poboljšanja koja inače nisu moguća.</translation> <translation id="5993332328670040093">Vaša upotreba podataka više se neće mjeriti.</translation> -<translation id="5996258716334177896">Nije bilo moguće ispravno otvoriti vaš profil. Neke značajke možda neće biti dostupne. Provjerite postoji li profil te imate li dozvolu za čitanje i pisanje sadržaja u njemu.</translation> <translation id="6001799583597751002">PIN-ovi se ne podudaraju:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> možda se neće moći sam ažurirati.</translation> <translation id="6003294706906016758">Omogućivanje okvira u stilu web-aplikacije za hostirane aplikacije</translation> @@ -4151,7 +4153,6 @@ <translation id="6637362044401670482">Omogućuje podršku za pomicanje preko ruba za virtualnu tipkovnicu.</translation> <translation id="6639554308659482635">SQLite memorija</translation> <translation id="6643016212128521049">Izbriši</translation> -<translation id="6644756108386233011">Želite li vratiti izmijenjene postavke usluge <ph name="IDS_SHORT_PRODUCT_NAME" /> na zadano?</translation> <translation id="6647228709620733774">URL za opoziv tijela za izdavanje Netscape certifikata</translation> <translation id="6647838571840953560">Trenutačni kanal: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Samo tren...</translation> @@ -4259,7 +4260,6 @@ <translation id="6810613314571580006">Automatski se prijavite na web-lokacije pomoću spremljenih vjerodajnica. Kada je ta značajka onemogućena, tražit će se potvrda prije svakog prijavljivanja na web-lokaciju.</translation> <translation id="6812349420832218321">Proizvod <ph name="PRODUCT_NAME" /> ne može se izvoditi kao korijenski direktorij.</translation> <translation id="6812841287760418429">Zadrži promjene</translation> -<translation id="6815353853907306610">Usluga <ph name="IDS_SHORT_PRODUCT_NAME" /> otkrila je da su se postavke vašeg preglednika možda promijenile bez vašeg znanja. Želite li ih vratiti na izvorne zadane postavke?</translation> <translation id="6815551780062710681">uredi</translation> <translation id="6817358880000653228">Spremljene zaporke za tu web-lokaciju:</translation> <translation id="6820008762872335722">Vrati na pitanje</translation> @@ -4375,6 +4375,7 @@ <translation id="6980956047710795611">Preseli sve podatke OS-a Chrome na novu zaporku (potrebna je prethodna zaporka)</translation> <translation id="6981982820502123353">Pristupačnost</translation> <translation id="6981992744085917617">Odaberite način na koji se želite ponovo prijaviti na račun:</translation> +<translation id="698231206551913481">Sve datoteke i lokalni podaci povezani s ovim korisnikom trajno će se izbrisati nakon uklanjanja korisnika.</translation> <translation id="6982896539684144327">Otkriven je pisač dobavljača <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">Registrirani OID</translation> <translation id="6983991971286645866">Sva uređivanja spremit će se u $1.</translation> @@ -4459,6 +4460,7 @@ <translation id="7073555242265688099">Ako imate još uređaja Chrome, oni će se sinkronizirati automatski, pa će vaš telefon otključavati i njih.</translation> <translation id="707392107419594760">Odaberite svoju tipkovnicu:</translation> <translation id="7075513071073410194">PKCS br. 1 MD5 s RSA enkripcijom</translation> +<translation id="7075625805486468288">Upravljanje HTTPS/SSL certifikatima i postavkama</translation> <translation id="7076293881109082629">Prijava</translation> <translation id="7077829361966535409">Nije uspjelo učitavanje stranice za prijavu pomoću trenutačnih postavki proxy poslužitelja. <ph name="GAIA_RELOAD_LINK_START" />Pokušajte se ponovo prijaviti<ph name="GAIA_RELOAD_LINK_END" /> ili upotrijebite druge <ph name="PROXY_SETTINGS_LINK_START" />postavke proxy poslužitelja<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Zanemareni rukovatelje protokolom</translation> @@ -4506,7 +4508,6 @@ <translation id="7141105143012495934">Prijava nije uspjela jer nisu dohvaćeni podaci o vašem računu. Obratite se administratoru ili pokušajte ponovo.</translation> <translation id="7143207342074048698">Povezivanje</translation> <translation id="7144878232160441200">Pokušaj ponovo</translation> -<translation id="7148311641502571842">Onemogućen je dodatak <ph name="PLUGIN_NAME" />. Da biste ga ponovo omogućili, idite na stranicu <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Klasični pisači</translation> <translation id="7154130902455071009">promijeniti vašu početnu stranicu u: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Početni kineski način je pojednostavljeni kineski</translation> @@ -4784,6 +4785,7 @@ <translation id="7540972813190816353">Došlo je do pogreške prilikom traženja ažuriranja: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Iznimke za slike</translation> <translation id="7543104066686362383">Omogući značajke za otklanjanje pogrešaka na ovom uređaju <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Ako ne možete pronaći ono što tražite, otvorite <ph name="BEGIN_LINK_CHROMIUM" />pomoć za Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Reproduciraj nasumično</translation> <translation id="7545288882499673859">Strategija odbacivanja memorije za napredno rukovanje pod pritiskom</translation> <translation id="7545415673537747415">Upravljajte načinom na koji Google upotrebljava vašu povijest pregledavanja za prilagodbu Pretraživanja, oglasa i drugih Googleovih usluga putem <ph name="BEGIN_LINK" />Kontrola aktivnosti na Googleu<ph name="END_LINK" />.</translation> @@ -5021,7 +5023,6 @@ <translation id="7879478708475862060">Praćenje načina unosa</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" dodaje sljedeće aplikacije i proširenja:</translation> <translation id="7881969471599061635">Onemogući titlove</translation> -<translation id="7884988936047469945">Eksperimentalne značajke pristupačnosti</translation> <translation id="7885253890047913815">Nedavna odredišta</translation> <translation id="7887192723714330082">Odgovoriti na "OK Google" kada je zaslon uključen i otključan</translation> <translation id="7887334752153342268">Udvostruči</translation> @@ -5089,6 +5090,7 @@ <translation id="7974067550340408553">Primite obavijest na telefonu za svako otključavanje uređaja <ph name="DEVICE_TYPE" /> pomoću Smart Locka.</translation> <translation id="7974566588408714340">Pokušaj ponovo pomoću proširenja <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Rubno područje zaslona</translation> +<translation id="7976960358280528247">Omogući korisničko sučelje za ciklus prozora (vizualne povratne informacije za Alt + Tab).</translation> <translation id="7977551819349545646">Ažuriranje Chromeboxa...</translation> <translation id="7978412674231730200">Osobni ključ</translation> <translation id="7979036127916589816">Sinkronizacijska pogreška</translation> @@ -5116,6 +5118,7 @@ Ključnu datoteku čuvajte na sigurnom mjestu. Trebat će vam za stvaranje novih verzija proširenja.</translation> <translation id="799923393800005025">Može pregledavati</translation> +<translation id="8000066093800657092">Nema mreže</translation> <translation id="8004582292198964060">Preglednik</translation> <translation id="8007030362289124303">Baterija skoro prazna</translation> <translation id="8008356846765065031">Prekinuta je veza s internetom. Provjerite internetsku vezu.</translation> @@ -5190,6 +5193,7 @@ <translation id="8116190140324504026">Više informacija...</translation> <translation id="8116483400482790018">Prilagođeni rječnik za provjeru pravopisa</translation> <translation id="8116972784401310538">&Upravitelj oznaka</translation> +<translation id="8117838550640702864">Postavke bilješki</translation> <translation id="8117957376775388318">način unosa dayi</translation> <translation id="8118860139461251237">upravljati vašim preuzimanjima</translation> <translation id="8119572489781388874">Izmjena postavki</translation> @@ -5468,7 +5472,6 @@ <translation id="8472623782143987204">s hardverskom podlogom</translation> <translation id="8475313423285172237">Drugi program na vašem računalu dodao je proširenje koje može promijeniti način na koji radi Chrome.</translation> <translation id="8475647382427415476">Google disk trenutačno nije mogao sinkronizirati datoteku "<ph name="FILENAME" />" i pokušat će ponovo kasnije.</translation> -<translation id="8476195663057048998">Izbriši i poništi</translation> <translation id="8477241577829954800">Zamijenjeno</translation> <translation id="8477384620836102176">&Općenito</translation> <translation id="8480417584335382321">Zumiranje stranice:</translation> @@ -5698,7 +5701,6 @@ <translation id="8785135611469711856">Dodatak ne reagira</translation> <translation id="8787254343425541995">Dopusti proxyje za dijeljene mreže</translation> <translation id="878763818693997570">Naziv je predugačak</translation> -<translation id="8787865569533773240">Vrati izmijenjene postavke usluge <ph name="IDS_SHORT_PRODUCT_NAME" /> na zadano</translation> <translation id="8789375980715484686">Upravljanje drugim korisnicima</translation> <translation id="8791534160414513928">Pošalji zahtjev "Nemoj pratiti" uz promet pregledavanja</translation> <translation id="8795668016723474529">Dodaj kreditnu karticu</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 8180a05..55d0154 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">A fájl biztonsági okokból nem érhető el.</translation> <translation id="1675023460278456180">Anyagszerű hibrid</translation> <translation id="167832068858235403">halkítás</translation> -<translation id="1678331212993975953">Webhely adatai</translation> <translation id="1679068421605151609">Fejlesztői eszközök</translation> <translation id="1681120471812444678">Beállítás nyomtatók hozzáadásához…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> regisztrálása</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Megnyitás, amikor &kész</translation> <translation id="2372036074421194686">A Chrome nem kívánt programot (<ph name="UWS_NAME" />) talált a számítógépen. A Chrome Szoftvereltávolító eszközt futtatva esetleg el tudja távolítani.</translation> <translation id="2375701438512326360">Érintőképernyő-támogatás állandó engedélyezése vagy tiltása, illetve engedélyezése, amikor indításnál a rendszer érintőképernyőt észlel (automatikus, ez az alapértelmezett).</translation> -<translation id="2377619091472055321">A(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> módosításainak visszaállítása</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> fájl kiválasztva</translation> <translation id="2378982052244864789">A bővítmény könyvtárának kiválasztása.</translation> <translation id="2379281330731083556">Nyomtatás a rendszer párbeszédablakán keresztül... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">A számítógép operációs rendszerének helyreállításához SD-kártya vagy USB-memóriakártya szükséges.</translation> <translation id="305932878998873762">Az Egyszerű gyorsítótár HTTP-hez egy új gyorsítótár. Alapja a lemezterület lefoglalásáért felelős fájlrendszer.</translation> <translation id="3062606427884046423">Android MediaStyle-értesítések használata a Chrome-médiaértesítéseknél.</translation> +<translation id="3063224679438508013">A jegyzetkészítő alkalmazás automatikus indítása</translation> <translation id="3063844757726132584">A praktikus indítóból valamennyi alkalmazásához hozzáférhet. Játszhat, videócsevegést folytathat, zenét hallgathat, dokumentumot szerkeszthet, illetve további alkalmazásokat tölthet le.</translation> <translation id="3064388234319122767">Átírás (zdravo → здраво)</translation> <translation id="3065041951436100775">Visszajelzés megszakított lapról.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock a jelszavakhoz</translation> <translation id="317583078218509884">Az új webhelyengedélyek az oldal ismételt betöltése után lépnek életbe.</translation> <translation id="3177048931975664371">Kattintson ide a jelszó elrejtéséhez</translation> +<translation id="3177909033752230686">Az oldal nyelve</translation> <translation id="3180365125572747493">Adjon meg egy jelszót a tanúsítványfájl titkosításához.</translation> <translation id="3183139917765991655">Profilimportáló</translation> <translation id="3184560914950696195">Nem lehet menteni a következő helyre: $1. A módosított képek a Letöltések mappába lesznek mentve.</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">Letöltötte: <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> megjelenítése</translation> <translation id="3613422051106148727">&Megnyitás új lapon</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Böngészés adatainak törlése...</translation> <translation id="3618849550573277856">A(z) „<ph name="LOOKUP_STRING" />” keresése</translation> <translation id="3620292326130836921">Mindenről készült biztonsági másolat!</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">&Szöveg mérete</translation> <translation id="3995964755286119116">Az Adobe Flash Player kamerával kapcsolatos beállításai eltérőek.</translation> <translation id="39964277676607559">A(z) '<ph name="RELATIVE_PATH" />' javascript nem tölthető be a tartalomszkripthez.</translation> -<translation id="3996912167543967198">Visszaállítás...</translation> <translation id="3997015411467176489">Kísérleti vászonfunkciók</translation> <translation id="4002066346123236978">Cím</translation> <translation id="40027638859996362">Szómozgatás</translation> @@ -2327,7 +2327,7 @@ <translation id="406070391919917862">Háttéralkalmazások</translation> <translation id="4062251648694601778">Élvezze <ph name="SHORT_PRODUCT_NAME" /> eszközét. Kérdése van? Bármikor segítséget kérhet, ha rákattint a „?” ikonra az állapottálcán.</translation> <translation id="4065876735068446555">Előfordulhat, hogy az Ön által használt hálózat (<ph name="NETWORK_ID" />) előírja a bejelentkezési oldal felkeresését.</translation> -<translation id="4068506536726151626">Ezen az oldalon olyan elemek vannak webhelyekről, amelyek figyelik az tartózkodási helyét:</translation> +<translation id="4068506536726151626">Ezen az oldalon olyan elemek vannak webhelyekről, amelyek figyelik a tartózkodási helyét:</translation> <translation id="4070370845051020638">Kantoni beviteli mód</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: bejelentkezési hiba</translation> <translation id="4072248638558688893">Tamil billentyűzet (fonetikus)</translation> @@ -2391,6 +2391,7 @@ <translation id="4140559601186535628">Push üzenetek</translation> <translation id="4146026355784316281">Megnyitás mindig a rendszer megtekintőjével</translation> <translation id="4146175323503586871">A(z)<ph name="SERVICE_NAME" /> ellenőrizni kívánja, hogy az Ön Chrome OS-t futtató eszköze jogosult-e egy ajánlatra. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Megjelenítés</translation> <translation id="4151403195736952345">Globális alapértelmezés használata (Észlelés)</translation> <translation id="4152177296285305182">Titkosított adatait csak olyanok tudják elolvasni, akik rendelkeznek összetett jelszavával. Az összetett jelszót a Google nem kapja meg és nem tárolja. Ha elfelejti összetett jelszavát, akkor alaphelyzetbe kell állítani a szinkronizálást.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 lap}other{# lap}}</translation> @@ -2455,6 +2456,7 @@ <translation id="4250229828105606438">Képernyőkép</translation> <translation id="4250680216510889253">Nem</translation> <translation id="4253168017788158739">Jegyzet</translation> +<translation id="4254813446494774748">A fordítás nyelve</translation> <translation id="425573743389990240">Akkumulátor kisütési teljesítménye wattban (a negatív érték azt jelenti, hogy az akkumulátor töltődik)</translation> <translation id="4256316378292851214">&Videó mentése másként...</translation> <translation id="4258348331913189841">Fájlrendszerek</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">Hoppá, a szinkronizálás leállt.</translation> <translation id="4366509400410520531">Ön által engedélyezett</translation> <translation id="4367782753568896354">Nem sikerült telepíteni:</translation> +<translation id="436904870295243580">További jegyzetkészítő alkalmazások keresése</translation> <translation id="4370975561335139969">A megadott e-mail-cím és jelszó nem egyezik</translation> <translation id="437184764829821926">Speciális betűtípus-beállítások</translation> <translation id="4372884569765913867">1×1</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">A <ph name="DEVICE_TYPE" /> Google-regisztrációjának visszavonására készül, amivel letiltja az eszköz távoli helymeghatározásának, törlésének és zárolásának lehetőségét. A művelet végrehajtásához újra kell indítania az eszközt. Folytatja?</translation> <translation id="5324780743567488672">Időzóna automatikus beállítása a tartózkodási hely alapján</translation> <translation id="5325120507747984426">Stabil ablaksorrendet használ áttekintés módban. Ezzel megpróbálja minimálisra csökkenteni az ablakok áthelyezésének esélyét az áttekintés módba történő belépés, illetve abból kilépés során, valamint az áttekintés módú munkamenetek között.</translation> +<translation id="5326182685622510062">A 2D vászon képmegjelenítő adatcsatornájának többféle megvalósítása is van. Ezek a különböző megvalósítások különböző teljesítménybeli jellemzőkkel rendelkeznek. A jelölő bekapcsolásával a 2D vászon kontextusok menet közben válthatnak a megvalósítások között a vászon felhasználási módja alapján, így nőhet a teljesítmény. Ilyen például a GPU-t használó megvalósításról áttérni egy olyanra, amely nem használja azt.</translation> <translation id="5327248766486351172">Név</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Törlés</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">Válasszon egy avatart a felügyelt felhasználó számára.</translation> <translation id="5488468185303821006">Engedélyezés inkognitó módban</translation> <translation id="5489390182170331803">A dokumentumszintű eseményfigyelők passzívként történő kezelésének alapértelmezése</translation> -<translation id="5489789060051091748">Kiválasztás hangos felolvasáshoz: Tartsa lenyomva a Keresés lehetőséget, és kattintson vagy húzza az ujját a képernyő teljes tartalmának hangos felolvasásához</translation> <translation id="549294555051714732">Karakterláncrész egyeztetése az automatikus kitöltési javaslatokkal</translation> <translation id="5493996328530898436">Új hangérzékelő keverési stratégia</translation> <translation id="5494362494988149300">Megnyitás, amikor &kész</translation> @@ -3702,7 +3705,6 @@ <translation id="5991049340509704927">Nagyítás</translation> <translation id="5991774521050363748">Egyéni elrendezések engedélyezése a webes értesítéseknél. Olyan kifinomult elrendezési fejlesztéseket is tartalmaznak majd, amelyek különben nem állnának rendelkezésre.</translation> <translation id="5993332328670040093">Az adathasználatot a továbbiakban nem méri a böngésző.</translation> -<translation id="5996258716334177896">Profilját nem sikerült rendesen megnyitni. Előfordulhat, hogy néhány funkciót nem tud használni. Kérjük, ellenőrizze, hogy a profil létezik-e, és hogy Ön rendelkezik-e a profil tartalmának olvasásához és írásához szükséges engedéllyel.</translation> <translation id="6001799583597751002">A PIN-kódok nem egyeznek:</translation> <translation id="6003177993629630467">A <ph name="PRODUCT_NAME" /> nem tudja rendszeresen frissíteni önmagát.</translation> <translation id="6003294706906016758">Engedélyezi a webalkalmazás-stílusú keretet a tárolt alkalmazásoknál</translation> @@ -4152,7 +4154,6 @@ <translation id="6637362044401670482">Engedélyezi a virtuális billentyűzet túlgörgetésének támogatását.</translation> <translation id="6639554308659482635">SQLite memória</translation> <translation id="6643016212128521049">Törlés</translation> -<translation id="6644756108386233011">Visszaállítja a(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> módosításait?</translation> <translation id="6647228709620733774">Netscape tanúsítványkibocsátó -- visszavonási URL</translation> <translation id="6647838571840953560">Jelenleg a(z) <ph name="CHANNEL_NAME" /> csatornán</translation> <translation id="6649018507441623493">Egy pillanat…</translation> @@ -4260,7 +4261,6 @@ <translation id="6810613314571580006">Automatikus bejelentkezés webhelyekre a tárolt hitelesítő adatokkal. Ha a funkció ki van kapcsolva, akkor a rendszer minden alkalommal megerősítést kér Öntől, mielőtt bejelentkezne egy webhelyre.</translation> <translation id="6812349420832218321">A <ph name="PRODUCT_NAME" /> nem futtatható rootként.</translation> <translation id="6812841287760418429">Módosítások megtartása</translation> -<translation id="6815353853907306610">A(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> azt érzékelte, hogy a böngésző beállításai esetleg az Ön tudta nélkül módosulhattak. Szeretné visszaállítani őket az alapértelmezett értékekre?</translation> <translation id="6815551780062710681">szerkesztés</translation> <translation id="6817358880000653228">A webhelyhez mentett jelszavak:</translation> <translation id="6820008762872335722">Visszaállítás kérése</translation> @@ -4377,6 +4377,7 @@ <translation id="6980956047710795611">A Chrome OS összes adatának migrálása az új jelszóhoz (az előző jelszó szükséges)</translation> <translation id="6981982820502123353">Kisegítő lehetőségek</translation> <translation id="6981992744085917617">Válassza ki azt a módszert, amellyel újra be szeretne jelentkezni fiókjába.</translation> +<translation id="698231206551913481">A felhasználó eltávolításakor az összes hozzá tartozó fájl és helyi adat is véglegesen törlődik.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> nyomtató észlelve</translation> <translation id="6983783921975806247">Regisztrált OID</translation> <translation id="6983991971286645866">A módosításokat a rendszer a következő fájlba menti: $1.</translation> @@ -4461,6 +4462,7 @@ <translation id="7073555242265688099">Ha vannak további Chrome-eszközei, akkor azok szinkronizálása automatikusan megtörténik, így telefonja azokat is fel fogja oldani.</translation> <translation id="707392107419594760">Válassza ki billentyűzetét:</translation> <translation id="7075513071073410194">PKCS #1 MD5 RSA titkosítással</translation> +<translation id="7075625805486468288">HTTPS/SSL-tanúsítványok és -beállítások kezelése</translation> <translation id="7076293881109082629">Bejelentkezés</translation> <translation id="7077829361966535409">A bejelentkezési oldalt a jelenlegi proxybeállítások mellett nem lehetett betölteni. Kérjük, <ph name="GAIA_RELOAD_LINK_START" />próbáljon újra bejelentkezni<ph name="GAIA_RELOAD_LINK_END" />, vagy használjon más <ph name="PROXY_SETTINGS_LINK_START" />proxybeállításokat<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Figyelmen kívül hagyott protokollkezelők</translation> @@ -4508,7 +4510,6 @@ <translation id="7141105143012495934">A bejelentkezés nem sikerült, mert a fiókadatokat nem sikerült lekérni. Kérjük, forduljon rendszergazdájához, vagy próbálja újra.</translation> <translation id="7143207342074048698">Csatlakozás</translation> <translation id="7144878232160441200">Újra</translation> -<translation id="7148311641502571842">A(z) <ph name="PLUGIN_NAME" /> plug-in le van tiltva. Újbóli engedélyezéséhez keresse fel a következő címet: <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Hagyományos nyomtatók</translation> <translation id="7154130902455071009">Kezdőoldal módosítása a következőre: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Az alapértelmezett kínai beviteli mód az egyszerűsített kínai</translation> @@ -4787,6 +4788,7 @@ <translation id="7540972813190816353">Hiba történt a frissítések keresése közben: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Képkivételek</translation> <translation id="7543104066686362383">Hibakeresési szolgáltatások bekapcsolása ennél a(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> eszköznél</translation> +<translation id="7543393759143837504">Ha nem találja, amit keres, próbálkozzon a <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome súgójában<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Keverés</translation> <translation id="7545288882499673859">Memóriafelszabadítási stratégia fejlett terheléskezeléshez</translation> <translation id="7545415673537747415">A <ph name="BEGIN_LINK" />Google Tevékenységvezérlők<ph name="END_LINK" /> funkcióval szabályozhatja, hogy miként használhatja fel a Google az Ön böngészési előzményeit a Keresés, a hirdetések és más Google-szolgáltatások személyre szabására.</translation> @@ -5024,7 +5026,6 @@ <translation id="7879478708475862060">Beviteli mód követése</translation> <translation id="7880836220014399562">A(z) „<ph name="BUNDLE_NAME" />” a következő alkalmazásokat és bővítményeket adja hozzá:</translation> <translation id="7881969471599061635">Feliratok letiltása</translation> -<translation id="7884988936047469945">Kísérleti kisegítő funkciók</translation> <translation id="7885253890047913815">Legutóbbi célhelyek</translation> <translation id="7887192723714330082">Válasz az „Ok Google” kimondására, amikor a képernyő be van kapcsolva, és nincs zárolva</translation> <translation id="7887334752153342268">Másodpéldány</translation> @@ -5092,6 +5093,7 @@ <translation id="7974067550340408553">Kérjen értesítést minden alkalommal a telefonjára, amikor a Smart Lock feloldja <ph name="DEVICE_TYPE" /> eszköze zárolását.</translation> <translation id="7974566588408714340">A(z) <ph name="EXTENSIONNAME" /> használatának újrapróbálása</translation> <translation id="7974936243149753750">Túlpásztázás</translation> +<translation id="7976960358280528247">Ablakváltás kezelőfelületi elem engedélyezése (vizuális visszajelzés az Alt-Tab billentyűkombinációhoz).</translation> <translation id="7977551819349545646">A Chromebox frissítése…</translation> <translation id="7978412674231730200">Privát kulcs</translation> <translation id="7979036127916589816">Szinkronizálási hiba</translation> @@ -5119,6 +5121,7 @@ A kulcsfájlt tartsa biztonságos helyen. Szüksége lesz rá ahhoz, hogy új verziókat készítsen bővítményéből.</translation> <translation id="799923393800005025">Megtekinthető</translation> +<translation id="8000066093800657092">Nincs hálózat</translation> <translation id="8004582292198964060">Böngésző</translation> <translation id="8007030362289124303">Alacsony töltöttségi szint</translation> <translation id="8008356846765065031">Az internetkapcsolat megszűnt. Kérjük, ellenőrizze az internetkapcsolatot.</translation> @@ -5193,6 +5196,7 @@ <translation id="8116190140324504026">További információ...</translation> <translation id="8116483400482790018">Egyéni helyesírási szótár</translation> <translation id="8116972784401310538">&Könyvjelzőkezelő</translation> +<translation id="8117838550640702864">Jegyzetek beállításai</translation> <translation id="8117957376775388318">Dayi beviteli mód</translation> <translation id="8118860139461251237">A letöltések kezelése</translation> <translation id="8119572489781388874">Beállítások módosítása</translation> @@ -5471,7 +5475,6 @@ <translation id="8472623782143987204">hardvertámogatott</translation> <translation id="8475313423285172237">A számítógépen lévő egyik program olyan bővítményt adott hozzá, amely módosíthatja a Chrome működését.</translation> <translation id="8475647382427415476">A Google Drive most nem tudta szinkronizálni a következőt: „<ph name="FILENAME" />”, de később ismét megpróbálja.</translation> -<translation id="8476195663057048998">Törlés és visszaállítás</translation> <translation id="8477241577829954800">Hatálytalanítva</translation> <translation id="8477384620836102176">&Általános</translation> <translation id="8480417584335382321">Oldal nagyítása/kicsinyítése:</translation> @@ -5702,7 +5705,6 @@ <translation id="8785135611469711856">Beépülő modul nem válaszol</translation> <translation id="8787254343425541995">Proxyk engedélyezése a megosztott hálózatoknál</translation> <translation id="878763818693997570">Ez a név túl hosszú</translation> -<translation id="8787865569533773240">A(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> módosításainak visszaállítása</translation> <translation id="8789375980715484686">Más felhasználók kezelése</translation> <translation id="8791534160414513928">„Nincs nyomon követés” kérés küldése a böngészési forgalommal</translation> <translation id="8795668016723474529">Hitelkártya hozzáadása</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index d7dbc91c..665a4bd 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">File tidak dapat diakses karena alasan keamanan.</translation> <translation id="1675023460278456180">Material Hibrida</translation> <translation id="167832068858235403">kecilkan vol.</translation> -<translation id="1678331212993975953">Detail Situs</translation> <translation id="1679068421605151609">Alat Pengembang</translation> <translation id="1681120471812444678">Menyiapkan untuk menambah printer…</translation> <translation id="1682324559341535203">Mendaftarkan <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Buka setelah &selesai</translation> <translation id="2372036074421194686">Chrome menemukan program yang tidak diinginkan (<ph name="UWS_NAME" />) yang terpasang di komputer. Anda dapat menghapusnya dengan menjalankan Alat Pembersih Chrome.</translation> <translation id="2375701438512326360">Paksa dukungan layar sentuh untuk selalu diaktifkan atau dinonaktifkan, atau diaktifkan jika layar sentuh terdeteksi saat memulai (Otomatis, default).</translation> -<translation id="2377619091472055321">Setel Ulang Setelan <ph name="IDS_SHORT_PRODUCT_NAME" /> yang Telah Diubah</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> file dipilih</translation> <translation id="2378982052244864789">Pilih direktori ekstensi.</translation> <translation id="2379281330731083556">Cetak menggunakan dialog sistem... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Jika suatu ketika sistem operasi komputer harus dipulihkan, Anda memerlukan kartu SD atau stik memori USB pemulihan.</translation> <translation id="305932878998873762">Cache Sederhana untuk HTTP adalah cache baru. Cache tersebut bergantung pada sistem file untuk alokasi ruang disk.</translation> <translation id="3062606427884046423">Gunakan notifikasi Android MediaStyle untuk notifikasi media Chrome.</translation> +<translation id="3063224679438508013">Otomatis luncurkan aplikasi catatan</translation> <translation id="3063844757726132584">Akses semua aplikasi dari peluncur praktis ini. Mainkan game, lakukan video chat, dengarkan musik, edit dokumen, atau dapatkan aplikasi lainnya.</translation> <translation id="3064388234319122767">Transliterasi (zdravo → здраво)</translation> <translation id="3065041951436100775">Masukan tab yang ditutup.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock untuk Sandi</translation> <translation id="317583078218509884">Setelan izin situs baru akan berlaku setelah laman dimuat ulang.</translation> <translation id="3177048931975664371">Klik untuk menyembunyikan sandi</translation> +<translation id="3177909033752230686">Bahasa Laman:</translation> <translation id="3180365125572747493">Harap masukkan sandi untuk mengenkripsi file sertifikat ini.</translation> <translation id="3183139917765991655">Pengimpor Profil</translation> <translation id="3184560914950696195">Tidak dapat menyimpan ke $1. Gambar yang diedit akan disimpan dalam folder Unduhan.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Diunduh oleh <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Tampilkan <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Buka di tab baru</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Hapus Data Penjelajahan...</translation> <translation id="3618849550573277856">Cari "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Semua dicadangkan!</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">&Zum</translation> <translation id="3995964755286119116">Setelan kamera Adobe Flash Player berbeda.</translation> <translation id="39964277676607559">Tidak dapat memuat javascript '<ph name="RELATIVE_PATH" />' untuk skrip konten.</translation> -<translation id="3996912167543967198">Menyetel ulang...</translation> <translation id="3997015411467176489">Fitur kanvas eksperimental</translation> <translation id="4002066346123236978">Judul</translation> <translation id="40027638859996362">Perpindahan kata</translation> @@ -2391,6 +2391,7 @@ <translation id="4140559601186535628">Pesan Push</translation> <translation id="4146026355784316281">Selalu Buka Dengan Penampil Sistem</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> ingin memeriksa apakah perangkat Chrome OS Anda layak untuk penawaran. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Tampilan</translation> <translation id="4151403195736952345">Gunakan default global (Deteksi)</translation> <translation id="4152177296285305182">Hanya seseorang yang memiliki frasa sandi Anda yang dapat membaca data Anda yang dienkripsi. Frasa sandi tidak dikirim ke atau disimpan oleh Google. Jika Anda lupa frasa sandi, Anda harus menyetel ulang sinkronisasi.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tab}}</translation> @@ -2455,6 +2456,7 @@ <translation id="4250229828105606438">Tangkapan layar</translation> <translation id="4250680216510889253">Tidak</translation> <translation id="4253168017788158739">Catatan</translation> +<translation id="4254813446494774748">Bahasa Terjemahan:</translation> <translation id="425573743389990240">Laju Penggunaan Daya Baterai dalam Watt (Nilai negatif menunjukkan bahwa daya baterai sedang diisi)</translation> <translation id="4256316378292851214">Sim&pan Video Sebagai...</translation> <translation id="4258348331913189841">Sistem file</translation> @@ -2532,6 +2534,7 @@ <translation id="4365673000813822030">Ups, Sinkronisasi berhenti bekerja.</translation> <translation id="4366509400410520531">Diizinkan oleh Anda</translation> <translation id="4367782753568896354">Kami tidak dapat memasang:</translation> +<translation id="436904870295243580">Temukan aplikasi catatan lainnya</translation> <translation id="4370975561335139969">Email dan sandi yang Anda masukkan tidak cocok</translation> <translation id="437184764829821926">Setelan font lanjutan</translation> <translation id="4372884569765913867">1x1</translation> @@ -2559,7 +2562,7 @@ <translation id="441468701424154954">Jendela dapat memperluas tampilan.</translation> <translation id="4415531645938095119">Pembaruan perangkat lunak untuk perangkat ini tidak tersedia lagi.</translation> <translation id="4416628180566102937">Daftarkan dan mulai ulang</translation> -<translation id="441837933428923414">Aktifkan UI siklus jendela.</translation> +<translation id="441837933428923414">Aktifkan antarmuka siklus jendela.</translation> <translation id="4419409365248380979">Selalu izinkan <ph name="HOST" /> untuk menetapkan cookie</translation> <translation id="4421932782753506458">Si Manis</translation> <translation id="4422347585044846479">Edit bookmark untuk laman ini</translation> @@ -3105,7 +3108,7 @@ <translation id="5186650237607254032">Perbarui kunci layar ponsel sehingga kunci nonaktif saat Anda berada di sekitar. Anda dapat membuka kunci ponsel dengan lebih cepat dan menikmati pengalaman Smart Lock yang lebih baik di <ph name="DEVICE_TYPE" />.</translation> <translation id="5187295959347858724">Sekarang Anda masuk pada <ph name="SHORT_PRODUCT_NAME" />. Bookmark, riwayat, dan setelan lainnya sedang disinkronkan ke Akun Google Anda.</translation> <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation> -<translation id="5187902302719680252">Mengaktifkan buka kunci cepat memungkinkan Anda menggunakan PIN untuk membuka kunci Chromebook di layar kunci setelah masuk ke perangkat.</translation> +<translation id="5187902302719680252">Aktifkan buka kunci cepat agar Anda dapat menggunakan PIN untuk membuka kunci Chromebook di layar kunci setelah masuk ke perangkat.</translation> <translation id="5188893945248311098">Persyaratan isyarat untuk pemutaran media</translation> <translation id="5189060859917252173">Sertifikat "<ph name="CERTIFICATE_NAME" />" mewakili Otoritas Sertifikasi.</translation> <translation id="5196716972587102051">2</translation> @@ -3213,6 +3216,7 @@ <translation id="5324674707192845912">Anda akan membatalkan pendaftaran <ph name="DEVICE_TYPE" /> ini dengan Google untuk menonaktifkan kemampuan menemukan, menghapus, dan mengunci perangkat dari jarak jauh. Tindakan ini memerlukan booting ulang. Ingin melanjutkan?</translation> <translation id="5324780743567488672">Setel zona waktu secara otomatis menggunakan lokasi Anda</translation> <translation id="5325120507747984426">Menggunakan pengurutan jendela stabil dalam mode ikhtisar yang berusaha untuk meminimalkan pergerakan jendela saat masuk/keluar mode ikhtisar dan antara beberapa sesi ikhtisar.</translation> +<translation id="5326182685622510062">Ada beberapa penerapan saluran pipa perenderan grafis untuk kanvas 2D. Berbagai penerapan ini memiliki karakteristik performa yang berbeda. Mengaktifkan tanda ini memungkinkan konteks 2D kanvas untuk beralih antarpenerapan ini yang digunakan berdasarkan cara penggunaan kanvas untuk meningkatkan performa. Misalnya, beralih dari penerapan yang menggunakan GPU ke penerapan yang tidak menggunakan GPU.</translation> <translation id="5327248766486351172">Nama</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Hapus</translation> @@ -3345,7 +3349,6 @@ <translation id="54870580363317966">Pilih avatar untuk pengguna yang dilindungi ini.</translation> <translation id="5488468185303821006">Izinkan dalam mode penyamaran</translation> <translation id="5489390182170331803">Default Pasif Pemroses Kejadian Level Dokumen</translation> -<translation id="5489789060051091748">Pilih-untuk-mengucapkan: Tekan Telusur dan klik atau seret untuk mengucapkan apa pun</translation> <translation id="549294555051714732">Pencocokkan substring untuk saran IsiOtomatis</translation> <translation id="5493996328530898436">Strategi pencampuran render audio baru</translation> <translation id="5494362494988149300">Buka Setelah &Selesai</translation> @@ -3702,7 +3705,6 @@ <translation id="5991049340509704927">Memperbesar</translation> <translation id="5991774521050363748">Aktifkan tata letak khusus untuk Pemberitahuan Web. Tata letak akan semakin halus yang tidak mungkin terjadi jika tidak diaktifkan.</translation> <translation id="5993332328670040093">Penggunaan data Anda tidak akan diukur lagi.</translation> -<translation id="5996258716334177896">Profil Anda tidak dapat dibuka dengan semestinya. Beberapa fitur mungkin tidak tersedia. Periksa apakah profil tersebut ada dan Anda memiliki izin untuk membaca dan menulis kontennya.</translation> <translation id="6001799583597751002">PIN tidak cocok:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> mungkin tidak dapat tetap dimutakhirkan secara otomatis.</translation> <translation id="6003294706906016758">Aktifkan kerangka gaya aplikasi web untuk aplikasi yang dihost</translation> @@ -4152,7 +4154,6 @@ <translation id="6637362044401670482">Mengaktifkan dukungan gulir penuh keyboard virtual.</translation> <translation id="6639554308659482635">Memori SQLite</translation> <translation id="6643016212128521049">Hapus</translation> -<translation id="6644756108386233011">Setel ulang setelan <ph name="IDS_SHORT_PRODUCT_NAME" /> yang telah diubah?</translation> <translation id="6647228709620733774">URL Kebijakan Otoritas Sertifikasi Netscape</translation> <translation id="6647838571840953560">Saat ini di <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Tunggu sebentar...</translation> @@ -4260,7 +4261,6 @@ <translation id="6810613314571580006">Otomatis masuk ke situs web menggunakan kredensial yang tersimpan. Jika fitur ini dinonaktifkan, Anda akan dimintai konfirmasi setiap kali masuk ke situs web.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> tidak dapat dijalankan sebagai akar.</translation> <translation id="6812841287760418429">Simpan perubahan</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> mendeteksi bahwa setelan browser Anda mungkin telah berubah tanpa Anda ketahui. Ingin menyetelnya kembali ke setelan defaultnya?</translation> <translation id="6815551780062710681">edit</translation> <translation id="6817358880000653228">Sandi yang tersimpan untuk situs ini:</translation> <translation id="6820008762872335722">Setel ulang untuk meminta</translation> @@ -4377,6 +4377,7 @@ <translation id="6980956047710795611">Pindahkan semua data Chrome OS ke sandi baru (memerlukan sandi sebelumnya)</translation> <translation id="6981982820502123353">Aksesibilitas</translation> <translation id="6981992744085917617">Pilih metode yang ingin digunakan untuk masuk kembali ke akun:</translation> +<translation id="698231206551913481">Semua file dan data lokal yang dikaitkan ke pengguna ini akan dihapus secara permanen setelah pengguna ini dihapus.</translation> <translation id="6982896539684144327">Printer dari <ph name="VENDOR_NAME" /> terdeteksi</translation> <translation id="6983783921975806247">OID terdaftar</translation> <translation id="6983991971286645866">Semua pengeditan akan disimpan ke $1.</translation> @@ -4461,6 +4462,7 @@ <translation id="7073555242265688099">Jika Anda memiliki perangkat Chrome lainnya, perangkat tersebut akan disinkronkan secara otomatis, sehingga Anda juga bisa menggunakan ponsel untuk membuka kuncinya.</translation> <translation id="707392107419594760">Pilih keyboard Anda:</translation> <translation id="7075513071073410194">PKCS #1 MD5 Dengan Enkripsi RSA</translation> +<translation id="7075625805486468288">Mengelola sertifikat dan setelan HTTPS/SSL</translation> <translation id="7076293881109082629">Sedang masuk</translation> <translation id="7077829361966535409">Laman proses masuk gagal dimuat menggunakan setelan proxy saat ini. <ph name="GAIA_RELOAD_LINK_START" />Coba masuk lagi nanti<ph name="GAIA_RELOAD_LINK_END" />, atau gunakan <ph name="PROXY_SETTINGS_LINK_START" />setelan proxy yang lain<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Protokol penanganan yang diabaikan</translation> @@ -4508,7 +4510,6 @@ <translation id="7141105143012495934">Proses masuk gagal karena detail akun Anda tidak dapat diambil. Hubungi administrator Anda atau coba lagi.</translation> <translation id="7143207342074048698">Menyambungkan</translation> <translation id="7144878232160441200">Coba lagi</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> telah dinonaktifkan. Untuk mengaktifkannya kembali, buka <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Printer klasik</translation> <translation id="7154130902455071009">Ubah laman awal Anda menjadi: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Mode Aksara China Awal adalah China Aksara Sederhana</translation> @@ -4654,7 +4655,7 @@ <translation id="7366909168761621528">Data penjelajahan</translation> <translation id="7369521049655330548">Plugin berikut diblokir di laman ini:</translation> <translation id="7371490661692457119">Lebar ubin default</translation> -<translation id="7373789336584437724">Perangkat ini mengirimkan data diagnostik dan penggunaan ke Google untuk saat ini. Anda dapat mengubah setelan ini di <ph name="BEGIN_LINK1" />setelan<ph name="END_LINK1" /> perangkat kapan saja. <ph name="BEGIN_LINK2" />Pelajari Lebih Lanjut<ph name="END_LINK2" /></translation> +<translation id="7373789336584437724">Untuk saat ini perangkat mengirimkan data diagnostik dan penggunaan ke Google. Anda dapat mengubah setelan ini di <ph name="BEGIN_LINK1" />setelan<ph name="END_LINK1" /> perangkat kapan saja. <ph name="BEGIN_LINK2" />Pelajari Lebih Lanjut<ph name="END_LINK2" /></translation> <translation id="7374461526650987610">Penangan protokol</translation> <translation id="7375125077091615385">Jenis:</translation> <translation id="7376553024552204454">Sorot kursor mouse saat kursor berpindah</translation> @@ -4688,7 +4689,7 @@ <translation id="7403358905955888520">Nonaktifkan kebijakan perangkat deteksi otomatis zona waktu sistem.</translation> <translation id="7405422715075171617">Aktifkan pemindaian nomor kartu kredit baru saat mengisi formulir kartu kredit.</translation> <translation id="740624631517654988">Jendela munculan dicekal</translation> -<translation id="7406691462051376731">Perangkat ini mengirimkan data diagnostik dan penggunaan ke Google untuk saat ini. <ph name="BEGIN_LINK1" />Setelan<ph name="END_LINK1" /> ini diberlakukan oleh pemilik. <ph name="BEGIN_LINK2" />Pelajari Lebih Lanjut<ph name="END_LINK2" /></translation> +<translation id="7406691462051376731">Untuk saat ini perangkat mengirimkan data diagnostik dan penggunaan ke Google. <ph name="BEGIN_LINK1" />Setelan<ph name="END_LINK1" /> ini diberlakukan oleh pemilik. <ph name="BEGIN_LINK2" />Pelajari Lebih Lanjut<ph name="END_LINK2" /></translation> <translation id="7409233648990234464">Luncurkan Kembali dan Powerwash</translation> <translation id="7410344089573941623">Tanyakan jika <ph name="HOST" /> ingin mengakses kamera dan mikrofon Anda</translation> <translation id="7411343637221933631">{NUM_COOKIES,plural, =1{1 dari situs ini}other{# dari situs ini}}</translation> @@ -4787,6 +4788,7 @@ <translation id="7540972813190816353">Terjadi kesalahan saat memeriksa untuk pembaruan: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Pengecualian gambar</translation> <translation id="7543104066686362383">Aktifkan fitur debug pada perangkat <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Buka <ph name="BEGIN_LINK_CHROMIUM" />bantuan Google Chrome<ph name="END_LINK_CHROMIUM" /> jika Anda tidak menemukan hal yang Anda cari.</translation> <translation id="7544853251252956727">Acak</translation> <translation id="7545288882499673859">Strategi menolak memori untuk penanganan tekanan lanjutan</translation> <translation id="7545415673537747415">Kontrol cara Google menggunakan riwayat penjelajahan Anda untuk mempersonalisasi Penelusuran, iklan, dan layanan Google lainnya dari <ph name="BEGIN_LINK" />Kontrol Aktivitas Google<ph name="END_LINK" />.</translation> @@ -5024,7 +5026,6 @@ <translation id="7879478708475862060">Ikuti mode masukan</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" menambahkan ekstensi dan aplikasi ini:</translation> <translation id="7881969471599061635">Nonaktifkan subtitel</translation> -<translation id="7884988936047469945">Fitur aksesibilitas eksperimental</translation> <translation id="7885253890047913815">Tujuan Saat Ini</translation> <translation id="7887192723714330082">Merespons perintah "Ok Google" saat layar aktif dan terbuka</translation> <translation id="7887334752153342268">Gandakan</translation> @@ -5092,6 +5093,7 @@ <translation id="7974067550340408553">Dapatkan pemberitahuan di ponsel Anda setiap kali Smart Lock membuka kunci <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Coba lagi menggunakan <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Pemindaian berlebih</translation> +<translation id="7976960358280528247">Aktifkan antarmuka siklus jendela (masukan visual untuk Alt+Tab).</translation> <translation id="7977551819349545646">Memperbarui Chromebox...</translation> <translation id="7978412674231730200">Kunci pribadi</translation> <translation id="7979036127916589816">Kesalahan Sinkronisasi</translation> @@ -5119,6 +5121,7 @@ Simpan file kunci Anda di tempat yang aman. Anda akan membutuhkannya untuk membuat versi baru ekstensi.</translation> <translation id="799923393800005025">Dapat melihat</translation> +<translation id="8000066093800657092">Tidak ada jaringan</translation> <translation id="8004582292198964060">Browser</translation> <translation id="8007030362289124303">Baterai Lemah</translation> <translation id="8008356846765065031">Internet terputus. Periksa sambungan internet Anda.</translation> @@ -5193,6 +5196,7 @@ <translation id="8116190140324504026">Info selengkapnya...</translation> <translation id="8116483400482790018">Kamus ejaan khusus</translation> <translation id="8116972784401310538">&Pengelola bookmark</translation> +<translation id="8117838550640702864">Setelan catatan</translation> <translation id="8117957376775388318">Metode masukan Dayi</translation> <translation id="8118860139461251237">Mengelola unduhan Anda</translation> <translation id="8119572489781388874">Mengubah setelan</translation> @@ -5471,7 +5475,6 @@ <translation id="8472623782143987204">cadangan perangkat keras</translation> <translation id="8475313423285172237">Program lain di komputer Anda menambahkan ekstensi yang dapat mengubah cara kerja Chrome.</translation> <translation id="8475647382427415476">Saat ini Google Drive tidak dapat menyinkronkan "<ph name="FILENAME" />". Google Drive akan mencoba lagi nanti.</translation> -<translation id="8476195663057048998">Hapus & Setel Ulang</translation> <translation id="8477241577829954800">Diganti</translation> <translation id="8477384620836102176">&Umum</translation> <translation id="8480417584335382321">Perkecil/perbesar laman:</translation> @@ -5633,7 +5636,7 @@ <translation id="870112442358620996">Tawaran untuk menyimpan sandi dengan Google Smart Lock untuk Sandi.</translation> <translation id="8704458368793604611">Memungkinkan pengguna menerapkan pembuatan sandi di bidang sandi secara manual.</translation> <translation id="8704521619148782536">Proses ini lebih lama dari biasanya. Anda dapat terus menunggu, atau batalkan dan coba lagi nanti.</translation> -<translation id="8704983632490900895">Memungkinkan laman offline yang tersimpan untuk dibagikan melalui aplikasi lainnya.</translation> +<translation id="8704983632490900895">Mungkinkan laman offline yang tersimpan untuk dibagikan melalui aplikasi lainnya.</translation> <translation id="8705331520020532516">Nomor Seri</translation> <translation id="8706385129644254954">Pengalih Tab Aksesibilitas</translation> <translation id="8708000541097332489">Hapus saat keluar</translation> @@ -5701,7 +5704,6 @@ <translation id="8785135611469711856">Plugin Tidak Merespons</translation> <translation id="8787254343425541995">Memungkinkan proxy untuk jaringan bersama</translation> <translation id="878763818693997570">Nama ini terlalu panjang</translation> -<translation id="8787865569533773240">Setel ulang setelan <ph name="IDS_SHORT_PRODUCT_NAME" /> yang telah diubah</translation> <translation id="8789375980715484686">Kelola pengguna lainnya</translation> <translation id="8791534160414513928">Kirim permintaan "Jangan Lacak" dengan lalu lintas penjelajahan Anda</translation> <translation id="8795668016723474529">Tambahkan kartu kredit</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index be664e3..ff54563d 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Impossibile accedere al file per motivi di sicurezza.</translation> <translation id="1675023460278456180">Ibrida di Material Design</translation> <translation id="167832068858235403">abbassa volume</translation> -<translation id="1678331212993975953">Dettagli del sito</translation> <translation id="1679068421605151609">Strumenti per sviluppatori</translation> <translation id="1681120471812444678">Configura per aggiungere stampanti…</translation> <translation id="1682324559341535203">Registra <ph name="DEVICE_TYPE" /></translation> @@ -774,7 +773,7 @@ <translation id="2074527029802029717">Sblocca scheda</translation> <translation id="2075594581020578008">Browser <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2076269580855484719">Nascondi questo plug-in</translation> -<translation id="2077084898869955643">Segnala automaticamente a Google dettagli dei possibili incidenti di sicurezza. <ph name="PRIVACY_PAGE_LINK" /></translation> +<translation id="2077084898869955643">Segnala automaticamente a Google i dettagli dei possibili problemi di sicurezza. <ph name="PRIVACY_PAGE_LINK" /></translation> <translation id="2077129598763517140">Usa accelerazione hardware quando disponibile</translation> <translation id="2078019350989722914">Avvisa prima di uscire (<ph name="KEY_EQUIVALENT" />)</translation> <translation id="2079053412993822885">Se elimini uno dei tuoi certificati, non potrai più utilizzarlo per identificarti.</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Apri al &termine</translation> <translation id="2372036074421194686">Chrome ha trovato un programma indesiderato (<ph name="UWS_NAME" />) installato sul computer, che potresti riuscire a rimuovere utilizzando Chrome Software Cleaner.</translation> <translation id="2375701438512326360">Forza il supporto del touchscreen in modo che sia sempre attivo o disattivo o in modo che venga attivato quando viene rilevato un touchscreen all'avvio (Automatico per impostazione predefinita).</translation> -<translation id="2377619091472055321">Ripristina impostazioni di <ph name="IDS_SHORT_PRODUCT_NAME" /> modificate</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> file selezionati</translation> <translation id="2378982052244864789">Seleziona la directory dell'estensione.</translation> <translation id="2379281330731083556">Stampa utilizzando la finestra di dialogo di sistema... <ph name="SHORTCUT_KEY" /></translation> @@ -1557,6 +1555,7 @@ <translation id="3058212636943679650">Se fosse necessario ripristinare il sistema operativo del computer, avrai bisogno di una scheda SD o di una chiavetta USB di ripristino.</translation> <translation id="305932878998873762">La cache semplice per HTTP è una nuova cache che si basa sul filesystem per l'allocazione dello spazio su disco.</translation> <translation id="3062606427884046423">Utilizza le notifiche Android MediaStyle per le notifiche multimediali di Chrome.</translation> +<translation id="3063224679438508013">Avvia automaticamente l'app per scrivere note</translation> <translation id="3063844757726132584">Accedi rapidamente a tutte le tue app da Avvio applicazioni. Gioca, videochatta, ascolta musica, modifica documenti o scarica altre app.</translation> <translation id="3064388234319122767">Traslitterazione (zdravo → здраво)</translation> <translation id="3065041951436100775">Feedback relativo alle schede ignorate</translation> @@ -1647,6 +1646,7 @@ <translation id="3172213052701798825">Google Smart Lock per password</translation> <translation id="317583078218509884">Le nuove impostazioni delle autorizzazioni per i siti avranno effetto una volta ricaricata la pagina.</translation> <translation id="3177048931975664371">Fai clic per nascondere la password</translation> +<translation id="3177909033752230686">Lingua della pagina:</translation> <translation id="3180365125572747493">Inserisci una password per crittografare il file del certificato.</translation> <translation id="3183139917765991655">Profile Importer</translation> <translation id="3184560914950696195">Impossibile salvare su $1. Le immagini modificate verranno salvate nella cartella Download.</translation> @@ -1995,6 +1995,7 @@ <translation id="3612673635130633812">Scaricato da <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Mostra <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Apri in un'altra scheda</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Cancella dati di navigazione...</translation> <translation id="3618849550573277856">Cerca "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Backup di tutti i contenuti completato.</translation> @@ -2291,7 +2292,6 @@ <translation id="3994878504415702912">&Carattere</translation> <translation id="3995964755286119116">Le impostazioni relative alla videocamera di Adobe Flash Player sono diverse.</translation> <translation id="39964277676607559">Impossibile caricare javascript "<ph name="RELATIVE_PATH" />" per script contenuti.</translation> -<translation id="3996912167543967198">Ripristino...</translation> <translation id="3997015411467176489">Funzioni canvas sperimentali</translation> <translation id="4002066346123236978">Titolo</translation> <translation id="40027638859996362">Spostamento parola</translation> @@ -2324,7 +2324,7 @@ <translation id="406070391919917862">Applicazioni in background</translation> <translation id="4062251648694601778">Utilizza al meglio il tuo dispositivo <ph name="SHORT_PRODUCT_NAME" />. Hai domande? Puoi ricevere assistenza in qualsiasi momento facendo clic su "?" nella barra di stato.</translation> <translation id="4065876735068446555">La rete in uso (<ph name="NETWORK_ID" />) potrebbe richiedere la visita della relativa pagina di accesso.</translation> -<translation id="4068506536726151626">Questa pagina contiene elementi dai seguenti siti che stanno monitorando la tua posizione:</translation> +<translation id="4068506536726151626">Questa pagina contiene elementi dai seguenti siti che stanno rilevando la tua posizione:</translation> <translation id="4070370845051020638">Metodo di immissione Cantonese</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: errore di accesso</translation> <translation id="4072248638558688893">Tastiera Tamil (fonetica)</translation> @@ -2388,6 +2388,7 @@ <translation id="4140559601186535628">Messaggi push</translation> <translation id="4146026355784316281">Apri sempre con visualizzatore di sistema</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> vuole controllare se il tuo dispositivo Chrome OS è idoneo per un'offerta. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Display</translation> <translation id="4151403195736952345">Utilizza impostazioni predefinite globali (Rileva)</translation> <translation id="4152177296285305182">Solo un utente che dispone della tua passphrase può leggere i tuoi dati crittografati: la passphrase non viene inviata a Google o memorizzata da Google. Se dimentichi la passphrase, dovrai reimpostare la sincronizzazione.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 scheda}other{# schede}}</translation> @@ -2452,6 +2453,7 @@ <translation id="4250229828105606438">Screenshot</translation> <translation id="4250680216510889253">No</translation> <translation id="4253168017788158739">Nota</translation> +<translation id="4254813446494774748">Lingua della traduzione:</translation> <translation id="425573743389990240">Velocità di esaurimento della batteria in watt (un valore negativo indica che la batteria è in carica)</translation> <translation id="4256316378292851214">Sal&va video come...</translation> <translation id="4258348331913189841">File system</translation> @@ -2529,6 +2531,7 @@ <translation id="4365673000813822030">Spiacenti, la sincronizzazione si è interrotta.</translation> <translation id="4366509400410520531">Consentito da te</translation> <translation id="4367782753568896354">Non è stato possibile installare:</translation> +<translation id="436904870295243580">Trova altre applicazioni per scrivere note</translation> <translation id="4370975561335139969">L'indirizzo email e la password non corrispondono</translation> <translation id="437184764829821926">Impostazioni avanzate carattere</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3206,6 +3209,7 @@ <translation id="5324674707192845912">Stai per annullare la registrazione di questo <ph name="DEVICE_TYPE" /> con Google in modo da disattivare la possibilità di localizzare e bloccare il dispositivo, nonché cancellarne i dati da remoto. L'operazione richiederà il riavvio. Continuare?</translation> <translation id="5324780743567488672">Imposta automaticamente il fuso orario in base alla posizione</translation> <translation id="5325120507747984426">Consente di utilizzare sempre lo stesso ordine delle finestre in modalità Panoramica, tentando di ridurre al minimo i movimenti delle finestre quando si attiva/disattiva la modalità Panoramica e quando si passa da una sessione all'altra.</translation> +<translation id="5326182685622510062">Esistono diverse implementazioni della pipeline di rendering di contenuti grafici per canvas 2D. Queste diverse implementazioni hanno caratteristiche prestazionali diverse. Se attivi questo flag, i contesti 2D della canvas possono passare all'istante da un'implementazione all'altra in base alla modalità di utilizzo della canvas, al fine di migliorare le prestazioni. Possono, ad esempio, passare da un'implementazione che utilizza la GPU a una che non la utilizza.</translation> <translation id="5327248766486351172">Nome</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Elimina</translation> @@ -3338,7 +3342,6 @@ <translation id="54870580363317966">Scegli un avatar per questo utente controllato.</translation> <translation id="5488468185303821006">Consenti modalità in incognito</translation> <translation id="5489390182170331803">Impostazioni predefinite dei listener di eventi passivi a livello di documento</translation> -<translation id="5489789060051091748">Select-to-speak: tieni premuto Cerca e fai clic oppure trascina per sentire la pronuncia del testo presente sullo schermo</translation> <translation id="549294555051714732">Corrispondenza delle sottostringhe per i suggerimenti della Compilazione automatica</translation> <translation id="5493996328530898436">Nuova strategia di mix per il rendering audio</translation> <translation id="5494362494988149300">Apri al &termine</translation> @@ -3695,7 +3698,6 @@ <translation id="5991049340509704927">Ingrandisci</translation> <translation id="5991774521050363748">Abilita layout personalizzati per le notifiche web. Ci saranno lievi miglioramenti di layout altrimenti non possibili.</translation> <translation id="5993332328670040093">L'utilizzo dei dati non verrà più misurato.</translation> -<translation id="5996258716334177896">Impossibile aprire correttamente il tuo profilo. Alcune funzioni potrebbero non essere disponibili. Verifica che il profilo esista e che tu sia autorizzato a leggere e scrivere i relativi contenuti.</translation> <translation id="6001799583597751002">I PIN non corrispondono:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> potrebbe non essere in grado di effettuare gli aggiornamenti.</translation> <translation id="6003294706906016758">Attiva il frame in stile app web per le app in hosting</translation> @@ -4145,7 +4147,6 @@ <translation id="6637362044401670482">Consente di attivare il supporto dell'overscroll per la tastiera virtuale.</translation> <translation id="6639554308659482635">Memoria SQLite</translation> <translation id="6643016212128521049">Cancella</translation> -<translation id="6644756108386233011">Ripristinare le impostazioni di <ph name="IDS_SHORT_PRODUCT_NAME" /> modificate?</translation> <translation id="6647228709620733774">URL di revoca dell'autorità di certificazione Netscape</translation> <translation id="6647838571840953560">Attualmente su <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Solo un secondo...</translation> @@ -4253,7 +4254,6 @@ <translation id="6810613314571580006">Accedi automaticamente ai siti web utilizzando credenziali memorizzate. Quando la funzione non è attiva, ti viene chiesta la conferma prima di ogni accesso ai siti web.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> non può essere eseguito come root.</translation> <translation id="6812841287760418429">Mantieni le modifiche</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> ha riscontrato che le impostazioni del browser potrebbero essere state modificate a tua insaputa. Vuoi ripristinare le impostazioni predefinite originali?</translation> <translation id="6815551780062710681">modifica</translation> <translation id="6817358880000653228">Password salvate per questo sito:</translation> <translation id="6820008762872335722">Reimposta per avere la richiesta</translation> @@ -4371,6 +4371,7 @@ <translation id="6980956047710795611">Esegui la migrazione di tutti i dati di Chrome OS alla nuova password (occorre la password precedente)</translation> <translation id="6981982820502123353">Accessibilità</translation> <translation id="6981992744085917617">Scegli il metodo che desideri utilizzare per riaccedere al tuo account:</translation> +<translation id="698231206551913481">Tutti i file e i dati locali associati a questo utente verranno eliminati definitivamente in seguito alla rimozione dell'utente.</translation> <translation id="6982896539684144327">Stampante di <ph name="VENDOR_NAME" /> rilevata</translation> <translation id="6983783921975806247">OID registrato</translation> <translation id="6983991971286645866">Tutte le modifiche verranno salvate in $1.</translation> @@ -4383,7 +4384,7 @@ <translation id="6990778048354947307">Tema scuro</translation> <translation id="6991128190741664836">Più tardi</translation> <translation id="6991665348624301627">Seleziona una destinazione</translation> -<translation id="699220179437400583">Segnala automaticamente a Google dettagli dei possibili incidenti di sicurezza</translation> +<translation id="699220179437400583">Segnala automaticamente a Google i dettagli dei possibili problemi di sicurezza</translation> <translation id="6993929801679678186">Mostra previsioni di Compilazione automatica</translation> <translation id="6998711733709403587"><ph name="SELCTED_FOLDERS_COUNT" /> cartelle selezionate</translation> <translation id="6998872712520806535">{NUM_PAGES,plural, =1{La pagina seguente non risponde. Puoi aspettare che risponda di nuovo o puoi terminarla.}other{Le pagine seguenti non rispondono. Puoi aspettare che rispondano di nuovo o puoi terminarle.}}</translation> @@ -4455,6 +4456,7 @@ <translation id="7073555242265688099">Se utilizzi altri dispositivi Chrome, saranno sincronizzati automaticamente, in modo che il telefono possa sbloccarli.</translation> <translation id="707392107419594760">Seleziona la tastiera:</translation> <translation id="7075513071073410194">PKCS #1 MD5 con crittografia RSA</translation> +<translation id="7075625805486468288">Gestisci certificati e impostazioni HTTPS/SSL</translation> <translation id="7076293881109082629">Accesso</translation> <translation id="7077829361966535409">Caricamento della pagina di accesso non riuscito utilizzando le impostazioni proxy correnti. <ph name="GAIA_RELOAD_LINK_START" />Prova ad accedere di nuovo<ph name="GAIA_RELOAD_LINK_END" /> o utilizza altre <ph name="PROXY_SETTINGS_LINK_START" />impostazioni proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Gestori di protocollo ignorati</translation> @@ -4502,7 +4504,6 @@ <translation id="7141105143012495934">Accesso non riuscito perché non è stato possibile recuperare i dati dell'account. Contatta l'amministratore o riprova.</translation> <translation id="7143207342074048698">Connessione</translation> <translation id="7144878232160441200">Riprova</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> è stato disattivato. Per riattivarlo, visita la pagina all'indirizzo <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Stampanti classiche</translation> <translation id="7154130902455071009">Cambio della pagina iniziale con: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">La modalità cinese iniziale è il cinese semplificato</translation> @@ -4564,7 +4565,7 @@ <translation id="7243055093079293866">Dì "Ok Google" in una nuova scheda e su google.com</translation> <translation id="7243632151880336635">Cancella ed esci</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (opzione migliore)</translation> -<translation id="724691107663265825">Il sito in vista contiene malware</translation> +<translation id="724691107663265825">Il sito che stai per visitare contiene malware</translation> <translation id="725109152065019550">Spiacenti, l'amministratore ha disabilitato l'archiviazione esterna per il tuo account.</translation> <translation id="7252661675567922360">Non caricare</translation> <translation id="7253521419891527137">&Ulteriori informazioni</translation> @@ -4774,6 +4775,7 @@ <translation id="7540972813190816353">Si è verificato un errore durante il controllo della disponibilità di aggiornamenti: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Eccezioni immagini</translation> <translation id="7543104066686362383">Attiva funzioni di debug su questo dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Visita la <ph name="BEGIN_LINK_CHROMIUM" />guida di Google Chrome<ph name="END_LINK_CHROMIUM" /> se non riesci a trovare quello che cerchi.</translation> <translation id="7544853251252956727">Riproduzione casuale</translation> <translation id="7545288882499673859">Strategia di memory discard per la gestione avanzata dell'utilizzo</translation> <translation id="7545415673537747415">Controlla il modo in cui Google utilizza la cronologia di navigazione per personalizzare la Ricerca, gli annunci e altri servizi Google dalla pagina <ph name="BEGIN_LINK" />Gestione attività di Google<ph name="END_LINK" />.</translation> @@ -5009,7 +5011,6 @@ <translation id="7879478708475862060">Segui modalità immissione</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" aggiunge le seguenti app ed estensioni:</translation> <translation id="7881969471599061635">Disattiva i sottotitoli</translation> -<translation id="7884988936047469945">Funzioni di accessibilità sperimentali</translation> <translation id="7885253890047913815">Destinazioni recenti</translation> <translation id="7887192723714330082">Rispondere al comando "Ok Google" quando lo schermo è attivo e sbloccato</translation> <translation id="7887334752153342268">Duplica</translation> @@ -5077,6 +5078,7 @@ <translation id="7974067550340408553">Ricevi notifica sul telefono ogni volta che Smart Lock sblocca il dispositivo <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Riprova utilizzando <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Overscan</translation> +<translation id="7976960358280528247">Consente di attivare l'interfaccia utente di spostamento tra le finestre (feedback visivo per ALT+TAB).</translation> <translation id="7977551819349545646">Aggiornamento del Chromebox...</translation> <translation id="7978412674231730200">Chiave privata</translation> <translation id="7979036127916589816">Errore di sincronizzazione</translation> @@ -5104,6 +5106,7 @@ Conserva il file di chiave in un luogo sicuro. Ti servirà per creare nuove versioni dell'estensione.</translation> <translation id="799923393800005025">Può visualizzare</translation> +<translation id="8000066093800657092">Nessuna rete</translation> <translation id="8004582292198964060">Browser</translation> <translation id="8007030362289124303">Batteria in esaurimento</translation> <translation id="8008356846765065031">Disconnesso da Internet. Controlla la tua connessione Internet.</translation> @@ -5178,6 +5181,7 @@ <translation id="8116190140324504026">Ulteriori informazioni...</translation> <translation id="8116483400482790018">Dizionario ortografico personalizzato</translation> <translation id="8116972784401310538">Gestione &Preferiti</translation> +<translation id="8117838550640702864">Impostazioni note</translation> <translation id="8117957376775388318">Metodo di immissione Dayi</translation> <translation id="8118860139461251237">Gestione dei download</translation> <translation id="8119572489781388874">Modifica impostazioni</translation> @@ -5456,7 +5460,6 @@ <translation id="8472623782143987204">basato sull'hardware</translation> <translation id="8475313423285172237">Un altro programma sul computer ha aggiunto un'estensione che potrebbe modificare il funzionamento di Chrome.</translation> <translation id="8475647382427415476">Al momento non è possibile sincronizzare il file "<ph name="FILENAME" />" con Google Drive. Google Drive riproverà più tardi.</translation> -<translation id="8476195663057048998">Cancella e reimposta</translation> <translation id="8477241577829954800">Sostituito</translation> <translation id="8477384620836102176">&Generali</translation> <translation id="8480417584335382321">Zoom delle pagine:</translation> @@ -5686,7 +5689,6 @@ <translation id="8785135611469711856">Il plug-in non risponde</translation> <translation id="8787254343425541995">Consenti proxy per reti condivise</translation> <translation id="878763818693997570">Il nome è troppo lungo</translation> -<translation id="8787865569533773240">Ripristina impostazioni di <ph name="IDS_SHORT_PRODUCT_NAME" /> modificate</translation> <translation id="8789375980715484686">Gestione di altri utenti</translation> <translation id="8791534160414513928">Invia una richiesta "Non tenere traccia" con il tuo traffico di navigazione</translation> <translation id="8795668016723474529">Aggiungi una carta di credito</translation> @@ -5822,7 +5824,7 @@ <translation id="8982248110486356984">Cambia utenti</translation> <translation id="8986267729801483565">Percorso di download:</translation> <translation id="8986362086234534611">Elimina</translation> -<translation id="8986494364107987395">Invia automaticamente a Google statistiche sull'utilizzo e segnalazioni sugli arresti anomali</translation> +<translation id="8986494364107987395">Invia automaticamente a Google statistiche sull'utilizzo e rapporti sugli arresti anomali</translation> <translation id="8987736167266086032">Riprendi da dove eri rimasto</translation> <translation id="8987927404178983737">Mese</translation> <translation id="899403249577094719">URL di base certificato Netscape</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 1d80913c..6c602cd5 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -517,7 +517,6 @@ <translation id="1673103856845176271">לא היתה אפשרות לגשת לקובץ מסיבות אבטחה.</translation> <translation id="1675023460278456180">עיצוב חדשני תלת-ממדי משולב</translation> <translation id="167832068858235403">הפחתת עוצמת הקול</translation> -<translation id="1678331212993975953">פרטי אתר</translation> <translation id="1679068421605151609">כלים עבור מפתחים</translation> <translation id="1681120471812444678">הגדרה להוספת מדפסות...</translation> <translation id="1682324559341535203">רישום של <ph name="DEVICE_TYPE" /></translation> @@ -1006,7 +1005,6 @@ <translation id="2371076942591664043">פתח &בסיום</translation> <translation id="2372036074421194686">Chrome מצא תכנית לא רצויה (<ph name="UWS_NAME" />) שמותקנת במחשב. ייתכן שתוכל להסיר אותה על ידי הפעלת Chrome Cleanup Tool.</translation> <translation id="2375701438512326360">אלץ את התמיכה במסך מגע להיות תמיד מופעלת או מושבתת, או להיות מופעלת כאשר מזוהה מסך מגע בעת ההפעלה (אוטומטית, ברירת המחדל).</translation> -<translation id="2377619091472055321">אפס הגדרות <ph name="IDS_SHORT_PRODUCT_NAME" /> שהשתנו</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> קבצים נבחרו</translation> <translation id="2378982052244864789">בחר את ספריית ההרחבה.</translation> <translation id="2379281330731083556">הדפס באמצעות תיבת דו-שיח של המערכת... <ph name="SHORTCUT_KEY" /></translation> @@ -1554,6 +1552,7 @@ <translation id="3058212636943679650">אם תצטרך בעתיד לשחזר את מערכת ההפעלה של המחשב, תזדקק לכרטיס SD או למקל זיכרון USB לשחזור.</translation> <translation id="305932878998873762">הקובץ השמור הפשוט עבור HTTP הוא קובץ שמור חדש. הוא מתבסס על מערכת הקבצים להקצאת שטח דיסק.</translation> <translation id="3062606427884046423">השתמש בהודעות Android MediaStyle להודעות מדיה של Chrome.</translation> +<translation id="3063224679438508013">הפעל באופן אוטומטי אפליקציה לרישום הערות</translation> <translation id="3063844757726132584">קבל גישה לכל האפליקציות ממפעיל האפליקציות השימושי הזה. שחק במשחקים, קיים צ'אט בווידאו, האזן למוזיקה, ערוך מסמכים או קבל אפליקציות נוספות.</translation> <translation id="3064388234319122767">תעתוק (zdravo → здраво)</translation> <translation id="3065041951436100775">משוב על כרטיסייה שנסגרה.</translation> @@ -1643,6 +1642,7 @@ <translation id="3172213052701798825">Google Smart Lock לסיסמאות</translation> <translation id="317583078218509884">הגדרות חדשות של אישורי אתר ייכנסו לתוקף לאחר טעינה מחדש של הדף.</translation> <translation id="3177048931975664371">לחץ כדי להסתיר את הסיסמה</translation> +<translation id="3177909033752230686">שפת הדף:</translation> <translation id="3180365125572747493">הזן סיסמה כדי להצפין את קובץ האישור הזה.</translation> <translation id="3183139917765991655">מייבא פרופילים</translation> <translation id="3184560914950696195">לא ניתן לשמור ב-$1. תמונות ערוכות יישמרו בתיקיית ההורדות.</translation> @@ -1993,6 +1993,7 @@ <translation id="3612673635130633812">ההורדה בוצעה באמצעות <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">הצג את <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&פתח בכרטיסייה חדשה</translation> +<translation id="3616113530831147358">אודיו</translation> <translation id="3616741288025931835">&נקה נתוני גלישה...</translation> <translation id="3618849550573277856">חפש “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">הכל מגובה!</translation> @@ -2289,7 +2290,6 @@ <translation id="3994878504415702912">מרחק מתצוגה</translation> <translation id="3995964755286119116">הגדרות המצלמה בשביל Adobe Flash Player הן שונות.</translation> <translation id="39964277676607559">לא היתה אפשרות לטעון את ה-Javascript '<ph name="RELATIVE_PATH" />' עבור סקריפט תוכן.</translation> -<translation id="3996912167543967198">מאפס...</translation> <translation id="3997015411467176489">תכונות ניסיוניות של בד ציור</translation> <translation id="4002066346123236978">כותרת</translation> <translation id="40027638859996362">העברת מילה</translation> @@ -2386,6 +2386,7 @@ <translation id="4140559601186535628">הודעות בדחיפה</translation> <translation id="4146026355784316281">פתח תמיד באמצעות מציג המערכת</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> רוצה לבדוק אם המכשיר שלך המשתמש במערכת ההפעלה של Chrome זכאי למבצע. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">תצוגה</translation> <translation id="4151403195736952345">השתמש בברירת מחדל גלובלית (זיהוי)</translation> <translation id="4152177296285305182">רק משתמש עם משפט הסיסמה שלך יוכל לקרוא את הנתונים המוצפנים שלך. משפט הסיסמה אינו נשלח אל Google או מאוחסן אצלה. אם שכחת אותו, תצטרך לבצע איפוס סנכרון.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{כרטיסייה אחת}two{# כרטיסיות}many{# כרטיסיות}other{# כרטיסיות}}</translation> @@ -2450,6 +2451,7 @@ <translation id="4250229828105606438">צילום מסך</translation> <translation id="4250680216510889253">לא</translation> <translation id="4253168017788158739">הערה</translation> +<translation id="4254813446494774748">שפת התרגום:</translation> <translation id="425573743389990240">שיעור פריקת סוללה בוואט (המשמעות של ערך שלילי היא שהסוללה בטעינה)</translation> <translation id="4256316378292851214">שמו&ר סרטון וידאו כ...</translation> <translation id="4258348331913189841">מערכות קבצים</translation> @@ -2527,6 +2529,7 @@ <translation id="4365673000813822030">אופס, הסינכרון הפסיק לפעול.</translation> <translation id="4366509400410520531">מופעל על ידך</translation> <translation id="4367782753568896354">לא הצלחנו להתקין את:</translation> +<translation id="436904870295243580">מצא אפליקציות נוספות לרישום הערות</translation> <translation id="4370975561335139969">כתובת האימייל והסיסמה שהזנת אינן תואמות</translation> <translation id="437184764829821926">הגדרות גופן מתקדמות</translation> <translation id="4372884569765913867">1x1</translation> @@ -3209,6 +3212,7 @@ <translation id="5324674707192845912">אתה עומד לבטל את רישום ה-<ph name="DEVICE_TYPE" /> הזה ב-Google כדי להשבית את היכולת לאיתור, מחיקה ונעילה של המכשיר מרחוק. לשם כך נדרש אתחול. האם ברצונך להמשיך?</translation> <translation id="5324780743567488672">היעזר במיקום להגדרה אוטומטית של אזור הזמן</translation> <translation id="5325120507747984426">משתמש בסדר חלונות יציב במצב סקירה, בניסיון למזער תנועת חלונות בעת כניסה לסקירה או יציאה מסקירה ובין פעילויות סקירה.</translation> +<translation id="5326182685622510062">לצינור העיבוד הגרפי בבד הציור הדו-ממדי יש יישומים רבים. ליישומים השונים האלה ישנם מאפיינים שונים של ביצועים. הפעלת הסמן הזה מאפשרת להקשרים של בד הציור הדו-ממדי להחליף במהירות בין יישומים אלו, בהתבסס על השימוש שנעשה בבד הציור במטרה להגביר את הביצועים. לדוגמה, לעבור מיישום שמשתמש ב-GPU ליישום שאינו משתמש בו.</translation> <translation id="5327248766486351172">שם</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&מחק</translation> @@ -3341,7 +3345,6 @@ <translation id="54870580363317966">בחר דמות עבור משתמש בפיקוח זה.</translation> <translation id="5488468185303821006">אפשר במצב גלישה פרטית</translation> <translation id="5489390182170331803">ברירת מחדל של מעבדי אירועים פסיביים ברמת המסמך</translation> -<translation id="5489789060051091748">בחירת טקסט לאמירה בקול: החזק את החיפוש ולחץ או גרור כדי שטקסט יוקרא בקול</translation> <translation id="549294555051714732">התאמה של מחרוזות משנה להצעות של מילוי אוטומטי</translation> <translation id="5493996328530898436">אסטרטגיה חדשה למיקס של עיבוד אודיו</translation> <translation id="5494362494988149300">פתח &בסיום</translation> @@ -3698,7 +3701,6 @@ <translation id="5991049340509704927">הגדל</translation> <translation id="5991774521050363748">הפעל פריסות מותאמות אישית ל'הודעות אינטרנט'. הן יכללו שיפורי פריסה קטנים שאי אפשר לבצע בדרך אחרת.</translation> <translation id="5993332328670040093">השימוש בנתונים כבר לא יימדד.</translation> -<translation id="5996258716334177896">לא היה ניתן לפתוח את הפרופיל שלך כהלכה. ייתכן שתכונות מסוימות לא יהיו זמינות. בדוק שהפרופיל קיים ושיש לך אישור לקרוא ולכתוב את התוכן שלו.</translation> <translation id="6001799583597751002">מספרי ה-PIN אינם תואמים:</translation> <translation id="6003177993629630467">ייתכן ש-<ph name="PRODUCT_NAME" /> לא יוכל להתעדכן.</translation> <translation id="6003294706906016758">מפעיל את מסגרת הסגנון ליישומי אינטרנט מתארחים</translation> @@ -4148,7 +4150,6 @@ <translation id="6637362044401670482">מפעיל תמיכה בגלישת גלילה במקלדת וירטואלית.</translation> <translation id="6639554308659482635">זיכרון SQLite </translation> <translation id="6643016212128521049">נקה</translation> -<translation id="6644756108386233011">לאפס את הגדרות <ph name="IDS_SHORT_PRODUCT_NAME" /> שהשתנו?</translation> <translation id="6647228709620733774">כתובת אתר לביטול של רשות אישורי Netscape</translation> <translation id="6647838571840953560">עכשיו בערוץ <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">רק רגע...</translation> @@ -4256,7 +4257,6 @@ <translation id="6810613314571580006">היכנס באופן אוטומטי לאתרים באמצעות פרטי כניסה שמורים. כשהתכונה הזו מושבתת, תתבקש לאשר לפני כל כניסה לאתר.</translation> <translation id="6812349420832218321">לא ניתן להפעיל את <ph name="PRODUCT_NAME" /> בתור בסיס.</translation> <translation id="6812841287760418429">השאר שינויים</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> זיהה שייתכן שהגדרות הדפדפן שלך שונו ללא ידיעתך. האם ברצונך לאפס את הגדרות הדפדפן לערכי ברירת המחדל המקוריים שלהן?</translation> <translation id="6815551780062710681">ערוך</translation> <translation id="6817358880000653228">סיסמאות שמורות עבור האתר הזה:</translation> <translation id="6820008762872335722">אפס לשאלה מחדש</translation> @@ -4372,6 +4372,7 @@ <translation id="6980956047710795611">העבר את כל הנתונים של מערכת ההפעלה Chrome אל הסיסמה החדשה (נדרשת הסיסמה הקודמת)</translation> <translation id="6981982820502123353">נגישות</translation> <translation id="6981992744085917617">בחר את השיטה שבה תרצה להשתמש כדי להיכנס שוב לחשבון:</translation> +<translation id="698231206551913481">כל הקבצים והנתונים המשויכים למשתמש זה יימחקו לצמיתות ברגע שהמשתמש יוסר.</translation> <translation id="6982896539684144327">אותרה מדפסת מ-<ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">OID רשום</translation> <translation id="6983991971286645866">כל העריכות יישמרו ב-$1.</translation> @@ -4456,6 +4457,7 @@ <translation id="7073555242265688099">אם יש לך מכשירים אחרים עם Chrome, הם יסונכרנו באופן אוטומטי, כך שהטלפון שלך יפתח גם את הנעילה שלהם.</translation> <translation id="707392107419594760">בחר מקלדת:</translation> <translation id="7075513071073410194">PKCS #1 MD5 עם הצפנת RSA</translation> +<translation id="7075625805486468288">נהל אישורים והגדרות של HTTPS/SSL</translation> <translation id="7076293881109082629">כניסה</translation> <translation id="7077829361966535409">טעינת דף הכניסה באמצעות הגדרות שרת ה-proxy הנוכחיות נכשלה. <ph name="GAIA_RELOAD_LINK_START" />נסה להיכנס שוב<ph name="GAIA_RELOAD_LINK_END" /> או השתמש ב<ph name="PROXY_SETTINGS_LINK_START" />הגדרות שונות לשרת ה-proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">תוכניות לטיפול בפרוטוקולים שהתעלמו מהן</translation> @@ -4503,7 +4505,6 @@ <translation id="7141105143012495934">הכניסה נכשלה מפני שלא ניתן היה לאחזר את פרטי החשבון. צור קשר עם מנהל המערכת או נסה שוב.</translation> <translation id="7143207342074048698">מתחבר</translation> <translation id="7144878232160441200">נסה שוב</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> הושבת. כדי להפעילו מחדש, עבור אל <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">מדפסות קלאסיות</translation> <translation id="7154130902455071009">שנה את דף הפתיחה ל: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">מצב סינית ראשוני הוא סינית פשוטה</translation> @@ -4649,7 +4650,7 @@ <translation id="7366909168761621528">נתוני גלישה</translation> <translation id="7369521049655330548">יישומי הפלאגין הבאים נחסמו בדף הזה:</translation> <translation id="7371490661692457119">ברירת מחדל של רוחב אריח</translation> -<translation id="7373789336584437724">נכון לעכשיו המכשיר שולח נתוני ניתוח ושימוש ל-Google. ניתן לשנות את ההגדרה הזו בכל עת דרך <ph name="BEGIN_LINK1" />הגדרות<ph name="END_LINK1" /> המכשיר. <ph name="BEGIN_LINK2" />למידע נוסף<ph name="END_LINK2" /></translation> +<translation id="7373789336584437724">נכון לעכשיו המכשיר שולח נתוני ניתוח ושימוש ל-Google. ניתן תמיד לשנות את ההגדרה הזו דרך <ph name="BEGIN_LINK1" />הגדרות<ph name="END_LINK1" /> המכשיר. <ph name="BEGIN_LINK2" />למידע נוסף<ph name="END_LINK2" /></translation> <translation id="7374461526650987610">תוכניות לטיפול בפרוטוקולים</translation> <translation id="7375125077091615385">סוג:</translation> <translation id="7376553024552204454">הדגש את סמן העכבר כשהסמן בתנועה</translation> @@ -4776,6 +4777,7 @@ <translation id="7540972813190816353">אירעה שגיאה בעת בדיקת עדכונים: <ph name="ERROR" /></translation> <translation id="7541121857749629630">חריגים של תמונה</translation> <translation id="7543104066686362383">הפעל תכונות ניפוי באגים במכשיר <ph name="IDS_SHORT_PRODUCT_NAME" /> זה</translation> +<translation id="7543393759143837504">אם אינך מוצא את המידע שאתה מחפש, היכנס אל <ph name="BEGIN_LINK_CHROMIUM" />מרכז העזרה של Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">ערבוב</translation> <translation id="7545288882499673859">אסטרטגיה של מחיקת זיכרון לטיפול מתקדם בלחץ</translation> <translation id="7545415673537747415">שלוט באופן שבו חברת Google משתמשת בהיסטוריית הגלישה שלך לצורך התאמה אישית של חיפוש Google, מודעות Google ושירותי Google אחרים, באמצעות <ph name="BEGIN_LINK" />בחירת הפעילויות ב-Google<ph name="END_LINK" />.</translation> @@ -5011,7 +5013,6 @@ <translation id="7879478708475862060">עקוב אחר שיטת הקלט</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" מוסיף את היישומים והתוספים הבאים:</translation> <translation id="7881969471599061635">השבת כתוביות</translation> -<translation id="7884988936047469945">תכונות נגישות ניסיוניות</translation> <translation id="7885253890047913815">יעדים אחרונים</translation> <translation id="7887192723714330082">הגב ל-"Ok Google" כשהמסך פועל ואינו נעול</translation> <translation id="7887334752153342268">שכפול</translation> @@ -5079,6 +5080,7 @@ <translation id="7974067550340408553">קבל הודעה בטלפון בכל פעם שהתכונה Smart Lock מבטלת את הנעילה של <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">נסה שוב באמצעות <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">סריקת יתר</translation> +<translation id="7976960358280528247">הפעל את ממשק סבב החלונות (משוב חזותי לשימוש ב-Alt-Tab).</translation> <translation id="7977551819349545646">מעדכן את Chromebox...</translation> <translation id="7978412674231730200">מפתח פרטי</translation> <translation id="7979036127916589816">שגיאת סנכרון</translation> @@ -5106,6 +5108,7 @@ שמור על קובץ המפתח שלך במקום בטוח. תצטרך אותו כדי ליצור גרסאות חדשות של התוסף שלך.</translation> <translation id="799923393800005025">יכול להציג</translation> +<translation id="8000066093800657092">אין רשת</translation> <translation id="8004582292198964060">דפדפן</translation> <translation id="8007030362289124303">סוללה חלשה</translation> <translation id="8008356846765065031">האינטרנט מנותק. בדוק את חיבור האינטרנט.</translation> @@ -5180,6 +5183,7 @@ <translation id="8116190140324504026">עוד מידע...</translation> <translation id="8116483400482790018">מילון איות מותאם אישית</translation> <translation id="8116972784401310538">&מנהל הסימניות</translation> +<translation id="8117838550640702864">הגדרות רישום הערות</translation> <translation id="8117957376775388318">שיטת קלט Dayi</translation> <translation id="8118860139461251237">לנהל את ההורדות שלך</translation> <translation id="8119572489781388874">שנה הגדרות</translation> @@ -5458,7 +5462,6 @@ <translation id="8472623782143987204">גיבוי חומרה</translation> <translation id="8475313423285172237">תכנית אחרת במחשב שלך הוסיפה תוסף שעשוי לשנות את אופן הפעולה של Chrome.</translation> <translation id="8475647382427415476">ל-Google Drive אין כרגע אפשרות לסנכרן את "<ph name="FILENAME" />". מערכת Google Drive תנסה זאת שוב מאוחר יותר.</translation> -<translation id="8476195663057048998">נקה ואפס</translation> <translation id="8477241577829954800">הוחלף</translation> <translation id="8477384620836102176">&כללי</translation> <translation id="8480417584335382321">גודל טקסט בדף:</translation> @@ -5688,7 +5691,6 @@ <translation id="8785135611469711856">הפלאג-אין אינו מגיב</translation> <translation id="8787254343425541995">אפשר שרתי proxy עבור רשתות משותפות</translation> <translation id="878763818693997570">השם הזה ארוך מדי</translation> -<translation id="8787865569533773240">אפס הגדרות <ph name="IDS_SHORT_PRODUCT_NAME" /> שהשתנו</translation> <translation id="8789375980715484686">ניהול משתמשים אחרים</translation> <translation id="8791534160414513928">שלח בקשת 'ללא מעקב' יחד עם תנועת הגלישה שלך</translation> <translation id="8795668016723474529">הוסף כרטיס אשראי</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index 97af5e2..275c5e4 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -522,7 +522,6 @@ <translation id="1673103856845176271">セキュリティ上の理由で、ファイルにアクセスできませんでした。</translation> <translation id="1675023460278456180">マテリアル ハイブリッド</translation> <translation id="167832068858235403">音量を下げる</translation> -<translation id="1678331212993975953">サイトの詳細</translation> <translation id="1679068421605151609">デベロッパー ツール</translation> <translation id="1681120471812444678">プリンタを追加するための設定を行う…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> の登録</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">ダウンロードしたら開く(&D)</translation> <translation id="2372036074421194686">お使いのパソコンで迷惑プログラム(<ph name="UWS_NAME" />)が見つかりました。Chrome クリーンアップ ツールでこのプログラムを削除できる可能性があります。</translation> <translation id="2375701438512326360">タッチスクリーンのサポートが常に有効または無効になるように、または起動時にタッチスクリーンが検出されたときに有効になるように強制します(自動、デフォルト)。</translation> -<translation id="2377619091472055321">変更された <ph name="IDS_SHORT_PRODUCT_NAME" /> 設定をリセット</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> 個のファイルを選択</translation> <translation id="2378982052244864789">拡張機能のディレクトリを選択してください。</translation> <translation id="2379281330731083556">システム ダイアログを使用して印刷... <ph name="SHORTCUT_KEY" /></translation> @@ -1477,7 +1475,7 @@ <translation id="295947108480905647">「<ph name="CHROME_EXTENSION_NAME" />」の接続先:</translation> <translation id="2959614062380389916">管理者によって無効になっています</translation> <translation id="2960393411257968125">パスワード マネージャで同期の認証情報の自動入力をどのように扱うかを指定します。</translation> -<translation id="29611076221683977">現在、<ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> では、悪意のあるユーザーがご利用の Mac に危険なプログラム(写真、パスワード、メッセージ、クレジット カード番号などを盗み取るか削除するプログラム)をインストールしようとしている可能性があります。</translation> +<translation id="29611076221683977"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> では現在、悪意のあるユーザーが、お使いの Mac に危険なプログラム(写真、パスワード、メッセージ、クレジット カード番号などを盗み取るか削除するプログラム)をインストールしようとしている可能性があります。</translation> <translation id="2961695502793809356">クリックすると次に進みます。押したまま待つと履歴が表示されます。</translation> <translation id="296216853343927883">コンテキスト メニューに Google ブランドを表示する</translation> <translation id="2963151496262057773">プラグイン(<ph name="PLUGIN_NAME" />)は応答していません。強制終了しますか?</translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">パソコンのオペレーティング システムを復旧する必要が生じると、復旧用の SD カードまたは USB メモリ スティックが必要になります。</translation> <translation id="305932878998873762">HTTP 用のシンプル キャッシュは新しいキャッシュ機能です。ディスク スペースの割り当てにファイルシステムを使用します。</translation> <translation id="3062606427884046423">Chrome のメディア通知に Android のメディア スタイル通知を使用します。</translation> +<translation id="3063224679438508013">メモアプリを自動起動</translation> <translation id="3063844757726132584">インストールしているすべてのアプリにこのランチャーからアクセスできます。ゲーム、ビデオチャット、音楽鑑賞、ドキュメント編集を行ったり、さらにアプリを入手したりできます。</translation> <translation id="3064388234319122767">文字変換(zdravo → здраво)</translation> <translation id="3065041951436100775">タブの強制終了に関するフィードバック。</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock for Passwords</translation> <translation id="317583078218509884">サイトの新しい権限設定はページの再読み込み後に有効になります。</translation> <translation id="3177048931975664371">クリックしてパスワードを隠す</translation> +<translation id="3177909033752230686">ページの言語:</translation> <translation id="3180365125572747493">この証明書ファイルの暗号化に使用するパスワードを入力してください。</translation> <translation id="3183139917765991655">プロフィール インポーター</translation> <translation id="3184560914950696195">$1 に保存することができません。編集した画像はダウンロード フォルダに保存されます。</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> によりダウンロードされました</translation> <translation id="3613134908380545408">「<ph name="FOLDER_NAME" />」を表示</translation> <translation id="3613422051106148727">新しいタブで開く(&O)</translation> +<translation id="3616113530831147358">音声</translation> <translation id="3616741288025931835">閲覧履歴を消去(&C)...</translation> <translation id="3618849550573277856">「<ph name="LOOKUP_STRING" />」を検索</translation> <translation id="3620292326130836921">すべてバックアップ済みです。</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">ズーム(&Z)</translation> <translation id="3995964755286119116">Adobe Flash Player のカメラの設定が異なります。</translation> <translation id="39964277676607559">コンテンツ スクリプトの Javascript「<ph name="RELATIVE_PATH" />」を読み込むことができませんでした。</translation> -<translation id="3996912167543967198">リセットしています...</translation> <translation id="3997015411467176489">試験運用版の canvas 機能</translation> <translation id="4002066346123236978">タイトル</translation> <translation id="40027638859996362">1 語移動する</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">プッシュ メッセージ</translation> <translation id="4146026355784316281">常にシステム ビューアで開く</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> が、Chrome OS 搭載デバイスで特典を利用できるかどうかを確認するための許可を求めています。<ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">表示</translation> <translation id="4151403195736952345">全体の既定値を使用(検出)</translation> <translation id="4152177296285305182">パスフレーズを知っているユーザーだけが暗号化されたデータを読み取ることができます。パスフレーズは Google には送信されず、保存されることもありません。パスフレーズを忘れた場合は同期をリセットする必要があります。</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 個のタブ}other{# 個のタブ}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">スクリーンショット</translation> <translation id="4250680216510889253">いいえ</translation> <translation id="4253168017788158739">メモ</translation> +<translation id="4254813446494774748">翻訳言語:</translation> <translation id="425573743389990240">バッテリーの放電率(ワット、負の値の場合は充電中)</translation> <translation id="4256316378292851214">名前を付けて動画を保存(&V)...</translation> <translation id="4258348331913189841">ファイル システム</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">同期は停止されました。</translation> <translation id="4366509400410520531">自分で許可</translation> <translation id="4367782753568896354">インストールできませんでした:</translation> +<translation id="436904870295243580">その他のメモアプリを検索</translation> <translation id="4370975561335139969">入力したメールアドレスとパスワードが一致しません</translation> <translation id="437184764829821926">フォントの詳細設定</translation> <translation id="4372884569765913867">1×1</translation> @@ -3214,6 +3217,7 @@ <translation id="5324674707192845912">Google に対するこの <ph name="DEVICE_TYPE" /> の登録を解除すると、リモートからのデバイスの検出、データ消去、ロックを行うことができなくなります。登録解除を完了するには再起動が必要です。続行しますか?</translation> <translation id="5324780743567488672">ユーザーの現在地情報を使用して自動的にタイムゾーンを設定する</translation> <translation id="5325120507747984426">概要モードで固定のウィンドウ順序を使用します。この場合、概要モードの開始時 / 終了時と概要セッションの切り替え時にウィンドウの動きが最小限になります。</translation> +<translation id="5326182685622510062">2D キャンバス向けのグラフィック レンダリング パイプラインの実装が複数あります。実装ごとにパフォーマンスの特性は異なります。このフラグをオンにすると、パフォーマンスを向上させるために、キャンバスの使い方に応じてキャンバスの 2D コンテキストが実装間ですぐに切り替わります。たとえば、GPU を使用する実装から GPU を使用しない実装に切り替わります。</translation> <translation id="5327248766486351172">名前</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">削除(&D)</translation> @@ -3346,7 +3350,6 @@ <translation id="54870580363317966">この監視対象ユーザーのアバターを選択してください。</translation> <translation id="5488468185303821006">シークレット モードでの実行を許可する</translation> <translation id="5489390182170331803">ドキュメント レベルの受動的イベント リスナーのデフォルト</translation> -<translation id="5489789060051091748">選択して読み上げ: テキストを読み上げるには、[検索] を押したままクリックまたはドラッグします</translation> <translation id="549294555051714732">部分文字列が一致する項目を自動入力の候補として表示する</translation> <translation id="5493996328530898436">新しい音声レンダリング ミキシング戦略</translation> <translation id="5494362494988149300">ダウンロードしたら開く(&D)</translation> @@ -3703,7 +3706,6 @@ <translation id="5991049340509704927">拡大表示</translation> <translation id="5991774521050363748">ウェブ通知のカスタム レイアウトを有効にします。有効にしないとできないようなレイアウトの微妙な改善が行われます。</translation> <translation id="5993332328670040093">データ使用量はこれ以上測定されません。</translation> -<translation id="5996258716334177896">プロフィールを開くことができませんでした。一部の機能をご利用いただけない可能性があります。プロフィールが存在し、そのコンテンツへの読み書きが許可されていることを確認してください。</translation> <translation id="6001799583597751002">PIN が一致しません:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> を最新の状態に維持できない場合があります。</translation> <translation id="6003294706906016758">ホスト型アプリに対しウェブアプリ スタイルのフレームを有効にする</translation> @@ -4153,7 +4155,6 @@ <translation id="6637362044401670482">仮想キーボードのオーバースクロールのサポートを有効にします。</translation> <translation id="6639554308659482635">SQLite メモリ</translation> <translation id="6643016212128521049">クリア</translation> -<translation id="6644756108386233011">変更された <ph name="IDS_SHORT_PRODUCT_NAME" /> 設定をリセットしますか?</translation> <translation id="6647228709620733774">Netscape 認証局取り消し URL</translation> <translation id="6647838571840953560">現在のチャンネルは <ph name="CHANNEL_NAME" /> です</translation> <translation id="6649018507441623493">お待ちください…</translation> @@ -4261,7 +4262,6 @@ <translation id="6810613314571580006">保存されている認証情報を使用してウェブサイトに自動的にログインします。この機能が無効になっている場合は、ウェブサイトにログインするときに毎回確認を求められます。</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> を root で実行することはできません。</translation> <translation id="6812841287760418429">変更を保持</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> は、ユーザーの知らない間にブラウザの設定が変更された可能性があることを検出しました。設定を元のデフォルトにリセットしますか?</translation> <translation id="6815551780062710681">編集</translation> <translation id="6817358880000653228">このサイトに保存されているパスワード:</translation> <translation id="6820008762872335722">リセット(確認あり)</translation> @@ -4379,6 +4379,7 @@ (変更前のパスワードが必要です)</translation> <translation id="6981982820502123353">ユーザー補助機能</translation> <translation id="6981992744085917617">アカウントに再ログインする方法を選択してください:</translation> +<translation id="698231206551913481">このユーザーを削除すると、このユーザーに関連付けられているファイルとローカルデータもすべて完全に削除されます。</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> のプリンタが検出されました</translation> <translation id="6983783921975806247">登録されている OID</translation> <translation id="6983991971286645866">編集内容はすべて $1 に保存されます。</translation> @@ -4463,6 +4464,7 @@ <translation id="7073555242265688099">Chrome 搭載デバイスが他にもある場合は、それらのデバイスも自動的に同期され、スマートフォンからロック解除できるようになります。</translation> <translation id="707392107419594760">キーボードの選択:</translation> <translation id="7075513071073410194">PKCS #1 MD5 with RSA 暗号化</translation> +<translation id="7075625805486468288">HTTPS / SSL の証明書と設定を管理します</translation> <translation id="7076293881109082629">ログイン中</translation> <translation id="7077829361966535409">現在のプロキシ設定を使用してログイン ページを読み込むことができませんでした。<ph name="GAIA_RELOAD_LINK_START" />もう一度ログイン<ph name="GAIA_RELOAD_LINK_END" />してみるか、別の<ph name="PROXY_SETTINGS_LINK_START" />プロキシ設定<ph name="PROXY_SETTINGS_LINK_END" />を使用してみてください。</translation> <translation id="7077872827894353012">無視したプロトコル ハンドラ</translation> @@ -4510,7 +4512,6 @@ <translation id="7141105143012495934">アカウントの詳細を取得できなかったためログインできませんでした。管理者に問い合わせるか、もう一度お試しください。</translation> <translation id="7143207342074048698">接続中</translation> <translation id="7144878232160441200">再読み込み</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> は無効になりました。再度有効にするには、<ph name="CHROME_PLUGINS_LINK" /> にアクセスしてください。</translation> <translation id="715118844758971915">従来のプリンタ</translation> <translation id="7154130902455071009">スタート ページを次に変更します: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">初期の中国語モードを簡体中国語にする</translation> @@ -4572,7 +4573,7 @@ <translation id="7243055093079293866">新しいタブで google.com を開き、「OK Google」と発声します</translation> <translation id="7243632151880336635">削除してログアウト</translation> <translation id="7245628041916450754"><ph name="WIDTH" />x<ph name="HEIGHT" />(最適)</translation> -<translation id="724691107663265825">アクセス先のサイトで不正なソフトウェアを検出しました。</translation> +<translation id="724691107663265825">アクセス先のサイトで不正なソフトウェアを検出しました</translation> <translation id="725109152065019550">このアカウントでの外部ストレージの使用は、管理者によって無効にされています。</translation> <translation id="7252661675567922360">読み込まない</translation> <translation id="7253521419891527137">詳細(&L)</translation> @@ -4791,6 +4792,7 @@ <translation id="7540972813190816353">更新の確認中にエラーが発生しました: <ph name="ERROR" /></translation> <translation id="7541121857749629630">画像の例外</translation> <translation id="7543104066686362383">この <ph name="IDS_SHORT_PRODUCT_NAME" /> 搭載デバイスでデバッグ機能を有効にします</translation> +<translation id="7543393759143837504">検索結果が表示されない場合は、<ph name="BEGIN_LINK_CHROMIUM" />Google Chrome のヘルプ<ph name="END_LINK_CHROMIUM" />をご覧ください。</translation> <translation id="7544853251252956727">シャッフル</translation> <translation id="7545288882499673859">メモリ破棄の方法(メモリひっ迫時の高度な処理)</translation> <translation id="7545415673537747415"><ph name="BEGIN_LINK" />Google アクティビティ管理<ph name="END_LINK" />では、検索、広告、その他の Google サービスをカスタマイズするために Google が閲覧履歴をどのような方法で使用するかを設定できます。</translation> @@ -4826,7 +4828,7 @@ <translation id="7582844466922312471">モバイル データ</translation> <translation id="7583242026904249212"><ph name="DOMAIN" /> では、保護されたメディアの高度な再生には、資格の確認のためにデバイスの識別情報(Google 提供の識別情報)が必要です。<ph name="LEARN_MORE" /></translation> <translation id="7584802760054545466"><ph name="NETWORK_ID" /> に接続しています</translation> -<translation id="7586312264284919041">このページを翻訳してもよろしいですか?</translation> +<translation id="7586312264284919041">このページを翻訳しますか?</translation> <translation id="7586498138629385861">Chrome アプリが開いている間 Chrome は実行され続けます。</translation> <translation id="7587108133605326224">バルト語</translation> <translation id="7589461650300748890">データが失われる危険があります。</translation> @@ -5028,7 +5030,6 @@ <translation id="7879478708475862060">入力モードのとおり</translation> <translation id="7880836220014399562">「<ph name="BUNDLE_NAME" />」で追加されるアプリと拡張機能:</translation> <translation id="7881969471599061635">字幕を無効にする</translation> -<translation id="7884988936047469945">試験運用版のユーザー補助機能</translation> <translation id="7885253890047913815">最近使用した送信先</translation> <translation id="7887192723714330082">画面がオンでロック解除された状態のときに「OK Google」に反応するようになりました</translation> <translation id="7887334752153342268">タブを複製</translation> @@ -5096,6 +5097,7 @@ <translation id="7974067550340408553">Smart Lock により <ph name="DEVICE_TYPE" /> のロックが解除されたときに毎回スマートフォンに通知を表示する。</translation> <translation id="7974566588408714340">「<ph name="EXTENSIONNAME" />」で再試行</translation> <translation id="7974936243149753750">オーバースキャン</translation> +<translation id="7976960358280528247">ウィンドウ切り替えの UI(Alt+Tab キーの視覚フィードバック)を有効にします。</translation> <translation id="7977551819349545646">Chromebox を更新中...</translation> <translation id="7978412674231730200">秘密鍵</translation> <translation id="7979036127916589816">同期エラー</translation> @@ -5123,6 +5125,7 @@ 鍵ファイルは安全な場所に保管してください。拡張機能の新しいバージョンの作成時に必要となります。</translation> <translation id="799923393800005025">閲覧者</translation> +<translation id="8000066093800657092">ネットワーク接続なし</translation> <translation id="8004582292198964060">ブラウザ</translation> <translation id="8007030362289124303">バッテリー残量が少なくなりました</translation> <translation id="8008356846765065031">インターネットが切断されました。インターネット接続を確認してください。</translation> @@ -5197,6 +5200,7 @@ <translation id="8116190140324504026">詳細情報...</translation> <translation id="8116483400482790018">カスタム スペルチェック辞書</translation> <translation id="8116972784401310538">ブックマーク マネージャ(&B)</translation> +<translation id="8117838550640702864">メモの設定</translation> <translation id="8117957376775388318">入力方法(Dayi)</translation> <translation id="8118860139461251237">ダウンロードの管理</translation> <translation id="8119572489781388874">設定を変更</translation> @@ -5290,7 +5294,7 @@ <translation id="8226222018808695353">アクセスできません</translation> <translation id="8226742006292257240">ランダムに生成され、ご使用のパソコンに割り当てられた TPM パスワードは以下のとおりです:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">現在、<ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> では、悪意のあるユーザーがご利用のパソコンに危険なプログラム(写真、パスワード、メッセージ、クレジット カード番号などを盗み取るか削除するプログラム)をインストールしようとしている可能性があります。</translation> +<translation id="8230421197304563332"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> では現在、悪意のあるユーザーが、お使いのパソコンに危険なプログラム(写真、パスワード、メッセージ、クレジット カード番号などを盗み取るか削除するプログラム)をインストールしようとしている可能性があります。</translation> <translation id="8233254008506535819">重要サイトをホワイトリストに登録するオプションを閲覧履歴データの消去ダイアログに表示します。</translation> <translation id="8236231079192337250">プリンタ ドライバ用 Chrome ウェブストア ギャラリー アプリ</translation> <translation id="8238649969398088015">ヘルプのヒント</translation> @@ -5475,7 +5479,6 @@ <translation id="8472623782143987204">ハードウェア式</translation> <translation id="8475313423285172237">パソコン上の別のプログラムにより、Chrome の動作方法を変更する可能性のある拡張機能が追加されました。</translation> <translation id="8475647382427415476">Google ドライブでは「<ph name="FILENAME" />」を直ちに同期できませんでした。時間を置いて再試行します。</translation> -<translation id="8476195663057048998">削除してリセット</translation> <translation id="8477241577829954800">差し替えられた</translation> <translation id="8477384620836102176">全般(&G)</translation> <translation id="8480417584335382321">ページのズーム:</translation> @@ -5705,7 +5708,6 @@ <translation id="8785135611469711856">プラグイン応答なし</translation> <translation id="8787254343425541995">共有ネットワークのプロキシを許可する</translation> <translation id="878763818693997570">名前が長すぎます</translation> -<translation id="8787865569533773240">変更された <ph name="IDS_SHORT_PRODUCT_NAME" /> 設定をリセット</translation> <translation id="8789375980715484686">他のユーザーの管理</translation> <translation id="8791534160414513928">閲覧トラフィックと一緒に「トラッキング拒否」リクエストを送信する</translation> <translation id="8795668016723474529">クレジットカードを追加</translation> @@ -5841,7 +5843,7 @@ <translation id="8982248110486356984">ユーザーを切り替える</translation> <translation id="8986267729801483565">ダウンロード保存先:</translation> <translation id="8986362086234534611">切断</translation> -<translation id="8986494364107987395">使用統計データや障害レポートを自動的に Google に送信する</translation> +<translation id="8986494364107987395">使用統計データと障害レポートを Google に自動送信する</translation> <translation id="8987736167266086032">同じところから再開</translation> <translation id="8987927404178983737">月</translation> <translation id="899403249577094719">Netscape 証明書基本 URL</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index 79f2881..de0fa88b 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -98,7 +98,7 @@ <translation id="1125520545229165057">ಡಿವೊರಾಕ್ (ಎಸ್ಎಸ್ಯು)</translation> <translation id="1128109161498068552">MIDI ಸಾಧನಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದಕ್ಕೆ ಸಿಸ್ಟಂ ವಿಶೇಷ ಸಂದೇಶಗಳನ್ನು ಬಳಸಲು ಯಾವುದೇ ಸೈಟ್ಗಳಿಗೆ ಅನುಮತಿಸಬೇಡಿ</translation> <translation id="1128128132059598906">EAP-TTLS</translation> -<translation id="1128591060186966949">ಹುಡುಕಾಟ ಎಂಜಿನ್ ಅನ್ನು ಸಂಪಾದಿಸಿ</translation> +<translation id="1128591060186966949">ಹುಡುಕಾಟ ಎಂಜಿನ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="1128987120443782698">ಸಂಗ್ರಹಣೆ ಸಾಧನವು <ph name="DEVICE_CAPACITY" /> ನ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿದೆ. ದಯವಿಟ್ಟು ಕನಿಷ್ಠ 4GB ಯ ಸಾಮರ್ಥ್ಯ ಹೊಂದಿರುವ SD ಕಾರ್ಡ್ ಅಥವಾ USB ಮೆಮೊರಿ ಸ್ಟಿಕ್ ಅನ್ನು ಸೇರಿಸಿ.</translation> <translation id="1132956125173653312">ನಿಮ್ಮ Chromebook ನಲ್ಲಿ Android ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation> <translation id="1137135726305341424">domContentLoaded ಮತ್ತು domContentLoaded (ಮುಖ್ಯ ಫ್ರೇಮ್ ಮತ್ತು ಅದೇ ಮೂಲದ iframes) ಗಿಂತಲೂ ಮೊದಲು ಪ್ರಾರಂಭಗೊಂಡ ಎಲ್ಲಾ ಸಂಪನ್ಮೂಲ ಲೋಡ್ಗಳು.</translation> @@ -149,7 +149,7 @@ <translation id="1190855992966397019">AppContainer ಲಾಕ್ಡೌನ್ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation> <translation id="1195447618553298278">ಅಜ್ಞಾತ ದೋಷ.</translation> <translation id="1196338895211115272">ಖಾಸಗಿ ಕೀಲಿಯನ್ನು ರಫ್ತು ಮಾಡಲು ವಿಫಲವಾಗಿದೆ.</translation> -<translation id="1196789802623400962">ವರ್ಚುಯಲ್ ಕೀಬೋರ್ಡ್ಗೆ ಸೆಟ್ಟಿಂಗ್ಗಳ ಪುಟದಲ್ಲಿ ಗೆಸ್ಚರ್ ಸಂಪಾದನೆ ಆಯ್ಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ/ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ.</translation> +<translation id="1196789802623400962">ವರ್ಚುಯಲ್ ಕೀಬೋರ್ಡ್ಗೆ ಸೆಟ್ಟಿಂಗ್ಗಳ ಪುಟದಲ್ಲಿ ಗೆಸ್ಚರ್ ಎಡಿಟ್ ಆಯ್ಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ/ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ.</translation> <translation id="1196849605089373692">ಸ್ಕೇಲಿಂಗ್ ಕಡಿಮೆ ಇರುವಾಗ ಸೆರೆಹಿಡಿದ ಚಿತ್ರಗಳ ಗುಣಮಟ್ಟದ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಕೆಳಗೆ ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.</translation> <translation id="1197199342062592414">ಪ್ರಾರಂಭಿಸೋಣ</translation> <translation id="119738088725604856">ಸ್ಕ್ರೀನ್ಶಾಟ್ ವಿಂಡೋ</translation> @@ -192,7 +192,7 @@ <translation id="1248269069727746712">ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕಪಡಿಸಲು ನಿಮ್ಮ ಸಾಧನದ ಸಿಸ್ಟಂ ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು <ph name="PRODUCT_NAME" /> ಬಳಸುತ್ತಿದೆ.</translation> <translation id="1249250836236328755">ಪ್ರಕಾರ</translation> <translation id="1254593899333212300">ನೇರ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ</translation> -<translation id="1257390253112646227">ಪ್ಲೇ ಮಾಡಿ, ಸಂಪಾದಿಸಿ, ಹಂಚಿಕೊಳ್ಳಿ, ಕೆಲಸವನ್ನು ಪೂರೈಸಿ.</translation> +<translation id="1257390253112646227">ಪ್ಲೇ ಮಾಡಿ, ಎಡಿಟ್ ಮಾಡಿ, ಹಂಚಿಕೊಳ್ಳಿ, ಕೆಲಸವನ್ನು ಪೂರೈಸಿ.</translation> <translation id="1259724620062607540">ಶೆಲ್ಫ್ ಐಟಂ 7</translation> <translation id="1260240842868558614">ತೋರಿಸಿ:</translation> <translation id="126710816202626562">ಅನುವಾದ ಭಾಷೆ:</translation> @@ -211,7 +211,7 @@ <translation id="1290223615328246825">ಸ್ವಯಂಚಾಲಿತ ಸೈನ್-ಇನ್ ವಿಫಲವಾಗಿದೆ</translation> <translation id="1293509594570842875">ಹೊಸ ಮೇಲ್ವಿಚಾರಣೆಯ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="1293556467332435079">ಫೈಲ್ಗಳು</translation> -<translation id="1294298200424241932">ವಿಶ್ವಾಸಾರ್ಹ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಸಂಪಾದಿಸಿ:</translation> +<translation id="1294298200424241932">ವಿಶ್ವಾಸಾರ್ಹ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ:</translation> <translation id="1295794900245526845">ಸೈನ್ ಇನ್ ಮಾಡಲು <ph name="PASSWORD_MANAGER_BRAND" /> ಜೊತೆಗೆ ಉಳಿಸಲಾಗಿರುವ ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ</translation> <translation id="1297175357211070620">ಗಮ್ಯಸ್ಥಾನ</translation> <translation id="1297922636971898492">Google ಡ್ರೈವ್ ಇದೀಗ ಲಭ್ಯವಿಲ್ಲ. Google ಡ್ರೈವ್ ಒಮ್ಮೆ ಹಿಂತಿರುಗಿದರೆ ಅಪ್ಲೋಡ್ ಆಗುವುದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ.</translation> @@ -522,12 +522,11 @@ <translation id="1673103856845176271">ಸುರಕ್ಷತಾ ಕಾರಣಗಳಿಗಾಗಿ ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲಾಗಲಿಲ್ಲ.</translation> <translation id="1675023460278456180">ವಸ್ತು ಹೈಬ್ರಿಡ್</translation> <translation id="167832068858235403">ವಾ. ಕಡಿಮೆ ಮಾಡಿ</translation> -<translation id="1678331212993975953">ಸೈಟ್ ವಿವರಗಳು</translation> <translation id="1679068421605151609">ಡೆವಲಪರ್ ಟೂಲ್ಸ್</translation> <translation id="1681120471812444678">ಪ್ರಿಂಟರ್ಗಳನ್ನು ಸೇರಿಸಲು ಹೊಂದಿಸಿ....</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> ದಾಖಲಿಸಿ</translation> <translation id="1682548588986054654">ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ</translation> -<translation id="168328519870909584"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ನ ದಾಳಿಕೋರರು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು (ಉದಾಹರಣೆಗೆ, ಫೋಟೋಗಳು, ಪಾಸ್ವರ್ಡ್ಗಳು, ಸಂದೇಶಗಳು ಮತ್ತು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮಾಹಿತಿಗಳು) ಕದಿಯಲು ಅಥವಾ ಅಳಿಸುವ ಸಲುವಾಗಿ ಅಪಾಯಕಾರಿ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು.</translation> +<translation id="168328519870909584"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ನಲ್ಲಿರುವ ದಾಳಿಕೋರರು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿರುವ ಮಾಹಿತಿ (ಉದಾಹರಣೆಗೆ, ಫೋಟೋಗಳು, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮಾಹಿತಿಗಳು) ಕದಿಯಲು ಇಲ್ಲವೇ ಅಳಿಸಲು ಅಪಾಯಕಾರಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು.</translation> <translation id="1685141618403317602">ಸೇರ್ಪಡೆಯನ್ನು ರದ್ದುಮಾಡಿ</translation> <translation id="1685944703056982650">ಮೌಸ್ ಕರ್ಸರ್ ವಿನಾಯಿತಿಗಳು</translation> <translation id="1691063574428301566">ನವೀಕರಣವು ಪೂರ್ಣಗೊಂಡಾಗ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ.</translation> @@ -775,7 +774,7 @@ <translation id="2074527029802029717">ಅನ್ಪಿನ್ ಟ್ಯಾಬ್</translation> <translation id="2075594581020578008"><ph name="IDS_SHORT_PRODUCT_NAME" /> ಬ್ರೌಸರ್</translation> <translation id="2076269580855484719">ಈ ಪ್ಲಗ್ಇನ್ ಅನ್ನು ಮರೆಮಾಡು</translation> -<translation id="2077084898869955643">ಸಂಭಾವ್ಯ ಸುರಕ್ಷತಾ ಸಂಬಂಧಿ ಘಟನೆಗಳ ವಿವರಗಳನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವರದಿಮಾಡಿ. <ph name="PRIVACY_PAGE_LINK" /></translation> +<translation id="2077084898869955643">ಸಂಭಾವ್ಯ ಸುರಕ್ಷತಾ ಸಂಬಂಧಿ ಘಟನೆಗಳ ವಿವರಗಳನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವರದಿಮಾಡು. <ph name="PRIVACY_PAGE_LINK" /></translation> <translation id="2077129598763517140">ಲಭ್ಯವಿರುವಾಗ ಹಾರ್ಡ್ವೇರ್ ಆಕ್ಸಲರೇಶನ್ ಬಳಸು</translation> <translation id="2078019350989722914">ಹೊರ ಬರುವುದಕ್ಕೂ ಮುನ್ನ ಎಚ್ಚರಿಸಿ (<ph name="KEY_EQUIVALENT" />)</translation> <translation id="2079053412993822885">ನಿಮ್ಮ ಸ್ವಂತ ಪ್ರಮಾಣಪತ್ರಗಳಲ್ಲಿ ಒಂದನ್ನು ಅಳಿಸಿದಲ್ಲಿ, ಅದನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮನ್ನು ನೀವು ಗುರುತಿಸಿಕೊಳ್ಳಲು ಇನ್ನೆಂದಿಗೂ ಸಾಧ್ಯವಾಗದೇ ಇರಬಹುದು. </translation> @@ -892,7 +891,7 @@ <translation id="2221240591176106785">ಪ್ರಮಾಣೀಕರಿಸದ ರಿಲೋಡ್ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="2222641695352322289">ಇದನ್ನು ರದ್ದುಗೊಳಿಸಲು ಇರುವ ಏಕೈಕ ಮಾರ್ಗವೆಂದರೆ <ph name="IDS_SHORT_PRODUCT_OS_NAME" /> ಅನ್ನು ಮರುಸ್ಥಾಪಿಸುವುದು.</translation> <translation id="2224444042887712269">ಈ ಸೆಟ್ಟಿಂಗ್ <ph name="OWNER_EMAIL" /> ಗೆ ಸೇರಿರುತ್ತದೆ.</translation> -<translation id="2224551243087462610">ಫೋಲ್ಡರ್ ಹೆಸರು ಸಂಪಾದಿಸಿ</translation> +<translation id="2224551243087462610">ಫೋಲ್ಡರ್ ಹೆಸರು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="2226449515541314767">ಈ ಸೈಟ್ ಅನ್ನು MIDI ಸಾಧನಗಳ ಮೇಲೆ ಪೂರ್ಣ ನಿಯಂತ್ರಣ ಸಾಧಿಸುವುದರಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation> <translation id="2229161054156947610">1 ಗಂಟೆಗಿಂತಲೂ ಹೆಚ್ಚು ಬಾಕಿ ಉಳಿದಿದೆ</translation> <translation id="222931766245975952">ಫೈಲ್ ಅನ್ನು ಮೊಟಕುಗೊಳಿಸಲಾಗಿದೆ</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">&ಮುಗಿಸಿದಾಗ ತೆರೆಯಿರಿ</translation> <translation id="2372036074421194686">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಅನಪೇಕ್ಷಿತ ಪ್ರೋಗ್ರಾಂ (<ph name="UWS_NAME" />) ಸ್ಥಾಪನೆಯಾಗಿರುವುದನ್ನು Chrome ಪತ್ತೆಹಚ್ಚಿದೆ. Chrome ಸ್ವಚ್ಛತಾ ಸಾಧನವನ್ನು ರನ್ ಮಾಡುವ ಮೂಲಕ ಅದನ್ನು ತೆಗೆದುಹಾಕಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗಬಹುದು.</translation> <translation id="2375701438512326360">ಎಲ್ಲಾ ಸಂದರ್ಭಗಳಲ್ಲೂ ಸಕ್ರಿಯಗೊಂಡಿರಲು ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಂಡಿರಲು ಅಥವಾ ಆರಂಭದ (ಸ್ವಯಂಚಾಲಿತ, ಡಿಫಾಲ್ಟ್) ನಲ್ಲಿ ಸ್ಪರ್ಶಪರದೆಯನ್ನು ಪತ್ತೆಹಚ್ಚುವಾಗ ಸಕ್ರಿಯಗೊಳಿಸುವಿಕೆಯ ಸ್ಪರ್ಶಪರದೆಯನ್ನು ಬೆಂಬಲಿಸಲು ಒತ್ತಾಯಿಸಿ.</translation> -<translation id="2377619091472055321">ಬದಲಿಸಿದ <ph name="IDS_SHORT_PRODUCT_NAME" /> ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> ಫೈಲ್ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ</translation> <translation id="2378982052244864789">ವಿಸ್ತರಣೆ ಡೈರೆಕ್ಟರಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ.</translation> <translation id="2379281330731083556">ಸಿಸ್ಟಂ ಸಂವಾದವನ್ನು ಬಳಸಿ ಮುದ್ರಿಸಿ... <ph name="SHORTCUT_KEY" /></translation> @@ -1477,13 +1475,13 @@ <translation id="295947108480905647">"<ph name="CHROME_EXTENSION_NAME" />" ಇದಕ್ಕೆ ಸಂಪರ್ಕಿಸಲು ಬಯಸುತ್ತದೆ:</translation> <translation id="2959614062380389916">ನಿರ್ವಾಹಕರಿಂದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation> <translation id="2960393411257968125">ಸಿಂಕ್ ರುಜುವಾತುಗಾಗಿ ಸ್ವಯಂ ತುಂಬುವಿಕೆಯನ್ನು ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕರು ಹೇಗೆ ನಿಭಾಯಿಸುತ್ತಾರೆ.</translation> -<translation id="29611076221683977"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ನ ದಾಳಿಕೋರರು ನಿಮ್ಮ Mac ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು (ಉದಾಹರಣೆಗೆ, ಫೋಟೋಗಳು, ಪಾಸ್ವರ್ಡ್ಗಳು, ಸಂದೇಶಗಳು ಮತ್ತು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮಾಹಿತಿಗಳು) ಕದಿಯಲು ಅಥವಾ ಅಳಿಸುವ ಸಲುವಾಗಿ ಅಪಾಯಕಾರಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು.</translation> +<translation id="29611076221683977"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ನಲ್ಲಿರುವ ದಾಳಿಕೋರರು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿರುವ ಮಾಹಿತಿ (ಉದಾಹರಣೆಗೆ, ಫೋಟೋಗಳು, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮಾಹಿತಿಗಳು) ಕದಿಯಲು ಇಲ್ಲವೇ ಅಳಿಸಲು ಅಪಾಯಕಾರಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು.</translation> <translation id="2961695502793809356">ಮುಂದಕ್ಕೆ ಹೋಗಲು ಕ್ಲಿಕ್ ಮಾಡಿ, ಇತಿಹಾಸ ನೋಡಲು ಒತ್ತಿಹಿಡಿಯಿರಿ</translation> <translation id="296216853343927883">ಸಂದರ್ಭದ ಮೆನುವಿನಲ್ಲಿ Google ಬ್ರಾಂಡಿಂಗ್</translation> <translation id="2963151496262057773">ಕೆಳಗಿನ ಪ್ಲಗ್-ಇನ್ ಪ್ರತಿಕ್ರಿಯಿಸದಂತದ್ದು: <ph name="PLUGIN_NAME" />ನೀವು ಇದನ್ನು ನಿಲ್ಲಿಸಲು ಬಯಸುವಿರಾ?</translation> <translation id="2963783323012015985">ಟರ್ಕಿಶ್ ಕೀಬೋರ್ಡ್</translation> <translation id="2964193600955408481">ವೈ-ಫೈ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</translation> -<translation id="2964313852984024865">ಸಂಪಾದಿಸು</translation> +<translation id="2964313852984024865">ಎಡಿಟ್</translation> <translation id="2966459079597787514">ಸ್ವೀಡಿಶ್ ಕೀಬೋರ್ಡ್</translation> <translation id="2966598748518102999">Google ಗೆ "ಸರಿ Google" ಎಂಬ ಶಬ್ದ ಕಳುಹಿಸಿ, ಆ ಮೂಲಕ ಕೆಲವು ನಿಮಿಷಗಳ ನಂತರ ಧ್ವನಿ ಹುಡುಕಾಟವನ್ನು ಸುಧಾರಿಸಿ.</translation> <translation id="2967544384642772068">ಸ್ಥಗಿತಗೊಳಿಸು</translation> @@ -1553,13 +1551,14 @@ <translation id="3047477924825107454">ಮಕ್ಕಳಿಗೆ ಈ ಖಾತೆಯನ್ನು <ph name="MANAGER_EMAIL" /> ಅವರು ನಿರ್ವಹಿಸುತ್ತಿದ್ದಾರೆ</translation> <translation id="304826556400666995">ಟ್ಯಾಬ್ಗಳನ್ನು ಅನ್ಮ್ಯೂಟ್ ಮಾಡಿ</translation> <translation id="3053013834507634016">ಪ್ರಮಾಣಪತ್ರ ಕೀಲಿ ಬಳಕೆ</translation> -<translation id="3056670889236890135">ಪ್ರಸ್ತುತ ಬಳಕೆದಾರನಿಗಾಗಿ ಮಾತ್ರ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೀವು ಸಂಪಾದಿಸಬಹುದು. ಅದಕ್ಕಾಗಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಸಂಪಾದಿಸಲು ಈ ಬಳಕೆದಾರನಿಗೆ ಬದಲಿಸಿ.</translation> +<translation id="3056670889236890135">ಪ್ರಸ್ತುತ ಬಳಕೆದಾರನಿಗಾಗಿ ಮಾತ್ರ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೀವು ಸಂಪಾದಿಸಬಹುದು. ಅದಕ್ಕಾಗಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಲು ಈ ಬಳಕೆದಾರನಿಗೆ ಬದಲಿಸಿ.</translation> <translation id="3057592184182562878">ಫೈಲ್ ನಿರ್ವಾಹಕದಲ್ಲಿ MTP ಸಾಧನಗಳನ್ನು ಫೈಲ್ ಸಂಗ್ರಹಣೆ ಎಂಬಂತೆ ತೋರಿಸಿ.</translation> <translation id="3057861065630527966">ನಿಮ್ಮ ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳನ್ನು ಬ್ಯಾಕಪ್ ಮಾಡಿ</translation> <translation id="3058212636943679650">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಂ ಅನ್ನು ನೀವು ಎಂದಿಗಾದರೂ ಪುನಃಸ್ಥಾಪಿಸುವ ಅಗತ್ಯ ಒದಗಿದಲ್ಲಿ ನಿಮಗೆ ಪುನರ್ಪ್ರಾಪ್ತಿಯ SD ಕಾರ್ಡ್ ಅಥವಾ USB ಮೆಮೊರಿ ಸ್ಟಿಕ್ನ ಅಗತ್ಯವಿರುತ್ತದೆ.</translation> <translation id="305932878998873762">HTTP ಗಾಗಿನ ಸರಳ ಕ್ಯಾಚ್ ಒಂದು ಹೊಸ ಕ್ಯಾಚ್ ಆಗಿದೆ. ಇದು ಡಿಸ್ಕ್ ಸ್ಪೇಸ್ ವಿಂಗಡನೆಗಾಗಿ ಫೈಲ್ಸಿಸ್ಟಂ ಮೇಲೆ ಅವಲಂಬನೆಗೊಂಡಿದೆ.</translation> <translation id="3062606427884046423">Chrome ಮಾಧ್ಯಮ ಪ್ರಕಟಣೆಗಳಿಗೆ Android MediaStyle ಪ್ರಕಟಣೆಗಳನ್ನು ಬಳಸಿ.</translation> -<translation id="3063844757726132584">ಈ ಹ್ಯಾಂಡಿ ಲಾಂಚರ್ನಿಂದ ನಿಮ್ಮ ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಿ. ಆಟಗಳನ್ನು ಆಡಿ, ವೀಡಿಯೊ ಚಾಟ್ ಮಾಡಿ, ಸಂಗೀತವನ್ನು ಆಲಿಸಿ, ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನು ಸಂಪಾದಿಸಿ, ಅಥವಾ ಇನ್ನಷ್ಟು ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ.</translation> +<translation id="3063224679438508013">ಟಿಪ್ಪಣಿ-ಅಪ್ಲಿಕೇಶನ್ ಸ್ವಯಂ-ಆರಂಭಿಸಿ</translation> +<translation id="3063844757726132584">ಈ ಹ್ಯಾಂಡಿ ಲಾಂಚರ್ನಿಂದ ನಿಮ್ಮ ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಿ. ಆಟಗಳನ್ನು ಆಡಿ, ವೀಡಿಯೊ ಚಾಟ್ ಮಾಡಿ, ಸಂಗೀತವನ್ನು ಆಲಿಸಿ, ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ, ಅಥವಾ ಇನ್ನಷ್ಟು ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ.</translation> <translation id="3064388234319122767">ಲಿಪ್ಯಂತರಣ (zdravo → здраво)</translation> <translation id="3065041951436100775">ಟ್ಯಾಬ್ ನಾಶಪಡಿಸಿದ ಪ್ರತಿಕ್ರಿಯೆ.</translation> <translation id="3065140616557457172">ಹುಡುಕಲು ನಮೂದಿಸಿ ಅಥವಾ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಲು URL ಅನ್ನು ನಮೂದಿಸಿ- ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">ಪಾಸ್ವರ್ಡ್ಗಳಿಗಾಗಿ Google Smart Lock</translation> <translation id="317583078218509884">ಪುಟವನ್ನು ಮರುಲೋಡ್ ಮಾಡಿದ ನಂತರ ಹೊಸ ಸೈಟ್ ಅನುಮತಿಗಳ ಸೆಟ್ಟಿಂಗ್ಗಳು ಪರಿಣಾಮಬೀರುತ್ತದೆ.</translation> <translation id="3177048931975664371">ಪಾಸ್ವರ್ಡ್ ಮರೆಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ</translation> +<translation id="3177909033752230686">ಪುಟದ ಭಾಷೆ:</translation> <translation id="3180365125572747493">ಈ ಪ್ರಮಾಣಪತ್ರ ಫೈಲ್ ಅನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲು ದಯವಿಟ್ಟು ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ.</translation> <translation id="3183139917765991655">ಪ್ರೊಫೈಲ್ ಆಮದುದಾರ</translation> <translation id="3184560914950696195">$1 ಗೆ ಉಳಿಸಬೇಡಿ. ಸಂಪಾದಿಸಲಾದ ಚಿತ್ರಗಳನ್ನು ಡೌನ್ಲೋಡ್ಗಳ ಫೋಲ್ಡರ್ನಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ.</translation> @@ -1892,7 +1892,7 @@ <translation id="348771913750618459">iframe-ಆಧಾರಿತ ಸೈನ್-ಇನ್ ಹರಿವುಗಳು</translation> <translation id="348780365869651045">AppCache ಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ...</translation> <translation id="3488065109653206955">ಭಾಗಶಃ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation> -<translation id="3489147694311384940">ಫೈಲ್ ಸಿಸ್ಟಮ್ API (ಮತ್ತು ಫೈಲ್ ನಿರ್ವಾಹಕ) ನಲ್ಲಿ MTP ಬರವಣಿಗೆ ಬೆಂಬಲ. ಸ್ಥಳದಲ್ಲಿನ ಸಂಪಾದನೆ ಕಾರ್ಯಾಚರಣೆಗಳು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ.</translation> +<translation id="3489147694311384940">ಫೈಲ್ ಸಿಸ್ಟಮ್ API (ಮತ್ತು ಫೈಲ್ ನಿರ್ವಾಹಕ) ನಲ್ಲಿ MTP ಬರವಣಿಗೆ ಬೆಂಬಲ. ಸ್ಥಳದಲ್ಲಿನ ಎಡಿಟ್ ಕಾರ್ಯಾಚರಣೆಗಳು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ.</translation> <translation id="3489444618744432220">ನೀತಿಯ ಮೂಲಕ ಅನುಮತಿಸಲಾಗಿದೆ</translation> <translation id="3493881266323043047">ವಾಯಿದೆ</translation> <translation id="3494768541638400973">Google ಜಪಾನೀಸ್ ಇನ್ಪುಟ್ (ಜಪಾನೀಸ್ ಕೀಬೋರ್ಡ್ಗಾಗಿ)</translation> @@ -1997,6 +1997,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> ನಿಂದ ಡೌನ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ತೋರಿಸು</translation> <translation id="3613422051106148727">ಹೊಸ ಟ್ಯಾಬ್ನಲ್ಲಿ &ತೆರೆಯಿರಿ</translation> +<translation id="3616113530831147358">ಆಡಿಯೋ</translation> <translation id="3616741288025931835">ಬ್ರೌಸಿಂಗ್ ಡೇಟಾವನ್ನು &ತೆರವುಗೊಳಿಸಿ...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />” ನೋಡಿ</translation> <translation id="3620292326130836921">ಎಲ್ಲವನ್ನೂ ಬ್ಯಾಕಪ್ ಮಾಡಲಾಗಿದೆ!</translation> @@ -2293,7 +2294,6 @@ <translation id="3994878504415702912">&ಝೂಮ್</translation> <translation id="3995964755286119116">Adobe ಫ್ಲ್ಯಾಶ್ ಪ್ಲೇಯರ್ ಕ್ಯಾಮರಾ ಸೆಟ್ಟಿಂಗ್ಗಳು ವಿಭಿನ್ನವಾಗಿವೆ.</translation> <translation id="39964277676607559">javascript '<ph name="RELATIVE_PATH" />' ಅನ್ನು ವಿಷಯ ಸ್ಕ್ರಿಪ್ಟ್ಗಾಗಿ ಲೋಡ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation> -<translation id="3996912167543967198">ಮರುಹೊಂದಿಸಲಾಗುತ್ತಿದೆ...</translation> <translation id="3997015411467176489">ಪ್ರಾಯೋಗಿಕ ಕ್ಯಾನ್ವಾಸ್ ವೈಶಿಷ್ಟ್ಯಗಳು</translation> <translation id="4002066346123236978">ಶೀರ್ಷಿಕೆ</translation> <translation id="40027638859996362">ಪದ ಚಲನೆ</translation> @@ -2311,7 +2311,7 @@ <translation id="4035758313003622889">&ಕಾರ್ಯ ನಿರ್ವಾಹಕ</translation> <translation id="4037084878352560732">ಕುದುರೆ</translation> <translation id="4037463823853863991">Android ಗಾಗಿ ಪ್ರವೇಶಿಸುವಿಕೆ ಟ್ಯಾಬ್ ಸ್ವಿಚರ್ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation> -<translation id="4037889604535939429">ವ್ಯಕ್ತಿಯನ್ನು ಸಂಪಾದಿಸಿ</translation> +<translation id="4037889604535939429">ವ್ಯಕ್ತಿಯನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="4044260751144303020">ಹೊಂದಿಸಲಾದ ಸ್ಥಾನ ಅಂಶಗಳಿಗಾಗಿ ಸಂಯೋಜಿಸಲಾಗುತ್ತಿದೆ.</translation> <translation id="4044612648082411741">ನಿಮ್ಮ ಪ್ರಮಾಣಪತ್ರ ಪಾಸ್ವರ್ಡ್ ನಮೂದಿಸಿ</translation> <translation id="404493185430269859">ಡೀಫಾಲ್ಟ್ ಹುಡುಕಾಟ ಎಂಜಿನ್</translation> @@ -2326,7 +2326,7 @@ <translation id="406070391919917862">ಹಿನ್ನೆಲೆ ಅಪ್ಲಿಕೇಶನ್</translation> <translation id="4062251648694601778">ನಿಮ್ಮ <ph name="SHORT_PRODUCT_NAME" /> ಸಾಧನವನ್ನು ಆನಂದಿಸಿ. ಪ್ರಶ್ನೆಗಳಿವೆಯೇ? ಸ್ಥಿತಿ ಟ್ರೇನಲ್ಲಿರುವ "?" ಚಿಹ್ನೆಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ ಯಾವಾಗ ಬೇಕಾದರೂ ನೀವು ಸಹಾಯವನ್ನು ಪಡೆದುಕೊಳ್ಳಬಹುದು.</translation> <translation id="4065876735068446555">ನೀವು ಬಳಸುತ್ತಿರುವ ನೆಟ್ವರ್ಕ್ (<ph name="NETWORK_ID" />) ನ ಲಾಗಿನ್ ಪುಟಕ್ಕೆ ಭೇಟಿ ನೀಡಬೇಕಾದ ಅಗತ್ಯವಿದೆ.</translation> -<translation id="4068506536726151626">ಈ ಪುಟವು ನಿಮ್ಮ ಸ್ಥಾನವನ್ನು ನಿಗಾ ಇರಿಸುತ್ತಿರುವ ಮುಂದಿನ ಸೈಟ್ಗಳಿಂದ ಮೂಲಾಂಶಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:</translation> +<translation id="4068506536726151626">ಈ ಪುಟವು ನಿಮ್ಮ ಸ್ಥಾನದ ನಿಗಾ ಇರಿಸುತ್ತಿರುವ ಈ ಕೆಳಗಿನ ಸೈಟ್ಗಳ ಮೂಲಾಂಶಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:</translation> <translation id="4070370845051020638">ಕ್ಯಾಂಟೋನೀಸ್ ಇನ್ಪುಟ್ ವಿಧಾನ</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: ಸೈನ್ ಇನ್ ದೋಷ</translation> <translation id="4072248638558688893">ತಮಿಳು ಕೀಬೋರ್ಡ್ (ಫೋನೆಟಿಕ್)</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">ಪುಶ್ ಸಂದೇಶಗಳು</translation> <translation id="4146026355784316281">ಯಾವಾಗಲೂ ಸಿಸ್ಟಂ ವೀಕ್ಷಕದ ಜೊತೆಗೆ ತೆರೆಯಿರಿ</translation> <translation id="4146175323503586871">ನಿಮ್ಮ Chrome ಸಾಧನ ಈ ಕೊಡುಗೆಗೆ ಅರ್ಹವೇ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಲು <ph name="SERVICE_NAME" /> ಬಯಸುತ್ತದೆ. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">ಪ್ರದರ್ಶನ</translation> <translation id="4151403195736952345">ಜಾಗತಿಕ ಡಿಫಾಲ್ಟ್ ಬಳಸಿ (ಪತ್ತೆ ಮಾಡಿ)</translation> <translation id="4152177296285305182">ನಿಮ್ಮ ಪಾಸ್ಫ್ರೇಸ್ನೊಂದಿಗೆ ಕೆಲವರು ಮಾತ್ರ ನಿಮ್ಮ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾದ ಡೇಟಾವನ್ನು ಓದಬಹುದು. ಪಾಸ್ಫ್ರೇಸ್ ಅನ್ನು Google ನಿಂದ ಕಳುಹಿಸಿಲ್ಲ ಅಥವಾ ಸಂಗ್ರಹಿಸಲಾಗಿಲ್ಲ. ನಿಮ್ಮ ಪಾಸ್ಫ್ರೇಸ್ ಅನ್ನು ನೀವು ಮರೆತುಹೋದಲ್ಲಿ, ನೀವು ಸಿಂಕ್ ಅನ್ನು ಮರುಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 ಟ್ಯಾಬ್}one{# ಟ್ಯಾಬ್ಗಳು}other{# ಟ್ಯಾಬ್ಗಳು}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">ಸ್ಕ್ರೀನ್ಶಾಟ್</translation> <translation id="4250680216510889253">ಇಲ್ಲ</translation> <translation id="4253168017788158739">ಟಿಪ್ಪಣಿ</translation> +<translation id="4254813446494774748">ಅನುವಾದ ಭಾಷೆ:</translation> <translation id="425573743389990240">ವ್ಯಾಟ್ಗಳಲ್ಲಿ ಬ್ಯಾಟರಿ ಡಿಸ್ಚಾರ್ಜ್ ದರ (ನಕಾರಾತ್ಮಕ ಮೌಲ್ಯ ಎಂದರೆ ಬ್ಯಾಟರಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ ಎಂದರ್ಥ)</translation> <translation id="4256316378292851214">ಇದರಂತೆ ವೀಡಿಯೊ ಉ&ಳಿಸಿ...</translation> <translation id="4258348331913189841">ಫೈಲ್ ಸಿಸ್ಟಂಗಳು</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">ಓಹ್, ಸಿಂಕ್ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ.</translation> <translation id="4366509400410520531">ನಿಮ್ಮಿಂದ ಅನುಮತಿಸಲಾಗಿದೆ</translation> <translation id="4367782753568896354">ನಮಗೆ ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ:</translation> +<translation id="436904870295243580">ಇನ್ನಷ್ಟು ಟಿಪ್ಪಣಿ-ತೆಗೆದುಕೊಳ್ಳುವ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಹುಡುಕಿ</translation> <translation id="4370975561335139969">ನೀವು ನಮೂದಿಸಿದ ಇಮೇಲ್ ಮತ್ತು ಪಾಸ್ವರ್ಡ್ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ</translation> <translation id="437184764829821926">ಸುಧಾರಿತ ಫಾಂಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="4372884569765913867">1x1</translation> @@ -2561,7 +2564,7 @@ <translation id="441837933428923414">ವಿಂಡೋ ಆವರ್ತನೆ UI ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation> <translation id="4419409365248380979">ಕುಕೀಗಳನ್ನು ಹೊಂದಿಸಲು <ph name="HOST" /> ಯಾವಾಗಲೂ ಅನುಮತಿಸುತ್ತದೆ</translation> <translation id="4421932782753506458">ಫ್ಲುಫಿ</translation> -<translation id="4422347585044846479">ಈ ಪುಟಕ್ಕಾಗಿ ಬುಕ್ಮಾರ್ಕ್ ಅನ್ನು ಸಂಪಾದಿಸಿ</translation> +<translation id="4422347585044846479">ಈ ಪುಟಕ್ಕಾಗಿ ಬುಕ್ಮಾರ್ಕ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="4422428420715047158">DOMAIN:</translation> <translation id="4423482519432579560">&ಕಾಗುಣಿತಪರೀಕ್ಷೆ</translation> <translation id="4425149324548788773">ನನ್ನ ಡ್ರೈವ್</translation> @@ -2666,7 +2669,7 @@ <translation id="4582447636905308869">Google ಇನ್ಪುಟ್ ಪರಿಕರಗಳ HMM ಎಂಜಿನ್ ಆಧರಿಸಿರುವ ಹೊಸ ಕೊರಿಯನ್ IME.</translation> <translation id="4582563038311694664">ಎಲ್ಲ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ</translation> <translation id="4583537898417244378">ಅಮಾನ್ಯ ಅಥವಾ ದೋಷಯುಕ್ತ ಫೈಲ್</translation> -<translation id="4585793705637313973">ಪುಟ ಸಂಪಾದಿಸಿ</translation> +<translation id="4585793705637313973">ಪುಟ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="4589268276914962177">ಹೊಸ ಟರ್ಮಿನಲ್</translation> <translation id="4590324241397107707">ಡೇಟಾಬೇಸ್ ಸಂಗ್ರಹಣೆ</translation> <translation id="4593021220803146968"><ph name="URL" /> ಗೆ &ಹೋಗಿ</translation> @@ -3217,6 +3220,7 @@ <translation id="5324674707192845912">ದೂರದಿಂದ ಗುರುತಿಸಲು, ನಾಶಪಡಿಸಲು ಮತ್ತು ಸಾಧನವನ್ನು ಲಾಕ್ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು Google ಜೊತೆಗೆ ಈ <ph name="DEVICE_TYPE" /> ಸಾಧನವನ್ನು ರದ್ದುಗೊಳಿಸಲಿರುವಿರಿ. ಇದಕ್ಕೆ ರೀಬೂಟ್ ಅಗತ್ಯವಿದೆ. ನೀವು ಮುಂದುವರಿಯಲು ಬಯಸುವಿರಾ?</translation> <translation id="5324780743567488672">ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಬಳಸುವ ಮೂಲಕ ಸಮಯ ವಲಯವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹೊಂದಿಸಿ</translation> <translation id="5325120507747984426">ಅವಲೋಕನವನ್ನು ಪ್ರವೇಶಿಸುವಾಗ/ನಿರ್ಗಮಿಸುವಾಗ ಮತ್ತು ಅವಲೋಕನ ಅವಧಿಗಳ ನಡುವೆ ವಿಂಡೋಗಳ ಚಲನೆಯನ್ನು ತಗ್ಗಿಸಲು ಪ್ರಯತ್ನಿಸುವ ಅವಲೋಕನ ಮೋಡ್ನಲ್ಲಿ ಸ್ಥಿರ ವಿಂಡೋ ಆದೇಶಿಸುವಿಕೆಯನ್ನು ಬಳಸುತ್ತದೆ.</translation> +<translation id="5326182685622510062">2D ಕ್ಯಾನ್ವಾಸ್ಗಾಗಿ ಗ್ರಾಫಿಕ್ಸ್ ರೆಂಡರಿಂಗ್ ಪೈಪ್ಲೈನ್ನ ಅನೇಕ ಅನುಷ್ಠಾನಗಳಿವೆ. ಈ ವಿಭಿನ್ನ ಅನುಷ್ಠಾನಗಳು ವಿಭಿನ್ನ ಕಾರ್ಯನಿರ್ವಹಣೆ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಹೊಂದಿವೆ. ಈ ಫ್ಲ್ಯಾಗ್ ಆನ್ ಮಾಡುವುದರಿಂದ ಕಾರ್ಯನಿರ್ವಹಣೆಯನ್ನು ಹೆಚ್ಚಿಸುವುದಕ್ಕಾಗಿ ಕ್ಯಾನ್ವಾಸ್ ಅನ್ನು ಹೇಗೆ ಬಳಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಆಧರಿಸಿ ತ್ವರಿತವಾಗಿ ಈ ಅನುಷ್ಠಾನಗಳ ನಡುವೆ ಬದಲಾಯಿಸಲು ಕ್ಯಾನ್ವಾಸ್ 2D ಸಂದರ್ಭಗಳಿಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, GPU ಬಳಸುವ ಅನುಷ್ಠಾನಗಳಿಂದ ಅದನ್ನು ಬಳಸದ ಅನುಷ್ಠಾನಗಳಿಗೆ ಹೋಗುವುದು.</translation> <translation id="5327248766486351172">ಹೆಸರು</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&ಅಳಿಸು</translation> @@ -3349,7 +3353,6 @@ <translation id="54870580363317966">ಈ ಮೇಲ್ವಿಚಾರಣೆ ಬಳಕೆದಾರರಿಗಾಗಿ ಒಂದು ಅವತಾರ್ ಆಯ್ಕೆಮಾಡಿ.</translation> <translation id="5488468185303821006">ಅಜ್ಞಾತವಾಗಿ ಅನುಮತಿಸು</translation> <translation id="5489390182170331803">ಡಾಕ್ಯುಮೆಂಟ್ ಹಂತದ ಈವೆಂಟ್ ಕೇಳುಗರ ನಿಷ್ಕ್ರಿಯ ಡಿಫಾಲ್ಟ್</translation> -<translation id="5489789060051091748">ಮಾತನಾಡಲು ಆಯ್ಕೆ ಮಾಡಿ: ಹುಡುಕಾಟವನ್ನು ಹೋಲ್ಡ್ ಮಾಡಿ ಮತ್ತು ಏನಾದರೂ ಮಾತನಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ ಅಥವಾ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation> <translation id="549294555051714732">ಸ್ವಯಂತುಂಬುವಿಕೆ ಸಲಹೆಗಳಿಗೆ ಉಪಸ್ಟ್ರಿಂಗ್ ಹೊಂದಾಣಿಕೆ</translation> <translation id="5493996328530898436">ಹೊಸ ಆಡಿಯೋ ರೆಂಡರಿಂಗ್ ಮಿಶ್ರಣ ಕಾರ್ಯನೀತಿ</translation> <translation id="5494362494988149300">&ಮುಗಿಸಿದಾಗ ತೆರೆಯಿರಿ</translation> @@ -3428,7 +3431,7 @@ <translation id="5585912436068747822">ಸ್ವರೂಪಣೆಯು ವಿಫಲವಾಗಿದೆ</translation> <translation id="5588033542900357244">(<ph name="RATING_COUNT" />)</translation> <translation id="5592595402373377407">ಇನ್ನೂ ಸಾಕಷ್ಟು ಡೇಟಾ ಲಭ್ಯವಿಲ್ಲ.</translation> -<translation id="5595485650161345191">ವಿಳಾಸ ಸಂಪಾದಿಸಿ</translation> +<translation id="5595485650161345191">ವಿಳಾಸ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="5604324414379907186">ಯಾವಾಗಲೂ ಬುಕ್ಮಾರ್ಕ್ ಪಟ್ಟಿ ತೋರಿಸು</translation> <translation id="5605623530403479164">ಇತರ ಹುಡುಕಾಟದ ಇಂಜಿನ್ಗಳು</translation> <translation id="5605716740717446121">ನೀವು ಸರಿಯಾದ PIN ಅನ್ಲಾಕಿಂಗ್ ಕೀಲಿಯನ್ನು ನಮೂದಿಸದಿದ್ದರೆ ನಿಮ್ಮ SIM ಕಾರ್ಡ್ ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. ಉಳಿದಿರುವ ಪ್ರಯತ್ನಗಳು: <ph name="TRIES_COUNT" /></translation> @@ -3520,11 +3523,11 @@ <translation id="5729996640881880439">ಕ್ಷಮಿಸಿ, ನಾವು ಈ ದೋಷಕ್ಕಾಗಿ ಕೋಡ್ ಅನ್ನು ತೋರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation> <translation id="5731247495086897348">ಅಂ&ಟಿಸಿ ಮತ್ತು ಹೋಗಿ</translation> <translation id="5731751937436428514">ವಿಯೆಟ್ನಾಮಿಸ್ ಇನ್ಪುಟ್ ವಿಧಾನ (VIQR)</translation> -<translation id="5732790216998904518">ಪರೀಕ್ಷಾರ್ಥ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಡಾಕ್ಸ್, ಶೀಟ್ಗಳು ಮತ್ತು ಸ್ಲೈಡ್ಗಳಿಗೆ Office ಸಂಪಾದನೆ.</translation> +<translation id="5732790216998904518">ಪರೀಕ್ಷಾರ್ಥ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಡಾಕ್ಸ್, ಶೀಟ್ಗಳು ಮತ್ತು ಸ್ಲೈಡ್ಗಳಿಗೆ Office ಎಡಿಟ್.</translation> <translation id="5734362860645681824">ಸಂವಹನಗಳು</translation> <translation id="5739458112391494395">ಅತ್ಯಂತ ದೊಡ್ಡದು</translation> <translation id="5740331643563157105"><ph name="LANGUAGE_1" />, <ph name="LANGUAGE_2" /> ಮತ್ತು <ph name="NUM_ADDITIONAL_LANGUAGES" /> ಇತರೆ</translation> -<translation id="5741245087700236983"><ph name="PROFILE_NAME" />: ಸಂಪಾದಿಸಲು ಆಯ್ಕೆಮಾಡಿ</translation> +<translation id="5741245087700236983"><ph name="PROFILE_NAME" />: ಎಡಿಟ್ ಮಾಡಲು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="5741454054957165976">ಹೊಸ ಆವೃತ್ತಿ WebFonts ಲೋಡ್ ಆಗುವಿಕೆಗೆ ಬಳಕೆದಾರ-ಏಜೆಂಟ್ ಮಧ್ಯಸ್ಥಿಕೆ ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation> <translation id="5742598604154146709">ಬಹು ಫೈಲ್ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಯಾವುದೇ ಸೈಟ್ಗೆ ಅನುಮತಿಸಬೇಡಿ.</translation> <translation id="574392208103952083">ಮಧ್ಯಮ</translation> @@ -3707,7 +3710,6 @@ <translation id="5991049340509704927">ವರ್ಧಿಸು</translation> <translation id="5991774521050363748">ವೆಬ್ ಅಧಿಸೂಚನೆಗಳಿಗೆ ಕಸ್ಟಮ್ ವಿನ್ಯಾಸಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. ಅವುಗಳು ಸೂಕ್ಷ್ಮ ವಿನ್ಯಾಸದ ಸುಧಾರಣೆಗಳನ್ನು ಹೊಂದಿದ್ದು, ಬೇರೆ ಸಂದರ್ಭಗಳಲ್ಲಿ ಅವುಗಳು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ.</translation> <translation id="5993332328670040093">ನಿಮ್ಮ ಡೇಟಾ ಬಳಕೆಯನ್ನು ಇನ್ನು ಮುಂದೆ ಮಾಪನ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation> -<translation id="5996258716334177896">ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸರಿಯಾಗಿ ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ. ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳು ಲಭ್ಯವಿಲ್ಲದಿರಬಹುದು. ಆ ಪ್ರೊಫೈಲ್ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆಯೇ ಮತ್ತು ಅದರ ವಿಷಯಗಳನ್ನು ನೀವು ಓದಲು ಮತ್ತು ಬರೆಯಲು ಅನುಮತಿ ಹೊಂದಿದ್ದೀರಿ ಎಂಬುವುದನ್ನು ದಯವಿಟ್ಟು ಪರಿಶೀಲಿಸಿ.</translation> <translation id="6001799583597751002">ಪಿನ್ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> ತಾನಾಗಿಯೇ ಅಪ್ಡೇಟ್ ಹೊಂದಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation> <translation id="6003294706906016758">ಹೋಸ್ಟ್ ಮಾಡಲಾದ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಶೈಲಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ</translation> @@ -3980,7 +3982,7 @@ <translation id="6401445054534215853">ಶೆಲ್ಫ್ ಐಟಂ 1</translation> <translation id="6401495857465634232">ಹೊಸ ಅನುವಾದ UX</translation> <translation id="6402990355583388081">ಮೌಸ್ಓವರ್ ಈವೆಂಟ್ ಅನ್ನು ಅನುಭವಿಸಲು ನಿಮ್ಮ ಬೆರಳನ್ನು ಪರದೆಯ ಮೇಲೆ ಇರಿಸಿಕೊಳ್ಳುವ ಮೂಲಕ ಹೂವರ್ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation> -<translation id="6404511346730675251">ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಸಂಪಾದಿಸಿ</translation> +<translation id="6404511346730675251">ಬುಕ್ಮಾರ್ಕ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="6406303162637086258">ಬ್ರೌಸರ್ ಮರುಪ್ರಾರಂಭ ಸಿಮ್ಯುಲೇಟ್ ಮಾಡು</translation> <translation id="6406506848690869874">ಸಿಂಕ್</translation> <translation id="6407080938771313237">ಪ್ರೊಜೆಕ್ಷನ್ ಟಚ್ HUD</translation> @@ -4111,7 +4113,7 @@ <translation id="6566142449942033617">'<ph name="PLUGIN_PATH" />' ಗಾಗಿ ಪ್ಲಗಿನ್ ಮಾಡಲು ಲೋಡ್ ಮಾಡಿಲ್ಲ.</translation> <translation id="6567688344210276845">ಪುಟದ ಕ್ರಿಯೆಗಾಗಿ ಐಕಾನ್ '<ph name="ICON" />' ಅನ್ನು ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ.</translation> <translation id="6569050677975271054">ಸ್ಥಿರ ಕಪ್ಪುಪಟ್ಟಿ ಮಾತ್ರ</translation> -<translation id="6571070086367343653">ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಸಂಪಾದಿಸು</translation> +<translation id="6571070086367343653">ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="657402800789773160">ಈ ಪುಟವನ್ನು &ರೀಲೋಡ್ ಮಾಡಿ</translation> <translation id="6575134580692778371">ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿಲ್ಲ</translation> <translation id="6575251558004911012">ನಿಮ್ಮ ಕ್ಯಾಮರಾಗೆ ಸೈಟ್ನ ಪ್ರವೇಶ ಅಗತ್ಯವಿರುವಾಗ ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation> @@ -4156,7 +4158,6 @@ <translation id="6637362044401670482">ವರ್ಚುವಲ್ ಕೀಬೋರ್ಡ್ ಓವರ್ಸ್ಕ್ರಾಲ್ ಬೆಂಬಲವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation> <translation id="6639554308659482635">SQLite ಮೆಮೊರಿ</translation> <translation id="6643016212128521049">ತೆರವುಗೊಳಿಸಿ</translation> -<translation id="6644756108386233011">ಬದಲಿಸಿದ <ph name="IDS_SHORT_PRODUCT_NAME" /> ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮರುಹೊಂದಿಸುವುದೇ?</translation> <translation id="6647228709620733774">Netscape ಪ್ರಮಾಣಪತ್ರ ಪ್ರಾಧಿಕಾರ ಹಿಂತೆಗೆದುಕೊಳ್ಳುವಿಕೆ URL</translation> <translation id="6647838571840953560">ಪ್ರಸ್ತುತ <ph name="CHANNEL_NAME" /> ನಲ್ಲಿ</translation> <translation id="6649018507441623493">ಒಂದು ಕ್ಷಣ...</translation> @@ -4264,8 +4265,7 @@ <translation id="6810613314571580006">ಸಂಗ್ರಹಿಸಲಾದ ರುಜುವಾತುಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳುವ ಮೂಲಕ ವೆಬ್ಸೈಟ್ಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಿ. ವೈಶಿಷ್ಟ್ಯವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ವೆಬ್ಸೈಟ್ಗೆ ಸೈನ್ ಇನ್ ಮಾಡುವ ಮೊದಲು ಪ್ರತಿ ಬಾರಿಯೂ ನಿಮಗೆ ದೃಢೀಕರಿಸಲು ಕೇಳಲಾಗುವುದು.</translation> <translation id="6812349420832218321">ಮೂಲದಂತೆ <ph name="PRODUCT_NAME" /> ಅನ್ನು ಚಾಲನೆಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation> <translation id="6812841287760418429">ಬದಲಾವಣೆಗಳನ್ನು ಇರಿಸು</translation> -<translation id="6815353853907306610">ನಿಮ್ಮ ಗಮನಕ್ಕೆ ಬಾರದೆಯೇ ನಿಮ್ಮ ಬ್ರೌಸರ್ ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿರಬಹುದು ಎಂಬುದನ್ನು <ph name="IDS_SHORT_PRODUCT_NAME" /> ಪತ್ತೆ ಹಚ್ಚಿದೆ. ನೀವು ಅವುಗಳನ್ನು ಮೂಲ ಡೀಫಾಲ್ಟ್ಗಳಿಗೆ ಮರುಹೊಂದಿಸಲು ಬಯಸುವಿರಾ?</translation> -<translation id="6815551780062710681">ಸಂಪಾದಿಸು</translation> +<translation id="6815551780062710681">ಎಡಿಟ್</translation> <translation id="6817358880000653228">ಈ ಸೈಟ್ಗಾಗಿ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ:</translation> <translation id="6820008762872335722">ಕೇಳಲು ಮರುಹೊಂದಿಸಿ</translation> <translation id="6820687829547641339">Gzip ಸಂಕ್ಷೇಪಿಸಿದ tar ಆರ್ಕೈವ್</translation> @@ -4382,6 +4382,7 @@ <translation id="6980956047710795611">ಹೊಸ ಪಾಸ್ವರ್ಡ್ಗೆ ಎಲ್ಲ Chrome OS ಡೇಟಾವನ್ನು ಸ್ಥಾನಾಂತರಿಸಿ (ಹಿಂದಿನ ಪಾಸ್ವರ್ಡ್ ಅಗತ್ಯವಿದೆ)</translation> <translation id="6981982820502123353">ಪ್ರವೇಶ</translation> <translation id="6981992744085917617">ನಿಮ್ಮ ಖಾತೆಗೆ ಮರಳಿ ಲಾಗ್ ಇನ್ ಮಾಡಲು ನೀವು ಬಳಸಬೇಕೆಂದಿರುವ ವಿಧಾನವನ್ನು ಆರಿಸಿ:</translation> +<translation id="698231206551913481">ಒಮ್ಮೆ ಈ ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಿದಾಗ ಈ ಬಳಕೆದಾರರೊಂದಿಗೆ ಸಂಯೋಜಿತವಾಗಿರುವ ಎಲ್ಲಾ ಫೈಲ್ಗಳು ಮತ್ತು ಸ್ಥಳೀಯ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> ನಿಂದ ಪ್ರಿಂಟರ್ ಪತ್ತೆಯಾಗಿದೆ</translation> <translation id="6983783921975806247">ನೋಂದಾಯಿತ OID</translation> <translation id="6983991971286645866">ಎಲ್ಲಾ ಸಂಪಾದನೆಗಳನ್ನು $1 ಗೆ ಉಳಿಸಲಾಗುವುದು.</translation> @@ -4439,7 +4440,7 @@ <translation id="7039326228527141150"><ph name="VENDOR_NAME" /> ರಿಂದ USB ಸಾಧನಗಳನ್ನು ಪ್ರವೇಶಿಸಿ</translation> <translation id="7039912931802252762">Microsoft Smart Card Logon</translation> <translation id="7042418530779813870">ಅಂಟಿ&ಸಿ ಮತ್ತು ಹುಡುಕಾಡಿ</translation> -<translation id="7045480833981818310">ಡಾಕ್ಸ್, ಶೀಟ್ಗಳು ಮತ್ತು ಸ್ಲೈಡ್ಗಳಿಗೆ Office ಸಂಪಾದನೆ</translation> +<translation id="7045480833981818310">ಡಾಕ್ಸ್, ಶೀಟ್ಗಳು ಮತ್ತು ಸ್ಲೈಡ್ಗಳಿಗೆ Office ಎಡಿಟ್</translation> <translation id="7047998246166230966">ಪಾಯಿಂಟರ್</translation> <translation id="7048141481140415714">TouchView ಗರಿಷ್ಠಗೊಳಿಸುವ ಮೋಡ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಲು Ctrl+Alt+Shift+8 ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ.</translation> <translation id="7051943809462976355">ಮೌಸ್ಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ...</translation> @@ -4467,6 +4468,7 @@ <translation id="7073555242265688099">ನೀವು ಇತರ Chrome ಸಾಧನಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಅವುಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತದೆ, ಈ ಮೂಲಕ ನಿಮ್ಮ ಫೋನ್ ಅವುಗಳನ್ನು ಸಹ ಅನ್ಲಾಕ್ ಮಾಡುತ್ತದೆ.</translation> <translation id="707392107419594760">ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ ಆಯ್ಕೆಮಾಡಿ:</translation> <translation id="7075513071073410194">RSA ಎನ್ಕ್ರಿಪ್ಶನ್ನೊಂದಿಗೆ PKCS #1 MD5</translation> +<translation id="7075625805486468288">HTTPS/SSL ಪ್ರಮಾಣಪತ್ರಗಳು ಮತ್ತು ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="7076293881109082629">ಸೈನ್ ಇನ್ ಮಾಡಲಾಗುತ್ತಿದೆ</translation> <translation id="7077829361966535409">ಪ್ರಸ್ತುತ ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ಸೈನ್-ಇನ್ ಪುಟವು ವಿಫಲವಾಗಿದೆ. ದಯವಿಟ್ಟು <ph name="GAIA_RELOAD_LINK_START" />ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ<ph name="GAIA_RELOAD_LINK_END" />, ಅಥವಾ ಬೇರೆಯ <ph name="PROXY_SETTINGS_LINK_START" />ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು<ph name="PROXY_SETTINGS_LINK_END" /> ಬಳಸಿ.</translation> <translation id="7077872827894353012">ನಿರ್ಲಕ್ಷಿಸಲಾದ ಪ್ರೊಟೊಕಾಲ್ ಹ್ಯಾಂಡಲರ್ಗಳು </translation> @@ -4497,7 +4499,7 @@ <translation id="7119389851461848805">ಪವರ್</translation> <translation id="7119832699359874134">ಅಮಾನ್ಯವಾದ CVC ಕೋಡ್. ಪರಿಶೀಲಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="7122169255686960726">ಇನ್ನಷ್ಟು ನಕಲುಗಳು</translation> -<translation id="7124398136655728606">Esc ಎಲ್ಲಾ ಪೂರ್ವ-ಸಂಪಾದನೆ ಬಫರ್ ಅನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ</translation> +<translation id="7124398136655728606">Esc ಎಲ್ಲಾ ಪೂರ್ವ-ಎಡಿಟ್ ಬಫರ್ ಅನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ</translation> <translation id="7126604456862387217">'<b><ph name="SEARCH_STRING" /></b>' - <em>ಡ್ರೈವ್ ಹುಡುಕಿ</em></translation> <translation id="7127980134843952133">ಡೌನ್ಲೋಡ್ ಇತಿಹಾಸ</translation> <translation id="7129050975168763580">ಪುಟ ಎಣಿಕೆ</translation> @@ -4514,7 +4516,6 @@ <translation id="7141105143012495934">ನಿಮ್ಮ ಖಾತೆ ವಿವರಗಳನ್ನು ಹಿಂಪಡೆಯಲು ಸಾಧ್ಯವಾಗದಿರುವುದರಿಂದ ಸೈನ್ ಇನ್ ವಿಫಲವಾಗಿದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ ಅಥವಾ ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="7143207342074048698">ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ</translation> <translation id="7144878232160441200">ಮರುಪ್ರಯತ್ನಿಸಿ</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಅದನ್ನು ಮರು-ಸಕ್ರಿಯಗೊಳಿಸಲು, ದಯವಿಟ್ಟು <ph name="CHROME_PLUGINS_LINK" /> ಗೆ ಹೋಗಿ.</translation> <translation id="715118844758971915">ಕ್ಲಾಸಿಕ್ ಮುದ್ರಕಗಳು</translation> <translation id="7154130902455071009">ನಿಮ್ಮ ಪ್ರಾರಂಭ ಪುಟವನ್ನು ಇದಕ್ಕೆ ಬದಲಾಯಿಸಿ: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">ಸರಳೀಕೃತ ಚೈನೀಸ್ ಆರಂಭದ ಚೈನೀಸ್ ಮೋಡ್ ಆಗಿದೆ</translation> @@ -4576,7 +4577,7 @@ <translation id="7243055093079293866">ಹೊಸ ಟ್ಯಾಬ್ ಮತ್ತು google.com ನಲ್ಲಿ "Ok Google" ಎಂದು ಹೇಳಿ</translation> <translation id="7243632151880336635">ತೆರವುಗೊಳಿಸು ಮತ್ತು ಸೈನ್ ಔಟ್ ಮಾಡು</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (ಅತ್ಯುತ್ತಮ)</translation> -<translation id="724691107663265825">ಈ ಸೈಟ್ನಲ್ಲಿ ಮುಂದೆ ಮಾಲ್ವೇರ್ ಎದುರಾಗಲಿದೆ</translation> +<translation id="724691107663265825">ಮುಂದಿರುವ ಸೈಟ್ನಲ್ಲಿ ಮಾಲ್ವೇರ್ ಇದೆ</translation> <translation id="725109152065019550">ಕ್ಷಮಿಸಿ, ನಿಮ್ಮ ಖಾತೆಯಲ್ಲಿರುವ ಬಾಹ್ಯ ಸಂಗ್ರಹಣೆಯನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ.</translation> <translation id="7252661675567922360">ಲೋಡ್ ಮಾಡಬೇಡ</translation> <translation id="7253521419891527137">&ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ</translation> @@ -4647,7 +4648,7 @@ <translation id="7347751611463936647">ಈ ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸಲು, "<ph name="EXTENSION_KEYWORD" />" ಅನ್ನು ಟೈಪ್ ಮಾಡಿ, ನಂತರ TAB, ನಂತರ ನಿಮ್ಮ ಆದೇಶ ಅಥವಾ ಹುಡುಕಾಟವನ್ನು ಟೈಪ್ ಮಾಡಿ.</translation> <translation id="7348093485538360975">ಆನ್ ಸ್ಕ್ರೀನ್ ಕೀಬೋರ್ಡ್</translation> <translation id="7348749398828259943">US ವರ್ಕ್ಮ್ಯಾನ್ ಅಂತರರಾಷ್ಟ್ರೀಯ ಕೀಬೋರ್ಡ್</translation> -<translation id="7352495173098919663">ಸಂಪಾದಿಸು</translation> +<translation id="7352495173098919663">ಎಡಿಟ್</translation> <translation id="7352651011704765696">ಯಾವುದೋ ತಪ್ಪು ಸಂಭವಿಸಿದೆ</translation> <translation id="7353651168734309780"><ph name="EXTENSION_NAME" /> ಗೆ ಹೊಸ ಅನುಮತಿಗಳ ಅಗತ್ಯವಿದೆ</translation> <translation id="7361039089383199231">$1 ಬೈಟ್ಗಳು</translation> @@ -4793,6 +4794,7 @@ <translation id="7540972813190816353">ನವೀಕರಣಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸುತ್ತಿರುವಾಗ ದೋಷವೊಂದು ಸಂಭವಿಸಿದೆ: <ph name="ERROR" /></translation> <translation id="7541121857749629630">ಚಿತ್ರ ವಿನಾಯಿತಿಗಳು</translation> <translation id="7543104066686362383">ಈ <ph name="IDS_SHORT_PRODUCT_NAME" /> ಸಾಧನದಲ್ಲಿ ಡೀಬಗ್ ಮಾಡುವಿಕೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> +<translation id="7543393759143837504">ನೀವು ಹುಡುತ್ತಿರುವುದು ದೊರೆಯದೇ ಇದ್ದರೆ <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome ಸಹಾಯ<ph name="END_LINK_CHROMIUM" />ಕ್ಕೆ ಹೋಗಿ.</translation> <translation id="7544853251252956727">ಜೋಡಿಸು</translation> <translation id="7545288882499673859">ಸುಧಾರಿತ ಒತ್ತಡ ನಿರ್ವಹಣೆಗೆ ಮೆಮೊರಿ ತ್ಯಜಿಸುವ ಕಾರ್ಯತಂತ್ರ</translation> <translation id="7545415673537747415"><ph name="BEGIN_LINK" />Google ಚಟುವಟಿಕೆ ನಿಯಂತ್ರಣಗಳಿಂದ<ph name="END_LINK" /> ಹುಡುಕಾಟ, ಜಾಹೀರಾತುಗಳು ಮತ್ತು ಇತರ Google ಸೇವೆಗಳನ್ನು ವೈಯಕ್ತೀಕರಿಸಲು ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು Google ಹೇಗೆ ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸಿ.</translation> @@ -4869,7 +4871,7 @@ <translation id="7646771353003624501">ಬ್ರೌಸರ್ ಎಚ್ಚರಗೊಳ್ಳಲು ಹಾಗೂ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಆಫ್ಲೈನ್ ಪುಟಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲೋಡ್ ಮಾಡಲು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.</translation> <translation id="7646821968331713409">ರಾಸ್ಟರ್ ಥ್ರೆಡ್ಗಳ ಸಂಖ್ಯೆ</translation> <translation id="7648048654005891115">ಕೀಮ್ಯಾಪ್ ಶೈಲಿ</translation> -<translation id="7648595706644580203">ವರ್ಚುಯಲ್ ಕೀಬೋರ್ಡ್ಗೆ ಗೆಸ್ಚರ್ ಸಂಪಾದನೆ.</translation> +<translation id="7648595706644580203">ವರ್ಚುಯಲ್ ಕೀಬೋರ್ಡ್ಗೆ ಗೆಸ್ಚರ್ ಎಡಿಟ್.</translation> <translation id="7648904521981277001">ಹೋಸ್ಟ್ ಮಾಡಲಾದ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ತ್ಯಜಿಸುವ ಅಧಿಸೂಚನೆ</translation> <translation id="7648992873808071793">ಈ ಸಾಧನದಲ್ಲಿ ಫೈಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ</translation> <translation id="7649070708921625228">ಸಹಾಯ</translation> @@ -5030,7 +5032,6 @@ <translation id="7879478708475862060">ಇನ್ಪುಟ್ ಮೋಡ್ ಅನುಸರಿಸಿ</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" ಈ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ವಿಸ್ತರಣೆಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ:</translation> <translation id="7881969471599061635">ಉಪಶೀರ್ಷಿಕೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು</translation> -<translation id="7884988936047469945">ಪ್ರಾಯೋಗಿಕ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯಗಳು</translation> <translation id="7885253890047913815">ಇತ್ತೀಚಿನ ಗಮ್ಯಸ್ಥಾನಗಳು</translation> <translation id="7887192723714330082">ಪರದೆಯು ಆನ್ ಆಗಿರುವಾಗ ಮತ್ತು ಅನ್ಲಾಕ್ ಮಾಡಿರುವಾಗ "Ok Google" ಗೆ ಪ್ರತಿಕ್ರಿಯಿಸಿ</translation> <translation id="7887334752153342268">ನಕಲು</translation> @@ -5098,6 +5099,7 @@ <translation id="7974067550340408553">Smart Lock ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡುವಾಗ ಪ್ರತಿ ಬಾರಿಯೂ ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿ ಸೂಚನೆಯನ್ನು ಪಡೆಯಿರಿ.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" /> ಬಳಸುವ ಮೂಲಕ ಮರುಪ್ರಯತ್ನಿಸು</translation> <translation id="7974936243149753750">ಓವರ್ಸ್ಕ್ಯಾನ್</translation> +<translation id="7976960358280528247">ವಿಂಡೋ ಆವರ್ತನೆ UI ಸಕ್ರಿಯೊಗಳಿಸಿ (Alt+Tab ಗೆ ವಿಶುವಲ್ ಪ್ರತಿಕ್ರಿಯೆ).</translation> <translation id="7977551819349545646">Chromebox ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ...</translation> <translation id="7978412674231730200">ಖಾಸಗಿ ಕೀಲಿ</translation> <translation id="7979036127916589816">ಸಿಂಕ್ ದೋಷ</translation> @@ -5122,6 +5124,7 @@ ವಿಸ್ತರಣೆ: <ph name="EXTENSION_FILE" /> ಮುಖ್ಯ ಫೈಲ್: <ph name="KEY_FILE" /> ನಿಮ್ಮ ಮುಖ್ಯ ಫೈಲ್ ಅನ್ನು ಸುರಕ್ಷಿತ ಸ್ಥಳದಲ್ಲಿಡಿ. ನಿಮ್ಮ ವಿಸ್ತರಣೆಯ ಹೊಸ ಆವೃತ್ತಿಗಳನ್ನು ರಚಿಸುವ ಅಗತ್ಯತೆ ಇದೆ.</translation> <translation id="799923393800005025">ವೀಕ್ಷಿಸಬಹುದು</translation> +<translation id="8000066093800657092">ನೆಟ್ವರ್ಕ್ ಇಲ್ಲ</translation> <translation id="8004582292198964060">ಬ್ರೌಸರ್</translation> <translation id="8007030362289124303">ಬ್ಯಾಟರಿ ಕಡಿಮೆ</translation> <translation id="8008356846765065031">ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಿ.</translation> @@ -5196,6 +5199,7 @@ <translation id="8116190140324504026">ಇನ್ನಷ್ಟು ಮಾಹಿತಿ...</translation> <translation id="8116483400482790018">ಕಸ್ಟಮ್ ಕಾಗುಣಿತ ನಿಘಂಟು</translation> <translation id="8116972784401310538">&ಬುಕ್ಮಾರ್ಕ್ ವ್ಯವಸ್ಥಾಪಕ</translation> +<translation id="8117838550640702864">ಟಿಪ್ಪಣಿ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> <translation id="8117957376775388318">ಡಾಯಿ ಇನ್ಪುಟ್ ವಿಧಾನ</translation> <translation id="8118860139461251237">ನಿಮ್ಮ ಡೌನ್ಲೋಡ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="8119572489781388874">ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮಾರ್ಪಡಿಸಿ</translation> @@ -5289,7 +5293,7 @@ <translation id="8226222018808695353">ನಿಷೇಧಿತ</translation> <translation id="8226742006292257240">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ಗೆ ಹೊಂದಿಸಲಾದ, ರ್ಯಾಂಡಮ್ ಆಗಿ ರಚಿಸಲಾದ TPM ಪಾಸ್ವರ್ಡ್ ಕೆಳಗಿದೆ:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ನ ದಾಳಿಕೋರರು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಮಾಹಿತಿಯನ್ನು (ಉದಾಹರಣೆಗೆ, ಫೋಟೋಗಳು, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮಾಹಿತಿಗಳು) ಕದಿಯಲು ಇಲ್ಲವೇ ಅಳಿಸಲು ಅಪಾಯಕಾರಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು.</translation> +<translation id="8230421197304563332"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ನಲ್ಲಿರುವ ದಾಳಿಕೋರರು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿರುವ ಮಾಹಿತಿ (ಉದಾಹರಣೆಗೆ, ಫೋಟೋಗಳು, ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಮಾಹಿತಿಗಳು) ಕದಿಯಲು ಇಲ್ಲವೇ ಅಳಿಸಲು ಅಪಾಯಕಾರಿ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರಬಹುದು.</translation> <translation id="8233254008506535819">ಬ್ರೌಸಿಂಗ್ ಡೇಟಾ ತೆರವುಗೊಳಿಸು ಸಂವಾದದಲ್ಲಿರುವ ಪ್ರಮುಖ ಸೈಟ್ಗಳನ್ನು ಶ್ವೇತಪಟ್ಟಿ ಆಯ್ಕೆಗೆ ಸೇರಿಸಿ.</translation> <translation id="8236231079192337250">ಪ್ರಿಂಟರ್ ಡ್ರೈವರ್ಗಳಿಗೆ Chrome ವೆಬ್ ಅಂಗಡಿ ಗ್ಯಾಲರಿ ಅಪ್ಲಿಕೇಶನ್</translation> <translation id="8238649969398088015">ಸಹಾಯ ಸಲಹೆ</translation> @@ -5479,7 +5483,6 @@ <translation id="8472623782143987204">ಹಾರ್ಡ್ವೇರ್-ಹಿಂತಿರುಗಿಸಿದೆ</translation> <translation id="8475313423285172237">ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿನ ಮತ್ತೊಂದು ಪ್ರೋಗ್ರಾಂ Chrome ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿಧಾನವನ್ನು ಬದಲಿಸಬಹುದಾದಂತಹ ವಿಸ್ತರಣೆಯನ್ನು ಸೇರಿಸಿದೆ.</translation> <translation id="8475647382427415476">Google ಡ್ರೈವ್ಗೆ ಇದೀಗ "<ph name="FILENAME" />" ಅನ್ನು ಸಿಂಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ. Google ಡ್ರೈವ್ ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುತ್ತದೆ.</translation> -<translation id="8476195663057048998">ತೆರವುಗೊಳಿಸು ಮತ್ತು ಮರುಹೊಂದಿಸು</translation> <translation id="8477241577829954800">ಬದಲಿ ಇರಿಸಲಾಗಿದೆ</translation> <translation id="8477384620836102176">&ಸಾಮಾನ್ಯ</translation> <translation id="8480417584335382321">ಪುಟ ಝೂಮ್:</translation> @@ -5709,7 +5712,6 @@ <translation id="8785135611469711856">ಪ್ರತಿಕ್ರಿಯೆರಹಿತ ಪ್ಲಗಿನ್</translation> <translation id="8787254343425541995">ಹಂಚಿತ ನೆಟ್ವರ್ಕ್ಗಳಿಗಾಗಿ ಪ್ರಾಕ್ಸಿಗಳನ್ನು ಅನುಮತಿಸಿ</translation> <translation id="878763818693997570">ಈ ಹೆಸರು ತುಂಬಾ ದೊಡ್ಡದಾಗಿದೆ</translation> -<translation id="8787865569533773240">ಬದಲಿಸಿದ <ph name="IDS_SHORT_PRODUCT_NAME" /> ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ</translation> <translation id="8789375980715484686">ಇತರ ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಿ</translation> <translation id="8791534160414513928">ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಟ್ರಾಫಿಕ್ನೊಂದಿಗೆ "ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಡ" ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸು</translation> <translation id="8795668016723474529">ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಸೇರಿಸಿ</translation> @@ -5845,7 +5847,7 @@ <translation id="8982248110486356984">ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ</translation> <translation id="8986267729801483565">ಡೌನ್ಲೋಡ್ ಮಾಡುವ ಸ್ಥಳ:</translation> <translation id="8986362086234534611">ಮರೆತುಹೋಗು</translation> -<translation id="8986494364107987395">ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳನ್ನು ಮತ್ತು Google ಗೆ ಕ್ರಾಶ್ ವರದಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸು</translation> +<translation id="8986494364107987395">ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳನ್ನು ಮತ್ತು ಕ್ರಾಶ್ ವರದಿಗಳನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರವಾನಿಸು</translation> <translation id="8987736167266086032">ನೀವು ಎಲ್ಲಿಗೆ ಬಿಟ್ಟಿರುವಿರೋ ಅಲ್ಲಿಂದ ಮುಂದುವರಿಸಿ</translation> <translation id="8987927404178983737">ತಿಂಗಳು</translation> <translation id="899403249577094719">Netscape ಪ್ರಮಾಣಪತ್ರ ಆಧಾರ URL</translation> @@ -5909,7 +5911,7 @@ <translation id="9064142312330104323">Google ಪ್ರೊಫೈಲ್ ಫೋಟೋ(ಲೋಡ್ ಆಗುತ್ತಿದೆ)</translation> <translation id="9064275926664971810">ಒಂದು ಕ್ಲಿಕ್ನೊಂದಿಗೆ ವೆಬ್ ಫಾರ್ಮ್ಗಳನ್ನು ತುಂಬಲು ಸ್ವಯಂ ತುಂಬುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> <translation id="9064939804718829769">ವರ್ಗಾಯಿಸಲಾಗುತ್ತಿದೆ...</translation> -<translation id="9065203028668620118">ಸಂಪಾದಿಸು</translation> +<translation id="9065203028668620118">ಎಡಿಟ್</translation> <translation id="9066075624350113914">ಈ PDF ಡಾಕ್ಯುಮೆಂಟ್ ಭಾಗಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation> <translation id="9067401056540256169">ಈ ಫ್ಲ್ಯಾಗ್ Chrome ಅನ್ನು ಅಸುರಕ್ಷಿತಗೊಳಿಸುತ್ತದೆ. ಇದು ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದು ನಿಮಗೆ ಅರ್ಥವಾದರೆ ಮಾತ್ರ ಇದನ್ನು ಬಳಸಿ. ಯಾವುದೇ ಎಚ್ಚರಿಕೆ ಇಲ್ಲದೆ ಈ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ತೆಗೆದುಹಾಕಬಹುದು ಎಂಬುದು ನಿಮ್ಮ ಗಮನದಲ್ಲಿರಲಿ. ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ, https ಮೂಲದ ಫ್ರೇಮ್ಗಳು ಅಸುರಕ್ಷಿತ URL (ws://) ಮೂಲಕ WebSocket ಗಳನ್ನು ಬಳಸಬಹುದು.</translation> <translation id="9068931793451030927">ಪಾಥ್:</translation> @@ -5974,7 +5976,7 @@ <translation id="9147392381910171771">&ಆಯ್ಕೆಗಳು</translation> <translation id="9148058034647219655">ನಿರ್ಗಮಿಸು</translation> <translation id="9148126808321036104">ಪುನಃ ಸೈನ್ ಇನ್ ಆಗಿ</translation> -<translation id="9149866541089851383">ಸಂಪಾದಿಸಿ...</translation> +<translation id="9149866541089851383">ಎಡಿಟ್...</translation> <translation id="9150045010208374699">ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಬಳಸಿ</translation> <translation id="9152722471788855605">ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ Zip ಫೈಲ್ ವಿಶ್ಲೇಷಕ</translation> <translation id="9153341767479566106">ಲೋಡ್ ಆಗಲು ವಿಫಲವಾದ ಇತರ ವಿಸ್ತರಣೆಗಳು:</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 6002378e..3342001 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -522,7 +522,6 @@ <translation id="1673103856845176271">보안 상의 이유로 파일에 액세스하지 못했습니다.</translation> <translation id="1675023460278456180">머티리얼 하이브리드</translation> <translation id="167832068858235403">볼륨 작게</translation> -<translation id="1678331212993975953">사이트 세부정보</translation> <translation id="1679068421605151609">개발자 도구</translation> <translation id="1681120471812444678">프린터 추가 설정…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> 등록</translation> @@ -775,7 +774,7 @@ <translation id="2074527029802029717">탭 고정 해제</translation> <translation id="2075594581020578008"><ph name="IDS_SHORT_PRODUCT_NAME" /> 브라우저</translation> <translation id="2076269580855484719">이 플러그인 숨기기</translation> -<translation id="2077084898869955643">발생 가능성이 있는 보안 문제의 세부정보를 자동으로 Google에 보고합니다. <ph name="PRIVACY_PAGE_LINK" /></translation> +<translation id="2077084898869955643">발생 가능성이 있는 보안 문제의 세부정보를 자동으로 Google에 신고합니다. <ph name="PRIVACY_PAGE_LINK" /></translation> <translation id="2077129598763517140">가능한 경우 하드웨어 가속 사용</translation> <translation id="2078019350989722914">종료하기 전 경고(<ph name="KEY_EQUIVALENT" />)</translation> <translation id="2079053412993822885">인증서 중 하나를 삭제하면 더 이상 삭제한 인증서를 사용하여 신원을 확인할 수 없습니다.</translation> @@ -1012,7 +1011,6 @@ <translation id="2371076942591664043">완료되면 열기(&D)</translation> <translation id="2372036074421194686">Chrome에서 컴퓨터에 원치 않는 프로그램(<ph name="UWS_NAME" />)이 설치된 것을 발견했습니다. Chrome 정리도구를 실행하여 프로그램을 제거할 수 있습니다.</translation> <translation id="2375701438512326360">강제 터치스크린은 항상 사용 또는 사용중지되어야 하며, 시작할 때 터치스크린이 감지되면 사용(자동, 기본설정)하도록 설정됩니다.</translation> -<translation id="2377619091472055321">재설정으로 인해 <ph name="IDS_SHORT_PRODUCT_NAME" /> 설정이 변경되었습니다.</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" />개의 파일이 선택됨</translation> <translation id="2378982052244864789">확장 프로그램 디렉토리를 선택합니다.</translation> <translation id="2379281330731083556">시스템 대화상자를 사용하여 인쇄... <ph name="SHORTCUT_KEY" /></translation> @@ -1560,6 +1558,7 @@ <translation id="3058212636943679650">컴퓨터의 운영체제를 복구해야 하는 경우, 복구 SD 카드 또는 USB 메모리가 필요합니다.</translation> <translation id="305932878998873762">HTTP용 단순 캐시는 새로운 캐시이며 디스크 공간 할당에 파일 시스템을 사용합니다.</translation> <translation id="3062606427884046423">Chrome 미디어 알림에 Android MediaStyle 알림을 사용합니다.</translation> +<translation id="3063224679438508013">메모 앱 자동 실행</translation> <translation id="3063844757726132584">이 간편한 실행기를 사용하여 모든 앱에 액세스할 수 있습니다. 게임과 화상 채팅을 하고 음악을 들으며 문서를 수정하거나 다른 앱을 다운로드해 보세요.</translation> <translation id="3064388234319122767">음역(zdravo → здраво)</translation> <translation id="3065041951436100775">탭 사용 중지 관련 피드백</translation> @@ -1650,6 +1649,7 @@ <translation id="3172213052701798825">비밀번호 대용 Google Smart Lock</translation> <translation id="317583078218509884">새 사이트 권한 설정은 페이지를 새로고침한 다음에 적용됩니다.</translation> <translation id="3177048931975664371">비밀번호를 숨기려면 클릭하세요.</translation> +<translation id="3177909033752230686">페이지 언어:</translation> <translation id="3180365125572747493">이 인증서 파일을 암호화하려면 비밀번호를 입력하세요.</translation> <translation id="3183139917765991655">프로필 가져오기 도구</translation> <translation id="3184560914950696195">$1에 저장할 수 없습니다. 편집한 이미지는 다운로드 폴더에 저장됩니다.</translation> @@ -2000,6 +2000,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a>에서 다운로드함</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> 표시</translation> <translation id="3613422051106148727">새 탭에서 열기(&O)</translation> +<translation id="3616113530831147358">오디오</translation> <translation id="3616741288025931835">인터넷 사용정보 삭제(&C)...</translation> <translation id="3618849550573277856">'<ph name="LOOKUP_STRING" />' 찾기</translation> <translation id="3620292326130836921">백업되지 않은 파일이 없습니다.</translation> @@ -2297,7 +2298,6 @@ <translation id="3994878504415702912">글꼴 크기(&Z)</translation> <translation id="3995964755286119116">Adobe Flash Player 카메라 설정이 다릅니다.</translation> <translation id="39964277676607559">콘텐츠 스크립트의 자바스크립트('<ph name="RELATIVE_PATH" />')를 로드하지 못했습니다.</translation> -<translation id="3996912167543967198">재설정 중...</translation> <translation id="3997015411467176489">실험용 캔버스 기능</translation> <translation id="4002066346123236978">제목</translation> <translation id="40027638859996362">단어 이동</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">푸시 메시지</translation> <translation id="4146026355784316281">항상 시스템 뷰어로 열기</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" />에서 Chrome OS 기기에서 쿠폰을 사용할 수 있는지 확인하려고 합니다. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">디스플레이</translation> <translation id="4151403195736952345">글로벌 기본값 사용(감지)</translation> <translation id="4152177296285305182">암호를 아는 사람만 암호화된 데이터를 읽을 수 있습니다. 암호는 Google로 전송되거나 Google에 저장되지 않습니다. 암호가 기억나지 않으면 동기화를 재설정해야 합니다.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{탭 1개}other{탭 #개}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">캡처화면</translation> <translation id="4250680216510889253">아니요</translation> <translation id="4253168017788158739">메모</translation> +<translation id="4254813446494774748">번역 언어:</translation> <translation id="425573743389990240">배터리 방전율(와트, 음수 값은 배터리가 충전 중임을 나타냄)</translation> <translation id="4256316378292851214">동영상을 다른 이름으로 저장(&V)...</translation> <translation id="4258348331913189841">파일 시스템</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">동기화 작업이 중지되었습니다.</translation> <translation id="4366509400410520531">사용자에 의해 허용</translation> <translation id="4367782753568896354">설치하지 못한 앱 또는 확장 프로그램:</translation> +<translation id="436904870295243580">더 많은 메모 애플리케이션 찾기</translation> <translation id="4370975561335139969">입력한 이메일과 비밀번호가 일치하지 않습니다.</translation> <translation id="437184764829821926">고급 글꼴 설정</translation> <translation id="4372884569765913867">1x1</translation> @@ -2560,7 +2563,7 @@ <translation id="441468701424154954">창으로 디스플레이 채우기</translation> <translation id="4415531645938095119">이 기기에서는 소프트웨어 업데이트가 더 이상 제공되지 않습니다.</translation> <translation id="4416628180566102937">등록 후 다시 시작</translation> -<translation id="441837933428923414">창 주기 UI 사용</translation> +<translation id="441837933428923414">창 전환 UI 사용</translation> <translation id="4419409365248380979"><ph name="HOST" />에서 항상 쿠키를 설정하도록 허용</translation> <translation id="4421932782753506458">복실이</translation> <translation id="4422347585044846479">이 페이지에 대한 북마크 편집</translation> @@ -3214,6 +3217,7 @@ <translation id="5324674707192845912">Google에 <ph name="DEVICE_TYPE" />을(를) 등록 취소하면 기기를 원격으로 찾고, 기기의 데이터를 삭제하고, 기기를 잠그는 기능이 사용 중지됩니다. 취소한 후에는 재부팅해야 합니다. 계속하시겠습니까?</translation> <translation id="5324780743567488672">사용자 위치를 사용하여 자동으로 시간대 설정</translation> <translation id="5325120507747984426">최근 사용 모드를 시작 또는 종료할 때 및 최근 사용 세션 간에 창의 움직임을 최소화려고 시도하는 안정적인 창 순서를 최근 사용 모드에서 사용합니다.</translation> +<translation id="5326182685622510062">2D 캔버스용 그래픽 렌더링 파이프라인을 다양하게 구현할 수 있습니다. 다양한 구현은 서로 다른 성능적 특성을 지닙니다. 이 플래그를 사용하면 성능 향상을 위해 캔버스가 사용되는 방식에 기반하여 캔버스 2D 컨텍스트를 이 같은 구현 간에 손쉽게 전환할 수 있습니다. 예를 들어 GPU를 사용하는 구현에서 사용하지 않는 구현으로 이동합니다.</translation> <translation id="5327248766486351172">이름</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">삭제(&D)</translation> @@ -3346,7 +3350,6 @@ <translation id="54870580363317966">이 관리 대상 사용자의 아바타를 선택하세요.</translation> <translation id="5488468185303821006">시크릿 모드에서 허용</translation> <translation id="5489390182170331803">문서 수준 이벤트 리스너 패시브 기본</translation> -<translation id="5489789060051091748">음성 안내 선택: 음성으로 안내를 받으려면 검색을 길게 누른 후 클릭하거나 드래그하세요.</translation> <translation id="549294555051714732">자동완성 추천 검색어에서 하위 문자열 일치</translation> <translation id="5493996328530898436">새 오디오 렌더링 혼합 전략</translation> <translation id="5494362494988149300">완료되면 열기(&D)</translation> @@ -3703,9 +3706,6 @@ <translation id="5991049340509704927">확대</translation> <translation id="5991774521050363748">웹 알림에 맞춤 레이아웃을 사용합니다. 다른 방법으로는 개선할 수 없는 레이아웃이 약간 개선됩니다.</translation> <translation id="5993332328670040093">더 이상 데이터 사용이 측정되지 않습니다.</translation> -<translation id="5996258716334177896">프로필을 제대로 열지 못했습니다. - -일부 기능을 사용하지 못할 수 있습니다. 프로필의 존재 여부와 해당 콘텐츠를 읽고 쓸 권한이 있는지 확인하시기 바랍니다.</translation> <translation id="6001799583597751002">PIN이 일치하지 않습니다.</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" />에서 자동 업데이트를 수행하지 못할 수 있습니다.</translation> <translation id="6003294706906016758">호스팅된 앱에 웹 앱 스타일 프레임 사용</translation> @@ -4155,7 +4155,6 @@ <translation id="6637362044401670482">가상 키보드 오버스크롤을 사용합니다.</translation> <translation id="6639554308659482635">SQLite 메모리</translation> <translation id="6643016212128521049">삭제</translation> -<translation id="6644756108386233011">수정된 <ph name="IDS_SHORT_PRODUCT_NAME" /> 설정을 재설정하시겠습니까?</translation> <translation id="6647228709620733774">Netscape 인증 기관 취소 URL</translation> <translation id="6647838571840953560">현재 <ph name="CHANNEL_NAME" /> 사용 중</translation> <translation id="6649018507441623493">잠시 기다려 주세요.</translation> @@ -4263,7 +4262,6 @@ <translation id="6810613314571580006">저장된 사용자 인증 정보를 사용하여 자동으로 웹사이트에 로그인합니다. 이 기능이 꺼져 있는 경우에는 웹사이트에 로그인할 때마다 확인 요청 메시지가 표시됩니다.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" />은(는) 루트로 실행할 수 없습니다.</translation> <translation id="6812841287760418429">변경사항 유지</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" />에서 사용자가 알지 못하는 사이에 브라우저 설정이 변경되었을 수 있음을 감지했습니다. 기본값으로 재설정하시겠습니까?</translation> <translation id="6815551780062710681">수정</translation> <translation id="6817358880000653228">이 사이트의 저장된 비밀번호:</translation> <translation id="6820008762872335722">요청하도록 재설정</translation> @@ -4380,6 +4378,7 @@ <translation id="6980956047710795611">모든 Chrome OS 데이터를 새 비밀번호로 이전(이전 비밀번호 필요)</translation> <translation id="6981982820502123353">접근성</translation> <translation id="6981992744085917617">계정으로 다시 로그인할 때 사용할 방법을 선택하세요.</translation> +<translation id="698231206551913481">이 사용자를 제거하면 해당 사용자와 연결되어 있는 모든 파일 및 로컬 데이터가 영구적으로 삭제됩니다.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> 프린터 검색됨</translation> <translation id="6983783921975806247">등록된 OID</translation> <translation id="6983991971286645866">모든 수정사항이 $1에 저장됩니다.</translation> @@ -4392,7 +4391,7 @@ <translation id="6990778048354947307">다크 테마</translation> <translation id="6991128190741664836">나중에</translation> <translation id="6991665348624301627">대상 선택</translation> -<translation id="699220179437400583">발생 가능성이 있는 보안 문제의 세부정보를 자동으로 Google에 보고합니다.</translation> +<translation id="699220179437400583">발생 가능성이 있는 보안 문제의 세부정보를 자동으로 Google에 신고합니다.</translation> <translation id="6993929801679678186">자동완성 예측 표시</translation> <translation id="6998711733709403587"><ph name="SELCTED_FOLDERS_COUNT" />개의 폴더가 선택됨</translation> <translation id="6998872712520806535">{NUM_PAGES,plural, =1{다음 페이지가 응답하지 않습니다. 페이지가 응답할 때까지 기다리거나 종료할 수 있습니다.}other{다음 페이지가 응답하지 않습니다. 페이지가 응답할 때까지 기다리거나 종료할 수 있습니다.}}</translation> @@ -4466,6 +4465,7 @@ <translation id="7073555242265688099">다른 Chrome 기기가 있는 경우 자동으로 동기화되며, 휴대전화가 가까이 있으면 다른 기기도 잠금 해제됩니다.</translation> <translation id="707392107419594760">키보드 선택:</translation> <translation id="7075513071073410194">PKCS #1 MD5(RSA 암호화 사용)</translation> +<translation id="7075625805486468288">HTTPS/SSL 인증서 및 설정 관리</translation> <translation id="7076293881109082629">로그인</translation> <translation id="7077829361966535409">현재 프록시 설정을 사용하여 로그인 페이지를 로드하지 못했습니다. <ph name="GAIA_RELOAD_LINK_START" />다시 로그인<ph name="GAIA_RELOAD_LINK_END" />하거나 다른 <ph name="PROXY_SETTINGS_LINK_START" />프록시 설정<ph name="PROXY_SETTINGS_LINK_END" />을 사용합니다.</translation> <translation id="7077872827894353012">무시된 프로토콜 핸들러</translation> @@ -4513,7 +4513,6 @@ <translation id="7141105143012495934">계정 세부정보를 가져올 수 없어 로그인할 수 없습니다. 관리자에게 문의하거나 다시 시도해 주세요.</translation> <translation id="7143207342074048698">연결 중</translation> <translation id="7144878232160441200">다시 시도</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> 사용이 중지되었습니다. 다시 사용하도록 설정하려면 <ph name="CHROME_PLUGINS_LINK" />(으)로 이동하시기 바랍니다.</translation> <translation id="715118844758971915">일반 프린터</translation> <translation id="7154130902455071009">다음으로 시작 페이지 변경: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">중국어 간체를 초기 중국어 모드로 설정</translation> @@ -4613,7 +4612,7 @@ <translation id="7295019613773647480">관리 대상 사용자를 사용하도록 설정</translation> <translation id="7296774163727375165"><ph name="DOMAIN" /> 약관</translation> <translation id="7297319960855187184">Google 클라우드 프린트의 XPS</translation> -<translation id="7299337219131431707">손님으로 로그인 허용</translation> +<translation id="7299337219131431707">게스트로 로그인 허용</translation> <translation id="7299441085833132046"><ph name="BEGIN_LINK" />도움말<ph name="END_LINK" /></translation> <translation id="7301360164412453905">슈(Hsu) 키보드 선택 키</translation> <translation id="7303492016543161086">시스템 메뉴에 접근성 옵션 표시</translation> @@ -4792,6 +4791,7 @@ <translation id="7540972813190816353">업데이트를 확인하는 동안 오류가 발생했습니다. <ph name="ERROR" /></translation> <translation id="7541121857749629630">이미지 예외</translation> <translation id="7543104066686362383">이 <ph name="IDS_SHORT_PRODUCT_NAME" /> 기기에서 디버깅 기능을 사용 설정하세요.</translation> +<translation id="7543393759143837504">원하는 자료를 찾지 못했다면 <ph name="BEGIN_LINK_CHROMIUM" />Chrome 도움말<ph name="END_LINK_CHROMIUM" />을 참조하세요.</translation> <translation id="7544853251252956727">셔플</translation> <translation id="7545288882499673859">고급 압축 처리를 위한 메모리 삭제 전략</translation> <translation id="7545415673537747415"><ph name="BEGIN_LINK" />Google 활동 제어<ph name="END_LINK" />에서 검색, 광고 및 다른 Google 서비스를 맞춤설정하기 위하여 Google이 내 인터넷 사용 기록을 사용하는 방법을 제어하세요.</translation> @@ -5029,7 +5029,6 @@ <translation id="7879478708475862060">입력 모드 따라하기</translation> <translation id="7880836220014399562">'<ph name="BUNDLE_NAME" />'을(를) 설치하면 추가되는 앱과 확장 프로그램은 다음과 같습니다.</translation> <translation id="7881969471599061635">자막 사용 중지</translation> -<translation id="7884988936047469945">실험용 접근성 기능</translation> <translation id="7885253890047913815">최근 대상</translation> <translation id="7887192723714330082">화면이 켜지고 잠금 해제된 경우 'Ok Google'에 응답합니다.</translation> <translation id="7887334752153342268">새 탭에서 보기</translation> @@ -5097,6 +5096,7 @@ <translation id="7974067550340408553">Smart Lock으로 <ph name="DEVICE_TYPE" />이(가) 잠금 해제될 때마다 휴대전화로 알림 받기</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" />을(를) 사용하여 다시 시도</translation> <translation id="7974936243149753750">오버스캔</translation> +<translation id="7976960358280528247">창 전환 UI 사용(Alt-Tab을 누르면 시각적 피드백 표시)</translation> <translation id="7977551819349545646">Chromebox를 업데이트하는 중...</translation> <translation id="7978412674231730200">비공개 키</translation> <translation id="7979036127916589816">동기화 오류</translation> @@ -5124,6 +5124,7 @@ 키 파일은 확장 프로그램의 새 버전을 만드는 데 필요하므로 안전한 장소에 보관하시기 바랍니다.</translation> <translation id="799923393800005025">보기 가능</translation> +<translation id="8000066093800657092">네트워크 없음</translation> <translation id="8004582292198964060">브라우저</translation> <translation id="8007030362289124303">배터리 부족</translation> <translation id="8008356846765065031">인터넷 연결이 끊겼습니다. 인터넷 연결을 확인하세요.</translation> @@ -5198,6 +5199,7 @@ <translation id="8116190140324504026">추가 정보...</translation> <translation id="8116483400482790018">사용자정의 맞춤법 사전</translation> <translation id="8116972784401310538">북마크 관리자(&B)</translation> +<translation id="8117838550640702864">메모 설정</translation> <translation id="8117957376775388318">Dayi 입력 방법</translation> <translation id="8118860139461251237">다운로드 관리</translation> <translation id="8119572489781388874">설정 수정</translation> @@ -5478,7 +5480,6 @@ <translation id="8472623782143987204">하드웨어 지원</translation> <translation id="8475313423285172237">컴퓨터의 다른 프로그램에서 Chrome 작동에 영향을 줄 수 있는 확장 프로그램을 추가했습니다.</translation> <translation id="8475647382427415476">Google 드라이브에서 '<ph name="FILENAME" />'을(를) 동기화하지 못했습니다. Google 드라이브에서 나중에 다시 시도합니다.</translation> -<translation id="8476195663057048998">삭제 및 재설정</translation> <translation id="8477241577829954800">대체됨</translation> <translation id="8477384620836102176">일반(&G)</translation> <translation id="8480417584335382321">페이지 확대/축소:</translation> @@ -5708,7 +5709,6 @@ <translation id="8785135611469711856">플러그인 응답 없음</translation> <translation id="8787254343425541995">공유 네트워크에서 프록시 허용</translation> <translation id="878763818693997570">이름이 너무 깁니다.</translation> -<translation id="8787865569533773240">재설정으로 인해 <ph name="IDS_SHORT_PRODUCT_NAME" /> 설정이 변경되었습니다.</translation> <translation id="8789375980715484686">다른 사용자 관리</translation> <translation id="8791534160414513928">탐색 트래픽으로 ‘추적 안함’ 요청 전송</translation> <translation id="8795668016723474529">신용카드 추가</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 35b8af5..399e13a 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Failo nepavyko pasiekti dėl saugumo.</translation> <translation id="1675023460278456180">Mišrūs trimačiai objektai</translation> <translation id="167832068858235403">maž. garsumą</translation> -<translation id="1678331212993975953">Išsami svetainės informacija</translation> <translation id="1679068421605151609">Kūrėjo įrankiai</translation> <translation id="1681120471812444678">Nustatykite, kad pridėtumėte spausdintuvų…</translation> <translation id="1682324559341535203">Užregistruoti „<ph name="DEVICE_TYPE" />“</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">Baigus &atidaryti</translation> <translation id="2372036074421194686">„Chrome“ aptiko kompiuteryje įdiegtą nepageidaujamą programą (<ph name="UWS_NAME" />). Galite ją pašalinti paleisdami „Chrome“ valymo įrankį.</translation> <translation id="2375701438512326360">Nustatykite, kad jutiklinio ekrano palaikymas būtų visada įgalintas, neleidžiamas arba įgalintas, kai paleidžiant aptinkamas jutiklinis ekranas (automatiškai, numatytasis).</translation> -<translation id="2377619091472055321">Iš naujo nustatyti pakeistus „<ph name="IDS_SHORT_PRODUCT_NAME" />“ nustatymus</translation> <translation id="2378075407703503998">Pasirinkta failų: <ph name="SELCTED_FILE_COUNT" /></translation> <translation id="2378982052244864789">Pasirinkti plėtinio katalogą.</translation> <translation id="2379281330731083556">Spausdinti naudojant sistemos dialogo langą... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">Jei kada nors reikės atkurti kompiuterio operacinę sistemą, reikės atkūrimo SD arba USB atminties kortelės.</translation> <translation id="305932878998873762">Paprasta HTTP talpykla yra naujoji talpykla. Paskirstant disko vietą naudojama failų sistema.</translation> <translation id="3062606427884046423">Naudoti „Android MediaStyle“ pranešimus siunčiant „Chrome“ medijos pranešimus.</translation> +<translation id="3063224679438508013">Automatiškai paleisti užrašų programą</translation> <translation id="3063844757726132584">Pasiekite visas programas naudodami šią patogią paleidimo priemonę. Žaiskite žaidimus, dalyvaukite vaizdo pokalbiuose, klausykite muzikos, redaguokite dokumentus arba gaukite daugiau programų.</translation> <translation id="3064388234319122767">Transliteracija (zdravo → здраво)</translation> <translation id="3065041951436100775">Atsiliepimai dėl uždaryto skirtuko.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">„Google Smart Lock“, skirta slaptažodžiams</translation> <translation id="317583078218509884">Nauji svetainės leidimų nustatymai pradės galioti iš naujo įkėlus puslapį.</translation> <translation id="3177048931975664371">Jei norite slėpti slaptažodį, spustelėkite.</translation> +<translation id="3177909033752230686">Puslapio kalba:</translation> <translation id="3180365125572747493">Kad užšifruotumėte šio sertifikato failą, įveskite slaptažodį.</translation> <translation id="3183139917765991655">Profilio importavimo priemonė</translation> <translation id="3184560914950696195">Nepavyko išsaugoti aplanke „$1“. Redaguoti vaizdai bus išsaugoti atsisiuntimų aplanke.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Atsisiuntė <a href="<ph name="URL" />">„<ph name="EXTENSION" />“</a></translation> <translation id="3613134908380545408">Rodyti „<ph name="FOLDER_NAME" />“</translation> <translation id="3613422051106148727">&Atidaryti naujo skirtuko lape</translation> +<translation id="3616113530831147358">Garsas</translation> <translation id="3616741288025931835">&Išvalyti naršymo duomenis...</translation> <translation id="3618849550573277856">Ieškoti „<ph name="LOOKUP_STRING" />“</translation> <translation id="3620292326130836921">Atsarginis kopijavimas baigtas!</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">Priartinti</translation> <translation id="3995964755286119116">„Adobe Flash Player“ fotoaparato nustatymai skiriasi.</translation> <translation id="39964277676607559">Turinio scenarijui nepavyko įkelti „javascript“ „<ph name="RELATIVE_PATH" />“.</translation> -<translation id="3996912167543967198">Nustatoma iš naujo...</translation> <translation id="3997015411467176489">Eksperimentinės matomosios tinklalapio srities funkcijos</translation> <translation id="4002066346123236978">Pavadinimas</translation> <translation id="40027638859996362">Perkelti žodį</translation> @@ -2391,6 +2391,7 @@ <translation id="4140559601186535628">„Push“ pranešimai</translation> <translation id="4146026355784316281">Visada atidaryti naudojant sistemos peržiūros priemonę</translation> <translation id="4146175323503586871">„<ph name="SERVICE_NAME" />“ nori patikrinti, ar „Chrome“ OS įrenginys yra tinkamas pasinaudoti pasiūlymu. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Pateiktis</translation> <translation id="4151403195736952345">Naudoti visuotinį numatytąjį nustatymą (nustatyti)</translation> <translation id="4152177296285305182">Tik slaptafrazę turintis asmuo gali skaityti šifruotus duomenis. Slaptafrazė nesiunčiama ar nesaugoma „Google“. Jei pamiršite slaptafrazę, turėsite iš naujo nustatyti sinchronizavimą.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 skirtukas}one{# skirtukas}few{# skirtukai}many{# skirtuko}other{# skirtukų}}</translation> @@ -2455,6 +2456,7 @@ <translation id="4250229828105606438">Ekrano kopija</translation> <translation id="4250680216510889253">Ne</translation> <translation id="4253168017788158739">Pastaba</translation> +<translation id="4254813446494774748">Vertimo kalba:</translation> <translation id="425573743389990240">Akumuliatoriaus iškrovos koeficientas vatais (neigiama vertė reiškia, kad akumuliatorius įkraunamas)</translation> <translation id="4256316378292851214">Iš&saugoti vaizdo įrašą kaip...</translation> <translation id="4258348331913189841">Failų sistemos</translation> @@ -2532,6 +2534,7 @@ <translation id="4365673000813822030">Deja, sinchronizavimas sustabdytas.</translation> <translation id="4366509400410520531">Leidžiama jūsų</translation> <translation id="4367782753568896354">Nepavyko įdiegti:</translation> +<translation id="436904870295243580">Rasti daugiau užrašų programų</translation> <translation id="4370975561335139969">Įvestas slaptažodis neatitinka el. pašto adreso</translation> <translation id="437184764829821926">Išplėstiniai šrifto nustatymai</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">Ketinate išregistruoti šį „<ph name="DEVICE_TYPE" />“ iš sistemos „Google“. Tai atlikus nebus galima nuotoliniu būdu rasti ir užrakinti įrenginio bei ištrinti jo duomenų. Reikės iš naujo paleisti įrenginį. Ar norite tęsti?</translation> <translation id="5324780743567488672">Automatiškai nustatyti laiko juostą pagal jūsų vietovę</translation> <translation id="5325120507747984426">Naudojama stabili langų išdėstymo tvarka apžvalgos režimu bandant sumažinti langų judėjimą įjungiant / išjungiant apžvalgą ir pereinant iš vienos apžvalgos sesijos į kitą.</translation> +<translation id="5326182685622510062">Grafikos pateikimo komandų grandinė 2D kelis kartus įdiegta matomojoje tinklalapio srityje. Kiekvienas diegimo būdas turi skirtingas našumo charakteristikas. Įjungus šią žymą 2D matomosios tinklalapio srities kontekstai perjungiami į skirtingus diegimo būdus atsižvelgiant į tai, kaip naudojama matomoji tinklalapio sritis, siekiant padidinti našumą. Pavyzdžiui, perjungiant iš diegimo būdo, kai naudojamas grafikos procesorius, į būdą, kai procesorius nenaudojamas.</translation> <translation id="5327248766486351172">Pavadinimas</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Pašalinti</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">Pasirinkite šio prižiūrimo naudotojo pseudoportretą.</translation> <translation id="5488468185303821006">Leisti „inkognito“ režimą</translation> <translation id="5489390182170331803">Dokumentų lygmens įvykių apdorojimo numatytasis pasyvinimas</translation> -<translation id="5489789060051091748">Pasirinkti ir pasakyti: palaikykite paspaustą paieškos klavišą ir spustelėkite arba vilkite pelės žymekliu, kad būtų pasakytas bet koks rodomas tekstas</translation> <translation id="549294555051714732">Automatinio pildymo pasiūlymų poeilučio atitikimas</translation> <translation id="5493996328530898436">Nauja garso pateikimo maišymo strategija</translation> <translation id="5494362494988149300">&Baigus atidaryti</translation> @@ -3702,9 +3705,6 @@ <translation id="5991049340509704927">Didinti</translation> <translation id="5991774521050363748">Įgalinti tinkintus žiniatinklio pranešimų išdėstymus. Jiems bus taikomi subtilūs išdėstymo patobulinimai, kurie kitu atveju negalimi.</translation> <translation id="5993332328670040093">Duomenų naudojimas nebebus vertinamas.</translation> -<translation id="5996258716334177896">Nepavyko tinkamai atidaryti profilio. - -Kai kurios funkcijos gali būti nepasiekiamos. Įsitikinkite, kad profilis egzistuoja ir turite leidimą skaityti bei rašyti jo turinį.</translation> <translation id="6001799583597751002">Neatitinka PIN kodai:</translation> <translation id="6003177993629630467">„<ph name="PRODUCT_NAME" />“ gali nesugebėti atsinaujinti.</translation> <translation id="6003294706906016758">Įgalinami žiniatinklio programų stiliaus rėmeliai priglobtose programose</translation> @@ -4154,7 +4154,6 @@ <translation id="6637362044401670482">Įgalinamas virtualiosios klaviatūros perslinkimo palaikymas.</translation> <translation id="6639554308659482635">„SQLite“ atmintis</translation> <translation id="6643016212128521049">Išvalyti</translation> -<translation id="6644756108386233011">Iš naujo nustatyti pakeistus „<ph name="IDS_SHORT_PRODUCT_NAME" />“ nustatymus?</translation> <translation id="6647228709620733774">„Netscape“ sertifikavimo institucijos panaikinimo URL</translation> <translation id="6647838571840953560">Dabar naudojama: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Šiek tiek palaukite...</translation> @@ -4262,7 +4261,6 @@ <translation id="6810613314571580006">Automatiškai prisijungti prie svetainių naudojant išsaugotus prisijungimo duomenis. Kai funkcija išjungta, kaskart prisijungiant prie svetainės bus prašoma patvirtinti.</translation> <translation id="6812349420832218321">„<ph name="PRODUCT_NAME" />“ negalima paleisti pagrindinio naudotojo vardu.</translation> <translation id="6812841287760418429">Palikti pakeitimus</translation> -<translation id="6815353853907306610">„<ph name="IDS_SHORT_PRODUCT_NAME" />“ nustatė, kad naršyklės nustatymai galėjo būti pakeisti be jūsų žinios. Ar norėtumėte nustatyti juos iš naujo į pirminius numatytuosius nustatymus?</translation> <translation id="6815551780062710681">redaguoti</translation> <translation id="6817358880000653228">Šioje svetainėje išsaugoti slaptažodžiai:</translation> <translation id="6820008762872335722">Iš naujo nustatyti, kad būtų klausiama</translation> @@ -4381,6 +4379,7 @@ (reikalingas ankstesnis slaptažodis)</translation> <translation id="6981982820502123353">Pritaikymas neįgaliesiems</translation> <translation id="6981992744085917617">Pasirinkite metodą, kurį naudodami norite vėl prisijungti prie paskyros:</translation> +<translation id="698231206551913481">Visi failai ir su šiuo naudotoju susiję duomenys bus ištrinti visam laikui, kai šis naudotojas bus pašalintas.</translation> <translation id="6982896539684144327">Aptiktas „<ph name="VENDOR_NAME" />“ spausdintuvas</translation> <translation id="6983783921975806247">Registruotas OID</translation> <translation id="6983991971286645866">Visi redagavimo veiksmai bus išsaugoti kaip $1.</translation> @@ -4467,6 +4466,7 @@ <translation id="7073555242265688099">Jei naudojate kitus „Chrome“ įrenginius, jie bus sinchronizuojami automatiškai, todėl telefonu galėsite atrakinti ir juos.</translation> <translation id="707392107419594760">Pasirinkite klaviatūrą:</translation> <translation id="7075513071073410194">PKCS Nr. 1 MD5 su RSA šifruote</translation> +<translation id="7075625805486468288">Tvarkykite HTTPS / SSL sertifikatus ir nustatymus</translation> <translation id="7076293881109082629">Prisijungimas</translation> <translation id="7077829361966535409">Įkeliant prisijungimo puslapį naudojant dabartinius įgaliotojo serverio nustatymus įvyko klaida. <ph name="GAIA_RELOAD_LINK_START" />Bandykite prisijungti dar kartą<ph name="GAIA_RELOAD_LINK_END" /> arba nustatykite kitus <ph name="PROXY_SETTINGS_LINK_START" />įgaliotojo serverio nustatymus<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignoruojamos protokolo doroklės</translation> @@ -4514,7 +4514,6 @@ <translation id="7141105143012495934">Nepavyko prisijungti, nes negalima gauti išsamios paskyros informacijos. Susisiekite su administratoriumi arba bandykite dar kartą.</translation> <translation id="7143207342074048698">Jungiama</translation> <translation id="7144878232160441200">Bandyti dar kartą</translation> -<translation id="7148311641502571842">„<ph name="PLUGIN_NAME" />“ neleidžiamas. Jei norite pakartotinai įgalinti, eikite šiuo adresu: <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Įprasti spausdintuvai</translation> <translation id="7154130902455071009">Pakeiskite pradžios puslapį į: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Pradinis kinų k. režimas yra supaprastinta kinų k.</translation> @@ -4793,6 +4792,7 @@ <translation id="7540972813190816353">Tikrinant, ar yra naujinių, įvyko klaida: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Vaizdų išimtys</translation> <translation id="7543104066686362383">Įgalinkite derinimo funkcijas šiame „<ph name="IDS_SHORT_PRODUCT_NAME" />“ įrenginyje</translation> +<translation id="7543393759143837504">Jei nerandate to, ko ieškote, eikite į <ph name="BEGIN_LINK_CHROMIUM" />„Google Chrome“ pagalbos puslapį<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Maišyti</translation> <translation id="7545288882499673859">Pažangaus spaudimo apdorojimo atminties atmetimo strategija</translation> <translation id="7545415673537747415">Naudodami <ph name="BEGIN_LINK" />„Google“ veiklos valdiklius<ph name="END_LINK" /> valdykite, kaip „Google“ turėtų naudoti jūsų naršymo istoriją, kad suasmenintų Paiešką, skelbimus ir kitas „Google“ paslaugas.</translation> @@ -5030,7 +5030,6 @@ <translation id="7879478708475862060">Stebėti įvesties režimą</translation> <translation id="7880836220014399562">Įdiegus „<ph name="BUNDLE_NAME" />“ bus pridėtos šios programos ir plėtiniai:</translation> <translation id="7881969471599061635">Išjungti subtitrus</translation> -<translation id="7884988936047469945">Eksperimentinės pritaikymo neįgaliesiems funkcijos</translation> <translation id="7885253890047913815">Naujausios paskirties vietos</translation> <translation id="7887192723714330082">Įrenginys reaguos į komandą „Ok Google“, kai ekranas bus įjungtas ir atrakintas</translation> <translation id="7887334752153342268">Dubliuoti</translation> @@ -5098,6 +5097,7 @@ <translation id="7974067550340408553">Gaukite pranešimą į telefoną kiekvieną kartą, kai „Smart Lock“ atrakins „<ph name="DEVICE_TYPE" />“ įrenginį.</translation> <translation id="7974566588408714340">Dar kartą bandyti naudoti „<ph name="EXTENSIONNAME" />“</translation> <translation id="7974936243149753750">Sritis aplink vaizdo kraštus</translation> +<translation id="7976960358280528247">Įgalinama lango ciklo naudotojo sąsaja („Alt“ + tabuliavimo klavišo vaizdinis atsakas).</translation> <translation id="7977551819349545646">Atnaujinamas „Chromebox“…</translation> <translation id="7978412674231730200">Asmeninis raktas</translation> <translation id="7979036127916589816">Sinchronizavimo klaida</translation> @@ -5125,6 +5125,7 @@ Rakto failą laikykite saugioje vietoje. Jo reikės, kai norėsite sukurti naujas plėtinio versijas.</translation> <translation id="799923393800005025">Galima peržiūrėti</translation> +<translation id="8000066093800657092">Tinklo nėra</translation> <translation id="8004582292198964060">Naršyklė</translation> <translation id="8007030362289124303">Baterija baigia išsikrauti</translation> <translation id="8008356846765065031">Internetas atjungtas. Patikrinkite interneto ryšį.</translation> @@ -5199,6 +5200,7 @@ <translation id="8116190140324504026">Daugiau informacijos...</translation> <translation id="8116483400482790018">Priskirtas rašybos žodynas</translation> <translation id="8116972784401310538">&Žymių tvarkytuvė</translation> +<translation id="8117838550640702864">Užrašų nustatymai</translation> <translation id="8117957376775388318">„Dayi“ įvesties metodas</translation> <translation id="8118860139461251237">Tvarkykite atsisiuntimus</translation> <translation id="8119572489781388874">Modifikuoti nustatymus</translation> @@ -5479,7 +5481,6 @@ <translation id="8472623782143987204">palaikoma aparatinės įrangos</translation> <translation id="8475313423285172237">Kita jūsų kompiuteryje esanti programa pridėjo plėtinį, kuris gali pakeisti „Chrome“ veikimo būdą.</translation> <translation id="8475647382427415476">„Google“ diskui dabar nepavyko sinchronizuoti failo „<ph name="FILENAME" />“. „Google“ diskas vėliau bandys dar kartą.</translation> -<translation id="8476195663057048998">Išvalyti ir nustatyti iš naujo</translation> <translation id="8477241577829954800">Pakeista</translation> <translation id="8477384620836102176">Bendra</translation> <translation id="8480417584335382321">Puslapio mastelis:</translation> @@ -5709,7 +5710,6 @@ <translation id="8785135611469711856">Papildinys neatsako</translation> <translation id="8787254343425541995">Leisti tarpinius serverius bendrai naudojamuose tinkluose</translation> <translation id="878763818693997570">Šis pavadinimas per ilgas</translation> -<translation id="8787865569533773240">Iš naujo nustatyti pakeistus „<ph name="IDS_SHORT_PRODUCT_NAME" />“ nustatymus</translation> <translation id="8789375980715484686">Tvarkyti kitus naudotojus</translation> <translation id="8791534160414513928">Su naršymo srautu siųsti užklausą „Nestebėti“</translation> <translation id="8795668016723474529">Pridėti kredito kortelę</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index dfdb22a..b7e05a3 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Failam nevar piekļūt drošības apsvērumu dēļ.</translation> <translation id="1675023460278456180">Materiāla dizaina hibrīds</translation> <translation id="167832068858235403">samazināt skaļumu</translation> -<translation id="1678331212993975953">Vietnes informācija</translation> <translation id="1679068421605151609">Izstrādātāja rīki</translation> <translation id="1681120471812444678">Iestatīt printeru pievienošanu…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> ierīces reģistrācija</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">Atvērt, kad esat beidzis</translation> <translation id="2372036074421194686">Chrome konstatēja, ka jūsu datorā ir instalēta nevēlama programma (<ph name="UWS_NAME" />). Iespējams, varat to noņemt, izmantojot Chrome tīrīšanas rīku.</translation> <translation id="2375701438512326360">Iestatiet skārienekrāna atbalsta piespiedu iespējošanu vai atspējošanu vai iespējošanu gadījumos, kad, sākot darbu, tiek konstatēts skārienekrāns (pēc noklusējuma tiek izmantota opcija Automātiski).</translation> -<translation id="2377619091472055321">Mainīto <ph name="IDS_SHORT_PRODUCT_NAME" /> iestatījumu atiestatīšana</translation> <translation id="2378075407703503998">Atlasīti <ph name="SELCTED_FILE_COUNT" /> faili.</translation> <translation id="2378982052244864789">Atlasiet paplašinājuma direktoriju.</translation> <translation id="2379281330731083556">Drukāt, izmantojot sistēmas dialoglodziņu... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">Ja kādreiz jums vajadzēs atjaunot datora operētājsistēmu, būs nepieciešama atkopšanas SD karte vai USB atmiņas karte.</translation> <translation id="305932878998873762">Vienkāršā HTTP kešatmiņa ir jauna veida kešatmiņa. To izmantojot, vieta diskā tiek piešķirta, pamatojoties uz failu sistēmu.</translation> <translation id="3062606427884046423">Izmantojiet Android MediaStyle paziņojumus Chrome satura paziņojumiem.</translation> +<translation id="3063224679438508013">Automātiski palaist piezīmju lietotni</translation> <translation id="3063844757726132584">Piekļūstiet visām savām lietotnēm no šīs ērtās palaišanas programmas. Spēlējiet spēles, piedalieties video tērzēšanā, klausieties mūziku, rediģējiet dokumentus, kā arī iegūstiet vairāk lietotņu.</translation> <translation id="3064388234319122767">Transliterācija (zdravo → здраво)</translation> <translation id="3065041951436100775">Atsauksme par cilnes darbības pārtraukšanu.</translation> @@ -1650,6 +1649,7 @@ <translation id="3172213052701798825">Google Smart Lock parolēm</translation> <translation id="317583078218509884">Jaunie vietnes atļauju iestatījumi stāsies spēkā, atkārtoti ielādējot šo lapu.</translation> <translation id="3177048931975664371">Noklikšķiniet, lai slēptu paroli</translation> +<translation id="3177909033752230686">Lapas valoda:</translation> <translation id="3180365125572747493">Lūdzu, ievadiet paroli, lai šifrētu šo sertifikāta failu.</translation> <translation id="3183139917765991655">Profilu importētājs</translation> <translation id="3184560914950696195">Nevar saglabāt šeit: $1. Rediģētie attēli tiks saglabāti mapē Lejupielādes.</translation> @@ -2000,6 +2000,7 @@ <translation id="3612673635130633812">Lejupielādēja paplašinājums <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Mapes “<ph name="FOLDER_NAME" />” rādīšana</translation> <translation id="3613422051106148727">&Atvērt jaunā cilnē</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Dzēst pārlūkošanas datus...</translation> <translation id="3618849550573277856">Meklēt “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Visi faili ir dublēti.</translation> @@ -2296,7 +2297,6 @@ <translation id="3994878504415702912">Tālummaiņa</translation> <translation id="3995964755286119116">Adobe Flash Player kameras iestatījumi atšķiras.</translation> <translation id="39964277676607559">Nevarēja ielādēt JavaScript “<ph name="RELATIVE_PATH" />” satura skriptam.</translation> -<translation id="3996912167543967198">Atiestatīšana...</translation> <translation id="3997015411467176489">Eksperimentālās canvas elementu funkcijas</translation> <translation id="4002066346123236978">Nosaukums</translation> <translation id="40027638859996362">Pārvietot vārdu</translation> @@ -2329,7 +2329,7 @@ <translation id="406070391919917862">Fona lietotnes</translation> <translation id="4062251648694601778">Izbaudiet darbu ar <ph name="SHORT_PRODUCT_NAME" /> ierīci. Vai jums ir jautājumi? Vienmēr varat saņemt palīdzību, statusa teknē noklikšķinot uz “?”.</translation> <translation id="4065876735068446555">Iespējams, izmantotajā tīklā (<ph name="NETWORK_ID" />) tiks prasīts apmeklēt pieteikšanās lapu.</translation> -<translation id="4068506536726151626">Šī lapā satur elementus no šādām vietnēm, kas izseko jūsu atrašanās vietu:</translation> +<translation id="4068506536726151626">Šajā lapā ir elementi no šādām vietnēm, kas izseko jūsu atrašanās vietu:</translation> <translation id="4070370845051020638">Kantonas dialekta ievades metode</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: pierakstīšanās kļūda</translation> <translation id="4072248638558688893">Tamilu valodas tastatūra (fonētiskā)</translation> @@ -2393,6 +2393,7 @@ <translation id="4140559601186535628">Pašpiegādes ziņojumi</translation> <translation id="4146026355784316281">Vienmēr atvērt, izmantojot sistēmas skatītāju</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> vēlas pārbaudīt, vai jūsu Chrome OS ierīce ir piemērota šim piedāvājumam. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Displejs</translation> <translation id="4151403195736952345">Izmantot globālo noklusējuma vērtību (noteikt)</translation> <translation id="4152177296285305182">Jūsu šifrētos datus var lasīt tikai personas, kurām ir zināma jūsu ieejas frāze. Ieejas frāze netiek sūtīta uzņēmumam Google, un uzņēmums Google to neglabā. Ja esat aizmirsis ieejas frāzi, jums ir jāatiestata sinhronizācija.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 cilne}zero{# ciļņu}one{# cilne}other{# cilnes}}</translation> @@ -2457,6 +2458,7 @@ <translation id="4250229828105606438">Ekrānuzņēmums</translation> <translation id="4250680216510889253">Nē</translation> <translation id="4253168017788158739">Piezīme</translation> +<translation id="4254813446494774748">Tulkojuma valoda:</translation> <translation id="425573743389990240">Akumulatora izlādes ātrums vatos (ja vērtība ir negatīva, notiek akumulatora uzlāde)</translation> <translation id="4256316378292851214">Saglabāt &video kā...</translation> <translation id="4258348331913189841">Failu sistēmas</translation> @@ -2534,6 +2536,7 @@ <translation id="4365673000813822030">Hmm! Sinhronizācija ir pārtraukusi darboties.</translation> <translation id="4366509400410520531">Jūs esat atļāvis</translation> <translation id="4367782753568896354">Mēs nevarējām instalēt:</translation> +<translation id="436904870295243580">Atrast vairāk piezīmju veikšanas lietojumprogrammu</translation> <translation id="4370975561335139969">Ievadītā e-pasta adrese un parole neatbilst.</translation> <translation id="437184764829821926">Uzlaboti fonta iestatījumi</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3215,6 +3218,7 @@ <translation id="5324674707192845912">Jūs gatavojaties atcelt šīs <ph name="DEVICE_TYPE" /> ierīces reģistrāciju Google tīklā, lai nevarētu attālināti atrast un bloķēt ierīci, kā arī nevarētu attālināti dzēst tās datus. Lai to izdarītu, ierīce būs jārestartē. Vai vēlaties turpināt?</translation> <translation id="5324780743567488672">Automātiski iestatīt laika joslu, izmantojot atrašanās vietu</translation> <translation id="5325120507747984426">Izmanto stabilu logu kārtošanu pārskata režīmā. Tas nozīmē, ka pēc iespējas tiek samazināta logu kustība, atverot/aizverot pārskatu, kā arī starp pārskata sesijām.</translation> +<translation id="5326182685622510062">Grafikas elementu renderēšanas konveijers divdimensiju kanvai ir ieviests divējādi. Šiem dažādajiem ieviešanas veidiem ir atšķirīgas veiktspējas īpašības. Ieslēdzot šo karodziņu, divdimensiju kanvas kontekstā tiek atļauta šo ieviešanas veidu tūlītēja pārslēgšana atkarībā no tā, kā kanva tiek izmantota, lai uzlabotu veiktspēju. Piemēram, ieviešanas veids, kurā tiek izmantots grafiskais procesors, tiek pārslēgts uz veidu, kurā tas netiek izmantots.</translation> <translation id="5327248766486351172">Nosaukums</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">Dzēst</translation> @@ -3347,7 +3351,6 @@ <translation id="54870580363317966">Izvēlieties atveidu šim uzraudzītajam lietotājam.</translation> <translation id="5488468185303821006">Atļaut inkognito režīmā</translation> <translation id="5489390182170331803">Pasīvo notikumu uztvērēju noklusējums dokumenta līmenī</translation> -<translation id="5489789060051091748">Atlasīt, lai atskaņotu: turiet nospiestu meklēšanas taustiņu un noklikšķiniet uz teksta vai velciet to, lai tas tiktu atskaņots</translation> <translation id="549294555051714732">Apakšvirkne, kas atbilst automātiskās aizpildes ieteikumiem</translation> <translation id="5493996328530898436">Jauna audio renderēšanas miksēšanas stratēģija</translation> <translation id="5494362494988149300">Atvērt, ka&d lejupielāde pabeigta</translation> @@ -3704,9 +3707,6 @@ <translation id="5991049340509704927">Palielināt</translation> <translation id="5991774521050363748">Iespējot tīmekļa paziņojumu pielāgotos izkārtojumus. Tiem būs sarežģīti izkārtojuma uzlabojumi, kuri citādi nebūtu iespējami.</translation> <translation id="5993332328670040093">Jūsu datu lietojums vairs netiks mērīts.</translation> -<translation id="5996258716334177896">Jūsu profilu nevarēja pareizi atvērt. - -Iespējams, dažas funkcijas nebūs pieejamas. Pārbaudiet, vai profils eksistē un jūs varat lasīt un papildināt tā saturu.</translation> <translation id="6001799583597751002">PIN neatbilst:</translation> <translation id="6003177993629630467">Pārlūkprogrammas <ph name="PRODUCT_NAME" /> automātiskā atjaunināšana, iespējams, nebūs pieejama.</translation> <translation id="6003294706906016758">Tīmekļa lietotņu stila rāmja iespējošana mitinātajām lietotnēm</translation> @@ -4156,7 +4156,6 @@ <translation id="6637362044401670482">Iespējo ritināšanu pāri malai virtuālajā tastatūrā.</translation> <translation id="6639554308659482635">SQLite atmiņa</translation> <translation id="6643016212128521049">Notīrīt</translation> -<translation id="6644756108386233011">Vai atiestatīt mainītos <ph name="IDS_SHORT_PRODUCT_NAME" /> iestatījumus?</translation> <translation id="6647228709620733774">Netscape sertifikāta izdevējiestādes atsaukšanas URL</translation> <translation id="6647838571840953560">Pašreizējā versija: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Uzgaidiet…</translation> @@ -4264,7 +4263,6 @@ <translation id="6810613314571580006">Automātiski pierakstīties vietnēs, izmantojot saglabātos akreditācijas datus. Ja funkcija ir atspējota, apstiprināšana būs jāveic ikreiz, kad pierakstīsieties vietnē.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> nevar darboties kā sakne.</translation> <translation id="6812841287760418429">Saglabāt izmaiņas</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> konstatēja, ka jūsu pārlūka iestatījumi, iespējams, ir mainīti, jums nezinot. Vai vēlaties atiestatīt to sākotnējās noklusējuma vērtības?</translation> <translation id="6815551780062710681">rediģēt</translation> <translation id="6817358880000653228">Saglabātās paroles šai vietnei:</translation> <translation id="6820008762872335722">Atiestatīt un jautāt</translation> @@ -4382,6 +4380,7 @@ <translation id="6980956047710795611">Migrēt visus Chrome OS datus uz jauno paroli (nepieciešama iepriekšējā parole)</translation> <translation id="6981982820502123353">Pieejamība</translation> <translation id="6981992744085917617">Izvēlieties metodi, kuru izmantot, lai atkārtoti pieteiktos savā kontā:</translation> +<translation id="698231206551913481">Visi faili un lokālie dati, kas ir saistīti ar šo lietotāju, tiks neatgriezeniski dzēsti, tiklīdz šis lietotājs tiks noņemts.</translation> <translation id="6982896539684144327">Tika atrasts <ph name="VENDOR_NAME" /> printeris</translation> <translation id="6983783921975806247">Reģistrētais OID</translation> <translation id="6983991971286645866">Visi labojumi tiks saglabāti šeit: $1.</translation> @@ -4468,6 +4467,7 @@ <translation id="7073555242265688099">Ja jums ir citas Chrome ierīces, tās tiks automātiski sinhronizētas, un jūsu tālrunis atbloķēs arī tās.</translation> <translation id="707392107419594760">Atlasiet savu tastatūru:</translation> <translation id="7075513071073410194">PKCS #1 MD5 ar RSA šifrējumu</translation> +<translation id="7075625805486468288">Pārvaldīt HTTPS/SSL sertifikātus un iestatījumus</translation> <translation id="7076293881109082629">Pierakstīšanās</translation> <translation id="7077829361966535409">Pierakstīšanās lapu neizdevās ielādēt, izmantojot pašreizējos starpniekservera iestatījumus. <ph name="GAIA_RELOAD_LINK_START" />Mēģiniet pierakstīties vēlreiz<ph name="GAIA_RELOAD_LINK_END" /> vai izmantojiet citus <ph name="PROXY_SETTINGS_LINK_START" />starpniekservera iestatījumus<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignorētie protokolu apdarinātāji</translation> @@ -4515,7 +4515,6 @@ <translation id="7141105143012495934">Neizdevās pierakstīties, jo nevarēja izgūt konta informāciju. Lūdzu, sazinieties ar administratoru vai mēģiniet vēlreiz.</translation> <translation id="7143207342074048698">Notiek savienojuma izveide</translation> <translation id="7144878232160441200">Mēģināt vēlreiz</translation> -<translation id="7148311641502571842">Spraudnis <ph name="PLUGIN_NAME" /> ir atspējots. Lai to no jauna iespējotu, apmeklējiet <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Klasiskie printeri</translation> <translation id="7154130902455071009">Mainiet savu sākumlapu uz šo: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Sākotnējais ķīniešu valodas režīms ir vienkāršotā ķīniešu valoda</translation> @@ -4794,6 +4793,7 @@ <translation id="7540972813190816353">Pārbaudot atjauninājumus, radās kļūda: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Attēlu izņēmumi</translation> <translation id="7543104066686362383">Iespējot atkļūdošanas funkcijas šajā <ph name="IDS_SHORT_PRODUCT_NAME" /> ierīcē</translation> +<translation id="7543393759143837504">Ja nevarat atrast meklēto saturu, pārejiet uz <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome palīdzību<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Sajaukt</translation> <translation id="7545288882499673859">Atmiņas atmešanas stratēģija uzlabotai spiediena apstrādei</translation> <translation id="7545415673537747415">Lapā <ph name="BEGIN_LINK" />Google aktivitāšu vadīklas<ph name="END_LINK" /> varat kontrolēt to, kā Google izmanto jūsu pārlūkošanas vēsturi, lai personalizētu Meklēšanu, reklāmas un citus Google pakalpojumus.</translation> @@ -5031,7 +5031,6 @@ <translation id="7879478708475862060">Sekot ievades režīmam</translation> <translation id="7880836220014399562">“<ph name="BUNDLE_NAME" />” pievienos šādas lietotnes un paplašinājumus:</translation> <translation id="7881969471599061635">Atspējot subtitrus</translation> -<translation id="7884988936047469945">Eksperimentālas pieejamības funkcijas</translation> <translation id="7885253890047913815">Nesenie printeri</translation> <translation id="7887192723714330082">Reaģēt uz frāzi “Ok Google”, kad ekrāns ir ieslēgts un atbloķēts.</translation> <translation id="7887334752153342268">Izveidot dublikātu</translation> @@ -5099,6 +5098,7 @@ <translation id="7974067550340408553">Saņemiet savā tālrunī paziņojumu katru reizi, kad jūsu <ph name="DEVICE_TYPE" /> ierīce tiek atbloķēta, izmantojot Smart Lock.</translation> <translation id="7974566588408714340">Mēģināt vēlreiz, izmantojot paplašinājumu <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Attēla izvērse</translation> +<translation id="7976960358280528247">Iespējot loga cikla lietotāja saskarni (vizuālā atsauksme taustiņu kombinācijai Alt+Tab)</translation> <translation id="7977551819349545646">Notiek Chromebox datora atjaunināšana...</translation> <translation id="7978412674231730200">Privātā atslēga</translation> <translation id="7979036127916589816">Sinhronizācijas kļūda</translation> @@ -5126,6 +5126,7 @@ Glabājiet atslēgas failu drošā vietā. Tas būs vajadzīgs, lai izveidotu jaunas paplašinājuma versijas.</translation> <translation id="799923393800005025">Var skatīt</translation> +<translation id="8000066093800657092">Nav tīkla</translation> <translation id="8004582292198964060">Pārlūkprogramma</translation> <translation id="8007030362289124303">Baterija gandrīz tukša</translation> <translation id="8008356846765065031">Internets atvienots. Pārbaudiet interneta savienojumu.</translation> @@ -5200,6 +5201,7 @@ <translation id="8116190140324504026">Plašāka informācija...</translation> <translation id="8116483400482790018">Pielāgota pareizrakstības vārdnīca</translation> <translation id="8116972784401310538">&Grāmatzīmju pārvaldnieks</translation> +<translation id="8117838550640702864">Piezīmju iestatījumi</translation> <translation id="8117957376775388318">Dayi ievades metode</translation> <translation id="8118860139461251237">Pārvaldīt lejupielādes</translation> <translation id="8119572489781388874">Modificēt iestatījumus</translation> @@ -5480,7 +5482,6 @@ <translation id="8472623782143987204">hardware-backed</translation> <translation id="8475313423285172237">Cita datorā instalēta programma ir izraisījusi tāda paplašinājuma pievienošanu, kas var ietekmēt pārlūkprogrammas Chrome darbību.</translation> <translation id="8475647382427415476">Google diskā pašlaik nevar sinhronizēt failu “<ph name="FILENAME" />”. Google diskā vēlāk tiks veikts atkārtots mēģinājums.</translation> -<translation id="8476195663057048998">Notīrīt un atiestatīt</translation> <translation id="8477241577829954800">Aizvietots</translation> <translation id="8477384620836102176">&Vispārīgi</translation> <translation id="8480417584335382321">Lapas tālummaiņa:</translation> @@ -5710,7 +5711,6 @@ <translation id="8785135611469711856">Spraudnis neatbild</translation> <translation id="8787254343425541995">Ļaut starpniekserveru izmantošanu koplietotajiem tīkliem</translation> <translation id="878763818693997570">Šis nosaukums ir pārāk garš.</translation> -<translation id="8787865569533773240">Atiestatīt mainītos <ph name="IDS_SHORT_PRODUCT_NAME" /> iestatījumus</translation> <translation id="8789375980715484686">Citu lietotāju pārvaldība</translation> <translation id="8791534160414513928">Sūtīt pieprasījumu “Nesekot” savā pārlūkošanas datplūsmā</translation> <translation id="8795668016723474529">Pievienot kredītkarti</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 264e1f82..d2eb283 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -519,7 +519,6 @@ <translation id="1673103856845176271">സുരക്ഷാ കാരണങ്ങളാൽ ഫയൽ ആക്സസ്സുചെയ്യാൻ കഴിഞ്ഞില്ല.</translation> <translation id="1675023460278456180">മെറ്റീരിയൽ ഹൈബ്രിഡ്</translation> <translation id="167832068858235403">ശബ്ദം കുറയ്ക്കുക</translation> -<translation id="1678331212993975953">സൈറ്റ് വിശദാംശങ്ങൾ</translation> <translation id="1679068421605151609">ഡെവലപ്പർ ഉപകരണങ്ങൾ</translation> <translation id="1681120471812444678">പ്രിന്ററുകൾ ചേർക്കാൻ സജ്ജീകരിക്കുക…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> എൻറോൾ ചെയ്യുക</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">ചെയ്തുകഴിയുമ്പോള് &തുറക്കുക</translation> <translation id="2372036074421194686">നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ഇൻസ്റ്റാൾ ചെയ്ത ആവശ്യമില്ലാത്ത ഒരു പ്രോഗ്രാം (<ph name="UWS_NAME" />) Chrome കണ്ടെത്തി. Chrome ക്ലീനർ പ്രവർത്തിപ്പിക്കുന്നതിലൂടെ നിങ്ങൾക്ക് അത് നീക്കംചെയ്യാനായേക്കാം.</translation> <translation id="2375701438512326360">എല്ലായ്പ്പോഴും ടച്ച്സ്ക്രീൻ പിന്തുണ പ്രാപ്തമാക്കുന്നതോ അപ്രാപ്തമാക്കുന്നതോ നിർബന്ധിതമാക്കുക, അല്ലെങ്കിൽ ആരംഭത്തിൽ ടച്ച്സ്ക്രീൻ തിരിച്ചറിയുമ്പോൾ പ്രാപ്തമാക്കേണ്ടതുണ്ട് (സ്വയമേവ, സ്ഥിരസ്ഥിതിയിൽ).</translation> -<translation id="2377619091472055321">മാറ്റം വരുത്തിയ <ph name="IDS_SHORT_PRODUCT_NAME" /> ക്രമീകരണങ്ങൾ പുനഃസജ്ജമാക്കുക</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> ഫയലുകൾ തിരഞ്ഞെടുത്തു</translation> <translation id="2378982052244864789">വിപുലീകരണ ഡയറക്ടറി തിരഞ്ഞെടുക്കുക.</translation> <translation id="2379281330731083556">സിസ്റ്റം ഡയലോഗ് ഉപയോഗിച്ച് പ്രിന്റ് ചെയ്യുക... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">നിങ്ങളുടെ കമ്പ്യൂട്ടറിന്റെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പിന്നീടെപ്പോഴെങ്കിലും പുനഃസ്ഥാപിക്കണമെങ്കില് ഒരു റിക്കവറി SD കാര്ഡോ USB മെമ്മറി സ്റ്റിക്കോ ആവശ്യമായി വരും.</translation> <translation id="305932878998873762">HTTP-യുടെ ലളിതമായ കാഷെ ഒരു പുതിയ കാഷെ ആണ്. ഡിസ്ക് സ്പെയ്സ് അലോക്കേഷനായി ഇത് ഫയൽ സിസ്റ്റത്തെ ആശ്രയിക്കുന്നു.</translation> <translation id="3062606427884046423">Chrome മീഡിയ അറിയിപ്പുകൾക്കായി Android MediaStyle അറിയിപ്പുകൾ ഉപയോഗിക്കുക.</translation> +<translation id="3063224679438508013">കുറിപ്പെടുക്കാനുള്ള ആപ്പ് സ്വയം ആരംഭിക്കുക</translation> <translation id="3063844757726132584">ഈ ഹാൻഡി ലോഞ്ചറിൽ നിന്ന് നിങ്ങളുടെ എല്ലാ ആപ്സും ആക്സസ്സ് ചെയ്യുക. ഗെയിമുകൾ കളിക്കുകയും വീഡിയോ ചാറ്റ് നടത്തുകയും സംഗീതം ആസ്വദിക്കുകയും ഡോക്യുമെന്റുകൾ എഡിറ്റുചെയ്യുകയും കൂടുതൽ ആപ്സ് സ്വന്തമാക്കുകയും ചെയ്യുക.</translation> <translation id="3064388234319122767">ലിപ്യന്തരണം (zdravo → здраво)</translation> <translation id="3065041951436100775">ടാബ് പ്രവർത്തനരഹിതമായതിനെക്കുറിച്ചുള്ള ഫീഡ്ബാക്ക്.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">പാസ്വേഡുകൾക്കുള്ള Google Smart Lock</translation> <translation id="317583078218509884">പുതിയ സൈറ്റ് അനുമതി ക്രമീകരണങ്ങൾ പേജ് വീണ്ടും ലോഡുചെയ്തതിനുശേഷം പ്രാബല്യത്തിൽ വരും.</translation> <translation id="3177048931975664371">പാസ്വേഡ് മറയ്ക്കുന്നതിനായി ക്ലിക്ക് ചെയ്യുക</translation> +<translation id="3177909033752230686">പേജ് ഭാഷ:</translation> <translation id="3180365125572747493">ഈ സാക്ഷ്യപത്ര ഫയല് എന്ക്രിപ്റ്റ് ചെയ്യുന്നതിന് ദയവായി ഒരു പാസ്വേഡ് നല്കുക.</translation> <translation id="3183139917765991655">പ്രൊഫൈൽ ഇംപോർട്ടർ</translation> <translation id="3184560914950696195">$1 എന്നതിലേക്ക് സംരക്ഷിക്കാൻ കഴിയില്ല. എഡിറ്റുചെയ്ത ചിത്രങ്ങൾ ഡൗൺലോഡുകൾ ഫോൾഡറിലേക്ക് സംരക്ഷിക്കപ്പെടും.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a>, ഡൗൺലോഡുചെയ്തു</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> എന്നത് കാണിക്കുക</translation> <translation id="3613422051106148727">പുതിയ ടാബിൽ &തുറക്കുക</translation> +<translation id="3616113530831147358">ഓഡിയോ</translation> <translation id="3616741288025931835">&ബ്രൌസിംഗ് ഡാറ്റ ഇല്ലാതാക്കുക...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />” തിരയുക</translation> <translation id="3620292326130836921">എല്ലാം ബാക്കപ്പുചെയ്തു!</translation> @@ -2293,7 +2294,6 @@ <translation id="3994878504415702912">&സൂം ചെയ്യുക</translation> <translation id="3995964755286119116">Adobe Flash Player ക്യാമറ ക്രമീകരണം വ്യത്യസ്തമാണ്.</translation> <translation id="39964277676607559">ഉള്ളടക്ക സ്ക്രിപ്റ്റിനായി javascript '<ph name="RELATIVE_PATH" />' ലോഡ് ചെയ്യാന് കഴിഞ്ഞില്ല.</translation> -<translation id="3996912167543967198">പുനഃസജ്ജമാക്കുന്നു..</translation> <translation id="3997015411467176489">പരീക്ഷണാത്മക ക്യാൻവാസ് ഫീച്ചറുകൾ</translation> <translation id="4002066346123236978">ശീർഷകം</translation> <translation id="40027638859996362">പദം നീക്കല്</translation> @@ -2326,7 +2326,7 @@ <translation id="406070391919917862">പശ്ചാത്തല അപ്ലിക്കേഷനുകള്</translation> <translation id="4062251648694601778">നിങ്ങളുടെ <ph name="SHORT_PRODUCT_NAME" /> ഉപകരണം ആസ്വദിക്കുക. ചോദ്യങ്ങളുണ്ടോ? സ്റ്റാറ്റസ് ട്രേയിലെ "?" ക്ലിക്കുചെയ്യുന്നതിലൂടെ നിങ്ങൾക്ക് എല്ലായ്പ്പോഴും സഹായം നേടാനാവും.</translation> <translation id="4065876735068446555">നിങ്ങൾ ഉപയോഗിക്കുന്ന നെറ്റ്വർക്ക് (<ph name="NETWORK_ID" />) അതിന്റെ ലോഗിൻ പേജ് സന്ദർശിക്കാൻ നിങ്ങളോട് ആവശ്യപ്പെടാം.</translation> -<translation id="4068506536726151626">നിങ്ങളുടെ സ്ഥാനം ട്രാക്കുചെയ്യുന്ന ഇനിപ്പറയുന്ന സൈറ്റുകളില് നിന്നുമുള്ള ഘടകങ്ങള് ഈ പേജില് അടങ്ങിയിരിക്കുന്നു:</translation> +<translation id="4068506536726151626">നിങ്ങളുടെ ലൊക്കേഷൻ ട്രാക്കുചെയ്യുന്ന ഇനിപ്പറയുന്ന സൈറ്റുകളിൽ നിന്നുമുള്ള ഘടകങ്ങൾ ഈ പേജിൽ അടങ്ങിയിരിക്കുന്നു:</translation> <translation id="4070370845051020638">കാന്റണീസ് ടൈപ്പുചെയ്യൽ രീതി</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: സൈൻ ഇൻ പിശക്</translation> <translation id="4072248638558688893">തമിഴ് കീബോർഡ് (സ്വരസൂചകം)</translation> @@ -2389,6 +2389,7 @@ <translation id="4140559601186535628">പുഷ് സന്ദേശങ്ങൾ</translation> <translation id="4146026355784316281">എപ്പോഴും സിസ്റ്റം വ്യൂവറിൽ തുറക്കുക</translation> <translation id="4146175323503586871">നിങ്ങളുടെ Chrome OS ഉപകരണം ഒരു ഓഫറിന് യോഗ്യമാണെങ്കിൽ <ph name="SERVICE_NAME" /> എന്നതിന് പരിശോധിക്കേണ്ടതുണ്ട്. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">ഡിസ്പ്ലേ</translation> <translation id="4151403195736952345">ആഗോള സ്ഥിരശൈലി ഉപയോഗിക്കുക (കണ്ടെത്തുക)</translation> <translation id="4152177296285305182">നിങ്ങളുടെ എന്ക്രിപ്റ്റ് ചെയ്ത ഡാറ്റ നിങ്ങളുടെ പാസ്ഫ്രേസുള്ള ആളുകള്ക്ക് മാത്രമാണ് വായിക്കാന് സാധിക്കുക -- Google അയയ്ക്കുന്നതോ അല്ലെങ്കില് സംഭരിക്കുന്നതോ അല്ല പാസ്ഫ്രേസ്. നിങ്ങളുടെ പാസ്ഫ്രേസ് മറന്നു പോകുകയാണെങ്കില്, നിങ്ങള് സമന്വയം പുനഃസജ്ജമാക്കേണ്ടതുണ്ട്.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{ഒരു ടാബ്}other{# ടാബുകൾ}}</translation> @@ -2453,6 +2454,7 @@ <translation id="4250229828105606438">സ്ക്രീൻഷോട്ട്</translation> <translation id="4250680216510889253">ഇല്ല</translation> <translation id="4253168017788158739">കുറിപ്പ്</translation> +<translation id="4254813446494774748">വിവർത്തന ഭാഷ:</translation> <translation id="425573743389990240">ബാറ്ററി ഡിസ്ചാർജ്ജ് നിരക്ക് വാട്സിൽ (നെഗറ്റീവ് മൂല്യം അർത്ഥമാക്കുന്നത് ബാറ്ററി ചാർജ്ജുചെയ്യുന്നു എന്നാണ്)</translation> <translation id="4256316378292851214">വീഡിയോ ഇതായി സംരക്ഷി&ക്കുക...</translation> <translation id="4258348331913189841">ഫയല് സിസ്റ്റങ്ങൾ</translation> @@ -2530,6 +2532,7 @@ <translation id="4365673000813822030">ക്ഷമിക്കണം, സമന്വയം പ്രവർത്തനം നിർത്തി.</translation> <translation id="4366509400410520531">നിങ്ങൾ അനുവദിച്ചത്</translation> <translation id="4367782753568896354">ഞങ്ങൾക്ക് ഇത് ഇൻസ്റ്റാൾ ചെയ്യാനായില്ല:</translation> +<translation id="436904870295243580">കുറിപ്പെടുക്കാനുള്ള കൂടുതൽ അപ്ലിക്കേഷനുകൾ കണ്ടെത്തുക</translation> <translation id="4370975561335139969">നിങ്ങൾ നൽകിയ ഇമെയിലും പാസ്വേഡും പൊരുത്തപ്പെടുന്നില്ല</translation> <translation id="437184764829821926">വിപുലീകരിച്ച ഫോണ്ട് ക്രമീകരണങ്ങൾ</translation> <translation id="4372884569765913867">1x1</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">ഉപകരണം വിദൂരമായി കണ്ടെത്താനും മായ്ക്കാനും ലോക്കുചെയ്യാനുമുള്ള കഴിവ് പ്രവർത്തനരഹിതമാക്കാൻ, നിങ്ങൾ Google-ൽ ഈ <ph name="DEVICE_TYPE" /> അൺഎൻറോൾ ചെയ്യാൻ പോകുന്നു. ഇതിന് റീബൂട്ട് ചെയ്യേണ്ടിവരും. തുടരണോ?</translation> <translation id="5324780743567488672">നിങ്ങളുടെ ലൊക്കേഷൻ ഉപയോഗിച്ച് സമയ മേഖല സ്വയമേവ സജ്ജമാക്കുക</translation> <translation id="5325120507747984426">അവലോകന സെഷനുകൾക്കിടയിൽ അവലോകനത്തിൽ പ്രവേശിക്കുമ്പോഴോ പുറത്തുകടക്കുമ്പോഴോ വിൻഡോകൾ ചെറുതാക്കാൻ ശ്രമിക്കുന്ന അവലോകന മോഡിൽ ഒരു സ്ഥിര വിൻഡോ ക്രമീകരിക്കൽ ഉപയോഗിക്കുന്നു.</translation> +<translation id="5326182685622510062">2D ക്യാൻവാസിന്റെ ഗ്രാഫിക്സ് റെൻഡറിംഗ് പൈപ്പ്ലൈൻ ഒന്നിലധികം മാർഗ്ഗങ്ങളിലൂടെ നടപ്പിലാക്കാം. ഈ വ്യത്യസ്ത നടപ്പിലാക്കലുകൾക്ക് വ്യത്യസ്ത പ്രകടന സവിശേഷതകളുണ്ട്. ഈ ഫ്ലാഗ് ഓണാക്കുന്നത്, പ്രകടനം മെച്ചപ്പെടുത്താൻ ക്യാൻവാസ് എങ്ങനെ ഉപയോഗിക്കുന്നു എന്നത് അടിസ്ഥാനമാക്കി ക്യാൻവാസ് 2D കോൺടെക്സ്റ്റുകളെ വേഗത്തിൽ ഈ നടപ്പിലാക്കലുകൾക്കിടയിലൂടെ മാറാൻ അനുവദിക്കുന്നു. ഉദാഹരണത്തിന്, GPU ഉപയോഗിച്ച് നടപ്പിലാക്കുന്നതിൽ നിന്ന് അത് ഉപയോഗിക്കാത്തതിലേക്ക് പോകുന്നു.</translation> <translation id="5327248766486351172">പേര്</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&ഇല്ലാതാക്കൂ</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">ഈ സൂപ്പർവൈസുചെയ്ത ഉപയോക്താവിനായി ഒരു അവതാർ തിരഞ്ഞെടുക്കുക.</translation> <translation id="5488468185303821006">ആള്മാറാട്ടത്തില് അനുവദിക്കുക</translation> <translation id="5489390182170331803">ഡോക്യുമെന്റ് ലെവൽ ഇവന്റ് ലിസണർമാരുടെ പാസീവ് ഡിഫോൾട്ട്</translation> -<translation id="5489789060051091748">സംസാരിക്കുന്നതിന് തിരഞ്ഞെടുക്കുക: എന്തെങ്കിലും സംസാരിക്കുന്നതിന് 'തിരയുക' അമർത്തിപ്പിടിച്ച്, ക്ലിക്കുചെയ്യുക അല്ലെങ്കിൽ വലിച്ചിടുക</translation> <translation id="549294555051714732">ഓട്ടോഫിൽ നിർദ്ദേശങ്ങൾക്കായുള്ള സബ്സ്ട്രിംഗ് പൊരുത്തപ്പെടൽ</translation> <translation id="5493996328530898436">പുതിയ ഓഡിയോ റെൻഡറിംഗ് മിക്സിംഗ് സ്ട്രാറ്റജി</translation> <translation id="5494362494988149300">&പൂര്ത്തിയാക്കുമ്പോള് തുറക്കുക</translation> @@ -3586,7 +3589,7 @@ <translation id="5828228029189342317">ഡൗൺലോഡ് ചെയ്തതിനുശേഷം സ്വപ്രേരിതമായി ചില ഫയല് തരങ്ങള് തുറക്കുന്നതിന് നിങ്ങള് തിരഞ്ഞെടുത്തു.</translation> <translation id="5828633471261496623">പ്രിന്റ് ചെയ്യുന്നു...</translation> <translation id="5829401023154985950">കൈകാര്യം ചെയ്യുക...</translation> -<translation id="5830410401012830739">സ്ഥാന ക്രമീകരണങ്ങള് മാനേജുചെയ്യുക...</translation> +<translation id="5830410401012830739">ലൊക്കേഷൻ ക്രമീകരണം മാനേജുചെയ്യുക...</translation> <translation id="5830720307094128296">പേജ് ഇതായി &സംരക്ഷിക്കുക</translation> <translation id="5832669303303483065">പുതിയ തെരുവ് വിലാസം ചേര്ക്കുക...</translation> <translation id="5832805196449965646">വ്യക്തിയെ ചേർക്കുക</translation> @@ -3701,9 +3704,6 @@ <translation id="5991049340509704927">മാഗ്നിഫൈ ചെയ്യുക</translation> <translation id="5991774521050363748">വെബ് അറിയിപ്പുകൾക്കായി ഇഷ്ടാനുസൃത ലേഔട്ടുകൾ പ്രവർത്തനക്ഷമമാക്കുക. അവയിൽ മറ്റൊരു തരത്തിലും സാധ്യമാകാത്ത സൂക്ഷ്മമായ ലേഔട്ട് മെച്ചപ്പെടുത്തലുകൾ ഉണ്ടാകും.</translation> <translation id="5993332328670040093">നിങ്ങളുടെ ഡാറ്റ ഉപയോഗം ഇനി കണക്കാക്കുന്നതല്ല.</translation> -<translation id="5996258716334177896">നിങ്ങളുടെ പ്രൊഫൈൽ ശരിയായി തുറക്കാന് കഴിഞ്ഞില്ല. - -ചില സവിശേഷതകള് ലഭ്യമല്ലായിരിക്കാം. പ്രൊഫൈൽ നിലവിലുണ്ടോയെന്നും അതിന്റെ ഉള്ളടക്കങ്ങള് എഴുതുകയും വായിക്കുകയും ചെയ്യുന്നതിന് നിങ്ങള്ക്ക് അനുമതിയുണ്ടോയെന്നും പരിശോധിക്കുക.</translation> <translation id="6001799583597751002">പിൻ നമ്പറുകൾ യോജിക്കുന്നില്ല:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> ന് ഒരുപക്ഷേ തന്നത്താനേ അപ്ഡേറ്റ് ചെയ്യാന് സാധിക്കുന്നില്ലായിരിക്കാം.</translation> <translation id="6003294706906016758">ഹോസ്റ്റുചെയ്ത ആപ്സിനുള്ള വെബ് ആപ്പ് സ്റ്റൈൽ ഫ്രെയിം സജ്ജമാക്കുന്നു</translation> @@ -4091,7 +4091,7 @@ <translation id="6547354035488017500">512 MB ഇടമെങ്കിലും സൃഷ്ടിച്ചില്ലെങ്കിൽ നിങ്ങളുടെ ഉപകരണം പ്രതികരിക്കില്ല. ഇടം സൃഷ്ടിക്കാൻ, ഉപകരണ സ്റ്റോറേജിൽ നിന്ന് ഫയലുകൾ ഇല്ലാതാക്കുക.</translation> <translation id="6549689063733911810">പുതിയവ</translation> <translation id="6550101752019590450">തിരയൽ ഫലങ്ങളുടെ പേജിൽ തിരയൽ അന്വേഷണങ്ങൾ സമർപ്പിക്കാൻ EmbeddedSearch API ഉപയോഗിക്കും.</translation> -<translation id="6550675742724504774">ഐച്ഛികങ്ങള്</translation> +<translation id="6550675742724504774">ഓപ്ഷനുകൾ</translation> <translation id="6551034508248154663">ശബ്ദ, ഓഡിയോ പ്രവർത്തനം പ്രവർത്തനക്ഷമമാക്കുക...</translation> <translation id="6551508934388063976">കമാൻഡ് ലഭ്യമല്ല. പുതിയ വിൻഡോ തുറക്കാൻ control-N അമർത്തുക.</translation> <translation id="655384502888039633"><ph name="USER_COUNT" /> ഉപയോക്താക്കള്</translation> @@ -4153,7 +4153,6 @@ <translation id="6637362044401670482">വെർച്വൽ കീബോർഡ് ഓവർസ്ക്രോൾ പിന്തുണ പ്രവർത്തനക്ഷമമാക്കുന്നു.</translation> <translation id="6639554308659482635">SQLite മെമ്മറി</translation> <translation id="6643016212128521049">മായ്ക്കുക</translation> -<translation id="6644756108386233011">മാറ്റംവരുത്തിയ <ph name="IDS_SHORT_PRODUCT_NAME" /> ക്രമീകരണങ്ങൾ പുനഃസജ്ജമാക്കണോ?</translation> <translation id="6647228709620733774">നെറ്റ്സ്കേപ്പ് സര്ട്ടിഫിക്കേഷന് അതോറിറ്റി അസാധുവാക്കല് URL</translation> <translation id="6647838571840953560">നിലവിൽ <ph name="CHANNEL_NAME" /> ചാനലിലാണ്</translation> <translation id="6649018507441623493">ഒരു നിമിഷം മാത്രം…</translation> @@ -4261,7 +4260,6 @@ <translation id="6810613314571580006">സംഭരിച്ച ക്രെഡൻഷ്യലുകൾ ഉപയോഗിച്ച് വെബ്സൈറ്റുകളിലേക്ക് സ്വയം സൈൻ ഇൻ ചെയ്യുക. ഫീച്ചർ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുമ്പോൾ, ഒരു വെബ്സൈറ്റിലേക്ക് സൈൻ ഇൻ ചെയ്യുന്നതിന് മുമ്പ് ഓരോ തവണയും നിങ്ങളോട് സ്ഥിരീകരിക്കാൻ ആവശ്യപ്പെടും.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> റൂട്ട് ആയി പ്രവര്ത്തിപ്പിക്കാന് കഴിയില്ല.</translation> <translation id="6812841287760418429">മാറ്റങ്ങൾ നിലനിർത്തുക</translation> -<translation id="6815353853907306610">നിങ്ങളുടെ അറിവില്ലാതെ നിങ്ങളുടെ ബ്രൗസർ ക്രമീകരണങ്ങളിൽ ഒരുപക്ഷേ മാറ്റം വന്നതായി <ph name="IDS_SHORT_PRODUCT_NAME" /> കണ്ടെത്തി. അവയെ യഥാർത്ഥ സ്ഥിരമായവയിലേക്ക് പുനഃക്രമീകരിക്കാൻ നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടോ?</translation> <translation id="6815551780062710681">എഡിറ്റുചെയ്യുക</translation> <translation id="6817358880000653228">ഈ സൈറ്റിനായുള്ള സംരക്ഷിച്ച പാസ്വേഡുകൾ:</translation> <translation id="6820008762872335722">ആവശ്യപ്പെടുന്നതിന് റീസെറ്റുചെയ്തു</translation> @@ -4379,6 +4377,7 @@ (മുൻ പാസ്വേഡ് ആവശ്യമുണ്ട്)</translation> <translation id="6981982820502123353">പ്രവേശനക്ഷമത</translation> <translation id="6981992744085917617">അക്കൗണ്ടിൽ വീണ്ടും ലോഗിൻ ചെയ്യുന്നതിന് നിങ്ങൾ ഉപയോഗിക്കാൻ താൽപ്പര്യപ്പെടുന്ന രീതി തിരഞ്ഞെടുക്കുക:</translation> +<translation id="698231206551913481">ഈ ഉപയോക്താവിനെ നീക്കംചെയ്യുമ്പോൾ അതോടൊപ്പം അയാളുമായി ബന്ധപ്പെട്ട എല്ലാ ഫയലുകളും പ്രാദേശിക വിവരങ്ങളും ശാശ്വതമായി ഇല്ലാതാക്കപ്പെടും.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" />-ൽ നിന്നുള്ള പ്രിന്റർ തിരിച്ചറിഞ്ഞു</translation> <translation id="6983783921975806247">രജിസ്ട്രേഡ് OID</translation> <translation id="6983991971286645866">എല്ലാ എഡിറ്റുകളും $1 എന്നതിൽ സംരക്ഷിക്കും.</translation> @@ -4465,6 +4464,7 @@ <translation id="7073555242265688099">നിങ്ങൾക്ക് മറ്റ് Chrome ഉപകരണങ്ങൾ ഉണ്ടെങ്കിൽ, അവ സ്വയമേ സമന്വയിക്കും അതുകൊണ്ട് ഫോൺ അവയെയും അൺലോക്കുചെയ്യും.</translation> <translation id="707392107419594760">നിങ്ങളുടെ കീബോര്ഡ് തിരഞ്ഞെടുക്കുക :</translation> <translation id="7075513071073410194">RSA എന്ക്രിപ്ഷനോടുകൂടിയ PKCS #1 MD5 </translation> +<translation id="7075625805486468288">HTTPS/SSL സർട്ടിഫിക്കറ്റുകളും ക്രമീകരണവും മാനേജുചെയ്യുക</translation> <translation id="7076293881109082629">സൈൻ ഇൻ ചെയ്യുന്നു</translation> <translation id="7077829361966535409">നിലവിലെ പ്രോക്സി ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് ലോഡുചെയ്യുന്നതിൽ സൈൻ-ഇൻ പേജ് പരാജയപ്പെട്ടു. <ph name="GAIA_RELOAD_LINK_START" />വീണ്ടും സൈൻ ഇൻ ചെയ്യാൻ ശ്രമിക്കുക<ph name="GAIA_RELOAD_LINK_END" />, അല്ലെങ്കിൽ മറ്റ് <ph name="PROXY_SETTINGS_LINK_START" />പ്രോക്സി ക്രമീകരണങ്ങൾ<ph name="PROXY_SETTINGS_LINK_END" /> ഉപയോഗിക്കുക.</translation> <translation id="7077872827894353012">അവഗണിച്ച പ്രോട്ടോകോൾ ഹാൻഡ്ലറുകൾ</translation> @@ -4512,7 +4512,6 @@ <translation id="7141105143012495934">നിങ്ങളുടെ അക്കൗണ്ട് വിശദാംശങ്ങൾ വീണ്ടെടുക്കാനാവാത്തതിനാൽ സൈൻ ഇൻ ചെയ്യുന്നത് പരാജയപ്പെട്ടു. നിങ്ങളുടെ അഡ്മിനിസ്ട്രേറ്ററെ ബന്ധപ്പെടുക അല്ലെങ്കിൽ വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="7143207342074048698">കണക്റ്റുചെയ്യുന്നു</translation> <translation id="7144878232160441200">വീണ്ടും ശ്രമിക്കുക</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> അപ്രാപ്തമാക്കി. അത് വീണ്ടും പ്രാപ്തമാക്കുന്നതിന്, <ph name="CHROME_PLUGINS_LINK" /> എന്നതിലേക്ക് പോകുക.</translation> <translation id="715118844758971915">ക്ലാസിക് പ്രിന്ററുകൾ</translation> <translation id="7154130902455071009">നിങ്ങളുടെ ആരംഭ പേജ് ഇതായി മാറ്റുക: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">പ്രാരംഭ ചൈനീസ് മോഡ് ലളിതവല്ക്കരിച്ച ചനീസ് ആണ്</translation> @@ -4791,6 +4790,7 @@ <translation id="7540972813190816353">അപ്ഡേറ്റുകൾക്കായി പരിശോധിക്കുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു: <ph name="ERROR" /></translation> <translation id="7541121857749629630">ചിത്രം ഒഴിവാക്കലുകൾ</translation> <translation id="7543104066686362383">ഈ <ph name="IDS_SHORT_PRODUCT_NAME" /> ഉപകരണത്തിലെ ഡീബഗ്ഗുചെയ്യൽ ഫീച്ചറുകൾ പ്രവർത്തനക്ഷമമാക്കുന്നു</translation> +<translation id="7543393759143837504">നിങ്ങൾ തിരയുന്നത് കണ്ടെത്താനാകുന്നില്ലെങ്കിൽ, <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome സഹായത്തിൽ<ph name="END_LINK_CHROMIUM" /> പോകുക.</translation> <translation id="7544853251252956727">ഷഫിൾ ചെയ്യുക</translation> <translation id="7545288882499673859">നൂതന പ്രഷർ കൈകാര്യം ചെയ്യാനായുള്ള മെമ്മറി നിരാകരിക്കൽ സ്ട്രാറ്റജി</translation> <translation id="7545415673537747415"><ph name="BEGIN_LINK" />Google ആക്റ്റിവിറ്റി നിയന്ത്രണങ്ങളിൽ<ph name="END_LINK" /> നിന്ന് തിരയലും പരസ്യങ്ങളും മറ്റ് Google സേവനങ്ങളും വ്യക്തിപരമാക്കാൻ, നിങ്ങളുടെ ബ്രൗസിംഗ് ചരിത്രം Google ഉപയോഗിക്കുന്ന രീതി നിയന്ത്രിക്കുക.</translation> @@ -5028,7 +5028,6 @@ <translation id="7879478708475862060">ഇൻപുട്ട് മോഡ് പിന്തുടരുക</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" ഈ അപ്ലിക്കേഷനുകളും വിപുലീകരണങ്ങളും ചേർക്കുന്നു:</translation> <translation id="7881969471599061635">സബ്ടൈറ്റിലുകൾ പ്രവർത്തനരഹിതമാക്കുക</translation> -<translation id="7884988936047469945">പരീക്ഷണാത്മക ആക്സസിബിലിറ്റി ഫീച്ചറുകൾ</translation> <translation id="7885253890047913815">സമീപകാല ലക്ഷ്യസ്ഥാനങ്ങൾ</translation> <translation id="7887192723714330082">സ്ക്രീൻ ഓണായിരിക്കുമ്പോഴും അൺലോക്കായിരിക്കുമ്പോഴും "Ok Google" നോട് പ്രതികരിക്കുക</translation> <translation id="7887334752153342268">തനിപ്പകര്പ്പ്</translation> @@ -5096,6 +5095,7 @@ <translation id="7974067550340408553">Smart Lock, നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> അൺലോക്കുചെയ്യുമ്പോഴെല്ലാം ഫോണിൽ അറിയിപ്പുകൾ സ്വീകരിക്കുക.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" /> ഉപയോഗിച്ച് വീണ്ടും ശ്രമിക്കുക</translation> <translation id="7974936243149753750">ഓവർസ്കാൻ</translation> +<translation id="7976960358280528247">വിൻഡോ സൈക്കിൾ UI പ്രവർത്തനക്ഷമമാക്കുക (Alt+Tab-ന്റെ വിഷ്വൽ ഫീഡ്ബാക്ക്).</translation> <translation id="7977551819349545646">Chromebox അപ്ഡേറ്റുചെയ്യുന്നു...</translation> <translation id="7978412674231730200">സ്വകാര്യ കീ</translation> <translation id="7979036127916589816">സമന്വയ പിശക്</translation> @@ -5123,6 +5123,7 @@ നിങ്ങളുടെ പ്രധാന ഫയല് ഒരു സുരക്ഷിത സ്ഥലത്ത് സൂക്ഷിക്കുക. നിങ്ങളുടെ വിപുലീകരണത്തിന്റെ പുതിയ പതിപ്പുകള് സൃഷ്ടിക്കുന്നതിന് നിങ്ങള്ക്ക് അത് ആവശ്യമാണ്.</translation> <translation id="799923393800005025">കാണാനാകുന്നത്</translation> +<translation id="8000066093800657092">നെറ്റ്വര്ക്ക് ഇല്ല</translation> <translation id="8004582292198964060">ബ്രൌസര്</translation> <translation id="8007030362289124303">ബാറ്ററി കുറവാണ്</translation> <translation id="8008356846765065031">ഇന്റർനെറ്റ് വിച്ഛേദിച്ചു. നിങ്ങളുടെ ഇന്റർനെറ്റ് കണക്ഷൻ പരിശോധിക്കുക.</translation> @@ -5197,6 +5198,7 @@ <translation id="8116190140324504026">കൂടുതൽ വിവരങ്ങള്...</translation> <translation id="8116483400482790018">ഇഷ്ടാനുസൃത അക്ഷരവിന്യാസ നിഘണ്ടു</translation> <translation id="8116972784401310538">&ബുക്മാര്ക്ക് മാനേജര്</translation> +<translation id="8117838550640702864">കുറിപ്പെടുക്കൽ ക്രമീകരണം</translation> <translation id="8117957376775388318">ഡായി ടൈപ്പുചെയ്യൽ രീതി</translation> <translation id="8118860139461251237">നിങ്ങളുടെ ഡൗൺലോഡുകൾ നിയന്ത്രിക്കുക</translation> <translation id="8119572489781388874">ക്രമീകരണങ്ങൾ പരിഷ്ക്കരിക്കുക</translation> @@ -5291,7 +5293,7 @@ <translation id="8226222018808695353">നിരോധിക്കപ്പെട്ടത്</translation> <translation id="8226742006292257240">നിങ്ങളുടെ കമ്പ്യൂട്ടറിലേക്ക് നിര്ണ്ണയിച്ച ക്രമരഹിതമായി ജനറേറ്റുചെയ്ത TPM പാസ്വേഡ് ചുവടെ:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> എന്നതിലെ നിലവിലുള്ള ആക്രമണകാരികൾ നിങ്ങളുടെ വിവരങ്ങൾ ഇല്ലാതാക്കാനോ മോഷ്ടിക്കാനോ ഇടയുള്ള (ഉദാഹരണാത്തിന്, ഫോട്ടോകൾ, പാസ്വേഡുകൾ, സന്ദേശങ്ങൾ, ക്രെഡിറ്റ് കാർഡുകൾ മുതലായവ) അപകടകരമായ പ്രോഗ്രാമുകൾ നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ഇൻസ്റ്റാളുചെയ്യാൻ ശ്രമം നടത്താനിടയുണ്ട്.</translation> +<translation id="8230421197304563332"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> എന്നതിലെ നിലവിലുള്ള ആക്രമണകാരികൾ നിങ്ങളുടെ വിവരങ്ങൾ ഇല്ലാതാക്കാനോ മോഷ്ടിക്കാനോ ഇടയുള്ള (ഉദാഹരണത്തിന്, ഫോട്ടോകൾ, പാസ്വേഡുകൾ, സന്ദേശങ്ങൾ, ക്രെഡിറ്റ് കാർഡുകൾ പോലുള്ളവ) അപകടകരമായ പ്രോഗ്രാമുകൾ നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ഇൻസ്റ്റാളുചെയ്യാൻ ശ്രമിച്ചേക്കാം.</translation> <translation id="8233254008506535819">'ബ്രൗസിംഗ് ഡാറ്റ മായ്ക്കുക' ഡയലോഗിൽ പ്രധാന സൈറ്റുകൾ വൈറ്റ്ലിസ്റ്റ് ചെയ്യാനുള്ള ഓപ്ഷൻ ഉൾപ്പെടുത്തുക.</translation> <translation id="8236231079192337250">പ്രിന്റർ ഡ്രൈവറുകൾക്കായുള്ള Chrome വെബ് സ്റ്റോർ ഗാലറി ആപ്പ്</translation> <translation id="8238649969398088015">സഹായ നുറുങ്ങ്</translation> @@ -5477,7 +5479,6 @@ <translation id="8472623782143987204">ഹാര്ഡ്വെയര്-ബാക്കുചെയ്തു</translation> <translation id="8475313423285172237">നിങ്ങളുടെ കമ്പ്യൂട്ടറിലെ മറ്റൊരു പ്രോഗ്രാം Chrome പ്രവർത്തിക്കുന്ന രീതി മാറ്റിയേക്കാവുന്ന ഒരു വിപുലീകരണം ചേർത്തു.</translation> <translation id="8475647382427415476">Google ഡ്രൈവിന് ഇപ്പോൾ "<ph name="FILENAME" />" സമന്വയിപ്പിക്കായില്ല. Google ഡ്രൈവ് പിന്നീട് വീണ്ടും ശ്രമിക്കുന്നതാണ്.</translation> -<translation id="8476195663057048998">മായ്ച്ച്, റീസെറ്റുചെയ്യുക</translation> <translation id="8477241577829954800">അസാധുവാക്കി</translation> <translation id="8477384620836102176">&പൊതുവായത്</translation> <translation id="8480417584335382321">പേജ് സൂം:</translation> @@ -5706,7 +5707,6 @@ <translation id="8785135611469711856">പ്ലഗിൻ പ്രതികരിക്കുന്നില്ല</translation> <translation id="8787254343425541995">പങ്കിട്ട നെറ്റ്വർക്കുകൾക്കായി പ്രോക്സികൾ അനുവദിക്കുക</translation> <translation id="878763818693997570">ഈ പേര് ദൈർഘ്യമേറിയതാണ്</translation> -<translation id="8787865569533773240">മാറ്റം വരുത്തിയ <ph name="IDS_SHORT_PRODUCT_NAME" /> ക്രമീകരണങ്ങൾ പുനഃസജ്ജമാക്കുക</translation> <translation id="8789375980715484686">മറ്റ് ഉപയോക്താക്കളെ നിയന്ത്രിക്കുക</translation> <translation id="8791534160414513928">നിങ്ങളുടെ ബ്രൗസിംഗ് ട്രാഫിക്ക് ഉപയോഗിച്ച് ഒരു "ട്രാക്കുചെയ്യരുത്" അഭ്യർത്ഥന അയയ്ക്കുക</translation> <translation id="8795668016723474529">ഒരു ക്രെഡിറ്റ് കാര്ഡ് ചേര്ക്കുക</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 4069032d..905f50fa 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -107,7 +107,7 @@ <translation id="1143142264369994168">प्रमाणपत्र स्वाक्षरीकर्ता</translation> <translation id="1145292499998999162">प्लगिन अवरोधित</translation> <translation id="1146204723345436916">HTML फायलीवरुन बुकमार्क आयात करा...</translation> -<translation id="1148624853678088576">आपण पूर्ण सज्ज आहात!</translation> +<translation id="1148624853678088576">आपण पूर्णपणे तयार आहात!</translation> <translation id="1149401351239820326">कालबाह्य होण्याचा महिना:</translation> <translation id="1151972924205500581">संकेतशब्द आवश्यक</translation> <translation id="1154228249304313899">हे पृष्ठ उघडा:</translation> @@ -206,7 +206,7 @@ <translation id="1278049586634282054">दृश्ये तपासा:</translation> <translation id="1278813325885878377">हंगेरियन क्वर्टी कीबोर्ड</translation> <translation id="1284355409890639046">Bluetooth डिव्हाइस जोडा</translation> -<translation id="1285320974508926690">या साइटचा कधीही अनुवाद करु नका</translation> +<translation id="1285320974508926690">या साइटचा कधीही भाषांतर करु नका</translation> <translation id="1285484354230578868">आपल्या Google ड्राइव्ह खात्यामध्ये डेटा संचयित करा</translation> <translation id="1290223615328246825">स्वयंचलित साइन इन अयशस्वी झाले</translation> <translation id="1293509594570842875">नवीन पर्यवेक्षी वापरकर्ता तयार करणे शक्य झाले नाही. कृपया आपले नेटवर्क कनेक्शन तपासा आणि नंतर पुन्हा प्रयत्न करा.</translation> @@ -355,7 +355,7 @@ <translation id="1478340334823509079">तपशील: <ph name="FILE_NAME" /></translation> <translation id="1480041086352807611">डेमो मोड</translation> <translation id="1481244281142949601">आपल्याला पर्याप्तपणे sandbox मध्ये गेलात.</translation> -<translation id="1482124012545051544">नवीन <ph name="FILE_COUNT" /> फोटोंचा बॅकअप घेण्यासाठी सज्ज आहे</translation> +<translation id="1482124012545051544">नवीन <ph name="FILE_COUNT" /> फोटोंचा बॅकअप घेण्यासाठी तयार आहे</translation> <translation id="148466539719134488">स्विस</translation> <translation id="1485015260175968628">ते आता करू शकते:</translation> <translation id="1486096554574027028">संकेतशब्द शोधा</translation> @@ -397,7 +397,7 @@ <translation id="1520635877184409083">समायोजित करा...</translation> <translation id="1521442365706402292">प्रमाणपत्रे व्यवस्थापित करा</translation> <translation id="152234381334907219">कधीही जतन न केलेले</translation> -<translation id="1523350272063152305">मीटिंगसाठी Chromebox डिव्हाइस सेट करण्यास सज्ज आहे.</translation> +<translation id="1523350272063152305">मीटिंगसाठी Chromebox डिव्हाइस सेट करण्यास तयार आहे.</translation> <translation id="1524152555482653726">चित्रपट</translation> <translation id="1525835343380843286">सर्व्हर संप्रेषण त्रुटी</translation> <translation id="1526560967942511387">अशीर्षकांकित दस्तऐवज</translation> @@ -520,7 +520,6 @@ <translation id="1673103856845176271">फाइलमध्ये सुरक्षिततेच्या कारणांमुळे प्रवेश करता येऊ शकला नाही.</translation> <translation id="1675023460278456180">वस्तू संकरित</translation> <translation id="167832068858235403">आवाज कमी करा</translation> -<translation id="1678331212993975953">साइट तपशील</translation> <translation id="1679068421605151609">विकसक साधने</translation> <translation id="1681120471812444678">प्रिंटर जोडण्यासाठी सेट करा…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> ची नोंदणी करा</translation> @@ -535,7 +534,7 @@ <translation id="1694637550309003652">परवानगी क्रियेचा अहवाल देणे</translation> <translation id="169515659049020177">Shift</translation> <translation id="1697068104427956555">प्रतिमेचा चौरस भाग निवडा.</translation> -<translation id="1697532407822776718">आपण पूर्ण सज्ज आहात!</translation> +<translation id="1697532407822776718">आपण पूर्णपणे तयार आहात!</translation> <translation id="1697988819212986149">Google सेवांद्वारे समर्थित संदर्भ मेनू आयटम पुढे Google चिन्ह दर्शविते.</translation> <translation id="1699274548822076330">हे trace-upload-url ध्वजासह संयुक्तपणे वापरण्यासाठी आहे. चेतावणी: सक्षम केले असल्यास, Chrome प्रत्येक नॅव्हिगेशनसाठी कार्यप्रदर्शन डेटा रेकॉर्ड करेल आणि trace-upload-url ध्वजाद्वारे निर्दिष्ट केलेल्या URL वर अपलोड करेल. ट्रेसमध्ये वैयक्तिकरित्या ओळखता येणाऱ्या माहितीचा (PII) समावेश असू शकतो जसे की आपण भेट देत असलेल्या वेबसाइटची शीर्षके आणि URL.</translation> @@ -651,7 +650,7 @@ <translation id="1865678028973512614">फायली हटवा</translation> <translation id="1865769994591826607">केवळ समान-साइट वरील कनेक्शनसाठी</translation> <translation id="186612162884103683">"<ph name="EXTENSION" />" प्रतिमा, व्हिडिओ आणि चेक केलेल्या स्थानांमधील ध्वनी फायली वाचू आणि लिहू शकते.</translation> -<translation id="1867780286110144690"><ph name="PRODUCT_NAME" /> आपली स्थापना पूर्ण करण्यासाठी सज्ज आहे</translation> +<translation id="1867780286110144690"><ph name="PRODUCT_NAME" /> आपली स्थापना पूर्ण करण्यासाठी तयार आहे</translation> <translation id="1873879463550486830">SUID Sandbox</translation> <translation id="1878524442024357078">आपल्या संगणकावर प्रवेश करण्यासाठी कोणत्याही साइटना प्लगिन वापरण्याची अनुमती देऊ नका</translation> <translation id="1880905663253319515">प्रमाणपत्र "<ph name="CERTIFICATE_NAME" />" हटवायचे?</translation> @@ -1009,7 +1008,6 @@ <translation id="2371076942591664043">&पूर्ण झाल्यानंतर उघडा</translation> <translation id="2372036074421194686">Chrome ला आपल्या संगणकावर एक अवांछित कार्यक्रम (<ph name="UWS_NAME" />) स्थापित केलेला आढळला आहे. आपण Chrome क्लीनअप साधन चालवून तो काढून टाकू शकाल.</translation> <translation id="2375701438512326360">नेहमी सक्षम किंवा अक्षम ठेवण्यासाठी किंवा प्रारंभ करताना टचस्क्रीन आढळते तेव्हा सक्षम ठेवण्यासाठी टचस्क्रीन समर्थनाची सक्ती करा (स्वयंचलित, डीफॉल्ट).</translation> -<translation id="2377619091472055321">बदललेल्या <ph name="IDS_SHORT_PRODUCT_NAME" /> सेटिंग्ज रीसेट करा</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> फायली निवडल्या</translation> <translation id="2378982052244864789">विस्तार निर्देशिका निवडा.</translation> <translation id="2379281330731083556">सिस्टम संवाद वापरून मुद्रित करा… <ph name="SHORTCUT_KEY" /></translation> @@ -1230,7 +1228,7 @@ <translation id="2665394472441560184">एक नवीन शब्द जोडा</translation> <translation id="2665717534925640469">हे पृष्ठ आता फुल स्क्रीन असून त्याने आपला माऊस कर्सर अक्षम केला आहे.</translation> <translation id="2665919335226618153">ओहो! स्वरूपन करताना त्रुटी आली.</translation> -<translation id="2667463864537187133">शब्दलेखन तपासक व्यवस्थापित करा</translation> +<translation id="2667463864537187133">शब्दलेखन तपासणी व्यवस्थापित करा</translation> <translation id="2668079306436607263">ओव्हरस्क्रोल इतिहास नेव्हिगेशन</translation> <translation id="2670102641511624474"><ph name="APP_NAME" /> Chrome टॅब सामायिक करीत आहे.</translation> <translation id="2670965183549957348">च्यूइंग इनपुट पद्धत</translation> @@ -1477,7 +1475,7 @@ <translation id="2960393411257968125">संकालन क्रेडेन्शियलसाठी संकेतशब्द व्यवस्थापक स्वयंभरण कसे हाताळतो.</translation> <translation id="29611076221683977"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> वरील आक्रमणकर्ते सध्या कदाचित आपली माहिती (उदाहरणार्थ, फोटो, संकेतशब्द, संदेश आणि क्रेडिट कार्ड) चोरणारे आणि हटविणारे धोकादायक प्रोग्राम आपल्या Mac वर स्थापित करण्याचा प्रयत्न करू शकतात.</translation> <translation id="2961695502793809356">पुढे जाण्यासाठी क्लिक करा, इतिहास पहाण्यासाठी होल्ड करा</translation> -<translation id="296216853343927883">संदर्भ मेनू मधील Google ब्रांडिंग</translation> +<translation id="296216853343927883">संदर्भ मेनू मधील Google ब्रँडिंग</translation> <translation id="2963151496262057773">खालील प्लगिन असंवादी आहे: <ph name="PLUGIN_NAME" />आपण हे थांबवू इच्छिता?</translation> <translation id="2963783323012015985">तुर्कीश कीबोर्ड</translation> <translation id="2964193600955408481">Wi-Fi अक्षम करा</translation> @@ -1553,6 +1551,7 @@ <translation id="3058212636943679650">आपल्याला आपल्या संगणकाची ऑपरेटिंग प्रणाली नेहमी पुनर्स्थापित करणे आवश्यक असल्यास आपल्याला एक पुनर्प्राप्ती SD कार्ड किंवा USB मेमरी स्टिकची आवश्यकता असेल.</translation> <translation id="305932878998873762">HTTP साठी साधे कॅशे एक नवीन कॅशे आहे. डिस्क जागा वाटपासाठी ते फाईलसिस्टीमवर अवलंबून असते.</translation> <translation id="3062606427884046423">Chrome मीडिया सूचनांसाठी Android MediaStyle सूचना वापरा.</translation> +<translation id="3063224679438508013">टीप-अॅप स्वयं-लाँच करा</translation> <translation id="3063844757726132584">या सोयीस्कर लाँचर मधून आपल्या सर्व अॅप्समध्ये प्रवेश करा. Play गेम्स, व्हिडिओ चॅट, संगीत ऐका, दस्तऐवज संपादित करा किंवा आणखी अॅप्स मिळवा.</translation> <translation id="3064388234319122767">लिप्यंतरण (zdravo → здраво)</translation> <translation id="3065041951436100775">टॅबने नष्ट केलेला अभिप्राय</translation> @@ -1643,6 +1642,7 @@ <translation id="3172213052701798825">संकेतशब्दांसाठी Google Smart Lock</translation> <translation id="317583078218509884">पृष्ठ रीलोड केल्यानंतर नवीन साइट परवानग्या सेटिंग्ज प्रभावी होतील.</translation> <translation id="3177048931975664371">संकेतशब्द लपविण्यासाठी क्लिक करा</translation> +<translation id="3177909033752230686">पृष्ठ भाषा:</translation> <translation id="3180365125572747493">कृपया ही प्रमाणपत्र फाइल कूटबद्ध करण्यासाठी संकेतशब्द प्रविष्ट करा.</translation> <translation id="3183139917765991655">प्रोफाईल आयातकर्ता</translation> <translation id="3184560914950696195">$1 वर जतन करु शकत नाही. संपादित प्रतिमा डाउलोड फोल्डरमध्ये जतन केल्या जातील.</translation> @@ -1930,7 +1930,7 @@ <translation id="354060433403403521">AC अॅडाप्टर</translation> <translation id="3541661933757219855">लपवण्यासाठी Ctrl+Alt+/ किंवा Escape टाइप करा</translation> <translation id="3543393733900874979">अद्यतन अयशस्वी (त्रुटी: <ph name="ERROR_NUMBER" />)</translation> -<translation id="3544347428588533940">Smart Lock जवळजवळ सज्ज आहे</translation> +<translation id="3544347428588533940">Smart Lock जवळजवळ तयार आहे</translation> <translation id="3547954654003013442">प्रॉक्सी सेटिंग्ज</translation> <translation id="3549797760399244642">drive.google.com वर जा...</translation> <translation id="3550915441744863158">Chrome स्वयंचलितपणे अद्यतनित होते जेणेकरून आपल्याकडे नेहमी नवीन आवृत्ती असते</translation> @@ -1993,6 +1993,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> द्वारे डाउनलोड केले</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> दर्शवा</translation> <translation id="3613422051106148727">&नवीन टॅबमध्ये उघडा</translation> +<translation id="3616113530831147358">ऑडिओ</translation> <translation id="3616741288025931835">ब्राउझिंग डेटा &साफ करा...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />” पहा</translation> <translation id="3620292326130836921">सर्व बॅकअप घेतला!</translation> @@ -2148,7 +2149,7 @@ <translation id="3815016854028376614">झुयिन इनपुट पद्धत</translation> <translation id="3815571115159309122"><ph name="FILE_COUNT" /> नवीन फोटो आढळले <ph name="LINE_BREAK1" /> - <ph name="BEGIN_LINK" />Google ड्राइव्ह<ph name="END_LINK" /> वर बॅकअप घेण्यास सज्ज</translation> + <ph name="BEGIN_LINK" />Google ड्राइव्ह<ph name="END_LINK" /> वर बॅकअप घेण्यास तयार</translation> <translation id="3819007103695653773">सर्व साइटना पार्श्वभूमी पुश संदेश पाठविण्यासाठी अनुमती द्या</translation> <translation id="3819752733757735746">प्रवेश स्विच करा (केवळ एक किंवा दोन स्विचसह संगणक नियंत्रित करा)</translation> <translation id="3819800052061700452">&पूर्ण स्क्रीन</translation> @@ -2192,7 +2193,7 @@ <translation id="3865414814144988605">रिझोल्यूशन</translation> <translation id="386548886866354912"><ph name="EXTENSION_NAME" /> सह पॅक</translation> <translation id="3866249974567520381">वर्णन</translation> -<translation id="3866443872548686097">आपला पुनर्प्राप्ती मीडिया सज्ज आहे. आपण तो आपल्या सिस्टमवरून काढू शकता.</translation> +<translation id="3866443872548686097">आपला पुनर्प्राप्ती मीडिया तयार आहे. आपण तो आपल्या सिस्टमवरून काढू शकता.</translation> <translation id="3867944738977021751">प्रमाणपत्र फील्ड</translation> <translation id="3868718841498638222">आपण <ph name="CHANNEL_NAME" /> चॅनेलवर स्विच केले.</translation> <translation id="3869917919960562512">चुकीची अनुक्रमणिका</translation> @@ -2289,7 +2290,6 @@ <translation id="3994878504415702912">&झूम करा</translation> <translation id="3995964755286119116">Adobe Flash Player कॅमेरा सेटिंग्ज भिन्न आहेत.</translation> <translation id="39964277676607559">सामग्री स्क्रिप्टसाठी javascript '<ph name="RELATIVE_PATH" />' लोड करणे शक्य नाही.</translation> -<translation id="3996912167543967198">रीसेट करत आहे...</translation> <translation id="3997015411467176489">प्रायोगिक कॅनव्हास वैशिष्ट्ये</translation> <translation id="4002066346123236978">शीर्षक</translation> <translation id="40027638859996362">शब्द हलविणे</translation> @@ -2385,6 +2385,7 @@ <translation id="4140559601186535628">पुश संदेश</translation> <translation id="4146026355784316281">नेहमी सिस्टीम दर्शकासह उघडा</translation> <translation id="4146175323503586871">ऑफरकरिता आपले Chrome OS डिव्हाइस पात्र असल्यास हे <ph name="SERVICE_NAME" /> तपासू इच्छिते. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">प्रदर्शित करा</translation> <translation id="4151403195736952345">जागतिक डीफॉल्ट (शोधणे) वापरा</translation> <translation id="4152177296285305182">फक्त आपला सांकेतिक वाक्यांश असलेली कोणतीही व्यक्ती आपला कूटबद्ध डेटा वाचू शकते -- सांकेतिक वाक्यांश Google कडे पाठविला किंवा त्याद्वारे संचयित केलेला नाही. आपण आपला सांकेतिक वाक्यांश विसरल्यास, आपल्याला समक्रमण रीसेट करणे आवश्यक असेल.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 टॅब}one{# टॅब}other{# टॅब}}</translation> @@ -2449,6 +2450,7 @@ <translation id="4250229828105606438">स्क्रीनशॉट</translation> <translation id="4250680216510889253">नाही</translation> <translation id="4253168017788158739">टीप</translation> +<translation id="4254813446494774748">भाषांतर भाषा:</translation> <translation id="425573743389990240">बॅटरी डिस्चार्ज रेट वॉट्स मध्ये (ऋण मूल्य म्हणजे बॅटरी चार्ज होत आहे)</translation> <translation id="4256316378292851214">म्हणून व्हिडिओ ज&तन करा...</translation> <translation id="4258348331913189841">फाइल सिस्टिम</translation> @@ -2526,6 +2528,7 @@ <translation id="4365673000813822030">अरेरे, समक्रमणाने काम करणे थांबवले आहे.</translation> <translation id="4366509400410520531">आपल्याद्वारे अनुमती दिली</translation> <translation id="4367782753568896354">आम्हाला स्थापित करता आले नाही:</translation> +<translation id="436904870295243580">आणखी टीप-घेणारे अनुप्रयोग शोधा</translation> <translation id="4370975561335139969">आपण प्रविष्ट केलेला ईमेल आणि संकेतशब्द जुळत नाही</translation> <translation id="437184764829821926">प्रगत फॉन्ट सेटिंग्ज</translation> <translation id="4372884569765913867">1x1</translation> @@ -3095,7 +3098,7 @@ <translation id="5184063094292164363">&JavaScript कन्सोल</translation> <translation id="5184662919967270437">आपले डिव्हाइस अद्यतनित करीत आहे</translation> <translation id="5185386675596372454">"<ph name="EXTENSION_NAME" />" ची नवीनतम आवृत्ती अक्षम केली गेली कारण यासाठी अधिक परवानग्या आवश्यक आहेत.</translation> -<translation id="5185403602014064051">हे वैशिष्ट्य संकेतशब्दाच्या आवश्यकतेशिवाय कोणत्याही साईन इन केलेल्या वापरकर्त्यास द्रुतपणे प्रवेश करण्यासाठी आपल्याला अनुमती देते.</translation> +<translation id="5185403602014064051">हे वैशिष्ट्य संकेतशब्दाच्या आवश्यकतेशिवाय कोणत्याही साइन इन केलेल्या वापरकर्त्यास द्रुतपणे प्रवेश करण्यासाठी आपल्याला अनुमती देते.</translation> <translation id="5186650237607254032">आपल्या फोनचा स्क्रीन लॉक अद्यतनित करा जेणे करून आपण जवळपास असताना तो बंद होईल. आपण फोन जलद अनलॉक कराल आणि आपल्या <ph name="DEVICE_TYPE" /> वर एक उत्कृष्ट Smart Lock चा अनुभवाचा आनंद घ्याल.</translation> <translation id="5187295959347858724">आपण आता <ph name="SHORT_PRODUCT_NAME" />मध्ये साइन इन केले आहे. आपले बुकमार्क, इतिहास, आणि इतर सेटिंग्ज आपल्या Google खात्यात समक्रमीत केल्या जात आहेत.</translation> <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation> @@ -3207,6 +3210,7 @@ <translation id="5324674707192845912">आपण डिव्हाइस दूरस्थपणे शोधण्याची, पुसण्याची आणि लॉक करण्याची क्षमता अक्षम करण्याकरिता Google सह या <ph name="DEVICE_TYPE" /> ची नोंदणी जवळजवळ रद्द करणार आहात. यास रीबूटची आवश्यकता असेल. आपण सुरु ठेवू इच्छिता?</translation> <translation id="5324780743567488672">आपले स्थान वापरून स्वयंचलितपणे टाइम झोन सेट करा</translation> <translation id="5325120507747984426">विहंगावलोकन मोडमध्ये एक स्थिर विंडो क्रमाचा वापर करते जी प्रवेश करताना / बाहेर पडताना आणि विहंगावलोकन सत्रादरम्यान विंडोची हालचाल कमी करण्याचा प्रयत्न करते.</translation> +<translation id="5326182685622510062">2D कॅनव्हाससाठी ग्राफिक रेंडरिंग पाइपलाइनच्या एकाधिक अंमलबजावण्या आहेत. या भिन्न अंमलबजावण्यांची भिन्न कार्यप्रदर्शन वैशिष्ट्ये आहेत. हा ध्वज चालू करणे, कार्यप्रदर्शन वाढविण्यासाठी कॅनव्हास कसे वापरले जाते या आधारावर या अंमलबजावण्यांच्या दरम्यान स्विच करण्यासाठी कॅनव्हास 2D संदर्भांना अनुमती देते. उदाहरणार्थ, GPU चा वापर करणार्या अंमलबजावणीपासून त्याचा वापर न करणार्या अंमलबजावणी पर्यंत जाणे.</translation> <translation id="5327248766486351172">नाव</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&हटवा</translation> @@ -3339,7 +3343,6 @@ <translation id="54870580363317966">या पर्यवेक्षी वापरकर्त्यासाठी अवतार निवडा.</translation> <translation id="5488468185303821006">गुप्तमध्ये परवानगी द्या</translation> <translation id="5489390182170331803">दस्तऐवज पातळीचे इव्हेंट ऐकणारे निष्क्रिय डीफॉल्ट</translation> -<translation id="5489789060051091748">बोलण्यासाठी निवडा: शोध दाबून धरा आणि काही बोलण्यासाठी क्लिक करा किंवा ड्रॅग करा</translation> <translation id="549294555051714732">स्वयं-भरण सूचनांसाठी सबस्ट्रिंग जुळणी</translation> <translation id="5493996328530898436">नवीन ऑडिओ प्रस्तुतीकरण मिश्रण योजना</translation> <translation id="5494362494988149300">&पूर्ण झाल्यानंतर उघडा</translation> @@ -3562,7 +3565,7 @@ <translation id="5794414402486823030">नेहमी सिस्टीम दर्शकासह उघडा</translation> <translation id="5794786537412027208">सर्व Chrome Apps मधून बाहेर पडा</translation> <translation id="5800020978570554460">अंतिम डाउनलोडपासून गंतव्य फाईल कापली किंवा काढली.</translation> -<translation id="5801379388827258083">शब्दलेखन तपासक शब्दकोश डाउनलोड करत आहे...</translation> +<translation id="5801379388827258083">शब्दलेखन तपासणी शब्दकोश डाउनलोड करत आहे...</translation> <translation id="5801568494490449797">प्राधान्ये</translation> <translation id="5803531701633845775">कर्सर हलविल्याशिवाय, मागच्यामधून वाक्यांश निवडते</translation> <translation id="5804241973901381774">परवानग्या</translation> @@ -3613,7 +3616,7 @@ <translation id="5856721540245522153">डीबगिंग वैशिष्ट्ये सक्षम करा</translation> <translation id="5857090052475505287">नवीन फोल्डर</translation> <translation id="5857770089550859117">संकालन प्रारंभ करण्यासाठी सांकेतिक वाक्यांश आवश्यक आहे.</translation> -<translation id="5859272821192576954">Hangouts वर सुरु ठेवण्यासाठी आपण पूर्ण सज्ज आहात</translation> +<translation id="5859272821192576954">Hangouts वर सुरु ठेवण्यासाठी आपण पूर्णपणे तयार आहात</translation> <translation id="5860033963881614850">बंद</translation> <translation id="5860209693144823476">टॅब 3</translation> <translation id="58625595078799656">आपला डेटा कूटबद्ध करण्यासाठी <ph name="PRODUCT_NAME" /> ला आपला Google संकेतशब्द किंवा आपला स्वत:चा सांकेतिक वाक्यांश वापरणे आवश्यक आहे.</translation> @@ -3696,7 +3699,6 @@ <translation id="5991049340509704927">विशालित करा</translation> <translation id="5991774521050363748">वेब सूचनांसाठी सानुकूल लेआउट सक्षम करा. त्यामध्ये अन्यथा शक्य नसलेल्या अचूक लेआउट सुधारणा असतील.</translation> <translation id="5993332328670040093">आपला डेटा वापर यापुढे मोजला जाणार नाही.</translation> -<translation id="5996258716334177896">आपले प्रोफाइल योग्यपणे उघडले जाऊ शकले नाही. काही वैशिष्ट्ये अनुपलब्ध असू शकतात. कृपया प्रोफाइल विद्यमान असल्याचे आणि आपल्याला त्यातील सामग्री वाचण्याची आणि लिहिण्याची परवानगी असल्याचे तपासा.</translation> <translation id="6001799583597751002">पिन जुळत नाहीत:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> कदाचित त्यास अद्यतनित ठेवण्यास सक्षम नाही. </translation> <translation id="6003294706906016758">होस्ट केलेल्या अॅप्ससाठी वेब अॅप शैली फ्रेम सक्षम करते</translation> @@ -3865,7 +3867,7 @@ <translation id="6246413617632217567">पर्यवेक्षी वापरकर्ता आयात केला जाऊ शकला नाही. कृपया आपली हार्ड ड्राइव्ह जागा आणि परवानग्या तपासा आणि पुन्हा प्रयत्न करा.</translation> <translation id="6247708409970142803"><ph name="PERCENTAGE" />%</translation> <translation id="6247802389331535091">सिस्टीम: <ph name="ARC_PROCESS_NAME" /></translation> -<translation id="624789221780392884">अद्यतन सज्ज</translation> +<translation id="624789221780392884">अद्यतन तयार</translation> <translation id="6248400709929739064">उपशीर्षके सक्षम करा</translation> <translation id="6248988683584659830">शोध सेटिंग</translation> <translation id="6251870443722440887">GDI हँडल</translation> @@ -4053,7 +4055,7 @@ <translation id="6503077044568424649">सर्वाधिक भेट दिलेले</translation> <translation id="6503256918647795660">स्विस फ्रेंच कीबोर्ड</translation> <translation id="6503521261542448765">संकेतशब्द टाइप करण्याने थकलात? आपले <ph name="DEVICE_TYPE" /> अनलॉक करण्यासाठी आपला फोन वापरा —संकेतशब्द आवश्यक नाही.</translation> -<translation id="650584126816009598">आपला प्रिंटर सज्ज आहे.</translation> +<translation id="650584126816009598">आपला प्रिंटर तयार आहे.</translation> <translation id="6505918941256367791">तामिळ कीबोर्ड (InScript)</translation> <translation id="6506262503848065804">नोंदणी करीत आहे...</translation> <translation id="6507969014813375884">चीनी सरलीकृत</translation> @@ -4147,7 +4149,6 @@ <translation id="6637362044401670482">व्हर्च्युअल कीबोर्ड ओव्हरस्क्रोल समर्थन सक्षम करते.</translation> <translation id="6639554308659482635">SQLite मेमरी</translation> <translation id="6643016212128521049">साफ करा</translation> -<translation id="6644756108386233011">बदललेल्या <ph name="IDS_SHORT_PRODUCT_NAME" /> सेटिंग्ज रीसेट करायच्या?</translation> <translation id="6647228709620733774">Netscape प्रमाणन अधिकृतता निरस्तीकरण URL</translation> <translation id="6647838571840953560">सध्या <ph name="CHANNEL_NAME" /> वर</translation> <translation id="6649018507441623493">फक्त एक सेकंद…</translation> @@ -4255,7 +4256,6 @@ <translation id="6810613314571580006">संचयित क्रेडेन्शियल वापरून वेबसाइटवर स्वयंचलितपणे साइन इन करा. वैशिष्ट्य अक्षम केले असते तेव्हा, वेबसाइटवर साइन इन करण्यापूर्वी प्रत्येकवेळी आपल्याला पुष्टीकरणासाठी विचारले जाईल.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> मूळ म्हणून चालवणे शक्य नाही.</translation> <translation id="6812841287760418429">बदल ठेवा</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> ला आढळले आहे की कदाचित आपल्या ब्राउझर सेटिंग्ज आपल्या माहितीशिवाय बदलण्यात आल्या आहेत. आपण त्या डीफॉल्टवर रीसेट करू इच्छिता?</translation> <translation id="6815551780062710681">संपादित करा</translation> <translation id="6817358880000653228">या साइटसाठी जतन केलेले संकेतशब्द:</translation> <translation id="6820008762872335722">विचारण्यासाठी रीसेट करा</translation> @@ -4273,7 +4273,7 @@ <translation id="6829250331733125857">आपल्या <ph name="DEVICE_TYPE" /> सह मदत मिळवा.</translation> <translation id="6829270497922309893">आपल्या संस्थेमध्ये नोंदणी करा</translation> <translation id="6830590476636787791">प्रथम-चालणार्या ट्यूटोरियल मधील अॅनिमेट केलेली संक्रमणे</translation> -<translation id="6831043979455480757">अनुवाद करा</translation> +<translation id="6831043979455480757">भाषांतर करा</translation> <translation id="6832874810062085277">विचारा</translation> <translation id="6833901631330113163">दक्षिण युरोपीय</translation> <translation id="683526731807555621">नवीन शोध इंजिन जोडा</translation> @@ -4372,6 +4372,7 @@ <translation id="6980956047710795611">सर्व Chrome OS डेटा नवीन संकेतशब्दात स्थलांतरीत करा (मागील संकेतशब्द आवश्यक)</translation> <translation id="6981982820502123353">प्रवेशयोग्यता</translation> <translation id="6981992744085917617">आपल्या खात्यात परत लॉग इन करण्यासाठी आपण वापरू इच्छिता ती पद्धत निवडा:</translation> +<translation id="698231206551913481">एकदा हा वापरकर्ता काढल्यानंतर या वापरकर्त्याशी संबद्ध सर्व फायली आणि स्थानिक डेटा कायमचा हटविला जाईल.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> कडील प्रिंटर आढळले</translation> <translation id="6983783921975806247">नोंदणीकृत OID</translation> <translation id="6983991971286645866">सर्व संपादने $1 वर जतन केली जातील.</translation> @@ -4456,6 +4457,7 @@ <translation id="7073555242265688099">आपल्याकडे इतर Chrome डिव्हाइसेस असल्यास, ते स्वयंचलितपणे संकालित केले जातील, जेणेकरून आपला फोन त्यांना देखील अनलॉक करेल.</translation> <translation id="707392107419594760">आपला कीबोर्ड निवडा:</translation> <translation id="7075513071073410194">PKCS #1 MD5 With RSA कूटबद्धीकरण</translation> +<translation id="7075625805486468288">आपली HTTPS/SSL प्रमाणपत्रे आणि सेटिंग्ज व्यवस्थापित करा</translation> <translation id="7076293881109082629">साइन इन करीत आहे</translation> <translation id="7077829361966535409">वर्तमान प्रॉक्सी सेटिंग्ज वापरून साइन-इन पृष्ठ लोड करण्यास अयशस्वी झाले. कृपया <ph name="GAIA_RELOAD_LINK_START" />पुन्हा साइन इन करण्याचा प्रयत्न करा<ph name="GAIA_RELOAD_LINK_END" />, किंवा भिन्न <ph name="PROXY_SETTINGS_LINK_START" />प्रॉक्सी सेटिंग्ज<ph name="PROXY_SETTINGS_LINK_END" /> वापरा.</translation> <translation id="7077872827894353012">दुर्लक्षित प्रोटोकॉल हँडलर</translation> @@ -4503,7 +4505,6 @@ <translation id="7141105143012495934">आपले खाते तपशील प्राप्त करणे शक्य झाले नसल्याने साइन-इन अयशस्वी झाले. कृपया आपल्या प्रशासकाशी संपर्क साधा किंवा पुन्हा प्रयत्न करा.</translation> <translation id="7143207342074048698">कनेक्ट करीत आहे</translation> <translation id="7144878232160441200">पुन्हा प्रयत्न करा</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> अक्षम केले गेले. ते पुनर्सक्षम करण्यासाठी, कृपया <ph name="CHROME_PLUGINS_LINK" /> वर जा.</translation> <translation id="715118844758971915">क्लासिक प्रिंटर</translation> <translation id="7154130902455071009">आपले प्रारंभ पृष्ठ यावर बदला: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">आरंभिक चीनीमोड सरलीकृत चीनी आहे</translation> @@ -4782,6 +4783,7 @@ <translation id="7540972813190816353">अद्यतने तपासताना एक त्रुटी आली: <ph name="ERROR" /></translation> <translation id="7541121857749629630">प्रतिमा अपवाद</translation> <translation id="7543104066686362383">या <ph name="IDS_SHORT_PRODUCT_NAME" /> डिव्हाइसवर डीबगिंग वैशिष्ट्ये सक्षम करा</translation> +<translation id="7543393759143837504">आपण जे शोधत आहात ते आपण शोधू न शकल्यास <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome मदत<ph name="END_LINK_CHROMIUM" /> वर जा.</translation> <translation id="7544853251252956727">शफल करा</translation> <translation id="7545288882499673859">प्रगत दाब हाताळणीसाठी मेमरी टाकून देण्याची योजना</translation> <translation id="7545415673537747415"><ph name="BEGIN_LINK" />Google क्रियाकलाप नियंत्रणे<ph name="END_LINK" /> मधून शोध, जाहिरात आणि इतर Google सेवा वैयक्तीकृत करण्यासाठी Google आपला ब्राउझिंग इतिहास कसा वापरते ते नियंत्रित करा.</translation> @@ -4824,7 +4826,7 @@ <translation id="7589661784326793847">फक्त एक सेकंद प्रतीक्षा करा</translation> <translation id="7595547011743502844"><ph name="ERROR" /> (त्रुटी कोड <ph name="ERROR_CODE" />).</translation> <translation id="7596831438341298034">ठीक, आयात करा</translation> -<translation id="7600965453749440009">कधीही <ph name="LANGUAGE" /> चा अनुवाद करु नका</translation> +<translation id="7600965453749440009">कधीही <ph name="LANGUAGE" /> चा भाषांतर करु नका</translation> <translation id="760197030861754408">कनेक्ट करण्यासाठी <ph name="LANDING_PAGE" /> वर जा.</translation> <translation id="7602079150116086782">अन्य डिव्हाइसेसवरील कोणतेही टॅब नाहीत</translation> <translation id="7603461642606849762">मॅनिफेस्ट URL केवळ debug.nmf ने समाप्त होत असल्यास डीबग करा</translation> @@ -5018,7 +5020,6 @@ <translation id="7879478708475862060">इनपुट मोडचे अनुसरण करा</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" हे अॅप्स आणि विस्तार जोडते:</translation> <translation id="7881969471599061635">उपशीर्षके अक्षम करा</translation> -<translation id="7884988936047469945">प्रायोगिक प्रवेशक्षमता वैशिष्ट्ये</translation> <translation id="7885253890047913815">अलीकडील गंतव्ये</translation> <translation id="7887192723714330082">स्क्रीन चालू आणि अनलॉक असते तेव्हा "Ok Google" ला प्रतिसाद द्या</translation> <translation id="7887334752153342268">डुप्लिकेट</translation> @@ -5086,6 +5087,7 @@ <translation id="7974067550340408553">प्रत्येक वेळी Smart Lock आपले <ph name="DEVICE_TYPE" /> अनलॉक करते तेव्हा आपल्या फोनवर सूचना मिळवा.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" /> वापरून पुन्हा प्रयत्न करून पहा</translation> <translation id="7974936243149753750">ओव्हरस्कॅन</translation> +<translation id="7976960358280528247">विंडो सायकल UI सक्षम करा (Alt+Tab साठी दृश्यमान अभिप्राय).</translation> <translation id="7977551819349545646">Chromebox अद्यतनित करत आहे...</translation> <translation id="7978412674231730200">खाजगी की</translation> <translation id="7979036127916589816">समक्रमण त्रुटी</translation> @@ -5113,6 +5115,7 @@ आपली की फाइल एका सुरक्षित ठिकाणी ठेवा. आपल्या विस्ताराच्या नवीन आवृत्या तयार करण्यासाठी आपल्याला त्याची आवश्यकता असेल.</translation> <translation id="799923393800005025">पाहू शकते</translation> +<translation id="8000066093800657092">कोणतेही नेटवर्क नाही</translation> <translation id="8004582292198964060">ब्राउझर</translation> <translation id="8007030362289124303">बॅटरी लो</translation> <translation id="8008356846765065031">इंटरनेट डिस्कनेक्ट झाले. कृपया आपले इंटरनेट कनेक्शन तपासा.</translation> @@ -5187,6 +5190,7 @@ <translation id="8116190140324504026">अधिक माहिती...</translation> <translation id="8116483400482790018">शब्दलेखन शब्दकोश सानुकूल करा</translation> <translation id="8116972784401310538">&बुकमार्क व्यवस्थापक</translation> +<translation id="8117838550640702864">टीप सेटिंग्ज</translation> <translation id="8117957376775388318">Dayi इनपुट पद्धत</translation> <translation id="8118860139461251237">आपले डाउनलोड व्यवस्थापित करा</translation> <translation id="8119572489781388874">सेटिंग्ज सुधारित करा</translation> @@ -5368,7 +5372,7 @@ <translation id="8345553596530559351">सक्षम असल्यास, chrome://history/ URL वस्तू डिझाइन इतिहास पृष्ठ लोड करते.</translation> <translation id="8347045947573765315">सर्व साइटना फॉर्ममध्ये की निर्मिती वापरण्याची अनुमती द्या</translation> <translation id="8351419472474436977">या विस्ताराने आपल्या प्रॉक्सी सेटिंग्जचे नियंत्रण घेतले आहे, याचा अर्थ ही बदलू शकते, खंडित होवू शकते किंवा आपण ऑनलाइन करता ती कोणतीहीगोष्ट चोरून एकू शकतो. हा बदल का झाला, याबद्दल आपण निश्चित नसल्यास, आपल्याला कदाचित तो नको आहे.</translation> -<translation id="8352772353338965963">एकाधिक साईन इन वर खाते जोडा. सर्व साईन इन केलेल्या खात्यांवर संकेतशब्दाशिवाय प्रवेश केला जाऊ शकतो, म्हणून हे वैशिष्ट्य केवळ विश्वसनीय खात्यांसह वापरले जावे.</translation> +<translation id="8352772353338965963">एकाधिक साइन इन वर खाते जोडा. सर्व साइन इन केलेल्या खात्यांवर संकेतशब्दाशिवाय प्रवेश केला जाऊ शकतो, म्हणून हे वैशिष्ट्य केवळ विश्वसनीय खात्यांसह वापरले जावे.</translation> <translation id="8353683614194668312">ते करू शकते:</translation> <translation id="8354560714384889844">टूलकिट-दृश्ये अॅप माहिती संवाद.</translation> <translation id="8356258244599961364">या भाषेमध्ये कोणत्याही इनपूट पद्धती नाहीत</translation> @@ -5465,7 +5469,6 @@ <translation id="8472623782143987204">हार्डवेअर-बॅक्ड</translation> <translation id="8475313423285172237">आपल्या संगणकावरील दुसऱ्या प्रोग्रामने Chrome च्या कार्य करण्याचा मार्ग बदलू शकणारा विस्तार जोडला.</translation> <translation id="8475647382427415476">आत्ता "<ph name="FILENAME" />" संकालित करण्यात Google ड्राइव्ह अक्षम होते. Google ड्राइव्ह नंतर पुन्हा प्रयत्न करेल.</translation> -<translation id="8476195663057048998">साफ करा आणि रीसेट करा</translation> <translation id="8477241577829954800">अधिग्रहित</translation> <translation id="8477384620836102176">&सामान्य</translation> <translation id="8480417584335382321">पृष्ठ झूम:</translation> @@ -5483,7 +5486,7 @@ <translation id="8498716162437226120">Bluetooth डिव्हाइस जोडा</translation> <translation id="8503813439785031346">वापरकर्तानाव</translation> <translation id="8506101089619487946">Chromebook साठी Smart Lock बंद करायचे?</translation> -<translation id="8509646642152301857">शब्दलेखन तपासक शब्दकोश डाउनलोड करणे अयशस्वी.</translation> +<translation id="8509646642152301857">शब्दलेखन तपासणी शब्दकोश डाउनलोड करणे अयशस्वी.</translation> <translation id="8512476990829870887">प्रक्रिया समाप्त करा</translation> <translation id="851263357009351303"> <ph name="HOST" /> ना प्रतिमा दर्शविण्यासाठी नेहमी परवानगी द्या </translation> <translation id="8513191386157529469">"<ph name="CLIENT_NAME" />" हा ब्राउझर डीबग करीत आहे.</translation> @@ -5695,7 +5698,6 @@ <translation id="8785135611469711856">प्लगिन प्रतिसाद देत नाही</translation> <translation id="8787254343425541995">सामायिक नेटवर्कसाठी प्रॉक्सीला अनुमती द्या</translation> <translation id="878763818693997570">हे नाव खूप मोठे आहे</translation> -<translation id="8787865569533773240">बदललेल्या <ph name="IDS_SHORT_PRODUCT_NAME" /> सेटिंग्ज रीसेट करा</translation> <translation id="8789375980715484686">अन्य वापरकर्त्यांना व्यवस्थापित करा</translation> <translation id="8791534160414513928">आपल्या ब्राउझिंग रहदारीसह "Do Not Track" विनंती पाठवा</translation> <translation id="8795668016723474529">क्रेडिट कार्ड जोडा</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 162229f3..019dfab 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Fail tidak boleh diakses atas sebab keselamatan.</translation> <translation id="1675023460278456180">Hibrid Bahan</translation> <translation id="167832068858235403">kurangkan kelantangan</translation> -<translation id="1678331212993975953">Butiran Tapak</translation> <translation id="1679068421605151609">Alat Pembangun</translation> <translation id="1681120471812444678">Sediakan untuk menambah pencetak...</translation> <translation id="1682324559341535203">Mendaftarkan <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Buka apabila &selesai</translation> <translation id="2372036074421194686">Chrome menjumpai atur cara (<ph name="UWS_NAME" />) yang tidak diingini dipasang pada komputer anda. Anda mungkin boleh mengalihkannya keluar dengan menjalankan Pembersih Chrome.</translation> <translation id="2375701438512326360">Paksa sokongan skrin sentuh kepada sentiasa didayakan atau dilumpuhkan, atau didayakan apabila skrin sentuh dikesan semasa bermula (Automatik, lalai).</translation> -<translation id="2377619091472055321">Tetapkan Semula Tetapan <ph name="IDS_SHORT_PRODUCT_NAME" /> yang Diubah</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> fail dipilih</translation> <translation id="2378982052244864789">Pilih direktori sambungan.</translation> <translation id="2379281330731083556">Cetak menggunakan dialog sistem... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">Jika anda perlu memulihkan sistem pengendalian komputer anda, anda memerlukan kad SD pemulihan atau batang memori USB.</translation> <translation id="305932878998873762">Cache Mudah untuk HTTP merupakan cache baharu. Cache ini bergantung pada sistem fail untuk peruntukan ruang cakera.</translation> <translation id="3062606427884046423">Gunakan pemberitahuan Android MediaStyle untuk pemberitahuan media Chrome.</translation> +<translation id="3063224679438508013">Lancarkan apl nota secara automatik</translation> <translation id="3063844757726132584">Akses semua apl anda daripada pelancar mudah guna ini. Main permainan, bersembang video, mendengar muzik, mengedit dokumen atau dapatkan lebih banyak apl.</translation> <translation id="3064388234319122767">Pengalihan huruf (zdravo → здраво)</translation> <translation id="3065041951436100775">Maklum balas tab dibunuh.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock untuk Kata Laluan</translation> <translation id="317583078218509884">Tetapan kebenaran tapak baharu akan dilaksanakan selepas memuatkan semula halaman.</translation> <translation id="3177048931975664371">Klik untuk sembunyikan kata laluan</translation> +<translation id="3177909033752230686">Bahasa Halaman:</translation> <translation id="3180365125572747493">Sila masukkan kata laluan untuk menyulitkan fail sijil ini.</translation> <translation id="3183139917765991655">Pengimport Profil</translation> <translation id="3184560914950696195">Tidak boleh disimpan pada $1. Imej yang diedit akan disimpan dalam folder Muat Turun.</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">Dimuat turun oleh <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Tunjukkan <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Buka dalam tab baharu</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Kosongkan Data Menyemak Imbas...</translation> <translation id="3618849550573277856">Cari “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Semua disandarkan!</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&Zum</translation> <translation id="3995964755286119116">Tetapan kamera Adobe Flash Player adalah berbeza.</translation> <translation id="39964277676607559">Tidak dapat memuatkan javascript '<ph name="RELATIVE_PATH" />' untuk skrip kandungan.</translation> -<translation id="3996912167543967198">Menetapkan semula...</translation> <translation id="3997015411467176489">Ciri kanvas percubaan</translation> <translation id="4002066346123236978">Tajuk</translation> <translation id="40027638859996362">Gerakkan perkataan</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">Mesej Tolak</translation> <translation id="4146026355784316281">Sentiasa Buka dengan Alat Lihat Sistem</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> ingin menyemak sama ada peranti Chrome OS anda layak untuk menerima tawaran. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Paparan</translation> <translation id="4151403195736952345">Gunakan lalai global (Kesan)</translation> <translation id="4152177296285305182">Hanya orang yang mempunyai frasa laluan anda boleh membaca data penyulitan anda. Frasa laluan tidak dihantar kepada atau disimpan oleh Google. Jika anda terlupa frasa laluan anda, anda perlu menetapkan semula penyegerakan.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tab}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">Tangkapan skrin</translation> <translation id="4250680216510889253">Tidak</translation> <translation id="4253168017788158739">Nota</translation> +<translation id="4254813446494774748">Bahasa Terjemahan:</translation> <translation id="425573743389990240">Kadar Nyahcas Bateri dalam Watt (Nilai negatif bermakna bateri sedang dicas)</translation> <translation id="4256316378292851214">Si&mpan Video Sebagai...</translation> <translation id="4258348331913189841">Sistem fail</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">Alamak, Penyegerakan telah berhenti berfungsi.</translation> <translation id="4366509400410520531">Dibenarkan oleh anda</translation> <translation id="4367782753568896354">Kami tidak dapat memasang:</translation> +<translation id="436904870295243580">Cari lagi aplikasi catatan nota</translation> <translation id="4370975561335139969">E-mel dan kata laluan yang anda masukkan tidak padan</translation> <translation id="437184764829821926">Tetapan fon terperinci</translation> <translation id="4372884569765913867">1x1</translation> @@ -3106,7 +3109,7 @@ <translation id="5186650237607254032">Kemas kini kunci skrin telefon anda supaya dimatikan apabila anda berada berdekatan. Anda akan membuka kunci telefon dengan lebih cepat dan menikmati pengalaman Smart Lock yang lebih baik pada <ph name="DEVICE_TYPE" /> anda.</translation> <translation id="5187295959347858724">Anda sekarang dilog masuk ke <ph name="SHORT_PRODUCT_NAME" />. Penanda halaman, sejarah dan tetapan anda yang lain sedang disegerakkan dengan Akaun Google anda.</translation> <translation id="5187826826541650604"><ph name="KEY_NAME" /> (<ph name="DEVICE" />)</translation> -<translation id="5187902302719680252">Mendayakan buka kunci pantas PIN akan membolehkan anda menggunakan PIN untuk membuka kunci Chromebook pada skrin kunci selepas mendaftar masuk ke peranti anda.</translation> +<translation id="5187902302719680252">Tindakan mendayakan buka kunci pantas PIN akan membolehkan anda menggunakan PIN untuk membuka kunci Chromebook pada skrin kunci selepas mendaftar masuk ke peranti anda.</translation> <translation id="5188893945248311098">Keperluan gerak isyarat untuk main semula media</translation> <translation id="5189060859917252173">Sijil "<ph name="CERTIFICATE_NAME" />" mewakili Pihak Berkuasa Pensijilan.</translation> <translation id="5196716972587102051">2</translation> @@ -3214,6 +3217,7 @@ <translation id="5324674707192845912">Anda akan menyahdaftarkan <ph name="DEVICE_TYPE" /> ini dengan Google bagi melumpuhkan keupayaan untuk mengesan, memadam bersih dan mengunci peranti dari jauh. Langkah ini memerlukan but semula. Adakah anda ingin meneruskan?</translation> <translation id="5324780743567488672">Tetapkan zon waktu secara automatik menggunakan lokasi anda</translation> <translation id="5325120507747984426">Menggunakan susunan tetingkap stabil dalam mod ikhtisar yang cuba meminimumkan pergerakan tetingkap apabila memasuki/keluar daripada ikhtisar dan antara sesi ikhtisar.</translation> +<translation id="5326182685622510062">Terdapat beberapa pelaksanaan saluran pemaparan grafik untuk kanvas 2D. Pelaksanaan yang berbeza ini mempunyai ciri-ciri prestasi yang berbeza. Tindakan menghidupkan bendera ini akan membenarkan konteks 2D kanvas beralih antara pelaksanaan ini apabila diperlukan berdasarkan cara kanvas digunakan untuk meningkatkan prestasi. Sebagai contoh, beralih daripada pelaksanaan yang menggunakan GPU kepada pelaksanaan yang tidak menggunakannya.</translation> <translation id="5327248766486351172">Nama</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Padam</translation> @@ -3346,7 +3350,6 @@ <translation id="54870580363317966">Pilih avatar untuk pengguna diselia ini.</translation> <translation id="5488468185303821006">Benarkan dalam inkognito</translation> <translation id="5489390182170331803">Pendengar Pasif Acara Tahap Dokumen Lalai</translation> -<translation id="5489789060051091748">Pilih untuk bercakap: Tekan kekunci Cari dan klik atau seret untuk menuturkan sesuatu</translation> <translation id="549294555051714732">Pemadanan subrentetan untuk cadangan Autolengkap</translation> <translation id="5493996328530898436">Strategi mencampur penyampaian audio baharu</translation> <translation id="5494362494988149300">Buka Apabila &Selesai</translation> @@ -3703,7 +3706,6 @@ <translation id="5991049340509704927">Membesarkan</translation> <translation id="5991774521050363748">Dayakan reka letak tersuai untuk Pemberitahuan Web. Pemberitahuan ini akan mengalami peningkatan reka letak tidak ketara yang tidak mungkin berlaku tanpa pendayaan ini.</translation> <translation id="5993332328670040093">Penggunaan data anda tidak lagi akan diukur.</translation> -<translation id="5996258716334177896">Profil anda tidak dapat dibuka dengan betul. Beberapa ciri mungkin tidak tersedia. Sila semak bahawa profil tersebut wujud dan anda mempunyai kebenaran untuk membaca dan menulis kandungannya.</translation> <translation id="6001799583597751002">PIN tidak sepadan:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> mungkin tidak dapat memastikannya terkini.</translation> <translation id="6003294706906016758">Mendayakan bingkai gaya apl web untuk apl dihoskan</translation> @@ -4153,7 +4155,6 @@ <translation id="6637362044401670482">Mendayakan sokongan lampau tatal papan kekunci maya.</translation> <translation id="6639554308659482635">Memori SQLite</translation> <translation id="6643016212128521049">Kosongkan</translation> -<translation id="6644756108386233011">Tetapkan semula tetapan <ph name="IDS_SHORT_PRODUCT_NAME" /> yang diubah?</translation> <translation id="6647228709620733774">URL Pembatalan Pihak Berkuasa Pensijilan Netscape</translation> <translation id="6647838571840953560">Pada masa ini di <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Tunggu sebentar...</translation> @@ -4261,7 +4262,6 @@ <translation id="6810613314571580006">Log masuk secara automatik ke tapak web menggunakan bukti kelayakan yang disimpan. Apabila ciri ini dilumpuhkan, anda akan diminta memberikan pengesahan setiap kali sebelum mengelog masuk ke tapak web.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> tidak dapat dijalankan sebagai akar.</translation> <translation id="6812841287760418429">Simpan perubahan</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> mengesan bahawa tetapan penyemak imbas anda mungkin telah diubah tanpa pengetahuan anda. Adakah anda ingin menetapkannya semula kepada lalai asal?</translation> <translation id="6815551780062710681">edit</translation> <translation id="6817358880000653228">Kata laluan yang disimpan untuk tapak ini.</translation> <translation id="6820008762872335722">Tetapkan semula untuk bertanya</translation> @@ -4379,6 +4379,7 @@ <translation id="6980956047710795611">Pindahkan semua data Chrome OS kepada kata laluan baharu (memerlukan kata laluan sebelumnya)</translation> <translation id="6981982820502123353">Kebolehcapaian</translation> <translation id="6981992744085917617">Pilih kaedah yang anda ingin gunakan untuk log masuk semula ke akaun anda:</translation> +<translation id="698231206551913481">Semua fail dan data yang berkaitan dengan pengguna ini akan dipadamkan secara kekal selepas pengguna ini dialih keluar.</translation> <translation id="6982896539684144327">Pencetak daripada <ph name="VENDOR_NAME" /> dikesan</translation> <translation id="6983783921975806247">OID berdaftar</translation> <translation id="6983991971286645866">Semua suntingan akan disimpan ke $1.</translation> @@ -4463,6 +4464,7 @@ <translation id="7073555242265688099">Jika anda mempunyai peranti Chrome yang lain, ia akan disegerakkan secara automatik, oleh itu telefon anda akan turut membuka kuncinya.</translation> <translation id="707392107419594760">Pilih papan kekunci anda:</translation> <translation id="7075513071073410194">PKCS #1 MD5 Dengan Penyulitan RSA</translation> +<translation id="7075625805486468288">Urus sijil dan tetapan HTTPS/SSL</translation> <translation id="7076293881109082629">Melog masuk</translation> <translation id="7077829361966535409">Halaman log masuk gagal dimuatkan menggunakan tetapan proksi semasa. Sila <ph name="GAIA_RELOAD_LINK_START" />cuba log masuk sekali lagi<ph name="GAIA_RELOAD_LINK_END" /> atau gunakan <ph name="PROXY_SETTINGS_LINK_START" />tetapan proksi<ph name="PROXY_SETTINGS_LINK_END" /> yang berbeza.</translation> <translation id="7077872827894353012">Pengendali protokol diabaikan</translation> @@ -4510,7 +4512,6 @@ <translation id="7141105143012495934">Log masuk gagal kerana butiran akaun anda tidak boleh didapatkan semula. Sila hubungi pentadbir anda atau cuba lagi.</translation> <translation id="7143207342074048698">Menyambung</translation> <translation id="7144878232160441200">Cuba semula</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> telah dilumpuhkan. Untuk mendayakannya semula, sila pergi ke <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Pencetak klasik</translation> <translation id="7154130902455071009">Tukar halaman permulaan anda kepada: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Mod Bahasa China Permulaan adalah Bahasa Cina Ringkas</translation> @@ -4788,6 +4789,7 @@ <translation id="7540972813190816353">Ralat berlaku semasa menyemak kemas kini: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Pengecualian imej</translation> <translation id="7543104066686362383">Dayakan ciri penyahpepijatan pada peranti <ph name="IDS_SHORT_PRODUCT_NAME" /> ini</translation> +<translation id="7543393759143837504">Pergi ke <ph name="BEGIN_LINK_CHROMIUM" />Bantuan Google Chrome<ph name="END_LINK_CHROMIUM" /> jika anda tidak menemui apa yang dicari.</translation> <translation id="7544853251252956727">Rombak</translation> <translation id="7545288882499673859">Strategi pelupusan memori untuk pengendalian tekanan lanjutan</translation> <translation id="7545415673537747415">Kawal cara Google menggunakan sejarah penyemakan imbas anda untuk memperibadikan Carian, iklan dan perkhidmatan Google yang lain daripada <ph name="BEGIN_LINK" />Kawalan Aktiviti Google<ph name="END_LINK" />.</translation> @@ -5025,7 +5027,6 @@ <translation id="7879478708475862060">Ikut mod input</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" menambahkan apl dan sambungan ini:</translation> <translation id="7881969471599061635">Lumpuhkan sari kata</translation> -<translation id="7884988936047469945">Ciri kebolehaksesan percubaan</translation> <translation id="7885253890047913815">Destinasi Baru-baru Ini</translation> <translation id="7887192723714330082">Beri respon kepada "Ok Google" apabila skrin dihidupkan dan dikunci</translation> <translation id="7887334752153342268">Pendua</translation> @@ -5093,6 +5094,7 @@ <translation id="7974067550340408553">Dapatkan pemberitahuan di telefon anda setiap kali Smart Lock membuka <ph name="DEVICE_TYPE" /> anda.</translation> <translation id="7974566588408714340">Cuba semula menggunakan <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Terlebih imbas</translation> +<translation id="7976960358280528247">Dayakan UI kitaran tetingkap (maklum balas visual menggunakan Alt-Tab).</translation> <translation id="7977551819349545646">Mengemas kini Chromebox...</translation> <translation id="7978412674231730200">Kunci persendirian</translation> <translation id="7979036127916589816">Ralat Segerak</translation> @@ -5120,6 +5122,7 @@ Simpan fail kunci anda di tempat selamat. Anda akan memerlukannya untuk mencipta versi baharu sambungan anda.</translation> <translation id="799923393800005025">Boleh lihat</translation> +<translation id="8000066093800657092">Tiada rangkaian</translation> <translation id="8004582292198964060">Penyemak Imbas</translation> <translation id="8007030362289124303">Bateri Lemah</translation> <translation id="8008356846765065031">Internet terputus sambungan. Sila periksa sambungan internet anda.</translation> @@ -5194,6 +5197,7 @@ <translation id="8116190140324504026">Maklumat lanjut...</translation> <translation id="8116483400482790018">Kamus ejaan tersuai</translation> <translation id="8116972784401310538">&Pengurus penanda halaman</translation> +<translation id="8117838550640702864">Tetapan nota</translation> <translation id="8117957376775388318">Kaedah input Dayi</translation> <translation id="8118860139461251237">Urus muat turun anda</translation> <translation id="8119572489781388874">Ubah suai tetapan</translation> @@ -5474,7 +5478,6 @@ <translation id="8472623782143987204">disokong perkakasan</translation> <translation id="8475313423285172237">Program lain pada komputer anda menambah sambungan yang boleh mengubah cara Chrome berfungsi.</translation> <translation id="8475647382427415476">Google Drive tidak dapat menyegerakkan "<ph name="FILENAME" />" pada masa ini. Google Drive akan mencuba lagi nanti.</translation> -<translation id="8476195663057048998">Kosongkan & Tetapkan Semula</translation> <translation id="8477241577829954800">Menggantikan</translation> <translation id="8477384620836102176">&Umum</translation> <translation id="8480417584335382321">Zum halaman:</translation> @@ -5704,7 +5707,6 @@ <translation id="8785135611469711856">Pemalam Tidak Responsif</translation> <translation id="8787254343425541995">Benarkan proksi untuk rangkaian yang dikongsi</translation> <translation id="878763818693997570">Nama ini terlalu panjang</translation> -<translation id="8787865569533773240">Tetapkan semula tetapan <ph name="IDS_SHORT_PRODUCT_NAME" /> yang diubah</translation> <translation id="8789375980715484686">Urus pengguna lain</translation> <translation id="8791534160414513928">Hantar permintaan 'Jangan Kesan' dengan trafik penyemakan imbas anda</translation> <translation id="8795668016723474529">Tambah kad kredit</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index 7273184..ba98cab 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Uit veiligheidsoverwegingen kan het bestand niet worden geopend.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">volume omlaag</translation> -<translation id="1678331212993975953">Sitedetails</translation> <translation id="1679068421605151609">Ontwikkelaarstools</translation> <translation id="1681120471812444678">Instellen om printers toe te voegen…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> inschrijven</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">Openen wanneer geree&d</translation> <translation id="2372036074421194686">Chrome heeft een ongewenst programma (<ph name="UWS_NAME" />) gevonden dat op je computer is geïnstalleerd. Je kunt dit programma verwijderen door de Chrome Cleanup Tool uit te voeren.</translation> <translation id="2375701438512326360">Het altijd in- of uitschakelen van touchscreen-ondersteuning afdwingen of instellen dat deze wordt ingeschakeld wanneer er een touchscreen wordt gedetecteerd bij het opstarten (automatisch, standaard).</translation> -<translation id="2377619091472055321">Gewijzigde instellingen voor <ph name="IDS_SHORT_PRODUCT_NAME" /> opnieuw instellen</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> bestanden geselecteerd</translation> <translation id="2378982052244864789">Selecteer de directory van de extensie.</translation> <translation id="2379281330731083556">Afdrukken via systeemdialoogvenster... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">Als je ooit het besturingssysteem van je computer moet herstellen, heb je een SD-kaart of USB-stick voor herstel nodig.</translation> <translation id="305932878998873762">De Simple Cache voor HTTP is een nieuw cachegeheugen. Het is afhankelijk van het bestandssysteem voor toekenning van schijfruimte.</translation> <translation id="3062606427884046423">Android MediaStyle-meldingen gebruiken voor Chrome-mediameldingen.</translation> +<translation id="3063224679438508013">De notitie-app automatisch starten</translation> <translation id="3063844757726132584">Open al je apps vanuit deze handige launcher. Speel games, start videochats, luister naar muziek, bewerk documenten of download meer apps.</translation> <translation id="3064388234319122767">Transliteratie (zdravo → здраво)</translation> <translation id="3065041951436100775">Feedback over gesloten tabblad.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Google Smart Lock voor wachtwoorden</translation> <translation id="317583078218509884">De nieuwe instellingen voor siterechten worden doorgevoerd nadat de pagina opnieuw is geladen.</translation> <translation id="3177048931975664371">Klik om het wachtwoord te verbergen</translation> +<translation id="3177909033752230686">Brontaal:</translation> <translation id="3180365125572747493">Voer een wachtwoord in voor het versleutelen van dit certificaatbestand.</translation> <translation id="3183139917765991655">Profile Importer</translation> <translation id="3184560914950696195">Kan niet opslaan naar $1. Bewerkte afbeeldingen worden opgeslagen in de map 'Downloads'.</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">Gedownload door <a href='<ph name="URL" />'><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> weergeven</translation> <translation id="3613422051106148727">&Openen op nieuw tabblad</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Browsegegevens wissen...</translation> <translation id="3618849550573277856">'<ph name="LOOKUP_STRING" />' opzoeken</translation> <translation id="3620292326130836921">Er is een back-up van alles gemaakt</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&Zoomen</translation> <translation id="3995964755286119116">Voor Adobe Flash Player worden afzonderlijke camera-instellingen gebruikt.</translation> <translation id="39964277676607559">Kan JavaScript '<ph name="RELATIVE_PATH" />' niet laden voor het inhoudsscript.</translation> -<translation id="3996912167543967198">Opnieuw instellen…</translation> <translation id="3997015411467176489">Experimentele canvasfuncties</translation> <translation id="4002066346123236978">Titel</translation> <translation id="40027638859996362">Woord verplaatsen</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">Pushberichten</translation> <translation id="4146026355784316281">Altijd openen met systeemviewer</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> wil controleren of je Chrome OS-apparaat in aanmerking komt voor een aanbieding. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Weergave</translation> <translation id="4151403195736952345">Algemene standaard gebruiken (detecteren)</translation> <translation id="4152177296285305182">Alleen iemand die je wachtwoordzin kent, kan je geëncrypte gegevens lezen. De wachtwoordzin wordt niet naar Google verzonden of door Google opgeslagen. Als je je wachtwoordzin vergeet, moet je de synchronisatie opnieuw instellen.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tabblad}other{# tabbladen}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">Screenshot</translation> <translation id="4250680216510889253">Nee</translation> <translation id="4253168017788158739">Opmerking</translation> +<translation id="4254813446494774748">Doeltaal:</translation> <translation id="425573743389990240">Accu-ontlading in Watt (een negatieve waarde betekent dat de accu wordt opgeladen)</translation> <translation id="4256316378292851214">&Video opslaan als...</translation> <translation id="4258348331913189841">Bestandssystemen</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">De synchronisatie werkt niet meer.</translation> <translation id="4366509400410520531">Toegestaan door jou</translation> <translation id="4367782753568896354">Niet geïnstalleerd:</translation> +<translation id="436904870295243580">Meer notitie-apps zoeken</translation> <translation id="4370975561335139969">Het opgegeven e-mailadres en wachtwoord komen niet overeen</translation> <translation id="437184764829821926">Geavanceerde instellingen voor lettertypen</translation> <translation id="4372884569765913867">1x1</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">Je staat op het punt deze <ph name="DEVICE_TYPE" /> uit te schrijven bij Google om het apparaat niet meer op afstand te kunnen lokaliseren, wissen en vergrendelen. Hiervoor moet het apparaat opnieuw worden opgestart. Wil je doorgaan?</translation> <translation id="5324780743567488672">Tijdzone automatisch instellen op basis van je locatie</translation> <translation id="5325120507747984426">Gebruikt een stabiele venstervolgorde in de overzichtsmodus, waardoor wordt geprobeerd de verplaatsing van vensters tot een minimum te beperken bij het openen/verlaten van overzichten en tussen overzichtsessies.</translation> +<translation id="5326182685622510062">Er zijn meerdere implementaties van de weergavepijplijn voor graphics voor het 2D-canvas. Deze verschillende implementaties hebben verschillende prestatiekenmerken. Als je deze markering inschakelt, kunnen 2D-contexten voor het canvas direct schakelen tussen deze implementaties op basis van het gebruik van het canvas om de prestaties te verbeteren. Er kan bijvoorbeeld worden geschakeld van een implementatie die de GPU gebruikt naar een implementatie die dat niet doet.</translation> <translation id="5327248766486351172">Naam</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">Verwij&deren</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">Kies een avatar voor deze gebruiker met beperkte rechten.</translation> <translation id="5488468185303821006">Toestaan in incognitomodus</translation> <translation id="5489390182170331803">Standaardwaarde voor passieve event-listeners op documentniveau</translation> -<translation id="5489789060051091748">Selecteren om uit te spreken: houd Zoeken ingedrukt en klik of sleep om iets uit te spreken</translation> <translation id="549294555051714732">Overeenkomsten met substrings voor suggesties voor automatisch aanvullen</translation> <translation id="5493996328530898436">Nieuwe mixstrategie voor audioweergave</translation> <translation id="5494362494988149300">Openen wanneer geree&d</translation> @@ -3701,9 +3704,6 @@ <translation id="5991049340509704927">Vergroten</translation> <translation id="5991774521050363748">Aangepaste indelingen voor webmeldingen inschakelen. Deze bieden subtiele verbeteringen van de indeling die anders niet mogelijk zijn.</translation> <translation id="5993332328670040093">Je dataverbruik wordt niet langer bijgehouden.</translation> -<translation id="5996258716334177896">Je profiel kan niet correct worden geopend. - -Sommige functies zijn wellicht niet beschikbaar. Controleer of het profiel bestaat en of je beschikt over lees- en schrijfrechten voor de inhoud van het profiel.</translation> <translation id="6001799583597751002">Pincodes komen niet overeen:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> kan zichzelf mogelijk niet bijgewerkt houden.</translation> <translation id="6003294706906016758">Schakelt een kader in web-app-stijl in voor gehoste apps</translation> @@ -4153,7 +4153,6 @@ <translation id="6637362044401670482">Schakelt overscroll-ondersteuning voor het virtuele toetsenbord in.</translation> <translation id="6639554308659482635">SQLite-geheugen</translation> <translation id="6643016212128521049">Wissen</translation> -<translation id="6644756108386233011">Gewijzigde instellingen voor <ph name="IDS_SHORT_PRODUCT_NAME" /> opnieuw instellen?</translation> <translation id="6647228709620733774">URL voor intrekken van certificeringsinstantie voor Netscape-certificaat</translation> <translation id="6647838571840953560">Momenteel op <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Een ogenblik…</translation> @@ -4261,7 +4260,6 @@ <translation id="6810613314571580006">Automatisch inloggen bij websites met de opgeslagen inloggegevens. Wanneer de functie is uitgeschakeld, wordt elke keer om bevestiging gevraagd voordat je inlogt op een website.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> kan niet worden uitgevoerd als root.</translation> <translation id="6812841287760418429">Wijzigingen behouden</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> heeft gedetecteerd dat je browserinstellingen misschien zonder je medeweten zijn gewijzigd. Wil je ze opnieuw instellen op de oorspronkelijke instellingen?</translation> <translation id="6815551780062710681">bewerken</translation> <translation id="6817358880000653228">Opgeslagen wachtwoorden voor deze site:</translation> <translation id="6820008762872335722">Opnieuw instellen op vragen</translation> @@ -4379,6 +4377,7 @@ (vorig wachtwoord vereist)</translation> <translation id="6981982820502123353">Toegankelijkheid</translation> <translation id="6981992744085917617">Kies de methode die je wilt gebruiken om weer in te loggen op je account:</translation> +<translation id="698231206551913481">Alle bestanden en lokale gegevens die zijn gekoppeld aan deze gebruiker, worden definitief verwijderd zodra deze gebruiker is verwijderd.</translation> <translation id="6982896539684144327">Printer van <ph name="VENDOR_NAME" /> gedetecteerd</translation> <translation id="6983783921975806247">Geregistreerde OID</translation> <translation id="6983991971286645866">Alle bewerkingen worden opgeslagen in $1.</translation> @@ -4465,6 +4464,7 @@ <translation id="7073555242265688099">Als je andere Chrome-apparaten hebt, worden deze automatisch gesynchroniseerd zodat ze kunnen worden ontgrendeld met je telefoon.</translation> <translation id="707392107419594760">Selecteer je toetsenbord:</translation> <translation id="7075513071073410194">PKCS nr. 1 MD5 met RSA-encryptie</translation> +<translation id="7075625805486468288">HTTPS/SSL-certificaten en -instellingen beheren</translation> <translation id="7076293881109082629">Inloggen</translation> <translation id="7077829361966535409">De inlogpagina kan niet worden geladen met de huidige proxyinstellingen. <ph name="GAIA_RELOAD_LINK_START" />Probeer opnieuw in te loggen<ph name="GAIA_RELOAD_LINK_END" /> of gebruik andere <ph name="PROXY_SETTINGS_LINK_START" />proxyinstellingen<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Genegeerde protocolhandlers</translation> @@ -4512,7 +4512,6 @@ <translation id="7141105143012495934">Inloggen is mislukt omdat je accountgegevens niet kunnen worden opgevraagd. Neem contact op met je beheerder of probeer het opnieuw.</translation> <translation id="7143207342074048698">Verbinding maken</translation> <translation id="7144878232160441200">Opnieuw proberen</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> is uitgeschakeld. Als je de plug-in weer wilt inschakelen, ga je naar <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Klassieke printers</translation> <translation id="7154130902455071009">Je startpagina wijzigen in: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Standaardmodus voor Chinees is Vereenvoudigd Chinees</translation> @@ -4791,6 +4790,7 @@ <translation id="7540972813190816353">Er is een fout opgetreden bij het controleren op updates: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Uitzonderingen voor afbeeldingen</translation> <translation id="7543104066686362383">Foutopsporingsfuncties inschakelen voor dit <ph name="IDS_SHORT_PRODUCT_NAME" />-apparaat</translation> +<translation id="7543393759143837504">Ga naar de <ph name="BEGIN_LINK_CHROMIUM" />Help van Google Chrome<ph name="END_LINK_CHROMIUM" /> als je niet kunt vinden wat je zoekt.</translation> <translation id="7544853251252956727">Shuffle</translation> <translation id="7545288882499673859">Strategie voor geheugenverwijdering voor geavanceerde belastingverwerking</translation> <translation id="7545415673537747415">Beheer via <ph name="BEGIN_LINK" />Google-activiteitsopties<ph name="END_LINK" /> hoe Google je browsegeschiedenis mag gebruiken om Google Zoeken, advertenties en andere Google-services te personaliseren.</translation> @@ -5028,7 +5028,6 @@ <translation id="7879478708475862060">Invoermodus volgen</translation> <translation id="7880836220014399562">Met '<ph name="BUNDLE_NAME" />' worden deze apps en extensies toegevoegd:</translation> <translation id="7881969471599061635">Ondertiteling uitschakelen</translation> -<translation id="7884988936047469945">Experimentele toegankelijkheidsfuncties</translation> <translation id="7885253890047913815">Recente bestemmingen</translation> <translation id="7887192723714330082">Reageren op "Ok Google" wanneer het scherm is ingeschakeld en ontgrendeld</translation> <translation id="7887334752153342268">Dupliceren</translation> @@ -5096,6 +5095,7 @@ <translation id="7974067550340408553">Ontvang een melding op je telefoon telkens wanneer Smart Lock je <ph name="DEVICE_TYPE" /> ontgrendelt.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" /> opnieuw proberen te gebruiken</translation> <translation id="7974936243149753750">Overscan</translation> +<translation id="7976960358280528247">UI voor schakelen tussen vensters inschakelen (visuele feedback voor Alt+Tab).</translation> <translation id="7977551819349545646">Chromebox bijwerken...</translation> <translation id="7978412674231730200">Privésleutel</translation> <translation id="7979036127916589816">Synchronisatiefout</translation> @@ -5123,6 +5123,7 @@ Bewaar je sleutelbestand op een veilige plaats. Je hebt het bestand nodig om nieuwe versies van je extensie te maken.</translation> <translation id="799923393800005025">Kan weergeven</translation> +<translation id="8000066093800657092">Geen netwerk</translation> <translation id="8004582292198964060">Browser</translation> <translation id="8007030362289124303">Accu is bijna leeg</translation> <translation id="8008356846765065031">Verbinding met internet verbroken. Controleer je internetverbinding.</translation> @@ -5197,6 +5198,7 @@ <translation id="8116190140324504026">Meer informatie...</translation> <translation id="8116483400482790018">Aangepast spellingwoordenboek</translation> <translation id="8116972784401310538">&Bladwijzerbeheer</translation> +<translation id="8117838550640702864">Notitie-instellingen</translation> <translation id="8117957376775388318">Dayi-invoermethode</translation> <translation id="8118860139461251237">Je downloads beheren</translation> <translation id="8119572489781388874">Instellingen wijzigen</translation> @@ -5394,7 +5396,7 @@ <translation id="8373281062075027970">Naam partij: <ph name="PARTY_NAME" /></translation> <translation id="8373360586245335572">Toestaan dat alle sites meldingen weergeven</translation> <translation id="8373553483208508744">Tabbladen dempen</translation> -<translation id="8378285435971754261">Laat de locatieservice van Google apps helpen je locatie snel en nauwkeurig te bepalen. Hierdoor kan het accuverbruik afnemen. Er worden anonieme locatiegegevens verzonden naar Google, ook als er geen apps actief zijn. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> +<translation id="8378285435971754261">Met behulp van de locatieservice van Google kunnen apps je locatie snel en nauwkeurig bepalen. Hierdoor kan het accuverbruik afnemen. Er worden anonieme locatiegegevens verzonden naar Google, ook als er geen apps actief zijn. <ph name="BEGIN_LINK1" />Meer informatie<ph name="END_LINK1" /></translation> <translation id="8379970328220427967">Nog <ph name="SPACE_AVAILABLE" /> over</translation> <translation id="8381055888183086563">Hiermee worden contextmenuopties voor foutopsporing ingeschakeld, zoals 'Element controleren' voor pakketapps.</translation> <translation id="8381179624334829711">Camera-instellingen beheren…</translation> @@ -5477,7 +5479,6 @@ <translation id="8472623782143987204">hardware-ondersteund</translation> <translation id="8475313423285172237">Een ander programma op je computer heeft een extensie toegevoegd die de manier waarop Chrome werkt kan wijzigen.</translation> <translation id="8475647382427415476">Google Drive kan '<ph name="FILENAME" />' nu niet synchroniseren. Google Drive probeert het later opnieuw.</translation> -<translation id="8476195663057048998">Wissen en opnieuw instellen</translation> <translation id="8477241577829954800">Vervangen</translation> <translation id="8477384620836102176">&Algemeen</translation> <translation id="8480417584335382321">Zoomen op pagina:</translation> @@ -5708,7 +5709,6 @@ <translation id="8785135611469711856">Plug-in reageert niet</translation> <translation id="8787254343425541995">Proxy's voor gedeelde netwerken toestaan</translation> <translation id="878763818693997570">Deze naam is te lang</translation> -<translation id="8787865569533773240">Gewijzigde instellingen voor <ph name="IDS_SHORT_PRODUCT_NAME" /> opnieuw instellen</translation> <translation id="8789375980715484686">Andere gebruikers beheren</translation> <translation id="8791534160414513928">Een verzoek voor niet bijhouden met je browseverkeer verzenden</translation> <translation id="8795668016723474529">Een creditcard toevoegen</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index 40640b1..43a7f2c 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -518,7 +518,6 @@ <translation id="1673103856845176271">Filen kunne ikke åpnes av sikkerhetsårsaker.</translation> <translation id="1675023460278456180">Materialhybrid</translation> <translation id="167832068858235403">redusert lydstyrke</translation> -<translation id="1678331212993975953">Nettstedsdetaljer</translation> <translation id="1679068421605151609">Utviklerverktøy</translation> <translation id="1681120471812444678">Konfigurer for å legge til skrivere</translation> <translation id="1682324559341535203">Registrer <ph name="DEVICE_TYPE" /></translation> @@ -1007,7 +1006,6 @@ <translation id="2371076942591664043">Åpne når ne&dlastingen er ferdig</translation> <translation id="2372036074421194686">Chrome har funnet et uønsket program (<ph name="UWS_NAME" />) på datamaskinen. Du kan prøve å fjerne dette programmet med opprydningsverktøyet for Chrome.</translation> <translation id="2375701438512326360">Tving støtten for berøringsskjerm til å alltid være aktivert eller deaktivert, eller til å aktiveres når en berøringsskjerm oppdages ved oppstart (automatisk standard).</translation> -<translation id="2377619091472055321">Tilbakestill endrede innstillinger for <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> filer valgt</translation> <translation id="2378982052244864789">Velg katalog for utvidelsen.</translation> <translation id="2379281330731083556">Skriv ut med systemdialogen <ph name="SHORTCUT_KEY" /></translation> @@ -1554,6 +1552,7 @@ <translation id="3058212636943679650">Hvis du noen gang skulle trenge å gjenopprette datamaskinens operativsystem, må du ha SD-kort eller USB-minnepinne for gjenoppretting.</translation> <translation id="305932878998873762">Simple Cache for HTTP er en ny buffer. Den er avhengig av filsystemet for å bli tildelt lagringsplass.</translation> <translation id="3062606427884046423">Bruk Android MediaStyle-varsler for medievarsler i Chrome.</translation> +<translation id="3063224679438508013">Start notatappen automatisk</translation> <translation id="3063844757726132584">Få tilgang til alle appene dine i denne praktiske appoversikten. Spill, videochat, lytt til musikk, rediger dokumenter eller last ned flere apper.</translation> <translation id="3064388234319122767">Translitterasjon (zdravo → здраво)</translation> <translation id="3065041951436100775">Tilbakemelding for lukket fane.</translation> @@ -1644,6 +1643,7 @@ <translation id="3172213052701798825">Google Smart Lock for passord</translation> <translation id="317583078218509884">Nye nettstedinnstillinger trer i kraft etter at siden er lastet inn på nytt.</translation> <translation id="3177048931975664371">Klikk for å skjule passord</translation> +<translation id="3177909033752230686">Språket siden er på:</translation> <translation id="3180365125572747493">Skriv inn et passord for å kryptere denne sertifikatfilen.</translation> <translation id="3183139917765991655">Profile Importer</translation> <translation id="3184560914950696195">Kunne ikke lagre til $1. Redigerte bilder blir lagret i Nedlastinger-mappen.</translation> @@ -1992,6 +1992,7 @@ <translation id="3612673635130633812">Lastet ned via <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Vis <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Åpne i ny fane</translation> +<translation id="3616113530831147358">Lyd</translation> <translation id="3616741288025931835">&Fjern nettlesingsdata</translation> <translation id="3618849550573277856">Slå opp «<ph name="LOOKUP_STRING" />»</translation> <translation id="3620292326130836921">Alt er sikkerhetskopiert!</translation> @@ -2286,7 +2287,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">Kamerainnstillingene er annerledes for Adobe Flash Player.</translation> <translation id="39964277676607559">Kan ikke laste inn JavaScript <ph name="RELATIVE_PATH" /> for innholdsskript.</translation> -<translation id="3996912167543967198">Tilbakestiller …</translation> <translation id="3997015411467176489">Eksperimentelle lerretsfunksjoner</translation> <translation id="4002066346123236978">Tittel</translation> <translation id="40027638859996362">Ordforflytning</translation> @@ -2383,6 +2383,7 @@ <translation id="4140559601186535628">Pushmeldinger</translation> <translation id="4146026355784316281">Åpne alltid med systemvisningsprogrammet</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> ønsker å sjekke om Chrome OS-enheten din er kvalifisert for et tilbud. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Skjerm</translation> <translation id="4151403195736952345">Bruk global standard (oppdag)</translation> <translation id="4152177296285305182">Bare de som har passordfrasen din kan lese de krypterte dataene dine – passordfrasen sendes ikke til eller lagres av Google. Hvis du glemmer den, må du tilbakestille synkronisering.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 fane}other{# faner}}</translation> @@ -2447,6 +2448,7 @@ <translation id="4250229828105606438">Skjermdump</translation> <translation id="4250680216510889253">Nei</translation> <translation id="4253168017788158739">Merknad</translation> +<translation id="4254813446494774748">Språket siden skal oversettes til:</translation> <translation id="425573743389990240">Batteriets utladningshastighet i watt (negativ verdi indikerer at batteriet lades)</translation> <translation id="4256316378292851214">La&gre video som</translation> <translation id="4258348331913189841">Filsystemer</translation> @@ -2524,6 +2526,7 @@ <translation id="4365673000813822030">Beklager, synkroniseringen har sluttet å fungere.</translation> <translation id="4366509400410520531">Tillatt av deg</translation> <translation id="4367782753568896354">Vi kunne ikke installere følgende:</translation> +<translation id="436904870295243580">Finn flere apper for notattaking</translation> <translation id="4370975561335139969">E-posten og passordet du skrev inn, stemmer ikke overens.</translation> <translation id="437184764829821926">Avanserte innstillinger for skrifttype</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3201,6 +3204,7 @@ <translation id="5324674707192845912">Du er i ferd med å avregistrere denne <ph name="DEVICE_TYPE" />en hos Google for å slå av muligheten til å finne, slette innholdet på og låse enheten fra en ekstern plassering. Dette krever at du starter enheten på nytt. Vil du fortsette?</translation> <translation id="5324780743567488672">Angi tidssonen automatisk ved hjelp av posisjonen din</translation> <translation id="5325120507747984426">Bruker en stabil vindusrekkefølge i oversiktsmodus som prøver å minimere bevegelsen til vinduene når du går inn i og ut av oversikten og mellom oversiktsøkter.</translation> +<translation id="5326182685622510062">Det finnes ulike implementeringer av grafikk som gjengir bytting av prosesser i 2D-lerretet. De ulike implementeringene har forskjellige ytelseskarakteristikker. Hvis du slår på dette flagget, tillater du at kontekstene for 2D-lerreter kan bytte mellom disse implementeringene ved behov, for å øke ytelsen. Det kan for eksempel byttes fra en implementering som bruker GPU-en, til en som ikke gjør det.</translation> <translation id="5327248766486351172">Navn</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Slett</translation> @@ -3333,7 +3337,6 @@ <translation id="54870580363317966">Velg et brukerbilde for denne administrerte brukeren.</translation> <translation id="5488468185303821006">Tillat i inkognitomodus</translation> <translation id="5489390182170331803">Standardfunksjonalitet for passive aktivitetslyttere på dokumentnivå</translation> -<translation id="5489789060051091748">Velg for å snakke: Hold inne Søk, og klikk eller dra for å si noe</translation> <translation id="549294555051714732">Understrengsamsvar for autofyllforslag</translation> <translation id="5493996328530898436">Ny miksestrategi for lydgjengivelse</translation> <translation id="5494362494988149300">Åpne når ne&dlastingen er ferdig</translation> @@ -3690,7 +3693,6 @@ <translation id="5991049340509704927">Forstørr</translation> <translation id="5991774521050363748">Slå på spesialtilpassede oppsett for nettvarsler. Disse oppsettene har mindre forbedringer som ellers ikke ville vært mulige.</translation> <translation id="5993332328670040093">Databruken din blir ikke lenger målt.</translation> -<translation id="5996258716334177896">Profilen din ble ikke åpnet på riktig måte. Enkelte funksjoner kan være utilgjengelige. Kontroller at profilen eksisterer, og at du har tillatelse til å lese og skrive innholdet i den.</translation> <translation id="6001799583597751002">PIN-kodene samsvarer ikke:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> oppdateres muligens ikke automatisk.</translation> <translation id="6003294706906016758">Slår på rammer i nettprogramstil for vertsbaserte apper</translation> @@ -4139,7 +4141,6 @@ <translation id="6637362044401670482">Slår på støtte for overrulling på det virtuelle tastaturet</translation> <translation id="6639554308659482635">SQLite-minne</translation> <translation id="6643016212128521049">Tøm</translation> -<translation id="6644756108386233011">Vil du tilbakestille de endrede <ph name="IDS_SHORT_PRODUCT_NAME" />-innstillingene?</translation> <translation id="6647228709620733774">Nettadresse for tilbakekalling av Netscape-autoritetssertifikat</translation> <translation id="6647838571840953560">Nå på <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Vent litt</translation> @@ -4247,7 +4248,6 @@ <translation id="6810613314571580006">Bruk lagret legitimasjon til å logge på nettsteder automatisk. Når funksjonen er slått av, blir du bedt om bekreftelse hver gang du logger på et nettsted.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> kan ikke kjøres som rot.</translation> <translation id="6812841287760418429">Behold endringene</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> oppdaget at nettleserinnstillingene dine kan ha blitt endret uten at du var klar over det. Vil du tilbakestille dem til de opprinnelige standardinnstillingene?</translation> <translation id="6815551780062710681">rediger</translation> <translation id="6817358880000653228">Lagrede passord for dette nettstedet:</translation> <translation id="6820008762872335722">Tilbakestill til å spørre</translation> @@ -4363,6 +4363,7 @@ <translation id="6980956047710795611">Overfør alle Chrome OS-data til det nye passordet (krever det forrige passordet)</translation> <translation id="6981982820502123353">Tilgjengelighet</translation> <translation id="6981992744085917617">Velg metoden du har lyst til å bruke for å logge på kontoen din på nytt:</translation> +<translation id="698231206551913481">Alle filer og lokale data som er tilknyttet denne brukeren, slettes permanent når brukeren fjernes.</translation> <translation id="6982896539684144327">En skriver fra <ph name="VENDOR_NAME" /> er oppdaget</translation> <translation id="6983783921975806247">Registrert OID</translation> <translation id="6983991971286645866">Alle endringer blir lagret som $1.</translation> @@ -4449,6 +4450,7 @@ <translation id="7073555242265688099">Hvis du har andre Chrome-enheter, blir de synkronisert automatisk, så telefonen låser dem opp også.</translation> <translation id="707392107419594760">Velg tastatur:</translation> <translation id="7075513071073410194">PKCS #1 MD5 med RSA-kryptering</translation> +<translation id="7075625805486468288">Administrer HTTPS/SSL-sertifikater og -innstillinger</translation> <translation id="7076293881109082629">Pålogging</translation> <translation id="7077829361966535409">Påloggingssiden kunne ikke lastes inn med de gjeldende mellomtjenerinnstillingene. <ph name="GAIA_RELOAD_LINK_START" />Forsøk å logge deg på igjen<ph name="GAIA_RELOAD_LINK_END" /> eller endre <ph name="PROXY_SETTINGS_LINK_START" />mellomtjenerinnstillingene<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignorerte protokollbehandlere</translation> @@ -4496,7 +4498,6 @@ <translation id="7141105143012495934">Påloggingen mislyktes fordi kontoopplysningene dine ikke kunne hentes ut. Kontakt administratoren din, eller prøv på nytt.</translation> <translation id="7143207342074048698">Kobler til</translation> <translation id="7144878232160441200">Prøv på nytt</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> er deaktivert. Gå til <ph name="CHROME_PLUGINS_LINK" /> for å aktivere det på nytt.</translation> <translation id="715118844758971915">Vanlige skrivere</translation> <translation id="7154130902455071009">endre startsiden din til: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Opprinnelig kinesisk modus er forenklet kinesisk</translation> @@ -4670,7 +4671,7 @@ <translation id="7403358905955888520">Slå av enhetsinnstillingene for automatisk påvisning av tidssone.</translation> <translation id="7405422715075171617">Slå på skanning av et nytt kredittkortnummer når du fyller ut et kredittkortskjema.</translation> <translation id="740624631517654988">Blokkerte forgrunnsvindu</translation> -<translation id="7406691462051376731">Denne enheten sender for øyeblikket diagnostikk og bruksdata til Google. <ph name="BEGIN_LINK1" />Innstillingen<ph name="END_LINK1" /> håndheves av eieren. <ph name="BEGIN_LINK2" />Finn ut mer<ph name="END_LINK2" /></translation> +<translation id="7406691462051376731">Denne enheten sender for øyeblikket diagnostikk og bruksdata til Google. Denne <ph name="BEGIN_LINK1" />innstillingen<ph name="END_LINK1" /> håndheves av eieren. <ph name="BEGIN_LINK2" />Finn ut mer<ph name="END_LINK2" /></translation> <translation id="7409233648990234464">Start på nytt og bruk Powerwash</translation> <translation id="7410344089573941623">Spør om <ph name="HOST" /> ønsker å bruke kameraet og mikrofonen din</translation> <translation id="7411343637221933631">{NUM_COOKIES,plural, =1{1 fra dette nettstedet}other{# fra dette nettstedet}}</translation> @@ -4769,6 +4770,7 @@ <translation id="7540972813190816353">Det oppsto en feil under søk etter oppdateringer: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Unntak for bilder</translation> <translation id="7543104066686362383">Slå på feilsøkingsfunksjoner på denne <ph name="IDS_SHORT_PRODUCT_NAME" />-enheten</translation> +<translation id="7543393759143837504">Gå til <ph name="BEGIN_LINK_CHROMIUM" />brukerstøtten for Google Chrome<ph name="END_LINK_CHROMIUM" /> hvis du ikke finner svaret på det du lurer på.</translation> <translation id="7544853251252956727">Spill i tilfeldig rekkefølge</translation> <translation id="7545288882499673859">Minneforkastingsstrategi for avansert trykkhåndtering</translation> <translation id="7545415673537747415">Kontrollér hvordan Google bruker nettlesingsloggen din for å tilpasse søk, annonser og andre Google-tjenester, fra <ph name="BEGIN_LINK" />Google Aktivitetslagring<ph name="END_LINK" />.</translation> @@ -5004,7 +5006,6 @@ <translation id="7879478708475862060">Følg inndatamodus</translation> <translation id="7880836220014399562">«<ph name="BUNDLE_NAME" />» legger til disse programmene og utvidelsene:</translation> <translation id="7881969471599061635">Slå av undertekstene</translation> -<translation id="7884988936047469945">Eksperimentelle tilgjengelighetsfunksjoner</translation> <translation id="7885253890047913815">Nylige destinasjoner</translation> <translation id="7887192723714330082">Svar «Ok Google» når skjermen er på og ulåst</translation> <translation id="7887334752153342268">Dupliser</translation> @@ -5072,6 +5073,7 @@ <translation id="7974067550340408553">Få varsler på telefonen hver gang Smart Lock låser opp <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Prøv på nytt med <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Overskanning</translation> +<translation id="7976960358280528247">Slå på UI for vindusveksling (visuell tilbakemelding for Alt+Tab)</translation> <translation id="7977551819349545646">Oppdaterer Chromebox …</translation> <translation id="7978412674231730200">Privatnøkkel</translation> <translation id="7979036127916589816">Feil ved synkronisering</translation> @@ -5099,6 +5101,7 @@ Oppbevar nøkkelfilen på et trygt sted. Du får bruk for den når du skal opprette nye versjoner av utvidelsen.</translation> <translation id="799923393800005025">Kan se</translation> +<translation id="8000066093800657092">Ingen nettverk</translation> <translation id="8004582292198964060">Nettleser</translation> <translation id="8007030362289124303">Lavt batteri</translation> <translation id="8008356846765065031">Internett er frakoblet. Sjekk Internett-forbindelsen din .</translation> @@ -5173,6 +5176,7 @@ <translation id="8116190140324504026">Les mer</translation> <translation id="8116483400482790018">Ordbok for egendefinert rettskriving</translation> <translation id="8116972784401310538">&Bokmerkebehandling</translation> +<translation id="8117838550640702864">Notatinnstillinger</translation> <translation id="8117957376775388318">Dayi-inndatametode</translation> <translation id="8118860139461251237">administrere nedlastingene dine</translation> <translation id="8119572489781388874">Endre innstillingene</translation> @@ -5368,7 +5372,7 @@ <translation id="8373281062075027970">Partnavn: <ph name="PARTY_NAME" /></translation> <translation id="8373360586245335572">Gi alle nettsteder tillatelse til å vise varsler</translation> <translation id="8373553483208508744">Slå av lyden for fanene</translation> -<translation id="8378285435971754261">La Googles posisjonstjenester hjelpe apper med å finne posisjonen din kjapt og nøyaktig, noe som kan redusere batteribruken. Anonyme posisjonsdata sendes til Google – selv når ingen apper kjører. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> +<translation id="8378285435971754261">La Googles posisjonstjenester hjelpe apper med å finne posisjonen din kjapt og nøyaktig, noe som kan redusere batteribruken. Anonyme posisjonsdata sendes til Google, selv når ingen apper kjører. <ph name="BEGIN_LINK1" />Finn ut mer<ph name="END_LINK1" /></translation> <translation id="8379970328220427967"><ph name="SPACE_AVAILABLE" /> ledig</translation> <translation id="8381055888183086563">Aktiverer menyalternativer for feilsøkingskontekst slik som Inspiser element for pakkede apper.</translation> <translation id="8381179624334829711">Administrer kamerainnstillingene</translation> @@ -5451,7 +5455,6 @@ <translation id="8472623782143987204">maskinvarestøttet</translation> <translation id="8475313423285172237">Et annet program på datamaskinen la til en utvidelse som kan endre måten Chrome fungerer på.</translation> <translation id="8475647382427415476">Google Disk kunne ikke synkronisere «<ph name="FILENAME" />» akkurat nå. Vi prøver igjen senere.</translation> -<translation id="8476195663057048998">Slett og tilbakestill</translation> <translation id="8477241577829954800">Erstattet</translation> <translation id="8477384620836102176">&Generelt</translation> <translation id="8480417584335382321">Sidezoom:</translation> @@ -5681,7 +5684,6 @@ <translation id="8785135611469711856">Programtillegget svarer ikke</translation> <translation id="8787254343425541995">Gi tillatelse til mellomtjenere for delte nettverk</translation> <translation id="878763818693997570">Dette navnet er for langt</translation> -<translation id="8787865569533773240">Tilbakestill endrede <ph name="IDS_SHORT_PRODUCT_NAME" />-innstillinger</translation> <translation id="8789375980715484686">Administrer andre brukere</translation> <translation id="8791534160414513928">Send en «Ingen sporing»-forespørsel med nettrafikken din</translation> <translation id="8795668016723474529">Legg til kredittkort</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index ff04c98..f1452aa 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Nie można uzyskać dostępu do pliku ze względów bezpieczeństwa.</translation> <translation id="1675023460278456180">Styl hybrydowy Material</translation> <translation id="167832068858235403">zmniejsz głośność</translation> -<translation id="1678331212993975953">Szczegóły strony</translation> <translation id="1679068421605151609">Narzędzia dla programistów</translation> <translation id="1681120471812444678">Skonfiguruj dodatkowe drukarki…</translation> <translation id="1682324559341535203">Zarejestruj urządzenie <ph name="DEVICE_TYPE" /></translation> @@ -757,7 +756,7 @@ <translation id="204497730941176055">Nazwa szablonu certyfikatu firmy Microsoft</translation> <translation id="2045969484888636535">Nadal blokuj pliki cookie</translation> <translation id="204622017488417136">Na Twoim urządzeniu zostanie przywrócona poprzednia wersja Chrome. Wszystkie zapisane lokalnie konta użytkowników i dane zostaną usunięte. Tej czynności nie można cofnąć.</translation> -<translation id="2047962517134476164">Podaj swoje hasło, by kontynuować</translation> +<translation id="2047962517134476164">Podaj hasło, by kontynuować</translation> <translation id="2048182445208425546">Dostęp do ruchu sieciowego</translation> <translation id="2049137146490122801">Dostęp do plików lokalnych na tym komputerze został wyłączony przez administratora.</translation> <translation id="204914487372604757">Utwórz skrót</translation> @@ -1002,7 +1001,7 @@ <translation id="2356070529366658676">Pytaj</translation> <translation id="2357949918965361754">Za pomocą tej funkcji możesz wyświetlać treści z Chrome na telewizorze lub innych urządzeniach.</translation> <translation id="2359345697448000899">Aby zarządzać zainstalowanymi rozszerzeniami, kliknij Rozszerzenia w menu Narzędzia.</translation> -<translation id="2359808026110333948">Kontynuuj</translation> +<translation id="2359808026110333948">Dalej</translation> <translation id="236128817791440714">Zalecane: skonfiguruj Smart Lock na Androida</translation> <translation id="236141728043665931">Zawsze blokuj dostęp do mikrofonu</translation> <translation id="2367972762794486313">Pokaż aplikacje</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Otwórz po &zakończeniu</translation> <translation id="2372036074421194686">Chrome wykrył, że na komputerze jest zainstalowany niechciany program (<ph name="UWS_NAME" />). Być może uda się go usunąć przy użyciu Narzędzia do czyszczenia Chrome.</translation> <translation id="2375701438512326360">Wymuś trwałe włączenie lub wyłączenie obsługi ekranu dotykowego bądź włączanie jej w przypadku wykrycia ekranu dotykowego podczas uruchamiania (Automatycznie – ustawienie domyślne).</translation> -<translation id="2377619091472055321">Zresetuj zmienione ustawienia <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Wybrano <ph name="SELCTED_FILE_COUNT" /> pliki(ów)</translation> <translation id="2378982052244864789">Wybierz katalog rozszerzenia.</translation> <translation id="2379281330731083556">Drukuj w oknie systemowym <ph name="SHORTCUT_KEY" /></translation> @@ -1123,7 +1121,7 @@ <translation id="2518024842978892609">Użyj certyfikatów klienta</translation> <translation id="2520481907516975884">Przełącz tryb na język chiński/angielski</translation> <translation id="2520644704042891903">Czekam na dostępne gniazdo...</translation> -<translation id="2521669435695685156">Klikając Kontynuuj, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" /> i <ph name="LEGAL_DOC_LINK_TEXT_2" />.</translation> +<translation id="2521669435695685156">Klikając Dalej, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" /> i <ph name="LEGAL_DOC_LINK_TEXT_2" />.</translation> <translation id="252219247728877310">Składnik nie został zaktualizowany</translation> <translation id="2523966157338854187">Otwórz konkretną stronę lub zestaw stron.</translation> <translation id="2525250408503682495">Niedobrze. Nie można podłączyć katalogu cryptohome aplikacji kiosku.</translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Do przywrócenia systemu operacyjnego komputera niezbędna jest karta SD lub pamięć USB z obrazem odzyskiwania.</translation> <translation id="305932878998873762">Prosta pamięć podręczna dla HTTP to nowa pamięć podręczna. Korzysta z systemu plików dla przydziału miejsca na dysku.</translation> <translation id="3062606427884046423">Używanie powiadomień Android MediaStyle jako powiadomień o multimediach w Chrome.</translation> +<translation id="3063224679438508013">Automatyczne uruchamianie aplikacji do robienia notatek</translation> <translation id="3063844757726132584">Otwieraj wszystkie aplikacje w praktycznym programie uruchamiającym. Graj w gry, rozmawiaj ze znajomymi na czacie wideo, słuchaj muzyki, edytuj dokumenty i pobieraj kolejne aplikacje.</translation> <translation id="3064388234319122767">Transliteracja (zdravo → здраво)</translation> <translation id="3065041951436100775">Informacje o zakończeniu działania karty.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Smart Lock Google na hasła</translation> <translation id="317583078218509884">Nowe ustawienia pozwoleń dla stron zostaną zastosowane po ponownym załadowaniu strony.</translation> <translation id="3177048931975664371">Kliknij, aby ukryć hasło</translation> +<translation id="3177909033752230686">Język strony:</translation> <translation id="3180365125572747493">Wprowadź hasło, aby zaszyfrować ten plik certyfikatu.</translation> <translation id="3183139917765991655">Importer profilów</translation> <translation id="3184560914950696195">Nie można zapisać w katalogu $1. Edytowane obrazy będą zapisywane w folderze Pobrane.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Pobrane przez <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Pokaż <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Otwórz w nowej karcie</translation> +<translation id="3616113530831147358">Dźwięk</translation> <translation id="3616741288025931835">&Wyczyść dane przeglądania...</translation> <translation id="3618849550573277856">Sprawdź słowo „<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Wszystko ma już kopię zapasową.</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">&Rozmiar tekstu</translation> <translation id="3995964755286119116">Ustawienia Adobe Flash Playera dotyczące kamery są inne.</translation> <translation id="39964277676607559">Nie można wczytać pliku JavaScript „<ph name="RELATIVE_PATH" />” dla skryptu dotyczącego zawartości.</translation> -<translation id="3996912167543967198">Resetuję...</translation> <translation id="3997015411467176489">Eksperymentalne funkcje kanw</translation> <translation id="4002066346123236978">Tytuł</translation> <translation id="40027638859996362">Przenoszenie słów</translation> @@ -2391,6 +2391,7 @@ <translation id="4140559601186535628">Wiadomości push</translation> <translation id="4146026355784316281">Zawsze otwieraj w przeglądarce systemowej</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> chce sprawdzić, czy Twoje urządzenie z Chrome OS kwalifikuje się do skorzystania z oferty. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Wyświetlacz</translation> <translation id="4151403195736952345">Użyj globalnego ustawienia domyślnego (Wykrywaj)</translation> <translation id="4152177296285305182">Tylko osoba znająca hasło może odczytać Twoje zaszyfrowane dane – hasło nie jest przesyłane do firmy Google ani przez nią przechowywane. Jeśli zapomnisz hasła, trzeba będzie zresetować synchronizację.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 karta}few{# karty}many{# kart}other{# karty}}</translation> @@ -2455,6 +2456,7 @@ <translation id="4250229828105606438">Zrzut ekranu</translation> <translation id="4250680216510889253">Nie</translation> <translation id="4253168017788158739">Uwaga</translation> +<translation id="4254813446494774748">Język tłumaczenia:</translation> <translation id="425573743389990240">Szybkość rozładowywania akumulatora w watach (wartość ujemna oznacza, że akumulator się ładuje)</translation> <translation id="4256316378292851214">Za&pisz film wideo jako...</translation> <translation id="4258348331913189841">Systemy plików</translation> @@ -2532,6 +2534,7 @@ <translation id="4365673000813822030">Ups, synchronizacja przestała działać.</translation> <translation id="4366509400410520531">Dozwolone przez Ciebie</translation> <translation id="4367782753568896354">Nie udało się zainstalować:</translation> +<translation id="436904870295243580">Znajdź więcej aplikacji do robienia notatek</translation> <translation id="4370975561335139969">Podany adres e-mail i hasło nie pasują do siebie</translation> <translation id="437184764829821926">Zaawansowane ustawienia czcionek</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -2787,7 +2790,7 @@ <translation id="4763830802490665879">Pliki cookie z wielu witryn będą czyszczone przy zamykaniu.</translation> <translation id="4764029864566166446">Aktualizuj wtyczkę...</translation> <translation id="4764865176798926079">Zdarzenie domContentLoaded głównej ramki i wczytanie wszystkich zasobów nastąpiło przed zdarzeniem domContentLoaded (elementy iframe zostały zignorowane).</translation> -<translation id="4768332406694066911">Masz certyfikaty potwierdzające Twoją tożsamość od tych organizacji</translation> +<translation id="4768332406694066911">Masz certyfikaty od tych organizacji potwierdzające Twoją tożsamość</translation> <translation id="4768698601728450387">Przytnij zdjęcie</translation> <translation id="4773696473262035477">To hasło oraz wszystkie Twoje <ph name="SAVED_PASSWORDS_LINK" /> będą dostępne w każdej przeglądarce.</translation> <translation id="4776917500594043016">Hasło dla <ph name="USER_EMAIL_ADDRESS" /></translation> @@ -3211,6 +3214,7 @@ <translation id="5324674707192845912">Za chwilę wyrejestrujesz to urządzenie <ph name="DEVICE_TYPE" /> w Google, by wyłączyć funkcję zdalnego lokalizowania, wymazywania i blokowania. To wymaga ponownego uruchomienia. Chcesz kontynuować?</translation> <translation id="5324780743567488672">Ustaw strefę czasową automatycznie na podstawie lokalizacji</translation> <translation id="5325120507747984426">Używa stabilnej kolejności okien w trybie przeglądu. Oznacza to, że przemieszczanie okien podczas otwierania/zamykania przeglądu oraz między sesjami jest ograniczone do minimum.</translation> +<translation id="5326182685622510062">Istnieje wiele implementacji potoku renderowania grafiki dla kanw 2D. Różnią się one charakterystyką wydajności. Włączenie tej flagi umożliwia kontekstom kanw 2D przełączanie implementacji na bieżąco w zależności od sposobu używania kanwy w celu zwiększenia wydajności. Może to być np. przełączenie z implementacji używającej GPU na implementację innego typu.</translation> <translation id="5327248766486351172">Nazwa</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Usuń</translation> @@ -3343,7 +3347,6 @@ <translation id="54870580363317966">Wybierz awatar dla tego użytkownika nadzorowanego.</translation> <translation id="5488468185303821006">Zezwalaj w trybie incognito</translation> <translation id="5489390182170331803">Ustawienie domyślne pasywnych detektorów zdarzeń na poziomie dokumentu</translation> -<translation id="5489789060051091748">Mowa: przytrzymaj klawisz wyszukiwania i kliknij lub przeciągnij, aby usłyszeć tekst</translation> <translation id="549294555051714732">Dopasowywanie podłańcuchów w sugestiach autouzupełniania</translation> <translation id="5493996328530898436">Nowa strategia miksowania podczas renderowania dźwięku</translation> <translation id="5494362494988149300">Otwórz po &zakończeniu</translation> @@ -3414,7 +3417,7 @@ <translation id="5581700288664681403">Ładowanie usługi <ph name="CLOUD_PRINT_NAME" /></translation> <translation id="558170650521898289">Weryfikacja sprzętowych sterowników systemu Microsoft Windows</translation> <translation id="5581878410469397165">Wyłącz powiadomienie o zbliżającym się końcu okresu eksploatacji urządzenia.</translation> -<translation id="5582414689677315220">Klikając Kontynuuj, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" />, <ph name="LEGAL_DOC_LINK_TEXT_2" /> i <ph name="LEGAL_DOC_LINK_TEXT_3" />.</translation> +<translation id="5582414689677315220">Klikając Dalej, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" />, <ph name="LEGAL_DOC_LINK_TEXT_2" /> i <ph name="LEGAL_DOC_LINK_TEXT_3" />.</translation> <translation id="5583370583559395927">Pozostały czas: <ph name="TIME_REMAINING" /></translation> <translation id="5583640892426849032">Backspace</translation> <translation id="5584537427775243893">Importowanie</translation> @@ -3700,7 +3703,6 @@ <translation id="5991049340509704927">Powiększ</translation> <translation id="5991774521050363748">Włącz układy niestandardowe w powiadomieniach internetowych. Będą one miały niewielkie ulepszenia, które w innym wypadku byłyby niemożliwe do zastosowania.</translation> <translation id="5993332328670040093">Pomiar użycia danych został zakończony.</translation> -<translation id="5996258716334177896">Nie można poprawnie otworzyć profilu. Niektóre funkcje mogą być niedostępne. Sprawdź, czy profil istnieje oraz czy masz uprawnienia do odczytu i zapisu jego zawartości.</translation> <translation id="6001799583597751002">Kody PIN nie są identyczne:</translation> <translation id="6003177993629630467">Program <ph name="PRODUCT_NAME" /> może nie móc sam się aktualizować.</translation> <translation id="6003294706906016758">Włącza ramkę stylu aplikacji internetowej dla hostowanych aplikacji</translation> @@ -4150,7 +4152,6 @@ <translation id="6637362044401670482">Włącza obsługę sygnalizowania końca przewijania dla klawiatury wirtualnej.</translation> <translation id="6639554308659482635">Pamięć SQLite</translation> <translation id="6643016212128521049">Wyczyść</translation> -<translation id="6644756108386233011">Zresetować zmienione ustawienia <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">Adres URL odwołania urzędu certyfikacji firmy Netscape</translation> <translation id="6647838571840953560">Obecny kanał: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Chwileczkę…</translation> @@ -4258,7 +4259,6 @@ <translation id="6810613314571580006">Automatycznie loguj się na stronach, używając zapisanych danych logowania. Gdy ta funkcja jest wyłączona, przed każdym zalogowaniem się zobaczysz prośbę o potwierdzenie.</translation> <translation id="6812349420832218321">Przeglądarki <ph name="PRODUCT_NAME" /> nie możesz uruchamiać jako użytkownik root.</translation> <translation id="6812841287760418429">Zachowaj zmiany</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> wykrył, że ustawienia przeglądarki mogły zostać zmienione bez Twojej wiedzy. Czy chcesz przywrócić je do oryginalnych wartości domyślnych?</translation> <translation id="6815551780062710681">edytuj</translation> <translation id="6817358880000653228">Zapisane hasła do tej witryny:</translation> <translation id="6820008762872335722">Przywróć pytanie o zgodę</translation> @@ -4374,6 +4374,7 @@ <translation id="6980956047710795611">Zapisz wszystkie dane systemu operacyjnego Chrome, używając nowego hasła (wymaga poprzedniego hasła).</translation> <translation id="6981982820502123353">Ułatwienia dostępu</translation> <translation id="6981992744085917617">Wybierz metodę logowania się na swoje konto kolejny raz na urządzeniu:</translation> +<translation id="698231206551913481">Usunięcie tego użytkownika spowoduje trwałe usunięcie wszystkich związanych z nim plików i danych lokalnych.</translation> <translation id="6982896539684144327">Wykryta drukarka <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">Zarejestrowany identyfikator OID</translation> <translation id="6983991971286645866">Wszystkie zmiany zostaną zapisane w pliku $1.</translation> @@ -4458,6 +4459,7 @@ <translation id="7073555242265688099">Jeśli masz inne urządzenia z Chrome, zostaną one zsynchronizowane automatycznie i również będą odblokowywane przez Twój telefon.</translation> <translation id="707392107419594760">Wybierz klawiaturę:</translation> <translation id="7075513071073410194">PKCS #1, MD5 z szyfrowaniem RSA</translation> +<translation id="7075625805486468288">Zarządzanie certyfikatami i ustawieniami HTTPS/SSL</translation> <translation id="7076293881109082629">Logowanie</translation> <translation id="7077829361966535409">Nie można wczytać strony logowania przy bieżących ustawieniach serwera proxy. <ph name="GAIA_RELOAD_LINK_START" />Zaloguj się jeszcze raz<ph name="GAIA_RELOAD_LINK_END" /> lub użyj innych <ph name="PROXY_SETTINGS_LINK_START" />ustawień serwera proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignorowane moduły obsługi</translation> @@ -4505,14 +4507,13 @@ <translation id="7141105143012495934">Nie udało się zalogować, bo nie można pobrać informacji o koncie. Skontaktuj się z administratorem lub spróbuj ponownie.</translation> <translation id="7143207342074048698">Łączenie</translation> <translation id="7144878232160441200">Ponów próbę</translation> -<translation id="7148311641502571842">Wtyczka <ph name="PLUGIN_NAME" /> została wyłączona. Aby ją włączyć, otwórz <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Drukarki tradycyjne</translation> <translation id="7154130902455071009">Zmień stronę startową na: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Początkowy tryb wprowadzania języka chińskiego: chiński uproszczony</translation> <translation id="7155171745945906037">Istniejące zdjęcie z kamery lub pliku</translation> <translation id="715568033737470079">Wybierz wtyczki PPAPI, które będą uruchamiane w ramach zasady piaskownicy blokady Win32k (tylko Windows 10 lub nowszy).</translation> <translation id="7156235233373189579">Ten plik został opracowany z myślą o komputerach z Windows. Jest on niezgodny z Twoim urządzeniem z Chrome OS. Spróbuj znaleźć aplikację zastępczą w <ph name="BEGIN_LINK" />Chrome Web Store<ph name="END_LINK" />. <ph name="BEGIN_LINK_HELP" />Więcej informacji<ph name="END_LINK_HELP" /></translation> -<translation id="7157063064925785854">Klikając Kontynuuj, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" />, <ph name="LEGAL_DOC_LINK_TEXT_2" />, <ph name="LEGAL_DOC_LINK_TEXT_3" /> i <ph name="LEGAL_DOC_LINK_TEXT_4" />.</translation> +<translation id="7157063064925785854">Klikając Dalej, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" />, <ph name="LEGAL_DOC_LINK_TEXT_2" />, <ph name="LEGAL_DOC_LINK_TEXT_3" /> i <ph name="LEGAL_DOC_LINK_TEXT_4" />.</translation> <translation id="7158238151765743968">Połączenie z urządzeniem <ph name="DEVICE_NAME" /> jest nadal w toku.</translation> <translation id="716640248772308851">„<ph name="EXTENSION" />” może odczytywać pliki graficzne, wideo i dźwiękowe ze sprawdzonych lokalizacji.</translation> <translation id="7167486101654761064">&Zawsze otwieraj pliki tego typu</translation> @@ -4777,6 +4778,7 @@ <translation id="7540972813190816353">Podczas sprawdzania dostępności aktualizacji wystąpił błąd: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Wyjątki dla grafik</translation> <translation id="7543104066686362383">Włącz funkcje debugowania na urządzeniu <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Jeśli nie możesz znaleźć potrzebnych informacji, otwórz <ph name="BEGIN_LINK_CHROMIUM" />Pomoc do Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Odtwarzaj losowo</translation> <translation id="7545288882499673859">Strategia odrzucania zawartości podczas zaawansowanej obsługi wykorzystania pamięci</translation> <translation id="7545415673537747415">Określ za pomocą strony <ph name="BEGIN_LINK" />Zarządzanie aktywnością w Google<ph name="END_LINK" />, jak Google może korzystać z Twojej historii przeglądania, by dostosowywać wyniki wyszukiwania, reklamy i działanie innych usług.</translation> @@ -4890,7 +4892,7 @@ <translation id="7705600705238488017">Chcesz zamiast tego <ph name="BEGIN_LINK" />przejrzeć Chrome Web Store<ph name="END_LINK" />?</translation> <translation id="7706319470528945664">Klawiatura portugalska</translation> <translation id="7709152031285164251">Niepowodzenie – <ph name="INTERRUPT_REASON" /></translation> -<translation id="7709980197120276510">Klikając Kontynuuj, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" />, <ph name="LEGAL_DOC_LINK_TEXT_2" />, <ph name="LEGAL_DOC_LINK_TEXT_3" />, <ph name="LEGAL_DOC_LINK_TEXT_4" /> i <ph name="LEGAL_DOC_LINK_TEXT_5" />.</translation> +<translation id="7709980197120276510">Klikając Dalej, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" />, <ph name="LEGAL_DOC_LINK_TEXT_2" />, <ph name="LEGAL_DOC_LINK_TEXT_3" />, <ph name="LEGAL_DOC_LINK_TEXT_4" /> i <ph name="LEGAL_DOC_LINK_TEXT_5" />.</translation> <translation id="7712140766624186755">Decydują zasady</translation> <translation id="7712196439824268605">Ten kod PIN łatwo zgadnąć:</translation> <translation id="7713320380037170544">Zezwól wszystkim witrynom na używanie wiadomości zarezerwowanych dla systemu w celu uzyskania dostępu do urządzeń MIDI</translation> @@ -5014,7 +5016,6 @@ <translation id="7879478708475862060">Zgodnie z trybem wprowadzania</translation> <translation id="7880836220014399562">„<ph name="BUNDLE_NAME" />” dodaje te aplikacje i rozszerzenia:</translation> <translation id="7881969471599061635">Wyłącz napisy</translation> -<translation id="7884988936047469945">Eksperymentalne ułatwienia dostępu</translation> <translation id="7885253890047913815">Ostatnie urządzenia docelowe</translation> <translation id="7887192723714330082">Reaguje na „Ok Google”, gdy ekran jest włączony i odblokowany</translation> <translation id="7887334752153342268">Duplikuj</translation> @@ -5082,6 +5083,7 @@ <translation id="7974067550340408553">Otrzymuj powiadomienie na telefon za każdym razem, gdy Smart Lock odblokuje urządzenie <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Ponów za pomocą rozszerzenia <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Nadmiarowość obrazu</translation> +<translation id="7976960358280528247">Włącza UI do przełączania się między oknami (interfejs graficzny po naciśnięciu Alt+Tab).</translation> <translation id="7977551819349545646">Aktualizuję Chromeboksa...</translation> <translation id="7978412674231730200">Klucz prywatny</translation> <translation id="7979036127916589816">Błąd synchronizacji</translation> @@ -5109,6 +5111,7 @@ Przechowuj plik klucza w bezpiecznym miejscu. Będzie on potrzebny do utworzenia nowych wersji rozszerzenia.</translation> <translation id="799923393800005025">Może wyświetlać</translation> +<translation id="8000066093800657092">Brak sieci</translation> <translation id="8004582292198964060">Przeglądarka</translation> <translation id="8007030362289124303">Bateria rozładowana</translation> <translation id="8008356846765065031">Brak łączności z internetem. Sprawdź połączenie.</translation> @@ -5183,6 +5186,7 @@ <translation id="8116190140324504026">Więcej informacji...</translation> <translation id="8116483400482790018">Własny słownik sprawdzania pisowni</translation> <translation id="8116972784401310538">&Menedżer zakładek</translation> +<translation id="8117838550640702864">Ustawienia notatek</translation> <translation id="8117957376775388318">Metoda wprowadzania Dayi</translation> <translation id="8118860139461251237">Zarządzaj pobranymi plikami</translation> <translation id="8119572489781388874">Zmień ustawienia</translation> @@ -5461,7 +5465,6 @@ <translation id="8472623782143987204">sprzętowe</translation> <translation id="8475313423285172237">Inny program na Twoim komputerze dodał rozszerzenie, które może zmienić działanie Chrome.</translation> <translation id="8475647382427415476">Dysk Google nie mógł zsynchronizować pliku „<ph name="FILENAME" />”. Spróbujemy ponownie później.</translation> -<translation id="8476195663057048998">Wyczyść i zresetuj</translation> <translation id="8477241577829954800">Zastąpiony</translation> <translation id="8477384620836102176">&Ogólne</translation> <translation id="8480417584335382321">Powiększenie strony:</translation> @@ -5576,7 +5579,7 @@ <translation id="8655319619291175901">Ups... Coś poszło źle.</translation> <translation id="8655972064210167941">Nie udało się zalogować, bo nie można zweryfikować hasła. Skontaktuj się z administratorem lub spróbuj ponownie.</translation> <translation id="8656768832129462377">Nie sprawdzaj</translation> -<translation id="8656946437567854031">Klikając Kontynuuj, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" />, <ph name="LEGAL_DOC_LINK_TEXT_2" />, <ph name="LEGAL_DOC_LINK_TEXT_3" />, <ph name="LEGAL_DOC_LINK_TEXT_4" />, <ph name="LEGAL_DOC_LINK_TEXT_5" /> i <ph name="LEGAL_DOC_LINK_TEXT_6" />.</translation> +<translation id="8656946437567854031">Klikając Dalej, akceptujesz <ph name="LEGAL_DOC_LINK_TEXT_1" />, <ph name="LEGAL_DOC_LINK_TEXT_2" />, <ph name="LEGAL_DOC_LINK_TEXT_3" />, <ph name="LEGAL_DOC_LINK_TEXT_4" />, <ph name="LEGAL_DOC_LINK_TEXT_5" /> i <ph name="LEGAL_DOC_LINK_TEXT_6" />.</translation> <translation id="8658595122208653918">Zmień opcje drukarki...</translation> <translation id="8658645149275195032"><ph name="APP_NAME" /> udostępnia ekran i dźwięk karcie <ph name="TAB_NAME" />.</translation> <translation id="8659716501582523573">Adres IP:</translation> @@ -5608,7 +5611,7 @@ <translation id="8686213429977032554">Ten plik na Dysku nie jest jeszcze udostępniany</translation> <translation id="8687485617085920635">Następne okno</translation> <translation id="8688579245973331962">Nie widzisz swojej nazwy?</translation> -<translation id="8688644143607459122">Klikając Kontynuuj, zgadzasz się na używanie Google Payments. Aby chronić Cię przed oszustwami, usłudze zostaną udostępnione informacje o Twoim komputerze (w tym o jego lokalizacji).</translation> +<translation id="8688644143607459122">Klikając Dalej, zgadzasz się na używanie Google Payments. Aby chronić Cię przed oszustwami, usłudze zostaną udostępnione informacje o Twoim komputerze (w tym o jego lokalizacji).</translation> <translation id="8688672835843460752">Dostępne</translation> <translation id="8689341121182997459">Data ważności:</translation> <translation id="8690754533598178758">Wyjątki Adobe Flash Playera dotyczące mikrofonu są inne.</translation> @@ -5691,8 +5694,7 @@ <translation id="8785135611469711856">Wtyczka nie odpowiada</translation> <translation id="8787254343425541995">Zezwalaj na serwery proxy w sieciach współdzielonych</translation> <translation id="878763818693997570">Ta nazwa jest za długa</translation> -<translation id="8787865569533773240">Zresetuj zmienione ustawienia <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> -<translation id="8789375980715484686">Zarządzaj innymi użytkownikami</translation> +<translation id="8789375980715484686">Zarządzaj użytkownikami</translation> <translation id="8791534160414513928">Wysyłaj żądanie „Bez śledzenia” podczas przeglądania</translation> <translation id="8795668016723474529">Dodaj kartę kredytową</translation> <translation id="8795916974678578410">Nowe okno</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index de7e9fc3..243aa95f 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Não foi possível acessar o arquivo por motivos de segurança.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">diminuir volume</translation> -<translation id="1678331212993975953">Detalhes do site</translation> <translation id="1679068421605151609">Ferramentas do desenvolvedor</translation> <translation id="1681120471812444678">Configurar para incluir impressoras...</translation> <translation id="1682324559341535203">Inscrever <ph name="DEVICE_TYPE" /></translation> @@ -774,7 +773,7 @@ <translation id="2074527029802029717">Liberar guia</translation> <translation id="2075594581020578008">Navegador <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2076269580855484719">Ocultar este plug-in</translation> -<translation id="2077084898869955643">Informar automaticamente ao Google detalhes de possíveis incidentes de segurança <ph name="PRIVACY_PAGE_LINK" /></translation> +<translation id="2077084898869955643">Informar ao Google detalhes de possíveis incidentes de segurança automaticamente. <ph name="PRIVACY_PAGE_LINK" /></translation> <translation id="2077129598763517140">Usar aceleração de hardware quando disponível</translation> <translation id="2078019350989722914">Avisar antes de sair (<ph name="KEY_EQUIVALENT" />)</translation> <translation id="2079053412993822885">Se você excluir um dos seus próprios certificados, não será mais possível utilizá-lo para se identificar.</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Abrir quando estiver &concluído</translation> <translation id="2372036074421194686">O Chrome encontrou um programa indesejado (<ph name="UWS_NAME" />) instalado no seu computador. Você pode removê-lo executando a Ferramenta de limpeza do Chrome.</translation> <translation id="2375701438512326360">Força o suporte ao touchscreen a sempre estar ativado ou desativado ou a ser ativado quando um touchscreen for detectado na inicialização (a opção padrão é Automático).</translation> -<translation id="2377619091472055321">Redefinir configurações alteradas do <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> arquivos selecionados</translation> <translation id="2378982052244864789">Selecionar o diretório da extensão.</translation> <translation id="2379281330731083556">Imprimir utilizando caixa de diálogo de sistema... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Se alguma vez tiver que restaurar o sistema operacional do seu computador, você precisará de um cartão SD de recuperação ou um cartão de memória USB.</translation> <translation id="305932878998873762">O Cache simples para HTTP é um novo cache. Ele conta com o sistema de arquivos para alocação do espaço em disco.</translation> <translation id="3062606427884046423">Usar notificações MediaStyle do Android para notificações de mídia do Chrome.</translation> +<translation id="3063224679438508013">Iniciar app de anotações automaticamente</translation> <translation id="3063844757726132584">Acesse todos os seus apps nesta útil tela de início. Jogue, bata papo por vídeo, ouça músicas, edite documentos ou faça o download de mais apps.</translation> <translation id="3064388234319122767">Transliteração (zdravo → здраво)</translation> <translation id="3065041951436100775">Feedback para guia desativada.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock para senhas</translation> <translation id="317583078218509884">As novas configurações de permissões de site entrarão em vigor quando a página for atualizada.</translation> <translation id="3177048931975664371">Clique para ocultar senha</translation> +<translation id="3177909033752230686">Idioma da página:</translation> <translation id="3180365125572747493">Digite uma senha para criptografar este arquivo de certificado.</translation> <translation id="3183139917765991655">Importador de perfil</translation> <translation id="3184560914950696195">Não é possível salvar em $1. As imagens editadas serão salvas na pasta Downloads.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Download feito por <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Mostrar <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Abrir em nova guia</translation> +<translation id="3616113530831147358">Áudio</translation> <translation id="3616741288025931835">&Limpar dados de navegação...</translation> <translation id="3618849550573277856">Pesquisar “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Backup completo.</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">As configurações da câmera do Adobe Flash Player são diferentes.</translation> <translation id="39964277676607559">Não foi possível carregar "<ph name="RELATIVE_PATH" />" em javascript para o script de conteúdo.</translation> -<translation id="3996912167543967198">Redefinindo...</translation> <translation id="3997015411467176489">Recursos experimentais de temas</translation> <translation id="4002066346123236978">Título</translation> <translation id="40027638859996362">Deslocar palavras</translation> @@ -2391,6 +2391,7 @@ <translation id="4140559601186535628">Mensagens push</translation> <translation id="4146026355784316281">Sempre abrir com visualizador do sistema</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> deseja verificar se seu dispositivo Chrome OS está qualificado para uma oferta. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Exibição</translation> <translation id="4151403195736952345">Usar padrão global (Detectar)</translation> <translation id="4152177296285305182">Apenas uma pessoa com sua senha pode ler os dados criptografados. A senha não é enviada ao Google nem armazenada por ele. Se você esquecer a senha, terá que reiniciar a sincronização.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 guia}one{# guias}other{# guias}}</translation> @@ -2455,6 +2456,7 @@ <translation id="4250229828105606438">Captura de tela</translation> <translation id="4250680216510889253">Não</translation> <translation id="4253168017788158739">Nota</translation> +<translation id="4254813446494774748">Idioma de tradução:</translation> <translation id="425573743389990240">Taxa de descarga da bateria em Watts (um valor negativo significa que a bateria está sendo carregada)</translation> <translation id="4256316378292851214">Sal&var vídeo como...</translation> <translation id="4258348331913189841">Sistemas de arquivos</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">Ops, a sincronização parou de funcionar.</translation> <translation id="4366509400410520531">Permitida pelo usuário</translation> <translation id="4367782753568896354">Não foi possível instalar:</translation> +<translation id="436904870295243580">Localizar mais apps de anotações</translation> <translation id="4370975561335139969">O e-mail e a senha que você digitou não coincidem.</translation> <translation id="437184764829821926">Configurações de fonte avançadas</translation> <translation id="4372884569765913867">1x1</translation> @@ -3210,6 +3213,7 @@ <translation id="5324674707192845912">Você está prestes a cancelar a inscrição deste <ph name="DEVICE_TYPE" /> no Google para desativar a capacidade de localizar, limpar e bloquear o dispositivo remotamente. Essa ação exige uma reinicialização. Deseja continuar?</translation> <translation id="5324780743567488672">Define o fuso horário automaticamente utilizando seu local</translation> <translation id="5325120507747984426">Usa uma ordem de janela estável no modo de visão geral que tenta minimizar o movimento das janelas ao entrar / sair da visão geral e entre as sessões de visão geral.</translation> +<translation id="5326182685622510062">Há várias implementações do canal de renderização de gráficos para o tema 2D. Essas diferentes implementações têm características de desempenho diferentes. A ativação desse sinalizador permite que contextos de temas 2D se alternem entre essas implementações em tempo real com base em como o tema é usado, a fim de aumentar o desempenho. Por exemplo, alternância de uma implementação que usa a GPU para uma que não a usa.</translation> <translation id="5327248766486351172">Nome</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Excluir</translation> @@ -3342,7 +3346,6 @@ <translation id="54870580363317966">Escolha um avatar para este usuário supervisionado.</translation> <translation id="5488468185303821006">Permitir em modo anônimo</translation> <translation id="5489390182170331803">Padrão passivo de listeners de eventos do nível de documento</translation> -<translation id="5489789060051091748">Selecionar para falar: mantenha a tecla "Pesquisa" pressionada e clique ou arraste para falar qualquer coisa</translation> <translation id="549294555051714732">Correspondência de substrings para sugestões de preenchimento automático</translation> <translation id="5493996328530898436">Nova estratégia de combinação de renderização de áudio</translation> <translation id="5494362494988149300">Abrir quando estiver &concluído</translation> @@ -3700,7 +3703,6 @@ <translation id="5991049340509704927">Ampliar</translation> <translation id="5991774521050363748">Ativar layouts personalizados para notificações da Web. Eles terão melhorias sutis no layout que, de outro modo, não seriam possíveis.</translation> <translation id="5993332328670040093">Seu uso de dados não será mais medido.</translation> -<translation id="5996258716334177896">Seu perfil não pôde ser aberto corretamente. Alguns recursos podem não estar disponíveis. Verifique se o perfil existe e se você tem permissão para ler e escrever seu conteúdo.</translation> <translation id="6001799583597751002">Os PINs não correspondem.</translation> <translation id="6003177993629630467">Talvez o <ph name="PRODUCT_NAME" /> não consiga se manter atualizado.</translation> <translation id="6003294706906016758">Ativa o frame de estilo de aplicativo da Web para aplicativos hospedados</translation> @@ -4151,7 +4153,6 @@ <translation id="6637362044401670482">Ativa a compatibilidade para rolagem do teclado virtual.</translation> <translation id="6639554308659482635">Memória SQLite</translation> <translation id="6643016212128521049">Limpar</translation> -<translation id="6644756108386233011">Redefinir configurações alteradas do <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">URL da revogação da Autoridade de certificação do Netscape</translation> <translation id="6647838571840953560">No momento, no <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Só um segundo…</translation> @@ -4259,7 +4260,6 @@ <translation id="6810613314571580006">Faça login automaticamente nos websites que usam credenciais armazenadas. Quando o recurso estiver desativado, será necessário fornecer uma confirmação todas as vezes antes de fazer login em um website.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> não pode ser executado como raiz.</translation> <translation id="6812841287760418429">Manter alterações</translation> -<translation id="6815353853907306610">O <ph name="IDS_SHORT_PRODUCT_NAME" /> detectou que as configurações do navegador podem ter sido alteradas sem seu conhecimento. Gostaria de redefini-las para os padrões originais?</translation> <translation id="6815551780062710681">editar</translation> <translation id="6817358880000653228">Senhas salvas para este site:</translation> <translation id="6820008762872335722">Redefinir para perguntar</translation> @@ -4377,6 +4377,7 @@ <translation id="6980956047710795611">Migrar todos os dados do Chrome OS para a nova senha (requer a senha anterior)</translation> <translation id="6981982820502123353">Acessibilidade</translation> <translation id="6981992744085917617">Escolha o método que você deseja usar para fazer login novamente na sua conta:</translation> +<translation id="698231206551913481">Todos os arquivos e dados locais associados a este usuário serão excluídos permanentemente quando o usuário for removido.</translation> <translation id="6982896539684144327">Impressora <ph name="VENDOR_NAME" /> detectada</translation> <translation id="6983783921975806247">OID registrado</translation> <translation id="6983991971286645866">Todas as edições serão salvas em $1.</translation> @@ -4389,7 +4390,7 @@ <translation id="6990778048354947307">Tema escuro</translation> <translation id="6991128190741664836">Mais tarde</translation> <translation id="6991665348624301627">Selecione um destino</translation> -<translation id="699220179437400583">Informar automaticamente ao Google detalhes de possíveis incidentes de segurança.</translation> +<translation id="699220179437400583">Informar ao Google detalhes de possíveis incidentes de segurança automaticamente.</translation> <translation id="6993929801679678186">Mostrar previsões de preenchimento automático</translation> <translation id="6998711733709403587"><ph name="SELCTED_FOLDERS_COUNT" /> pastas selecionadas</translation> <translation id="6998872712520806535">{NUM_PAGES,plural, =1{A página a seguir parou de responder. Aguarde até que ela volte a responder ou elimine-a.}one{As páginas a seguir pararam de responder. Aguarde até que voltem a responder ou elimine-as.}other{As páginas a seguir pararam de responder. Aguarde até que voltem a responder ou elimine-as.}}</translation> @@ -4461,6 +4462,7 @@ <translation id="7073555242265688099">Se você tiver outros dispositivos Chrome, eles serão sincronizados automaticamente. Eles serão desbloqueados pelo seu smartphone também.</translation> <translation id="707392107419594760">Selecione seu teclado:</translation> <translation id="7075513071073410194">PKCS #1 MD5 com criptografia RSA</translation> +<translation id="7075625805486468288">Gerencie configurações e certificados HTTPS/SSL</translation> <translation id="7076293881109082629">Como fazer login</translation> <translation id="7077829361966535409">Houve uma falha no carregamento da página de login usando as configurações de proxy atuais. <ph name="GAIA_RELOAD_LINK_START" />Tente fazer login novamente<ph name="GAIA_RELOAD_LINK_END" /> ou use <ph name="PROXY_SETTINGS_LINK_START" />configurações de proxy<ph name="PROXY_SETTINGS_LINK_END" /> diferentes.</translation> <translation id="7077872827894353012">Manipuladores de protocolo ignorados</translation> @@ -4508,7 +4510,6 @@ <translation id="7141105143012495934">O login falhou porque não foi possível recuperar detalhes da sua conta. Entre em contato com o administrador ou tente novamente.</translation> <translation id="7143207342074048698">Conectando</translation> <translation id="7144878232160441200">Tentar novamente</translation> -<translation id="7148311641502571842">O <ph name="PLUGIN_NAME" /> foi desativado. Para reativá-lo, acesse <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Impressoras tradicionais</translation> <translation id="7154130902455071009">Alterar sua página inicial para: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">O modo inicial para chinês é o chinês simplificado</translation> @@ -4788,6 +4789,7 @@ <translation id="7540972813190816353">Ocorreu um erro durante a verificação de atualizações: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Exceções de imagens</translation> <translation id="7543104066686362383">Ativar os recursos de depuração neste dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Se você não encontrar o que está procurando, acesse a <ph name="BEGIN_LINK_CHROMIUM" />Ajuda do Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Reproduzir aleatoriamente</translation> <translation id="7545288882499673859">Descarte estratégico de memória para manipulação avançada de pressão</translation> <translation id="7545415673537747415">Controle a maneira como o Google usa seu histórico de navegação para personalizar a Pesquisa do Google, anúncios e outros serviços nossos nos <ph name="BEGIN_LINK" />Controles de atividades do Google<ph name="END_LINK" />.</translation> @@ -5025,7 +5027,6 @@ <translation id="7879478708475862060">Seguir modo de entrada</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" adiciona estes aplicativos e estas extensões</translation> <translation id="7881969471599061635">Desativar legendas</translation> -<translation id="7884988936047469945">Recursos de acessibilidade experimentais</translation> <translation id="7885253890047913815">Destinos recentes</translation> <translation id="7887192723714330082">Responder a "Ok Google" quando a tela estiver ligada e desbloqueada</translation> <translation id="7887334752153342268">Duplicar</translation> @@ -5093,6 +5094,7 @@ <translation id="7974067550340408553">Seja notificado no seu smartphone toda vez que o Smart Lock desbloquear seu <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Tentar novamente usando <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Overscan</translation> +<translation id="7976960358280528247">Ativar interface de usuário de alternância de janelas (feedback visual de Alt+Tab).</translation> <translation id="7977551819349545646">Atualizando Chromebox...</translation> <translation id="7978412674231730200">Chave privada</translation> <translation id="7979036127916589816">Erro de sincronização</translation> @@ -5120,6 +5122,7 @@ Mantenha a sua chave de arquivo em um local seguro. Você precisará dela para criar novas versões da sua extensão.</translation> <translation id="799923393800005025">Pode ver</translation> +<translation id="8000066093800657092">Sem rede</translation> <translation id="8004582292198964060">Navegador</translation> <translation id="8007030362289124303">Bateria fraca</translation> <translation id="8008356846765065031">Internet desconectada. Verifique sua conexão com a Internet.</translation> @@ -5194,6 +5197,7 @@ <translation id="8116190140324504026">Mais informações...</translation> <translation id="8116483400482790018">Dicionário ortográfico personalizado</translation> <translation id="8116972784401310538">&Gerenciador de favoritos</translation> +<translation id="8117838550640702864">Configurações de anotação</translation> <translation id="8117957376775388318">Método de entrada Dayi</translation> <translation id="8118860139461251237">Gerenciar seus downloads</translation> <translation id="8119572489781388874">Modificar configurações</translation> @@ -5472,7 +5476,6 @@ <translation id="8472623782143987204">suportado por hardware</translation> <translation id="8475313423285172237">Outro programa em seu computador adicionou uma extensão que pode mudar a forma como o Google Chrome funciona.</translation> <translation id="8475647382427415476">Não foi possível para o Google Drive sincronizar "<ph name="FILENAME" />" no momento. O Google Drive tentará novamente mais tarde.</translation> -<translation id="8476195663057048998">Limpar e redefinir</translation> <translation id="8477241577829954800">Substituído</translation> <translation id="8477384620836102176">&Geral</translation> <translation id="8480417584335382321">Zoom da página:</translation> @@ -5702,7 +5705,6 @@ <translation id="8785135611469711856">O plug-in não responde</translation> <translation id="8787254343425541995">Permitir proxies para redes compartilhadas</translation> <translation id="878763818693997570">Este nome é muito longo</translation> -<translation id="8787865569533773240">Redefinir configurações alteradas do <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Gerenciar outros usuários</translation> <translation id="8791534160414513928">Enviar uma solicitação "Não rastrear" com seu tráfego de navegação</translation> <translation id="8795668016723474529">Adicionar um cartão de crédito</translation> @@ -5838,7 +5840,7 @@ <translation id="8982248110486356984">Trocar usuários</translation> <translation id="8986267729801483565">Local de download:</translation> <translation id="8986362086234534611">Esquecer</translation> -<translation id="8986494364107987395">Enviar automaticamente estatísticas de uso e relatórios de erros ao Google</translation> +<translation id="8986494364107987395">Enviar estatísticas de uso e relatórios de erros ao Google automaticamente</translation> <translation id="8987736167266086032">Recomece de onde você parou</translation> <translation id="8987927404178983737">Mês</translation> <translation id="899403249577094719">URL base do certificado do Netscape</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index d1dff36..4457485 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -522,7 +522,6 @@ <translation id="1673103856845176271">Não foi possível aceder ao ficheiro por razões de segurança.</translation> <translation id="1675023460278456180">Material híbrido</translation> <translation id="167832068858235403">reduzir volume</translation> -<translation id="1678331212993975953">Detalhes do site</translation> <translation id="1679068421605151609">Ferramentas do Programador</translation> <translation id="1681120471812444678">Configurar para adicionar impressoras…</translation> <translation id="1682324559341535203">Inscrever <ph name="DEVICE_TYPE" /></translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">Abrir quando estiver concluí&do</translation> <translation id="2372036074421194686">O Chrome encontrou um programa indesejado (<ph name="UWS_NAME" />) instalado no seu computador. Pode ser possível remover esse programa ao executar a Ferramenta de limpeza do Chrome.</translation> <translation id="2375701438512326360">Force o suporte de ecrã tátil para estar sempre ativado ou desativado, ou para estar ativado quando for detetado um ecrã tátil no arranque (Automático, por predefinição).</translation> -<translation id="2377619091472055321">Repor definições alteradas do <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> ficheiros selecionados</translation> <translation id="2378982052244864789">Selecione o diretório da extensão.</translation> <translation id="2379281330731083556">Imprimir utilizando a caixa de diálogo do sistema... <ph name="SHORTCUT_KEY" /></translation> @@ -1560,6 +1558,7 @@ <translation id="3058212636943679650">Se precisar de restaurar o sistema operativo do computador, será necessário um cartão SD ou memory stick USB de recuperação.</translation> <translation id="305932878998873762">A Cache Simples para HTTP é uma nova cache. Depende do sistema de ficheiros para a atribuição do espaço em disco.</translation> <translation id="3062606427884046423">Utilizar notificações Android MediaStyle para notificações de multimédia do Chrome.</translation> +<translation id="3063224679438508013">Iniciar automaticamente a aplicação para tirar notas</translation> <translation id="3063844757726132584">Aceda a todas as suas aplicações a partir deste prático iniciador. Divirta-se com jogos, participe em chat de vídeo, ouça música, edite documentos ou obtenha mais aplicações.</translation> <translation id="3064388234319122767">Transliteração (zdravo → здраво)</translation> <translation id="3065041951436100775">Comentários acerca de separador desativado.</translation> @@ -1650,6 +1649,7 @@ <translation id="3172213052701798825">Smart Lock para palavras-passe da Google</translation> <translation id="317583078218509884">As novas definições relativas às permissões do Website terão efeito depois de atualizar a página.</translation> <translation id="3177048931975664371">Clicar para ocultar a palavra-passe</translation> +<translation id="3177909033752230686">Idioma da página:</translation> <translation id="3180365125572747493">Introduza uma palavra-passe para encriptar este ficheiro de certificado.</translation> <translation id="3183139917765991655">Importador de perfis</translation> <translation id="3184560914950696195">Não é possível guardar em $1. As imagens editadas serão guardadas na pasta Transferências.</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">Transferido por <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Mostrar <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Abrir num novo separador</translation> +<translation id="3616113530831147358">Áudio</translation> <translation id="3616741288025931835">&Limpar Dados de Navegação...</translation> <translation id="3618849550573277856">Procurar "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Foi feita uma cópia de segurança de todos os ficheiros!</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">As definições de câmara do Adobe Flash Player são diferentes.</translation> <translation id="39964277676607559">Não foi possível carregar javascript "<ph name="RELATIVE_PATH" />" para script de conteúdo.</translation> -<translation id="3996912167543967198">A repor…</translation> <translation id="3997015411467176489">Funcionalidades de tela experimentais</translation> <translation id="4002066346123236978">Título</translation> <translation id="40027638859996362">Mover palavra</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">Mensagens push</translation> <translation id="4146026355784316281">Abrir sempre com o visualizador do sistema</translation> <translation id="4146175323503586871">O <ph name="SERVICE_NAME" /> pretende verificar se o seu dispositivo com SO Chrome é elegível para uma oferta. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Visualização</translation> <translation id="4151403195736952345">Utilizar predefinição global (Detetar)</translation> <translation id="4152177296285305182">Só alguém com a sua frase de acesso pode ler os seus dados encriptados. A frase de acesso não é enviada a ninguém nem é guardada pelo Google. Se se esquecer da sua frase de acesso, terá de repor a sincronização.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 separador}other{# separadores}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">Captura de ecrã</translation> <translation id="4250680216510889253">Não</translation> <translation id="4253168017788158739">Nota</translation> +<translation id="4254813446494774748">Idioma de tradução:</translation> <translation id="425573743389990240">Taxa de descarga da bateria em Watts (Um valor negativo significa que a bateria está em carregamento)</translation> <translation id="4256316378292851214">Guardar &Vídeo Como...</translation> <translation id="4258348331913189841">Sistemas de ficheiros</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">Ups, a Sincronização deixou de funcionar.</translation> <translation id="4366509400410520531">Permitido por si</translation> <translation id="4367782753568896354">Não foi possível instalar:</translation> +<translation id="436904870295243580">Encontrar mais aplicações para tirar notas</translation> <translation id="4370975561335139969">O email e a palavra-passe introduzidos não coincidem.</translation> <translation id="437184764829821926">Definições avançadas do tipo de letra</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3213,6 +3216,7 @@ <translation id="5324674707192845912">Está prestes a anular a inscrição deste <ph name="DEVICE_TYPE" /> com o Google para desativar a capacidade de localizar, apagar e bloquear remotamente o dispositivo. Para efetuar esta ação, é necessário reiniciar. Pretende continuar?</translation> <translation id="5324780743567488672">Definir automaticamente o fuso horário com base na localização</translation> <translation id="5325120507747984426">Utiliza uma ordenação de janelas estável no modo de vista geral que tenta minimizar o movimento das janelas ao entrar/sair da vista geral e entre as sessões de vista geral.</translation> +<translation id="5326182685622510062">Existem várias implementações do pipeline de processamento gráfico para a tela 2D. Estas diferentes implementações apresentam diferentes caraterísticas em termos de desempenho. Ativar este sinalizador permite que os contextos 2D das telas alternem rapidamente entre estas implementações com base na forma como a tela é utilizada para aumentar o desempenho. Por exemplo, passar de uma implementação que utiliza a GPU para uma que não utiliza.</translation> <translation id="5327248766486351172">Nome</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">E&liminar</translation> @@ -3345,7 +3349,6 @@ <translation id="54870580363317966">Escolha um avatar para este utilizador supervisionado.</translation> <translation id="5488468185303821006">Permitir em modo de navegação anónima</translation> <translation id="5489390182170331803">Predefinição dos event listeners passivos ao nível do documento</translation> -<translation id="5489789060051091748">Selecionar para falar: prima sem soltar Pesquisar e clique ou arraste para dizer algo</translation> <translation id="549294555051714732">Correspondência de subsequências de carateres para as sugestões do Preenchimento automático</translation> <translation id="5493996328530898436">Nova estratégia de mistura de renderização de áudio</translation> <translation id="5494362494988149300">Abrir Quando Estiver Concluí&do</translation> @@ -3703,7 +3706,6 @@ <translation id="5991049340509704927">Ampliar</translation> <translation id="5991774521050363748">Ativar esquemas personalizados para Notificações Web. São efetuadas ligeiras melhorias aos esquemas que, de outra forma, não são possíveis.</translation> <translation id="5993332328670040093">A utilização de dados já não será medida.</translation> -<translation id="5996258716334177896">Não foi possível abrir o seu perfil corretamente. Algumas funcionalidades podem não estar disponíveis. Confirme se o perfil existe e se tem permissão para ler e gravar o respetivo conteúdo.</translation> <translation id="6001799583597751002">Os PINs não coincidem:</translation> <translation id="6003177993629630467">O <ph name="PRODUCT_NAME" /> pode não conseguir manter-se atualizado.</translation> <translation id="6003294706906016758">Ativa a frame de estilo de aplicação Web para aplicações alojadas</translation> @@ -4153,7 +4155,6 @@ <translation id="6637362044401670482">Ativa o suporte de deslocamento para o teclado virtual.</translation> <translation id="6639554308659482635">Memória SQLite</translation> <translation id="6643016212128521049">Limpar</translation> -<translation id="6644756108386233011">Repor as definições alteradas do <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">URL de revogação da autoridade de certificação Netscape</translation> <translation id="6647838571840953560">Atualmente no canal <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Aguarde um momento...</translation> @@ -4261,7 +4262,6 @@ <translation id="6810613314571580006">Iniciar sessão automaticamente nos Websites com as credenciais armazenadas. Quando a funcionalidade está desativada, é-lhe pedida sempre uma confirmação antes de iniciar sessão num Website.</translation> <translation id="6812349420832218321">O <ph name="PRODUCT_NAME" /> não pode ser executado como raiz.</translation> <translation id="6812841287760418429">Manter alterações</translation> -<translation id="6815353853907306610">O <ph name="IDS_SHORT_PRODUCT_NAME" /> detetou que as definições do seu navegador podem ter sido alteradas sem o seu conhecimento. Gostaria de repor as definições originais?</translation> <translation id="6815551780062710681">editar</translation> <translation id="6817358880000653228">Palavras-passe guardadas para este site:</translation> <translation id="6820008762872335722">Repor para perguntar</translation> @@ -4378,6 +4378,7 @@ <translation id="6980956047710795611">Migrar todos os dados do SO Chrome para a nova palavra-passe (requer palavra-passe anterior)</translation> <translation id="6981982820502123353">Acessibilidade</translation> <translation id="6981992744085917617">Escolha o método que pretende utilizar para iniciar sessão novamente na sua conta.</translation> +<translation id="698231206551913481">Todos os ficheiros e dados locais associados a este utilizador são permanentemente eliminados assim que este utilizador é removido.</translation> <translation id="6982896539684144327">Impressora <ph name="VENDOR_NAME" /> detetada</translation> <translation id="6983783921975806247">OID registado</translation> <translation id="6983991971286645866">Todas as alterações são guardadas em $1.</translation> @@ -4462,6 +4463,7 @@ <translation id="7073555242265688099">Se tiver outros dispositivos Chrome, estes são sincronizados automaticamente, pelo que o seu telemóvel também os vai desbloquear.</translation> <translation id="707392107419594760">Selecionar teclado:</translation> <translation id="7075513071073410194">PKCS #1 MD5 Com encriptação RSA</translation> +<translation id="7075625805486468288">Gerir certificados e definições HTTPS/SSL</translation> <translation id="7076293881109082629">Iniciar sessão</translation> <translation id="7077829361966535409">Ocorreu uma falha ao carregar a página de início de sessão utilizando as definições de proxy atuais. <ph name="GAIA_RELOAD_LINK_START" />Tente iniciar sessão novamente<ph name="GAIA_RELOAD_LINK_END" /> ou utilize <ph name="PROXY_SETTINGS_LINK_START" />definições de proxy<ph name="PROXY_SETTINGS_LINK_END" /> diferentes.</translation> <translation id="7077872827894353012">Processadores de protocolos ignorados</translation> @@ -4509,7 +4511,6 @@ <translation id="7141105143012495934">O início de sessão falhou porque não foi possível obter os detalhes da sua conta. Contacte o administrador ou tente novamente.</translation> <translation id="7143207342074048698">A ligar</translation> <translation id="7144878232160441200">Repetir</translation> -<translation id="7148311641502571842">O <ph name="PLUGIN_NAME" /> foi desativado. Para o reativar, aceda a <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Impressoras clássicas</translation> <translation id="7154130902455071009">Alterar a página de início para: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">O modo chinês inicial é chinês simplificado</translation> @@ -4571,7 +4572,7 @@ <translation id="7243055093079293866">Dizer "Ok Google" num separador novo e em google.com</translation> <translation id="7243632151880336635">Limpar e terminar sessão</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (a melhor)</translation> -<translation id="724691107663265825">O site seguinte contém software malicioso</translation> +<translation id="724691107663265825">O site que pretende visitar contém software malicioso</translation> <translation id="725109152065019550">Lamentamos, mas o administrador desativou o armazenamento externo na sua conta.</translation> <translation id="7252661675567922360">Não carregar</translation> <translation id="7253521419891527137">&Saiba Mais</translation> @@ -4788,6 +4789,7 @@ <translation id="7540972813190816353">Ocorreu um erro durante a verificação de atualizações: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Exceções de imagem</translation> <translation id="7543104066686362383">Ativar as funcionalidades de depuração neste dispositivo <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Aceda à <ph name="BEGIN_LINK_CHROMIUM" />ajuda do Google Chrome<ph name="END_LINK_CHROMIUM" /> se não conseguir encontrar aquilo que procura.</translation> <translation id="7544853251252956727">Reproduzir aleatoriamente</translation> <translation id="7545288882499673859">Estratégia de rejeição da memória para o processamento de pressão avançado</translation> <translation id="7545415673537747415">Controle a forma como a Google utiliza o seu histórico de navegação para personalizar a Pesquisa Google, os anúncios e outros serviços Google em <ph name="BEGIN_LINK" />Controlos da atividade Google<ph name="END_LINK" />.</translation> @@ -5025,7 +5027,6 @@ <translation id="7879478708475862060">Seguir método de introdução</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" adiciona as seguintes aplicações e extensões:</translation> <translation id="7881969471599061635">Desativar legendas</translation> -<translation id="7884988936047469945">Funcionalidades de acessibilidade experimentais</translation> <translation id="7885253890047913815">Destinos recentes</translation> <translation id="7887192723714330082">Responder a "Ok Google" quando o ecrã está ligado e desbloqueado</translation> <translation id="7887334752153342268">Duplicar</translation> @@ -5093,6 +5094,7 @@ <translation id="7974067550340408553">Receba uma notificação no seu telemóvel sempre que o Smart Lock desbloquear o <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Tente novamente com <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Overscan</translation> +<translation id="7976960358280528247">Ativar IU de alternância entre janelas (comentários visuais para Alt+Tab).</translation> <translation id="7977551819349545646">A atualizar o Chromebox...</translation> <translation id="7978412674231730200">Chave privada</translation> <translation id="7979036127916589816">Erro de sincronização</translation> @@ -5120,6 +5122,7 @@ Mantenha o seu ficheiro de chave num local seguro, pois irá precisar dele para criar novas versões da sua extensão.</translation> <translation id="799923393800005025">Pode ver</translation> +<translation id="8000066093800657092">Sem rede</translation> <translation id="8004582292198964060">Navegador</translation> <translation id="8007030362289124303">Bateria fraca</translation> <translation id="8008356846765065031">A Internet está desligada. Verifique a ligação à Internet.</translation> @@ -5194,6 +5197,7 @@ <translation id="8116190140324504026">Mais informações...</translation> <translation id="8116483400482790018">Dicionário de ortografia personalizado</translation> <translation id="8116972784401310538">&Gestor de marcadores</translation> +<translation id="8117838550640702864">Definições de notas</translation> <translation id="8117957376775388318">Método de introdução dayi</translation> <translation id="8118860139461251237">Gerir as transferências</translation> <translation id="8119572489781388874">Modificar definições</translation> @@ -5472,7 +5476,6 @@ <translation id="8472623782143987204">suporte de hardware</translation> <translation id="8475313423285172237">Outro programa do computador adicionou uma extensão que pode alterar o funcionamento do Chrome.</translation> <translation id="8475647382427415476">O Google Drive não conseguiu sincronizar "<ph name="FILENAME" />" de momento e vai tentar novamente mais tarde.</translation> -<translation id="8476195663057048998">Limpar e repor</translation> <translation id="8477241577829954800">Substituído</translation> <translation id="8477384620836102176">&Geral</translation> <translation id="8480417584335382321">Zoom da página:</translation> @@ -5702,7 +5705,6 @@ <translation id="8785135611469711856">Plug-in sem resposta</translation> <translation id="8787254343425541995">Permitir proxies para redes partilhadas</translation> <translation id="878763818693997570">Este nome é demasiado longo</translation> -<translation id="8787865569533773240">Repor definições alteradas do <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Gerir outros utilizadores</translation> <translation id="8791534160414513928">Enviar um pedido "Não rastrear" com o seu tráfego de navegação</translation> <translation id="8795668016723474529">Adicionar um cartão de crédito</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index cf7f684a4..b78fdc0 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Fișierul nu a putut fi accesat din motive de securitate.</translation> <translation id="1675023460278456180">Hibrid material</translation> <translation id="167832068858235403">reduce volumul</translation> -<translation id="1678331212993975953">Detaliile site-ului</translation> <translation id="1679068421605151609">Instrumente pentru dezvoltatori</translation> <translation id="1681120471812444678">Configurează pentru a adăuga imprimante…</translation> <translation id="1682324559341535203">Înregistrează dispozitivul <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Deschide când s-a &descărcat</translation> <translation id="2372036074421194686">Chrome a găsit un program nedorit (<ph name="UWS_NAME" />) instalat pe computerul tău. Este posibil să îl elimini folosind Chrome Cleanup Tool.</translation> <translation id="2375701438512326360">Forțați suportul pentru ecranul tactil astfel încât să fie întotdeauna activat sau dezactivat, sau astfel încât să fie activat atunci când este detectat un ecran tactil la pornire (Automat, setarea prestabilită).</translation> -<translation id="2377619091472055321">Resetați setările <ph name="IDS_SHORT_PRODUCT_NAME" /> modificate</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> (de) fișiere selectate</translation> <translation id="2378982052244864789">Selectează directorul extensiei.</translation> <translation id="2379281330731083556">Printați utilizând caseta de dialog a sistemului... <ph name="SHORTCUT_KEY" /></translation> @@ -1476,7 +1474,7 @@ <translation id="295947108480905647">„<ph name="CHROME_EXTENSION_NAME" />” dorește să se conecteze la:</translation> <translation id="2959614062380389916">Dezactivată de administrator</translation> <translation id="2960393411257968125">Cum gestionează managerul de parole completarea automată în cazul datelor de conectare pentru sincronizare.</translation> -<translation id="29611076221683977">Atacatorii de pe <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pot încerca să instaleze programe periculoase pe computerul dvs. Mac, care să vă fure sau să vă șteargă informațiile (de exemplu, fotografiile, parolele, mesajele sau informațiile despre cardurile de credit).</translation> +<translation id="29611076221683977">Atacatorii de pe <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pot încerca să instaleze programe periculoase pe computerul tău Mac, care să îți fure sau să îți șteargă informațiile (de exemplu, fotografiile, parolele, mesajele sau informațiile despre cardurile de credit).</translation> <translation id="2961695502793809356">Dă clic pentru a naviga înainte, ține apăsat pentru a vedea istoricul</translation> <translation id="296216853343927883">Marca Google în meniul contextual</translation> <translation id="2963151496262057773">Următorul plugin este inactiv: <ph name="PLUGIN_NAME" />. Dorești să îl oprești?</translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Dacă va fi necesar să restabilești sistemul de operare al computerului, vei avea nevoie de un card SD sau de un stick de memorie USB.</translation> <translation id="305932878998873762">Memoria cache simplă pentru HTTP este o memorie cache nouă. Aceasta se bazează pe sistemul de fișiere pentru alocarea spațiului de pe disc.</translation> <translation id="3062606427884046423">Folosește notificările Android MediaStyle pentru notificările media Chrome.</translation> +<translation id="3063224679438508013">Lansează automat aplicația de creat note</translation> <translation id="3063844757726132584">Accesează toate aplicațiile din acest lansator util. Joacă jocuri, conversează prin chat video, ascultă muzică, editează documente sau descarcă mai multe aplicații.</translation> <translation id="3064388234319122767">Transliterație (zdravo → здраво)</translation> <translation id="3065041951436100775">Feedback despre fila eliminată.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock pentru parole</translation> <translation id="317583078218509884">Setările noi pentru permisiuni legate de site-uri se vor aplica după ce reîncărcați pagina.</translation> <translation id="3177048931975664371">Faceți clic pentru a ascunde parola</translation> +<translation id="3177909033752230686">Limba paginii:</translation> <translation id="3180365125572747493">Introduceți o parolă pentru a cripta acest fișier certificat.</translation> <translation id="3183139917765991655">Instrument de import al profilurilor</translation> <translation id="3184560914950696195">Fișierele nu pot fi salvate în $1. Imaginile editate vor fi salvate în dosarul Descărcări.</translation> @@ -1997,6 +1997,7 @@ <translation id="3612673635130633812">Descărcat de <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Vezi <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Deschideți într-o filă nouă</translation> +<translation id="3616113530831147358">Audio</translation> <translation id="3616741288025931835">&Șterge datele de navigare...</translation> <translation id="3618849550573277856">Caută „<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">S-a făcut backup pentru tot!</translation> @@ -2293,7 +2294,6 @@ <translation id="3994878504415702912">&Zoom</translation> <translation id="3995964755286119116">Setările Adobe Flash Player pentru camera foto sunt diferite.</translation> <translation id="39964277676607559">Nu se poate încărca conținutul JavaScript „<ph name="RELATIVE_PATH" />” pentru scriptul de conținut.</translation> -<translation id="3996912167543967198">Se resetează...</translation> <translation id="3997015411467176489">Funcții experimentale ale obiectului Canvas</translation> <translation id="4002066346123236978">Titlu</translation> <translation id="40027638859996362">Mutarea cuvintelor</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">Mesaje push</translation> <translation id="4146026355784316281">Deschide întotdeauna cu Utilitarul de vizualizare al sistemului</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> dorește să verifice dacă dispozitivul dvs. cu sistemul de operare Chrome este eligibil pentru o ofertă. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Ecran</translation> <translation id="4151403195736952345">Folosește global în mod prestabilit (detectează)</translation> <translation id="4152177296285305182">Numai un utilizator care are parola de acces poate citi datele criptate. Parola de acces nu este trimisă sau stocată la Google. Dacă uitați parola de acces, va trebui să resetați sincronizarea.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{O filă}few{# file}other{# de file}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">Captură de ecran</translation> <translation id="4250680216510889253">Nu</translation> <translation id="4253168017788158739">Notă</translation> +<translation id="4254813446494774748">Limba traducerii:</translation> <translation id="425573743389990240">Rata de descărcare a bateriei în wați (valoarea negativă înseamnă că bateria se încarcă)</translation> <translation id="4256316378292851214">Sal&vează videoclipul ca...</translation> <translation id="4258348331913189841">Sisteme de fișiere</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">Hopa, sincronizarea a încetat să funcționeze.</translation> <translation id="4366509400410520531">Permis de dvs.</translation> <translation id="4367782753568896354">Nu am reușit să instalăm:</translation> +<translation id="436904870295243580">Găsește mai multe aplicații de creare a notelor</translation> <translation id="4370975561335139969">Adresa de e-mail și parola pe care le-ai introdus nu se potrivesc</translation> <translation id="437184764829821926">Setări avansate pentru fonturi</translation> <translation id="4372884569765913867">1x1</translation> @@ -3211,6 +3214,7 @@ <translation id="5324674707192845912">Vei anula înregistrarea acestui dispozitiv <ph name="DEVICE_TYPE" /> la Google pentru a dezactiva funcțiile de localizare, ștergere a datelor și blocare la distanță a dispozitivului. Pentru aceasta trebuie să îl repornești. Dorești să continui?</translation> <translation id="5324780743567488672">Setează automat fusul orar folosind locația</translation> <translation id="5325120507747984426">Folosește o ordine stabilă a ferestrelor în modul Prezentare generală, care încearcă minimizarea mișcării ferestrelor atunci când accesezi/părăsești modul Prezentare generală și între sesiunile acestui mod.</translation> +<translation id="5326182685622510062">Există mai multe implementări ale canalului de redare a elementelor grafice pentru obiectele Canvas 2D. Aceste implementări au caracteristici diferite privind performanța. Dacă activezi acest marcaj, contextele obiectelor Canvas 2D pot comuta între aceste implementări în timpul rulării în funcție de modul în care este folosit obiectul Canvas, pentru a crește performanța. De exemplu, trecerea de la o implementare care folosește GPU la una care nu folosește.</translation> <translation id="5327248766486351172">Nume</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Șterge</translation> @@ -3343,7 +3347,6 @@ <translation id="54870580363317966">Alegeți un avatar pentru utilizatorul monitorizat.</translation> <translation id="5488468185303821006">Permite în incognito</translation> <translation id="5489390182170331803">Setarea prestabilită pentru instrumentele pasive de monitorizare a evenimentelor la nivel de document</translation> -<translation id="5489789060051091748">Selectează pentru a se rosti: atinge lung Caută și dă clic sau trage pentru a se rosti orice</translation> <translation id="549294555051714732">Potrivirea subșirurilor pentru sugestii de completare automată</translation> <translation id="5493996328530898436">Noua strategie de mixare a redării audio</translation> <translation id="5494362494988149300">Deschide când s-a &descărcat</translation> @@ -3700,7 +3703,6 @@ <translation id="5991049340509704927">Mărește</translation> <translation id="5991774521050363748">Activează aspectele personalizate pentru Notificările web. Acestea vor avea îmbunătățiri subtile ale aspectului care nu ar fi posibile altfel.</translation> <translation id="5993332328670040093">Utilizarea datelor nu va mai fi măsurată.</translation> -<translation id="5996258716334177896">Profilul dvs. nu a putut fi deschis corect. Este posibil ca unele funcții să nu fie disponibile. Verificați dacă profilul există și dacă aveți permisiunea de scriere și de citire a conținutului său.</translation> <translation id="6001799583597751002">Codurile PIN nu coincid:</translation> <translation id="6003177993629630467">Este posibil ca <ph name="PRODUCT_NAME" /> să nu se poată menține la zi.</translation> <translation id="6003294706906016758">Activează cadrul cu stilul aplicațiilor web pentru aplicațiile găzduite</translation> @@ -4150,7 +4152,6 @@ <translation id="6637362044401670482">Activează compatibilitatea cu derularea suplimentară pentru tastatura virtuală.</translation> <translation id="6639554308659482635">Memorie SQLite</translation> <translation id="6643016212128521049">Ștergeți</translation> -<translation id="6644756108386233011">Resetați setările <ph name="IDS_SHORT_PRODUCT_NAME" /> modificate?</translation> <translation id="6647228709620733774">Adresă URL de revocare a autorității de certificare Netscape</translation> <translation id="6647838571840953560">În prezent, pe <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">O secundă…</translation> @@ -4258,7 +4259,6 @@ <translation id="6810613314571580006">Te conectezi automat la site-uri folosind datele de conectare stocate. Când funcția este dezactivată, ți se va solicita confirmarea de fiecare dată înainte de a te conecta la un site.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> nu poate fi rulat în modul root.</translation> <translation id="6812841287760418429">Păstrați modificările</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> a detectat faptul că e posibil ca setările browserului să fi fost modificate fără acordul dvs. Doriți să le resetați la valorile inițiale?</translation> <translation id="6815551780062710681">editează</translation> <translation id="6817358880000653228">Parolele salvate pentru acest site:</translation> <translation id="6820008762872335722">Resetează la solicitarea permisiunii</translation> @@ -4375,6 +4375,7 @@ <translation id="6980956047710795611">Efectuați migrarea tuturor datelor din sistemul de operare Chrome la noua parolă (este necesară parola anterioară)</translation> <translation id="6981982820502123353">Accesibilitate</translation> <translation id="6981992744085917617">Alege metoda pe care dorești să o folosești pentru a te conecta din nou la cont:</translation> +<translation id="698231206551913481">Toate fișierele și datele locale asociate acestui utilizator vor fi șterse definitiv după eliminarea utilizatorului.</translation> <translation id="6982896539684144327">A fost detectată o imprimantă de la <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">OID înregistrat</translation> <translation id="6983991971286645866">Toate modificările vor fi salvate în $1.</translation> @@ -4459,6 +4460,7 @@ <translation id="7073555242265688099">Dacă ai alte dispozitive Chrome, acestea vor fi sincronizate automat, pentru ca telefonul să le deblocheze.</translation> <translation id="707392107419594760">Selectează tastatura:</translation> <translation id="7075513071073410194">PKCS #1 MD5 cu criptare RSA</translation> +<translation id="7075625805486468288">Gestionează setările și certificatele HTTPS/SSL</translation> <translation id="7076293881109082629">Conectare</translation> <translation id="7077829361966535409">Pagina de conectare nu s-a putut încărca utilizând setările de proxy actuale. <ph name="GAIA_RELOAD_LINK_START" />Încercați să vă conectați din nou<ph name="GAIA_RELOAD_LINK_END" /> sau utilizați alte <ph name="PROXY_SETTINGS_LINK_START" />setări de proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Handlere de protocol ignorate</translation> @@ -4506,7 +4508,6 @@ <translation id="7141105143012495934">Nu s-a conectat, deoarece nu s-au putut prelua detaliile contului. Contactează administratorul sau încearcă din nou.</translation> <translation id="7143207342074048698">Se conectează</translation> <translation id="7144878232160441200">Reîncearcă</translation> -<translation id="7148311641502571842">Pluginul <ph name="PLUGIN_NAME" /> a fost dezactivat. Pentru a-l reactiva, accesați <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Imprimante clasice</translation> <translation id="7154130902455071009">Schimbați pagina de start la: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Modul inițial pentru chineză este chineza simplificată</translation> @@ -4568,7 +4569,7 @@ <translation id="7243055093079293866">Rostește „Ok Google” într-o filă nouă și pe google.com</translation> <translation id="7243632151880336635">Șterge și deconectează-te</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (optimă)</translation> -<translation id="724691107663265825">Site-ul pe care urmează să îl accesați conține programe malware</translation> +<translation id="724691107663265825">Site-ul pe care urmează să îl accesezi conține programe malware</translation> <translation id="725109152065019550">Ne pare rău, administratorul a dezactivat stocarea externă pentru contul dvs.</translation> <translation id="7252661675567922360">Nu încărcați</translation> <translation id="7253521419891527137">&Aflați mai multe</translation> @@ -4785,6 +4786,7 @@ <translation id="7540972813190816353">A avut loc o eroare la verificarea existenței unor actualizări: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Excepții privind imaginile</translation> <translation id="7543104066686362383">Activează funcțiile de remediere a erorilor pe acest dispozitiv <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Accesează <ph name="BEGIN_LINK_CHROMIUM" />Ajutor Google Chrome<ph name="END_LINK_CHROMIUM" /> dacă nu găsești ceea ce cauți.</translation> <translation id="7544853251252956727">Redă aleatoriu</translation> <translation id="7545288882499673859">Strategie de ștergere a memorie pentru gestionarea avansată a utilizării excesive</translation> <translation id="7545415673537747415">Stabilește cum poate folosi Google istoricul de navigare pentru a personaliza Căutarea, anunțurile și alte servicii Google din <ph name="BEGIN_LINK" />Opțiunile privind activitatea Google<ph name="END_LINK" />.</translation> @@ -4820,7 +4822,7 @@ <translation id="7582844466922312471">Date mobile</translation> <translation id="7583242026904249212">Domeniul <ph name="DOMAIN" /> dorește ca identitatea dispozitivului să fie verificată de Google, ca să determine eligibilitatea pentru redarea avansată a conținutului media protejat. <ph name="LEARN_MORE" />.</translation> <translation id="7584802760054545466">Se conectează la <ph name="NETWORK_ID" /></translation> -<translation id="7586312264284919041">Doriți traducerea acestei pagini?</translation> +<translation id="7586312264284919041">Dorești traducerea acestei pagini?</translation> <translation id="7586498138629385861">Chrome va rula în continuare când sunt deschise aplicații Chrome.</translation> <translation id="7587108133605326224">Baltic</translation> <translation id="7589461650300748890">Ușurel. Fiți atent(ă).</translation> @@ -4947,7 +4949,7 @@ <translation id="7782250248211791706">Deconectează Contul Google</translation> <translation id="778330624322499012"><ph name="PLUGIN_NAME" /> nu s-a putut încărca</translation> <translation id="7784067724422331729">Setările de securitate de pe computer au blocat acest fișier.</translation> -<translation id="7786207843293321886">Ieșiți din sesiunea pentru invitați</translation> +<translation id="7786207843293321886">Ieșiți din modul pentru invitați</translation> <translation id="7786889348652477777">&Reîncarcă aplicația</translation> <translation id="7787129790495067395">În prezent utilizează o expresie de acces. Dacă ai uitat-o, poți reseta sincronizarea pentru a șterge datele de pe serverele Google utilizând Tabloul de bord Google.</translation> <translation id="7787308148023287649">Afișează pe alt ecran</translation> @@ -5022,7 +5024,6 @@ <translation id="7879478708475862060">Urmați modul de introducere</translation> <translation id="7880836220014399562">„<ph name="BUNDLE_NAME" />” adaugă aceste aplicații și extensii:</translation> <translation id="7881969471599061635">Dezactivează subtitrările</translation> -<translation id="7884988936047469945">Funcții experimentale de accesibilitate</translation> <translation id="7885253890047913815">Destinații recente</translation> <translation id="7887192723714330082">Răspunde la „Ok Google” dacă ecranul este pornit și deblocat</translation> <translation id="7887334752153342268">Dublură</translation> @@ -5090,6 +5091,7 @@ <translation id="7974067550340408553">Primește notificări pe telefon de fiecare dată când Smart Lock deblochează <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Reîncearcă folosind <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Suprascanare</translation> +<translation id="7976960358280528247">Activează interfața de utilizare pentru comutarea între ferestre (feedback vizual pentru Alt+Tab).</translation> <translation id="7977551819349545646">Se actualizează Chromeboxul...</translation> <translation id="7978412674231730200">Cheie privată</translation> <translation id="7979036127916589816">Eroare de sincronizare</translation> @@ -5117,6 +5119,7 @@ Păstrează fișierul cu cheia într-un loc sigur. Acesta va fi necesar la crearea noilor versiuni ale extensiei.</translation> <translation id="799923393800005025">Poate vedea</translation> +<translation id="8000066093800657092">Nicio rețea</translation> <translation id="8004582292198964060">Browser</translation> <translation id="8007030362289124303">Baterie descărcată</translation> <translation id="8008356846765065031">Internet deconectat. Verificați conexiunea la internet.</translation> @@ -5191,6 +5194,7 @@ <translation id="8116190140324504026">Mai multe informații...</translation> <translation id="8116483400482790018">Dicționar de ortografie personalizat</translation> <translation id="8116972784401310538">&Manager de marcaje</translation> +<translation id="8117838550640702864">Setări privind notele</translation> <translation id="8117957376775388318">Metoda de introducere a textului Dayi</translation> <translation id="8118860139461251237">Gestionează descărcările</translation> <translation id="8119572489781388874">Modifică setările</translation> @@ -5284,7 +5288,7 @@ <translation id="8226222018808695353">Interzis</translation> <translation id="8226742006292257240">Mai jos se află parola TPM generată aleatoriu, care a fost atribuită computerului tău:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Atacatorii de pe <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pot încerca să instaleze programe periculoase pe computerul dvs., care să vă fure sau să vă șteargă informațiile (de exemplu, fotografiile, parolele, mesajele sau informațiile despre cardurile de credit).</translation> +<translation id="8230421197304563332">Atacatorii de pe <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pot încerca să instaleze programe periculoase pe computerul tău, care să îți fure sau să îți șteargă informațiile (de exemplu, fotografiile, parolele, mesajele sau informațiile despre cardurile de credit).</translation> <translation id="8233254008506535819">Include opțiunea de a trece în lista albă site-uri importante în caseta de dialog Șterge datele de navigare.</translation> <translation id="8236231079192337250">Aplicația Galeria Magazinului web Chrome pentru driverele de imprimantă</translation> <translation id="8238649969398088015">Sfat de ajutor</translation> @@ -5469,7 +5473,6 @@ <translation id="8472623782143987204">susținut de hardware</translation> <translation id="8475313423285172237">Un alt program de pe computerul dvs. a adăugat o extensie care poate schimba modul în care funcționează Chrome.</translation> <translation id="8475647382427415476">Momentan, Google Drive nu a putut sincroniza „<ph name="FILENAME" />”. Google Drive va încerca din nou mai târziu.</translation> -<translation id="8476195663057048998">Șterge și resetează</translation> <translation id="8477241577829954800">Depășit</translation> <translation id="8477384620836102176">&General</translation> <translation id="8480417584335382321">Zoom pe pagină:</translation> @@ -5699,7 +5702,6 @@ <translation id="8785135611469711856">Plugin inactiv</translation> <translation id="8787254343425541995">Permiteți proxy-uri pentru rețelele utilizate în comun</translation> <translation id="878763818693997570">Numele este prea lung</translation> -<translation id="8787865569533773240">Resetați setările <ph name="IDS_SHORT_PRODUCT_NAME" /> modificate</translation> <translation id="8789375980715484686">Gestionează alți utilizatori</translation> <translation id="8791534160414513928">Trimite o solicitare „Nu urmări” odată cu traficul de navigare</translation> <translation id="8795668016723474529">Adaugă un card de credit</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 1baf3a2..e65cf94 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -520,7 +520,6 @@ <translation id="1673103856845176271">Доступ к файлу ограничен по соображениям безопасности.</translation> <translation id="1675023460278456180">Гибрид</translation> <translation id="167832068858235403">уменьшить громкость</translation> -<translation id="1678331212993975953">Данные о сайте</translation> <translation id="1679068421605151609">Инструменты разработчика</translation> <translation id="1681120471812444678">Настроить добавление принтеров...</translation> <translation id="1682324559341535203">Регистрация устройства <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Открыть по &завершении</translation> <translation id="2372036074421194686">На вашем компьютере обнаружена вредоносная программа (<ph name="UWS_NAME" />). Попробуйте удалить ее с помощью Инструмента очистки Chrome.</translation> <translation id="2375701438512326360">Включение или отключение постоянной поддержки сенсорных экранов либо установка ее автоматического включения при обнаружении сенсорного экрана во время запуска (настройка по умолчанию).</translation> -<translation id="2377619091472055321">Сброс измененных настроек <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Выбрано файлов: <ph name="SELCTED_FILE_COUNT" />.</translation> <translation id="2378982052244864789">Выберите каталог расширения</translation> <translation id="2379281330731083556">Печатать с помощью системного диалогового окна <ph name="SHORTCUT_KEY" /></translation> @@ -1560,6 +1558,7 @@ <translation id="3058212636943679650">Для восстановления операционной системы вам понадобится SD-карта или USB-накопитель.</translation> <translation id="305932878998873762">Simple Cache для HTTP – это новая система кеширования, в которой место на диске выделяется средствами файловой системы.</translation> <translation id="3062606427884046423">Разрешает использование уведомлений MediaStyle (Android) для мультимедийных уведомлений Chrome.</translation> +<translation id="3063224679438508013">Автозапуск приложения для заметок</translation> <translation id="3063844757726132584">На этой панели запуска доступны все ваши приложения. Воспользуйтесь ей, когда захотите поиграть, пообщаться в видеочате, послушать музыку, открыть документ или скачать другие приложения.</translation> <translation id="3064388234319122767">Транслитерация (zdravo → здраво)</translation> <translation id="3065041951436100775">Сообщение о вкладке, закрытой из-за отсутствия ответа.</translation> @@ -1650,6 +1649,7 @@ <translation id="3172213052701798825">Smart Lock для паролей</translation> <translation id="317583078218509884">Новые настройки разрешений для сайта вступят в силу после обновления страницы.</translation> <translation id="3177048931975664371">Нажмите, чтобы скрыть пароль</translation> +<translation id="3177909033752230686">Язык страницы:</translation> <translation id="3180365125572747493">Введите пароль для шифрования этого файла сертификата.</translation> <translation id="3183139917765991655">Импорт профилей</translation> <translation id="3184560914950696195">Не удается сохранить файлы в $1. Измененные изображения будут сохранены в папку "Загрузки".</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">Скачано с помощью расширения <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Показать папку "<ph name="FOLDER_NAME" />"</translation> <translation id="3613422051106148727">&Открыть в новой вкладке</translation> +<translation id="3616113530831147358">Аудио</translation> <translation id="3616741288025931835">Очистить данные просмотров...</translation> <translation id="3618849550573277856">Найти "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Данные сохранены!</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&Размер текста</translation> <translation id="3995964755286119116">Исключения Adobe Flash Player для камеры отличаются.</translation> <translation id="39964277676607559">Не удается загрузить javascript "<ph name="RELATIVE_PATH" />" для скрипта содержимого.</translation> -<translation id="3996912167543967198">Сброс...</translation> <translation id="3997015411467176489">Экспериментальные функции canvas</translation> <translation id="4002066346123236978">Название</translation> <translation id="40027638859996362">Сдвинуть на одно слово</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">Push-сообщения</translation> <translation id="4146026355784316281">Всегда открывать в программе просмотра по умолчанию</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> хочет проверить, доступно ли предложение на вашем устройстве Chrome OS. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Экран</translation> <translation id="4151403195736952345">Использовать глобальный параметр по умолчанию (находить)</translation> <translation id="4152177296285305182">Зашифрованные данные может прочитать только тот, кто знает кодовую фразу. Она не пересылается в компанию Google и не хранится на ее серверах. Если вы забудете кодовую фразу, вам придется сбросить настройки синхронизации.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 вкладка}one{# вкладка}few{# вкладки}many{# вкладок}other{# вкладки}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">Скриншот</translation> <translation id="4250680216510889253">Нет</translation> <translation id="4253168017788158739">Примечание</translation> +<translation id="4254813446494774748">Перевести на:</translation> <translation id="425573743389990240">Скорость разрядки батареи в ваттах (при зарядке значение отрицательное)</translation> <translation id="4256316378292851214">Сохранить видео как...</translation> <translation id="4258348331913189841">Файловые системы</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">К сожалению, выполнить синхронизацию не удалось.</translation> <translation id="4366509400410520531">Разрешено вами</translation> <translation id="4367782753568896354">Не удалось установить:</translation> +<translation id="436904870295243580">Другие приложения для заметок</translation> <translation id="4370975561335139969">Указан неправильный адрес или пароль</translation> <translation id="437184764829821926">Расширенные настройки шрифтов</translation> <translation id="4372884569765913867">1x1</translation> @@ -3214,6 +3217,7 @@ <translation id="5324674707192845912">Отменив регистрацию устройства <ph name="DEVICE_TYPE" />, вы больше не сможете узнавать его местоположение, блокировать его или удалять с него данные дистанционно. Для отмены регистрации требуется перезагрузка. Продолжить?</translation> <translation id="5324780743567488672">Автоматически определять часовой пояс на основе геоданных</translation> <translation id="5325120507747984426">Фиксирует порядок окон в режиме обзора. Это минимизирует перемещение окон при входе и выходе из режима обзора и в период между сеансами.</translation> +<translation id="5326182685622510062">Существует множество режимов обработки двухмерных элементов canvas. Все они по-разному влияют на производительность устройства. Если этот параметр включен, контекст двухмерных элементов canvas сможет переключаться между режимами на ходу, в зависимости от методов использования (например, из режима, для которого требуются ресурсы графического процессора, в режим, где они не нужны), с целью улучшения производительности.</translation> <translation id="5327248766486351172">Название</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Удалить</translation> @@ -3346,7 +3350,6 @@ <translation id="54870580363317966">Выберите аватар для этого контролируемого профиля.</translation> <translation id="5488468185303821006">Разрешить использование в режиме инкогнито</translation> <translation id="5489390182170331803">Пассивное поведение блоков прослушивания событий на уровне документа</translation> -<translation id="5489789060051091748">Включить озвучивание текста при удерживании кнопки поиска и одновременном нажатии/перемещении мыши</translation> <translation id="549294555051714732">Соотношение подстрок с вариантами автозаполнения</translation> <translation id="5493996328530898436">Новая стратегия микширования при рендеринге аудио</translation> <translation id="5494362494988149300">Открыть по завершении</translation> @@ -3588,7 +3591,7 @@ <translation id="5828228029189342317">Вы выбрали автоматическое открытие некоторых типов файлов после скачивания.</translation> <translation id="5828633471261496623">Печать...</translation> <translation id="5829401023154985950">Настроить…</translation> -<translation id="5830410401012830739">Настроить правила передачи геоданных…</translation> +<translation id="5830410401012830739">Изменить настройки передачи геоданных…</translation> <translation id="5830720307094128296">Сохранить страницу как...</translation> <translation id="5832669303303483065">Добавить почтовый адрес...</translation> <translation id="5832805196449965646">Добавить пользователя</translation> @@ -3703,7 +3706,6 @@ <translation id="5991049340509704927">Увеличение</translation> <translation id="5991774521050363748">Включает пользовательские раскладки для Web Notifications. Это единственный способ внести небольшие улучшения.</translation> <translation id="5993332328670040093">Расход трафика больше не отслеживается.</translation> -<translation id="5996258716334177896">Не удалось корректно загрузить ваш профиль. Некоторые функции могут быть недоступны. Убедитесь, что ваш профиль существует и у вас есть разрешение на операции чтения и записи.</translation> <translation id="6001799583597751002">PIN-коды не совпадают:</translation> <translation id="6003177993629630467">Возможно, <ph name="PRODUCT_NAME" /> не сможет обновляться автоматически.</translation> <translation id="6003294706906016758">Включение для размещаемых приложений такого же оформления окна, как у веб-приложений</translation> @@ -4153,7 +4155,6 @@ <translation id="6637362044401670482">Включать виртуальную клавиатуру при достижении конца прокрутки</translation> <translation id="6639554308659482635">Память SQLite</translation> <translation id="6643016212128521049">Очистить</translation> -<translation id="6644756108386233011">Сбросить измененные настройки <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">URL отзыва ЦС Netscape</translation> <translation id="6647838571840953560">Сейчас на канале "<ph name="CHANNEL_NAME" />"</translation> <translation id="6649018507441623493">Подождите...</translation> @@ -4261,7 +4262,6 @@ <translation id="6810613314571580006">Входить на веб-сайты с помощью сохраненного имени пользователя и пароля. Когда функция отключена, эти данные нужно указывать при каждом входе.</translation> <translation id="6812349420832218321">Нельзя запускать <ph name="PRODUCT_NAME" /> от имени суперпользователя.</translation> <translation id="6812841287760418429">Сохранить изменения</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> обнаружил, что ваши настройки браузера могли быть изменены без вашего ведома. Восстановить настройки по умолчанию?</translation> <translation id="6815551780062710681">изменить</translation> <translation id="6817358880000653228">Сохраненные пароли для этого сайта:</translation> <translation id="6820008762872335722">Сбросить разрешение</translation> @@ -4379,6 +4379,7 @@ (требуется старый пароль)</translation> <translation id="6981982820502123353">Специальные возможности</translation> <translation id="6981992744085917617">Выберите способ разблокировки устройства:</translation> +<translation id="698231206551913481">После удаления пользователя все связанные с ним файлы и локальные данные также будут удалены.</translation> <translation id="6982896539684144327">Принтер <ph name="VENDOR_NAME" /> найден</translation> <translation id="6983783921975806247">Зарегистрированный OID</translation> <translation id="6983991971286645866">Все изменения будут сохранены в файле $1.</translation> @@ -4463,6 +4464,7 @@ <translation id="7073555242265688099">Другие устройства Chrome синхронизируются автоматически. Их также можно будет разблокировать с помощью телефона.</translation> <translation id="707392107419594760">Выберите раскладку:</translation> <translation id="7075513071073410194">PKCS #1 MD5 с шифрованием RSA</translation> +<translation id="7075625805486468288">Управление настройками и сертификатами HTTPS/SSL</translation> <translation id="7076293881109082629">Вход</translation> <translation id="7077829361966535409">При загрузке текущих настроек прокси-сервера на главной странице произошла ошибка. <ph name="GAIA_RELOAD_LINK_START" />Выполните вход повторно<ph name="GAIA_RELOAD_LINK_END" /> или измените <ph name="PROXY_SETTINGS_LINK_START" />параметры прокси-сервера<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Игнорируемые обработчики протоколов</translation> @@ -4510,7 +4512,6 @@ <translation id="7141105143012495934">Ошибка входа: не удалось получить данные аккаунта. Обратитесь к администратору или повторите попытку.</translation> <translation id="7143207342074048698">Подключение</translation> <translation id="7144878232160441200">Повторить попытку</translation> -<translation id="7148311641502571842">Плагин <ph name="PLUGIN_NAME" /> отключен. Чтобы включить его, перейдите по ссылке <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Обычные принтеры</translation> <translation id="7154130902455071009">Смена стартовой страницы на <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Первоначальный режим для китайского языка – упрощенный китайский</translation> @@ -4789,6 +4790,7 @@ <translation id="7540972813190816353">При проверке обновлений произошла ошибка: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Исключения для изображений</translation> <translation id="7543104066686362383">Включите функции отладки на устройстве <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Поиск не дал результатов? Воспользуйтесь <ph name="BEGIN_LINK_CHROMIUM" />справкой Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Перемешать</translation> <translation id="7545288882499673859">Стратегия сброса памяти для расширенного управления вытеснением памяти</translation> <translation id="7545415673537747415">Google может использовать историю просмотров для персонализации Поиска, Рекламы и других сервисов. Чтобы настроить эту функцию, перейдите на страницу <ph name="BEGIN_LINK" />Отслеживание действий в Google<ph name="END_LINK" />.</translation> @@ -5026,7 +5028,6 @@ <translation id="7879478708475862060">Использовать выбранный режим ввода</translation> <translation id="7880836220014399562">В набор "<ph name="BUNDLE_NAME" />" входят следующие приложения и расширения:</translation> <translation id="7881969471599061635">Отключить субтитры</translation> -<translation id="7884988936047469945">Экспериментальные специальные возможности</translation> <translation id="7885253890047913815">Недавние места назначения</translation> <translation id="7887192723714330082">Выполняет команду "О'кей, Google", когда экран включен и разблокирован.</translation> <translation id="7887334752153342268">Дублировать</translation> @@ -5094,6 +5095,7 @@ <translation id="7974067550340408553">Отправлять на телефон оповещения о каждой разблокировке устройства <ph name="DEVICE_TYPE" /> с помощью Smart Lock</translation> <translation id="7974566588408714340">Подключиться через <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Каемка экрана</translation> +<translation id="7976960358280528247">Включить интерфейс переключения окон (визуальная реакция на сочетание ALT + TAB)</translation> <translation id="7977551819349545646">Обновление Chromebox...</translation> <translation id="7978412674231730200">Закрытый ключ</translation> <translation id="7979036127916589816">Ошибка синхронизации</translation> @@ -5121,6 +5123,7 @@ Храните файл ключей в надежном месте. Он потребуется для создания новых версий расширения.</translation> <translation id="799923393800005025">Чтение</translation> +<translation id="8000066093800657092">Нет сети</translation> <translation id="8004582292198964060">Браузер</translation> <translation id="8007030362289124303">Низкий заряд батареи</translation> <translation id="8008356846765065031">Не удалось установить соединение. Проверьте подключение к Интернету.</translation> @@ -5195,6 +5198,7 @@ <translation id="8116190140324504026">Дополнительная информация...</translation> <translation id="8116483400482790018">Пользовательский словарь для проверки правописания</translation> <translation id="8116972784401310538">&Диспетчер закладок</translation> +<translation id="8117838550640702864">Настройки заметок</translation> <translation id="8117957376775388318">Даи</translation> <translation id="8118860139461251237">Управление скачанными файлами</translation> <translation id="8119572489781388874">Изменить настройки</translation> @@ -5473,7 +5477,6 @@ <translation id="8472623782143987204">требуется оборудование</translation> <translation id="8475313423285172237">Одна из программ на вашем компьютере установила расширение, которое может влиять на работу Chrome.</translation> <translation id="8475647382427415476">Не удалось синхронизировать <ph name="FILENAME" /> с Google Диском. Система повторит попытку позже.</translation> -<translation id="8476195663057048998">Очистить и сбросить</translation> <translation id="8477241577829954800">Заменен</translation> <translation id="8477384620836102176">&Общие</translation> <translation id="8480417584335382321">Масштаб страницы:</translation> @@ -5703,7 +5706,6 @@ <translation id="8785135611469711856">Плагин не отвечает на запросы</translation> <translation id="8787254343425541995">Использовать прокси-серверы для общих сетей</translation> <translation id="878763818693997570">Слишком длинное имя</translation> -<translation id="8787865569533773240">Сбросить измененные настройки <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Управление аккаунтами</translation> <translation id="8791534160414513928">Отправлять запрет отслеживания с исходящим трафиком</translation> <translation id="8795668016723474529">Добавить банковскую карту</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index 314edc00..0a5fd5e9 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Súbor je z bezpečnostných dôvodov nedostupný.</translation> <translation id="1675023460278456180">Hybridný vzhľad Material</translation> <translation id="167832068858235403">znížiť hlasitosť</translation> -<translation id="1678331212993975953">Podrobnosti webu</translation> <translation id="1679068421605151609">Nástroje pre vývojárov</translation> <translation id="1681120471812444678">Pridať a nastaviť tlačiarne…</translation> <translation id="1682324559341535203">Registrácia zariadenia <ph name="DEVICE_TYPE" /></translation> @@ -1012,7 +1011,6 @@ <translation id="2371076942591664043">Otvoriť po prebratí</translation> <translation id="2372036074421194686">Chrome na vašom počítači našiel nainštalovaný nechcený program (<ph name="UWS_NAME" />). Možno sa vám ho podarí odstrániť pomocou nástroja Chrome Cleanup Tool.</translation> <translation id="2375701438512326360">Vynúti trvalé povolenie alebo zakázanie podpory dotykovej obrazovky, prípadne jej povolenie vtedy, keď je rozpoznaná pri spustení (predvolene je nastavená možnosť Automaticky).</translation> -<translation id="2377619091472055321">Obnoviť zmenené nastavenia prehliadača <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Počet vybratých súborov: <ph name="SELCTED_FILE_COUNT" /></translation> <translation id="2378982052244864789">Vybrať adresár rozšírenia.</translation> <translation id="2379281330731083556">Tlačiť pomocou dialógového okna systému... <ph name="SHORTCUT_KEY" /></translation> @@ -1560,6 +1558,7 @@ <translation id="3058212636943679650">Ak budete niekedy musieť obnoviť operačný systém počítača, budete potrebovať SD kartu na obnovenie alebo pamäťový kľúč USB.</translation> <translation id="305932878998873762">Pamäť Simple Cache pre protokol HTTP bude novou vyrovnávacou pamäťou. Prideľovanie diskového priestoru prenecháva systému súborov.</translation> <translation id="3062606427884046423">Používať upozornenia MediaStyle systému Android pre upozornenia médií Chromu.</translation> +<translation id="3063224679438508013">Automatické spustenie poznámkovej aplikácie</translation> <translation id="3063844757726132584">Z tohto praktického spúšťača môžete pristupovať do všetkých aplikácií. Hrajte sa hry, uskutočňujte videohovory, počúvajte hudbu, upravujte dokumenty alebo získajte ďalšie aplikácie.</translation> <translation id="3064388234319122767">Prepis (zdravo → здраво)</translation> <translation id="3065041951436100775">Spätná väzba týkajúca sa vynútene ukončenej karty</translation> @@ -1650,6 +1649,7 @@ <translation id="3172213052701798825">Google Smart Lock na heslá</translation> <translation id="317583078218509884">Nové nastavenia povolení webových stránok sa prejavia po opätovnom načítaní stránky.</translation> <translation id="3177048931975664371">Kliknutím skryjete heslo</translation> +<translation id="3177909033752230686">Jazyk stránky:</translation> <translation id="3180365125572747493">Zadajte heslo na zašifrovanie tohto certifikačného súboru.</translation> <translation id="3183139917765991655">Profile Importer</translation> <translation id="3184560914950696195">Do priečinka $1 nie je možné ukladať. Upravené obrázky sa uložia do priečinka Stiahnuté súbory</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812">Stiahnuté rozšírením <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Zobraziť priečinok <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Otvoriť na novej karte</translation> +<translation id="3616113530831147358">Zvuk</translation> <translation id="3616741288025931835">&Vymazať údaje prehliadania...</translation> <translation id="3618849550573277856">Vyhľadať „<ph name="LOOKUP_STRING" />“</translation> <translation id="3620292326130836921">Všetko je zálohované!</translation> @@ -2113,7 +2114,7 @@ <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{Komunikujte so zariadením USB}few{Komunikujte s # zariadeniami USB}many{Komunikujte s # zariadením USB}other{Komunikujte s # zariadeniami USB}}</translation> <translation id="3764800135428056022">Ponúkať uloženie hesiel webových stránok.</translation> <translation id="3764986667044728669">Registrácia zlyhala</translation> -<translation id="3765285310188645110">Povolenie zdieľať stránky offline.</translation> +<translation id="3765285310188645110">Povolenie zdieľať stránky offline</translation> <translation id="3768037234834996183">Synchronizujú sa predvoľby...</translation> <translation id="3771294271822695279">Súbory videa</translation> <translation id="3774278775728862009">Thajská metóda vstupu (klávesnica TIS-820.2538)</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&Lupa</translation> <translation id="3995964755286119116">Nastavenia fotoaparátu v prehrávači Adobe Flash Player sú odlišné.</translation> <translation id="39964277676607559">Pre skript obsahu sa nepodarilo načítať súbor javascript „<ph name="RELATIVE_PATH" />“.</translation> -<translation id="3996912167543967198">Obnovuje sa...</translation> <translation id="3997015411467176489">Experimentálne funkcie prvku canvas</translation> <translation id="4002066346123236978">Názov</translation> <translation id="40027638859996362">Presunutie slova</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">Správy push</translation> <translation id="4146026355784316281">Vždy otvárať pomocou systémového zobrazovača</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> chce skontrolovať, či vaše zariadenie OS Chrome spĺňa podmienky ponuky. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Displej</translation> <translation id="4151403195736952345">Použiť globálne predvolené nastavenie (zistiť)</translation> <translation id="4152177296285305182">Vaše šifrované údaje si môže prečítať len osoba, ktorá pozná vašu prístupovú frázu. Prístupová fráza sa spoločnosti Google neodosiela ani ju spoločnosť Google neuchováva. Ak prístupovú frázu zabudnete, budete musieť obnoviť synchronizáciu.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 karta}few{# karty}many{# karty}other{# kariet}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">Snímka obrazovky</translation> <translation id="4250680216510889253">Nie</translation> <translation id="4253168017788158739">Poznámka</translation> +<translation id="4254813446494774748">Jazyk prekladu:</translation> <translation id="425573743389990240">Vybíjanie batérie vo Wattoch (záporná hodnota znamená, že batéria sa nabíja)</translation> <translation id="4256316378292851214">Uložiť &video ako...</translation> <translation id="4258348331913189841">Systémy súborov</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">Synchronizácia prestala pracovať.</translation> <translation id="4366509400410520531">Povolené vami</translation> <translation id="4367782753568896354">Nepodarilo sa nainštalovať:</translation> +<translation id="436904870295243580">Nájsť ďalšie poznámkové aplikácie</translation> <translation id="4370975561335139969">Zadaný e-mail a heslo nesúhlasia.</translation> <translation id="437184764829821926">Rozšírené nastavenia písma</translation> <translation id="4372884569765913867">1x1</translation> @@ -3213,6 +3216,7 @@ <translation id="5324674707192845912">Chystáte sa zrušiť registráciu tohto zariadenia <ph name="DEVICE_TYPE" /> v službe Google, čím znemožníte vzdialenú lokalizáciu, vymazanie a uzamknutie zariadenia. Táto akcia vyžaduje reštart. Chcete pokračovať?</translation> <translation id="5324780743567488672">Nastaviť časové pásmo automaticky na základe polohy</translation> <translation id="5325120507747984426">Používa stabilné poradie okien v režime prehľadu, ktoré sa snaží minimalizovať pohyb okien pri zapnutí/ukončení prehľadu a medzi reláciami prehľadu.</translation> +<translation id="5326182685622510062">Existuje niekoľko implementácií toku vykresľovania grafiky pre prvky canvas 2D. Tieto rôzne implementácie majú odlišné charakteristiky výkonnosti. Zapnutím tohto príznaku povolíte kontextom v prvkoch 2D zvyšovať výkonnosť tak, že za chodu budú môcť prepínať dané implementácie podľa toho, ako sa prvok canvas používa. Budú môcť napríklad prejsť z implementácie využívajúcej grafický procesor na takú, ktorá ho nepoužíva.</translation> <translation id="5327248766486351172">Názov</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Odstrániť</translation> @@ -3345,7 +3349,6 @@ <translation id="54870580363317966">Vyberte avatar pre tohto kontrolovaného používateľa.</translation> <translation id="5488468185303821006">Povoliť v režime inkognito</translation> <translation id="5489390182170331803">Pasívne predvolené správanie prijímačov udalostí na úrovni dokumentu</translation> -<translation id="5489789060051091748">Vyslovenie položky po vybratí: stlačením tlačidla Hľadať a kliknutím či presunutím ľubovoľnej položky sa táto položka vysloví</translation> <translation id="549294555051714732">Porovnávanie podreťazcov pre návrhy Automatického dopĺňania</translation> <translation id="5493996328530898436">Nová stratégia mixovania vykresľovania zvuku</translation> <translation id="5494362494988149300">Po &prebratí otvoriť</translation> @@ -3702,9 +3705,6 @@ <translation id="5991049340509704927">Zväčšenie</translation> <translation id="5991774521050363748">Povolenie vlastných rozložení pre webové upozornenia. Budú mať drobné zlepšenia rozloženia, ktoré by inak neboli možné.</translation> <translation id="5993332328670040093">Vaše využitie údajov sa už nebude ďalej merať.</translation> -<translation id="5996258716334177896">Váš profil sa nepodarilo správne otvoriť. - -Niektoré funkcie nemusia byť k dispozícii. Skontrolujte, či profil existuje a či máte povolenie na čítanie a zápis jeho obsahu.</translation> <translation id="6001799583597751002">Kódy PIN sa nezhodujú:</translation> <translation id="6003177993629630467">Prehliadač <ph name="PRODUCT_NAME" /> sa sám nemusí pravidelne aktualizovať.</translation> <translation id="6003294706906016758">Aktivuje rámec v štýle webových aplikácií pre hostené aplikácie</translation> @@ -4154,7 +4154,6 @@ <translation id="6637362044401670482">Tento príznak povolí podporu presahu posunutia virtuálnej klávesnice.</translation> <translation id="6639554308659482635">Pamäť nástroja SQLite</translation> <translation id="6643016212128521049">Vymazať</translation> -<translation id="6644756108386233011">Obnoviť zmenené nastavenia prehliadača <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">Webová adresa pre odvolanie certifikačnej autority služby Netscape</translation> <translation id="6647838571840953560">Momentálne v kanáli <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Moment...</translation> @@ -4262,7 +4261,6 @@ <translation id="6810613314571580006">Prihlasovať sa na weby automaticky pomocou uložených poverení. Keď je táto funkcia zakázaná, zobrazí sa pred každým prihlásením na web výzva s potvrdením.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> sa nepodarilo spustiť v mene používateľa root.</translation> <translation id="6812841287760418429">Zachovať zmeny</translation> -<translation id="6815353853907306610">Prehliadač <ph name="IDS_SHORT_PRODUCT_NAME" /> zistil, že možno došlo k zmene nastavení prehliadača bez vášho vedomia. Chcete ich obnoviť na pôvodné predvolené hodnoty?</translation> <translation id="6815551780062710681">upraviť</translation> <translation id="6817358880000653228">Uložené hesla pre tieto stránky:</translation> <translation id="6820008762872335722">Obnoviť a znova sa pýtať</translation> @@ -4379,6 +4377,7 @@ <translation id="6980956047710795611">Migrovať všetky údaje systému Chrome OS na nové heslo (vyžaduje sa predchádzajúce heslo)</translation> <translation id="6981982820502123353">Dostupnosť</translation> <translation id="6981992744085917617">Vyberte metódu, ktorú chcete použiť na opätovné prihlásenie do účtu:</translation> +<translation id="698231206551913481">Všetky súbory a miestne údaje priradené k tomuto používateľovi budú po jeho odstránení natrvalo vymazané.</translation> <translation id="6982896539684144327">Bola zistená tlačiareň od partnera <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">Registrovaný identifikátor OID</translation> <translation id="6983991971286645866">Všetky úpravy budu uložené do súboru $1.</translation> @@ -4465,6 +4464,7 @@ <translation id="7073555242265688099">Ak máte iné zariadenia Chrome, automaticky sa synchronizujú a váš telefón ich tiež odomkne.</translation> <translation id="707392107419594760">Vyberte klávesnicu:</translation> <translation id="7075513071073410194">Štandard PKCS #1 MD5 so šifrovaním RSA</translation> +<translation id="7075625805486468288">Správa certifikátov a nastavení HTTPS/SSL</translation> <translation id="7076293881109082629">Prihlásenie</translation> <translation id="7077829361966535409">Prihlasovaciu stránku sa pomocou aktuálneho nastavenia servera proxy nepodarilo načítať. <ph name="GAIA_RELOAD_LINK_START" />Skúste sa prihlásiť znova<ph name="GAIA_RELOAD_LINK_END" /> alebo použite iné <ph name="PROXY_SETTINGS_LINK_START" />nastavenia servera proxy<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignorované obslužné programy pre protokoly</translation> @@ -4512,7 +4512,6 @@ <translation id="7141105143012495934">Prihlásenie zlyhalo, pretože podrobnosti účtu sa nepodarilo načítať. Kontaktujte svojho správcu alebo to skúste znova.</translation> <translation id="7143207342074048698">Pripája sa</translation> <translation id="7144878232160441200">Skúsiť znova</translation> -<translation id="7148311641502571842">Doplnok <ph name="PLUGIN_NAME" /> bol zakázaný. Ak ho chcete znova povoliť, prejdite na stránku <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Klasické tlačiarne</translation> <translation id="7154130902455071009">Zmeniť úvodnú stránku na: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Úvodný režim čínštiny: zjednodušená čínština</translation> @@ -4791,6 +4790,7 @@ <translation id="7540972813190816353">Pri kontrole aktualizácií sa vyskytla chyba: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Výnimky obrázkov</translation> <translation id="7543104066686362383">Aktivovať na tomto zariadení <ph name="IDS_SHORT_PRODUCT_NAME" /> funkcie ladenia</translation> +<translation id="7543393759143837504">Ak neviete nájsť požadovaný obsah, prejdite do <ph name="BEGIN_LINK_CHROMIUM" />pomocníka Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Náhodne prehrávať</translation> <translation id="7545288882499673859">Stratégia zahodenia pamäte pre rozšírenú správu zaťaženia</translation> <translation id="7545415673537747415">V časti <ph name="BEGIN_LINK" />Riadenie aktivity Google<ph name="END_LINK" /> môžete ovládať, ako bude Google používať vašu históriu prehliadania na prispôsobenie Vyhľadávania, reklám a ďalších služieb Google.</translation> @@ -5028,7 +5028,6 @@ <translation id="7879478708475862060">Nasledovať režim vstupu</translation> <translation id="7880836220014399562">Balík <ph name="BUNDLE_NAME" /> pridá tieto aplikácie a rozšírenia:</translation> <translation id="7881969471599061635">Zakázať titulky</translation> -<translation id="7884988936047469945">Experimentálne funkcie dostupnosti</translation> <translation id="7885253890047913815">Nedávne ciele</translation> <translation id="7887192723714330082">Reagovať na „Ok Google“, keď je obrazovka zapnutá a odomknutá</translation> <translation id="7887334752153342268">Duplikovať</translation> @@ -5096,6 +5095,7 @@ <translation id="7974067550340408553">Dostaňte upozornenie na svoj telefón vždy vtedy, keď funkcia Smart Lock odomkne vaše zariadenie <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Skúsiť znova pomocou rozšírenia <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Presah obsahu</translation> +<translation id="7976960358280528247">Povoľte používateľské rozhranie s cyklom okien (vizuálnu spätnú väzbu pre kombináciu klávesov alt-tab).</translation> <translation id="7977551819349545646">Zariadenie Chromebox sa aktualizuje...</translation> <translation id="7978412674231730200">Súkromný kľúč</translation> <translation id="7979036127916589816">Chyba synchronizácie</translation> @@ -5123,6 +5123,7 @@ Súbor kľúča uložte na bezpečné miesto. Budete ho potrebovať na vytvorenie nových verzií svojho rozšírenia.</translation> <translation id="799923393800005025">Môže zobraziť</translation> +<translation id="8000066093800657092">Žiadna sieť</translation> <translation id="8004582292198964060">Prehliadač</translation> <translation id="8007030362289124303">Vybitá batéria</translation> <translation id="8008356846765065031">Internet je odpojený. Skontrolujte svoje pripojenie k internetu.</translation> @@ -5197,6 +5198,7 @@ <translation id="8116190140324504026">Ďalšie informácie...</translation> <translation id="8116483400482790018">Vlastný slovník pravopisu</translation> <translation id="8116972784401310538">&Správca záložiek</translation> +<translation id="8117838550640702864">Nastavenia poznámok</translation> <translation id="8117957376775388318">Metóda vstupu Dayi</translation> <translation id="8118860139461251237">Spravovať sťahovanie</translation> <translation id="8119572489781388874">Upraviť nastavenia</translation> @@ -5476,7 +5478,6 @@ <translation id="8472623782143987204">hardvérová záloha</translation> <translation id="8475313423285172237">Iný program v počítači pridal rozšírenie, ktoré môže zmeniť spôsob fungovania prehliadača Chrome.</translation> <translation id="8475647382427415476">Disku Google sa v tejto chvíli nepodarilo synchronizovať súbor <ph name="FILENAME" />. Pokúsi sa o to znova neskôr.</translation> -<translation id="8476195663057048998">Vymazať a obnoviť</translation> <translation id="8477241577829954800">Nahradené</translation> <translation id="8477384620836102176">&Všeobecné</translation> <translation id="8480417584335382321">Priblíženie stránky:</translation> @@ -5638,7 +5639,7 @@ <translation id="870112442358620996">Ponúkať ukladanie hesiel pomocou funkcie Google Smart Lock na heslá.</translation> <translation id="8704458368793604611">Umožní používateľovi ručne vynútiť generovanie hesla v poli pre heslo.</translation> <translation id="8704521619148782536">Táto akcia trvá dlhšie ako obvykle. Môžete počkať alebo ju zrušiť a skúsiť to znova neskôr.</translation> -<translation id="8704983632490900895">Umožňuje zdieľať uložené stránky offline prostredníctvom iných aplikácií.</translation> +<translation id="8704983632490900895">Umožňuje zdieľať stránky uložené offline prostredníctvom iných aplikácií.</translation> <translation id="8705331520020532516">Sériové číslo</translation> <translation id="8706385129644254954">Dostupný prepínač kariet</translation> <translation id="8708000541097332489">Vymazať po ukončení</translation> @@ -5706,7 +5707,6 @@ <translation id="8785135611469711856">Doplnok nereaguje</translation> <translation id="8787254343425541995">Povoliť servery proxy pre zdieľané siete</translation> <translation id="878763818693997570">Tento názov je príliš dlhý</translation> -<translation id="8787865569533773240">Obnoviť zmenené nastavenia prehliadača <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Správa ostatných používateľov</translation> <translation id="8791534160414513928">Posielať s údajmi prehliadania požiadavku Nesledovať</translation> <translation id="8795668016723474529">Pridať kreditnú kartu</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 10b0643..15ca3ce6 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -522,7 +522,6 @@ <translation id="1673103856845176271">Do datoteke zaradi varnosti ni bilo mogoče dostopati.</translation> <translation id="1675023460278456180">Hibridno materialno</translation> <translation id="167832068858235403">zmanjšanje glasnosti</translation> -<translation id="1678331212993975953">Podrobnosti spletnega mesta</translation> <translation id="1679068421605151609">Razvijalska orodja</translation> <translation id="1681120471812444678">Nastavitev za dodajanje tiskalnikov …</translation> <translation id="1682324559341535203">Včlanitev naprave <ph name="DEVICE_TYPE" /></translation> @@ -1012,7 +1011,6 @@ <translation id="2371076942591664043">Odpri, ko je &dokončano</translation> <translation id="2372036074421194686">Chrome je v računalniku našel nameščen neželeni program (<ph name="UWS_NAME" />). Morda ga boste lahko odstranili s Chromovim orodjem za čiščenje.</translation> <translation id="2375701438512326360">Trajno omogoči ali onemogoči podporo za zaslon na dotik ali pa jo omogoči, ko je zaslon na dotik zaznan pri zagonu (privzeta nastavitev je »Samodejno«).</translation> -<translation id="2377619091472055321">Ponastavitev spremenjenih nastavitev za <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Št. izbranih datotek: <ph name="SELCTED_FILE_COUNT" /></translation> <translation id="2378982052244864789">Izberite imenik z razširitvami.</translation> <translation id="2379281330731083556">Tiskanje v pogovornem oknu sistema ... <ph name="SHORTCUT_KEY" /></translation> @@ -1560,6 +1558,7 @@ <translation id="3058212636943679650">Če boste morali kdaj obnoviti operacijski sistem računalnika, boste potrebovali obnovitveno kartico SD ali pomnilnik USB.</translation> <translation id="305932878998873762">Preprosti predpomnilnik za HTTP je novi predpomnilnik. Za dodeljevanje prostora na disku uporablja datotečni sistem.</translation> <translation id="3062606427884046423">Uporaba obvestil Android MediaStyle za Chromova obvestila o predstavnosti.</translation> +<translation id="3063224679438508013">Samodejni zagon aplikacije za zapiske</translation> <translation id="3063844757726132584">S tem priročnim zaganjalnikom dostopajte do vseh aplikacij. Igrajte igre, uporabljajte videoklepet, poslušajte glasbo, urejajte dokumente ali namestite več aplikacij.</translation> <translation id="3064388234319122767">Prečrkovanje (zdravo → здраво)</translation> <translation id="3065041951436100775">Povratne informacije o zaustavitvi zavihka.</translation> @@ -1650,6 +1649,7 @@ <translation id="3172213052701798825">Google Smart Lock za gesla</translation> <translation id="317583078218509884">Nove nastavitve dovoljenj za spletno mesto bodo začele veljati, ko znova naložite stran.</translation> <translation id="3177048931975664371">Kliknite, če želite skriti geslo</translation> +<translation id="3177909033752230686">Jezik strani:</translation> <translation id="3180365125572747493">Vnesite geslo za šifriranje te datoteke s potrdilom.</translation> <translation id="3183139917765991655">Uvoznik profilov</translation> <translation id="3184560914950696195">V $1 ni mogoče shranjevati. Spremenjene slike bodo shranjene v mapo »Prenosi«.</translation> @@ -2000,6 +2000,7 @@ <translation id="3612673635130633812">Prenesla razširitev <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Pokaži <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Odpri na novem zavihku</translation> +<translation id="3616113530831147358">Zvok</translation> <translation id="3616741288025931835">&Izbriši podatke brskanja ...</translation> <translation id="3618849550573277856">Poišči »<ph name="LOOKUP_STRING" />«</translation> <translation id="3620292326130836921">Vse je varnostno kopirano!</translation> @@ -2296,7 +2297,6 @@ <translation id="3994878504415702912">&Povečaj</translation> <translation id="3995964755286119116">Nastavitve kamere za Adobe Flash Player so drugačne.</translation> <translation id="39964277676607559">Ni bilo mogoče naložiti skripta JavaScript »<ph name="RELATIVE_PATH" />« za skript vsebine.</translation> -<translation id="3996912167543967198">Ponastavljanje ...</translation> <translation id="3997015411467176489">Poskusne funkcije platna</translation> <translation id="4002066346123236978">Naslov</translation> <translation id="40027638859996362">Premakne besedo</translation> @@ -2393,6 +2393,7 @@ <translation id="4140559601186535628">Potisna sporočila</translation> <translation id="4146026355784316281">Vedno odpri s sistemskim pregledovalnikom</translation> <translation id="4146175323503586871">Storitev <ph name="SERVICE_NAME" /> želi preveriti, ali je vaša naprava s sistemom Chrome OS ustrezna za ponudbo. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Prikaz</translation> <translation id="4151403195736952345">Globalno uporabi privzete nastavitve (zaznavanje)</translation> <translation id="4152177296285305182">Samo nekdo, ki ima geslo, lahko bere šifrirane podatke. Google ne prejme ali hrani tega gesla. Če geslo pozabite, morate sinhronizacijo ponastaviti.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 zavihek}one{# zavihek}two{# zavihka}few{# zavihki}other{# zavihkov}}</translation> @@ -2457,6 +2458,7 @@ <translation id="4250229828105606438">Posnetek zaslona</translation> <translation id="4250680216510889253">Ne</translation> <translation id="4253168017788158739">Opomba</translation> +<translation id="4254813446494774748">Jezik prevoda:</translation> <translation id="425573743389990240">Hitrost praznjenja akumulatorja v vatih (negativna vrednost pomeni, da se akumulator polni)</translation> <translation id="4256316378292851214">Shr&ani videoposnetek kot ...</translation> <translation id="4258348331913189841">Datotečni sistemi</translation> @@ -2534,6 +2536,7 @@ <translation id="4365673000813822030">Ojej, Google Sinhronizacija je nehala delovati.</translation> <translation id="4366509400410520531">Dovoljeno z vašo nastavitvijo</translation> <translation id="4367782753568896354">Teh ni bilo mogoče namestiti:</translation> +<translation id="436904870295243580">Iskanje več aplikacij za ustvarjanje zapiskov</translation> <translation id="4370975561335139969">E-poštni naslov in geslo, ki ste ju vnesli, se ne ujemata.</translation> <translation id="437184764829821926">Napredne nastavitve pisave</translation> <translation id="4372884569765913867">1 x 1</translation> @@ -3215,6 +3218,7 @@ <translation id="5324674707192845912">Ste pred tem, da prekličete članstvo te naprave <ph name="DEVICE_TYPE" /> pri Googlu in s tem onemogočite oddaljeno iskanje naprave, izbris podatkov v njej in njeno zaklepanje. Potreben bo vnovični zagon. Ali želite nadaljevati?</translation> <translation id="5324780743567488672">Samodejna nastavitev časovnega pasu na podlagi vaše lokacije</translation> <translation id="5325120507747984426">Uporaba stabilnega razvrščanja oken v načinu pregleda, kar čim bolj zmanjša premikanje oken pri prehodu v pregled/izhodu iz pregleda ter med sejami pregleda.</translation> +<translation id="5326182685622510062">Obstaja več izvedb komponente za upodabljanje grafike za 2D-platno. Te različne izvedbe imajo različne lastnosti delovanja. Če vklopite to zastavico, kontekstom 2D-platna omogočite sprotno preklapljanje med izvedbami glede na to, kako se platno uporablja, tako da bi se povečala učinkovitost delovanja. Preklopite lahko na primer z izvedbe, ki uporablja GPE, na izvedbo, ki ga ne.</translation> <translation id="5327248766486351172">Ime</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Izbriši</translation> @@ -3347,7 +3351,6 @@ <translation id="54870580363317966">Izberite avatarja za tega zaščitenega uporabnika.</translation> <translation id="5488468185303821006">Omogoči v načinu brez beleženja zgodovine</translation> <translation id="5489390182170331803">Privzeta vrednost za pasivne poslušalnike dogodkov na ravni dokumenta</translation> -<translation id="5489789060051091748">Izbira za izgovarjavo: pridržite gumb za iskanje in kliknite ali povlecite poljubni element, če želite slišati izgovorjenega</translation> <translation id="549294555051714732">Ujemanje predlogov samodejnega izpolnjevanja na podlagi podnizov</translation> <translation id="5493996328530898436">Nova strategija miksanja za upodabljanje zvoka</translation> <translation id="5494362494988149300">Odpri, ko je &končano</translation> @@ -3705,9 +3708,6 @@ <translation id="5991049340509704927">Povečava</translation> <translation id="5991774521050363748">Omogoči postavitve po meri za spletna obvestila. Imela bodo rahle izboljšave postavitve, ki sicer niso mogoče.</translation> <translation id="5993332328670040093">Poraba podatkov se ne bo več merila.</translation> -<translation id="5996258716334177896">Profila ni bilo mogoče pravilno odpreti. - -Nekatere funkcije morda ne bodo na voljo. Preverite, ali profil obstaja in ali imate dovoljenje za branje in pisanje njegove vsebine.</translation> <translation id="6001799583597751002">Kodi PIN se ne ujemata:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> se morda ne bo mogel posodabljati.</translation> <translation id="6003294706906016758">Omogoča ogrodje v slogu spletnih aplikacij za gostujoče aplikacije</translation> @@ -4156,7 +4156,6 @@ <translation id="6637362044401670482">Omogoča podporo za čezmerno pomikanje pri navidezni tipkovnici.</translation> <translation id="6639554308659482635">Pomnilnik SQLite</translation> <translation id="6643016212128521049">Počisti</translation> -<translation id="6644756108386233011">Ali želite ponastaviti spremenjene nastavitve za <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">Spletni naslov preklica overitelja Netscapeovega potrdila</translation> <translation id="6647838571840953560">Trenutno uporablja kanal: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Samo trenutek …</translation> @@ -4264,7 +4263,6 @@ <translation id="6810613314571580006">Samodejna prijava v spletna mesta s shranjenimi poverilnicami. Ko je ta funkcija onemogočena, boste morali potrditi pred vsako prijavo v spletno mesto.</translation> <translation id="6812349420832218321">Programa <ph name="PRODUCT_NAME" /> ni mogoče zagnati kot korenski uporabnik.</translation> <translation id="6812841287760418429">Ohrani spremembe</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> je zaznal, da so bile vaše nastavitve brskalnika morda spremenjene, ne da bi vedeli. Ali jih želite ponastaviti na prvotne privzete vrednosti?</translation> <translation id="6815551780062710681">uredi</translation> <translation id="6817358880000653228">Shranjena gesla za to spletno mesto:</translation> <translation id="6820008762872335722">Ponastavi, da vpraša</translation> @@ -4381,6 +4379,7 @@ <translation id="6980956047710795611">Preseli vse podatke sistema Chrome OS v novo geslo (zahteva prejšnje geslo)</translation> <translation id="6981982820502123353">Pripomočki za osebe s posebnimi potrebami</translation> <translation id="6981992744085917617">Izberite metodo, ki jo želite uporabiti za vnovično prijavo v račun:</translation> +<translation id="698231206551913481">Vse datoteke in lokalni podatki, povezani s tem uporabnikom, bodo trajno izbrisani, ko odstranite uporabnika.</translation> <translation id="6982896539684144327">Zaznan je bil tiskalnik proizvajalca <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">Registriran OID</translation> <translation id="6983991971286645866">Vsa urejanja bodo shranjena v $1.</translation> @@ -4465,6 +4464,7 @@ <translation id="7073555242265688099">Če imate druge naprave Chrome, se sinhronizirajo samodejno, tako da bo telefon odklenil tudi njih.</translation> <translation id="707392107419594760">Izberite tipkovnico:</translation> <translation id="7075513071073410194">PKCS #1 MD5 s šifriranjem RSA</translation> +<translation id="7075625805486468288">Upravljanje potrdil HTTPS/SSL in nastavitev</translation> <translation id="7076293881109082629">Prijava</translation> <translation id="7077829361966535409">Nalaganje strani za prijavo s trenutnimi nastavitvami strežnika proxy ni uspelo. <ph name="GAIA_RELOAD_LINK_START" />Poskusite se znova prijaviti<ph name="GAIA_RELOAD_LINK_END" /> ali uporabite druge <ph name="PROXY_SETTINGS_LINK_START" />nastavitve proxyja<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Prezrte rutine za obravnavanje protokolov</translation> @@ -4512,7 +4512,6 @@ <translation id="7141105143012495934">Prijava ni uspela, ker ni bilo mogoče pridobiti podrobnosti o računu. Obrnite se na skrbnika in poskusite znova.</translation> <translation id="7143207342074048698">Vzpostavljanje povezave</translation> <translation id="7144878232160441200">Poskusi znova</translation> -<translation id="7148311641502571842">Vtičnik <ph name="PLUGIN_NAME" /> je onemogočen. Znova ga lahko omogočite na <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Navadni tiskalniki</translation> <translation id="7154130902455071009">Sprememba začetne strani na: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Prvotni način kitajščine je poenostavljena kitajščina</translation> @@ -4791,6 +4790,7 @@ <translation id="7540972813190816353">Napaka pri preverjanju posodobitev: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Izjeme za slike</translation> <translation id="7543104066686362383">Omogočanje funkcij za odpravljanje napak v tej napravi: <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Odprite <ph name="BEGIN_LINK_CHROMIUM" />pomoč za Google Chrome<ph name="END_LINK_CHROMIUM" />, če ne najdete tega, kar iščete.</translation> <translation id="7544853251252956727">Naključno predvajanje</translation> <translation id="7545288882499673859">Strategija praznjenja pomnilnika za obravnavo dodatnih obremenitev</translation> <translation id="7545415673537747415">V <ph name="BEGIN_LINK" />Googlovih kontrolnikih za dejavnost<ph name="END_LINK" /> je mogoče nadzirati, kako Google uporablja vašo zgodovino brskanja za prilagajanje Iskanja Google, oglasov in drugih Googlovih storitev.</translation> @@ -5028,7 +5028,6 @@ <translation id="7879478708475862060">Upoštevaj način vnosa</translation> <translation id="7880836220014399562">»<ph name="BUNDLE_NAME" />« doda te aplikacije in razširitve</translation> <translation id="7881969471599061635">Onemogočanje podnapisov</translation> -<translation id="7884988936047469945">Poskusne funkcije za ljudi s posebnimi potrebami</translation> <translation id="7885253890047913815">Nedavni cilji</translation> <translation id="7887192723714330082">Odziv na »Ok Google«, ko je zaslon vklopljen in odklenjen</translation> <translation id="7887334752153342268">Podvoji</translation> @@ -5096,6 +5095,7 @@ <translation id="7974067550340408553">Prejemanje obvestila, vsakič ko vaš telefon s funkcijo Smart Lock odklene napravo <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Poskusi znova z razširitvijo <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Upodabljanje čez rob zaslona</translation> +<translation id="7976960358280528247">Omogočanje uporabniškega vmesnika za kroženje med okni (vizualne povratne informacije za kombinacijo tipk Alt in Tab).</translation> <translation id="7977551819349545646">Posodabljanje Chromeboxa ...</translation> <translation id="7978412674231730200">Zasebni ključ</translation> <translation id="7979036127916589816">Sinhronizacijska napaka</translation> @@ -5123,6 +5123,7 @@ Datoteko s ključem shranite na varnem. Potrebovali jo boste za izdelavo novih različic razširitev.</translation> <translation id="799923393800005025">Ogled dovoljen</translation> +<translation id="8000066093800657092">Ni omrežja</translation> <translation id="8004582292198964060">Brskalnik</translation> <translation id="8007030362289124303">Akumulator je skoraj prazen</translation> <translation id="8008356846765065031">Internetna povezava je prekinjena. Preverite povezavo.</translation> @@ -5197,6 +5198,7 @@ <translation id="8116190140324504026">Več informacij ...</translation> <translation id="8116483400482790018">Slovar za preverjanje črkovanja po meri</translation> <translation id="8116972784401310538">&Upravitelj zaznamkov</translation> +<translation id="8117838550640702864">Nastavitve zapiskov</translation> <translation id="8117957376775388318">Način vnosa daji</translation> <translation id="8118860139461251237">Upravljanje prenosov</translation> <translation id="8119572489781388874">Spreminjanje nastavitev</translation> @@ -5476,7 +5478,6 @@ <translation id="8472623782143987204">podprto s strojno opremo</translation> <translation id="8475313423285172237">Drug program v računalniku je dodal razširitev, ki lahko spremeni način delovanja Chroma.</translation> <translation id="8475647382427415476">Google Drive trenutno ne more sinhronizirati datoteke »<ph name="FILENAME" />«. Google Drive bo poskusil znova pozneje.</translation> -<translation id="8476195663057048998">Izbriši in ponastavi</translation> <translation id="8477241577829954800">Zamenjano</translation> <translation id="8477384620836102176">&Splošno</translation> <translation id="8480417584335382321">Povečava/pomanjšava strani:</translation> @@ -5707,7 +5708,6 @@ <translation id="8785135611469711856">Vtičnik se ne odziva</translation> <translation id="8787254343425541995">Dovoli proxyje za omrežja v skupni rabi</translation> <translation id="878763818693997570">Ime je predolgo</translation> -<translation id="8787865569533773240">Ponastavitev spremenjenih nastavitev za <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Upravljanje drugih uporabnikov</translation> <translation id="8791534160414513928">S prometom brskanja pošlji zahtevo »Ne sledi«</translation> <translation id="8795668016723474529">Dodaj kreditno kartico</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index 92b0700..98cdbc9 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -518,7 +518,6 @@ <translation id="1673103856845176271">Није могуће приступити датотеци из безбедносних разлога.</translation> <translation id="1675023460278456180">Хибрид за Material</translation> <translation id="167832068858235403">утишавање звука</translation> -<translation id="1678331212993975953">Детаљи сајта</translation> <translation id="1679068421605151609">Алатке за програмере</translation> <translation id="1681120471812444678">Подеси за додавање штампача…</translation> <translation id="1682324559341535203">Региструјте <ph name="DEVICE_TYPE" /></translation> @@ -1008,7 +1007,6 @@ <translation id="2371076942591664043">Отвори кад буде &довршено</translation> <translation id="2372036074421194686">Chrome је утврдио да је на рачунару инсталиран нежељени програм (<ph name="UWS_NAME" />). Можда ћете моћи да га уклоните ако покренете Алатку за чишћење Chrome-а.</translation> <translation id="2375701438512326360">Принудно подешава подршку за додирни екран да увек буде омогућена или онемогућена, или да буде омогућена када се додирни екран открива при покретању (Аутоматски, подразумевано подешавање).</translation> -<translation id="2377619091472055321">Врати измењена подешавања <ph name="IDS_SHORT_PRODUCT_NAME" />-а на почетне вредности</translation> <translation id="2378075407703503998">Изабраних датотека: <ph name="SELCTED_FILE_COUNT" /></translation> <translation id="2378982052244864789">Избор директоријума додатка.</translation> <translation id="2379281330731083556">Штампај помоћу системског дијалога... <ph name="SHORTCUT_KEY" /></translation> @@ -1555,6 +1553,7 @@ <translation id="3058212636943679650">Ако икада буде потребно да вратите оперативни систем рачунара биће вам потребна SD картица за обнављање или USB меморијски уређај.</translation> <translation id="305932878998873762">Једноставни кеш за HTTP је нови кеш. Ослања се на систем датотека за доделу простора на диску.</translation> <translation id="3062606427884046423">Користи Android обавештења у стилу медија за Chrome обавештења о медијима.</translation> +<translation id="3063224679438508013">Аутоматско покретање апликације за белешке</translation> <translation id="3063844757726132584">Приступајте свим апликацијама из овог практичног покретача. Играјте игре, користите видео ћаскање, слушајте музику, мењајте документе или набавите још апликација.</translation> <translation id="3064388234319122767">Транслитерација (zdravo → здраво)</translation> <translation id="3065041951436100775">Повратне информације о затварању картице.</translation> @@ -1645,6 +1644,7 @@ <translation id="3172213052701798825">Google Smart Lock за лозинке</translation> <translation id="317583078218509884">Нова подешавања дозвола сајта биће примењена након поновног учитавања странице.</translation> <translation id="3177048931975664371">Кликните да бисте сакрили лозинку</translation> +<translation id="3177909033752230686">Језик странице:</translation> <translation id="3180365125572747493">Унесите лозинку да бисте шифровали ову датотеку сертификата.</translation> <translation id="3183139917765991655">Увоз профила</translation> <translation id="3184560914950696195">Чување у директоријум $1 није могуће. Измењене слике ће бити сачуване у директоријуму Преузимања.</translation> @@ -1995,6 +1995,7 @@ <translation id="3612673635130633812">Додатак <a href="<ph name="URL" />"><ph name="EXTENSION" /></a> је преузео</translation> <translation id="3613134908380545408">Прикажи <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Отвори на новој картици</translation> +<translation id="3616113530831147358">Аудио</translation> <translation id="3616741288025931835">&Обриши податке прегледања...</translation> <translation id="3618849550573277856">Потражи „<ph name="LOOKUP_STRING" />“</translation> <translation id="3620292326130836921">Направљене су резервне копије свих датотека!</translation> @@ -2291,7 +2292,6 @@ <translation id="3994878504415702912">&Зумирај</translation> <translation id="3995964755286119116">Подешавања за камеру за Adobe Flash Player се разликују.</translation> <translation id="39964277676607559">Није могуће учитати javascript „<ph name="RELATIVE_PATH" />“ за скрипту садржаја.</translation> -<translation id="3996912167543967198">Враћање на почетне вредности...</translation> <translation id="3997015411467176489">Експерименталне функције проширеног приказа</translation> <translation id="4002066346123236978">Наслов</translation> <translation id="40027638859996362">Премештање речи</translation> @@ -2388,6 +2388,7 @@ <translation id="4140559601186535628">Искачуће поруке</translation> <translation id="4146026355784316281">Увек отварај помоћу системског приказивача</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> жели да провери да ли Chrome ОС уређај испуњава услове за понуду. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Екран</translation> <translation id="4151403195736952345">Користи глобалну подразумевану вредност (Откривај)</translation> <translation id="4152177296285305182">Само неко са вашом приступном фразом може да чита ваше шифроване податке. Google не шаље нити складишти приступну фразу. Ако заборавите приступну фразу, биће потребно да вратите синхронизацију на почетне вредности.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 картица}one{# картица}few{# картице}other{# картица}}</translation> @@ -2452,6 +2453,7 @@ <translation id="4250229828105606438">Снимак екрана</translation> <translation id="4250680216510889253">Не</translation> <translation id="4253168017788158739">Напомена</translation> +<translation id="4254813446494774748">Језик на који се преводи:</translation> <translation id="425573743389990240">Ниво потрошње батерије у ватима (негативна вредност значи да се батерија пуни)</translation> <translation id="4256316378292851214">Са&чувај видео снимак као...</translation> <translation id="4258348331913189841">Системи датотека</translation> @@ -2529,6 +2531,7 @@ <translation id="4365673000813822030">Упс, синхронизација је престала да функционише.</translation> <translation id="4366509400410520531">Ви сте дозволили</translation> <translation id="4367782753568896354">Нисмо могли да инсталирамо:</translation> +<translation id="436904870295243580">Пронађите још апликација за прављење бележака</translation> <translation id="4370975561335139969">Имејл и лозинка које сте унели се не подударају</translation> <translation id="437184764829821926">Напредна подешавања фонта</translation> <translation id="4372884569765913867">1×1</translation> @@ -3210,6 +3213,7 @@ <translation id="5324674707192845912">Управо опозивате регистрацију за овај <ph name="DEVICE_TYPE" /> на Google-у да бисте онемогућили даљинско лоцирање, брисање података и закључавање уређаја. За то је потребно рестартовање уређаја. Желите ли да наставите?</translation> <translation id="5324780743567488672">Аутоматски подеси временску зону помоћу моје локације</translation> <translation id="5325120507747984426">Користи стабилан редослед прозора у режиму прегледа који покушава да смањи кретање прозора при уласку у режим прегледа или изласку из њега или преласка са једне сесије прегледа на другу.</translation> +<translation id="5326182685622510062">Постоји више примена канала за приказивање графике за 2D платно. Перформансе тих различитих примена су различите. Ако укључите ово обележје, то омогућава 2D контекстима са платном да у ходу мењају ове примене у зависности од тога како се платно користи да би се побољшале перформансе. На пример, прелазите са примене која користи GPU на неку која га не користи.</translation> <translation id="5327248766486351172">Назив</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Избриши</translation> @@ -3342,7 +3346,6 @@ <translation id="54870580363317966">Изаберите аватар за овог корисника под надзором.</translation> <translation id="5488468185303821006">Омогући у режиму без архивирања</translation> <translation id="5489390182170331803">Подразумевано понашање за пасивне обрађиваче догађаја на нивоу документа</translation> -<translation id="5489789060051091748">Изаберите да бисте изговорили: Притисните и задржите тастер за претрагу и кликните или превуците да бисте изговорили било шта</translation> <translation id="549294555051714732">Подударање подстрингова за предлоге за аутоматско попуњавање</translation> <translation id="5493996328530898436">Нова стратегија миксовања за растеризацију звука</translation> <translation id="5494362494988149300">Отвори када буде &довршено</translation> @@ -3701,9 +3704,6 @@ <translation id="5991049340509704927">Увећање приказа</translation> <translation id="5991774521050363748">Омогућите прилагођене изгледе за Веб-обавештења. Она ће тада имати дискретна побољшања изгледа која иначе нису могућа.</translation> <translation id="5993332328670040093">Коришћење података се више неће мерити.</translation> -<translation id="5996258716334177896">Профил није исправно отворен. - -Неке функције можда нису доступне. Проверите да ли овај профил постоји и да ли имате дозволу да читате његов садржај или уписујете садржај у њега.</translation> <translation id="6001799583597751002">PIN-ови се не подударају:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> можда неће моћи да се ажурира.</translation> <translation id="6003294706906016758">Омогућава да хостоване апликације имају оквир као веб-апликације</translation> @@ -4152,7 +4152,6 @@ <translation id="6637362044401670482">Омогућава подршку за померање преко ивице на виртуелној тастатури.</translation> <translation id="6639554308659482635">SQLite меморија</translation> <translation id="6643016212128521049">Обриши</translation> -<translation id="6644756108386233011">Желите ли да вратите измењена подешавања <ph name="IDS_SHORT_PRODUCT_NAME" />-а на почетне вредности?</translation> <translation id="6647228709620733774">URL адреса за опозив ауторитета за издавање Netscape сертификата</translation> <translation id="6647838571840953560">Тренутно на <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Само тренутак…</translation> @@ -4260,7 +4259,6 @@ <translation id="6810613314571580006">Аутоматски се пријављујте на веб-сајтове помоћу сачуваних акредитива. Када је ова функција онемогућена, тражићемо потврду пре сваког пријављивања на веб-сајт.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> не може да се покреће као основни производ.</translation> <translation id="6812841287760418429">Задржи промене</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> је открио да су подешавања прегледача можда промењена без вашег знања. Желите ли да их вратите на оригиналне подразумеване вредности?</translation> <translation id="6815551780062710681">измени</translation> <translation id="6817358880000653228">Сачуване лозинке за овај сајт:</translation> <translation id="6820008762872335722">Ресетуј и питај поново</translation> @@ -4377,6 +4375,7 @@ (потребна је претходна лозинка)</translation> <translation id="6981982820502123353">Приступачност</translation> <translation id="6981992744085917617">Изаберите метод који желите да користите да бисте се поново пријавили на налог:</translation> +<translation id="698231206551913481">Све датотеке и локални подаци повезани са овим корисником ће бити трајно избрисани када уклоните овог корисника.</translation> <translation id="6982896539684144327">Откривен је <ph name="VENDOR_NAME" /> штампач</translation> <translation id="6983783921975806247">Регистровани OID</translation> <translation id="6983991971286645866">Све измене ће се сачувати у $1.</translation> @@ -4463,6 +4462,7 @@ <translation id="7073555242265688099">Ако имате још Chrome уређаја, биће аутоматски синхронизовани, па ће телефон моћи и њих да откључава.</translation> <translation id="707392107419594760">Изаберите тастатуру:</translation> <translation id="7075513071073410194">PKCS #1 MD5 са RSA шифровањем</translation> +<translation id="7075625805486468288">Управљање HTTPS/SSL сертификатима и подешавањима</translation> <translation id="7076293881109082629">Пријављивање</translation> <translation id="7077829361966535409">Учитавање странице за пријављивање помоћу актуелних подешавања проксија није успело. <ph name="GAIA_RELOAD_LINK_START" />Покушајте поново да се пријавите<ph name="GAIA_RELOAD_LINK_END" /> или користите нека друга <ph name="PROXY_SETTINGS_LINK_START" />подешавања проксија<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Занемарене процедуре протокола</translation> @@ -4510,7 +4510,6 @@ <translation id="7141105143012495934">Пријављивање није успело јер нисмо успели да преузмемо детаље о налогу. Контактирајте администратора или покушајте поново.</translation> <translation id="7143207342074048698">Повезивање</translation> <translation id="7144878232160441200">Покушај поново</translation> -<translation id="7148311641502571842">Додатна компонента<ph name="PLUGIN_NAME" /> је онемогућена. Да бисте је поново омогућили, идите на <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Класични штампачи</translation> <translation id="7154130902455071009">Промените почетну страницу у: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Почетни кинески режим је поједностављени кинески</translation> @@ -4783,6 +4782,7 @@ <translation id="7540972813190816353">Дошло је до грешке при провери ажурирања: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Изузеци за слике</translation> <translation id="7543104066686362383">Омогућавање функција за отклањање грешака на овом <ph name="IDS_SHORT_PRODUCT_NAME" /> уређају</translation> +<translation id="7543393759143837504">Идите на <ph name="BEGIN_LINK_CHROMIUM" />страницу помоћи за Google Chrome<ph name="END_LINK_CHROMIUM" /> ако не можете да пронађете оно што тражите.</translation> <translation id="7544853251252956727">Пусти насумично</translation> <translation id="7545288882499673859">Стратегија за пражњење меморије ради напредног управљања оптерећењем</translation> <translation id="7545415673537747415">Контролишите како Google користи историју прегледања за персонализацију Претраге, огласа и других Google услуга у одељку <ph name="BEGIN_LINK" />Google контроле активности<ph name="END_LINK" />.</translation> @@ -5020,7 +5020,6 @@ <translation id="7879478708475862060">Прати режим уноса</translation> <translation id="7880836220014399562">„<ph name="BUNDLE_NAME" />“ додаје следеће апликације и додатке:</translation> <translation id="7881969471599061635">Онемогући титлове</translation> -<translation id="7884988936047469945">Експериментални функције приступачности</translation> <translation id="7885253890047913815">Недавна одредишта</translation> <translation id="7887192723714330082">Реагуј на „ОК Google“ када је екран укључен и откључан</translation> <translation id="7887334752153342268">Направи дупликат</translation> @@ -5088,6 +5087,7 @@ <translation id="7974067550340408553">Добијајте обавештења на телефону сваки пут када Smart Lock откључа <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Покушај поново помоћу <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Ивично подручје екрана</translation> +<translation id="7976960358280528247">Омогућава кориснички интерфејс за прелазак са једног прозора на други (визуелне повратне информације за команду Alt + Tab).</translation> <translation id="7977551819349545646">Ажурира се Chromebox...</translation> <translation id="7978412674231730200">Приватни кључ</translation> <translation id="7979036127916589816">Грешка у синхронизацији</translation> @@ -5115,6 +5115,7 @@ Чувајте датотеку кључа на сигурном месту. Биће вам потребна да направите нове верзије додатка.</translation> <translation id="799923393800005025">Може да прегледа</translation> +<translation id="8000066093800657092">Нема мреже</translation> <translation id="8004582292198964060">Прегледач</translation> <translation id="8007030362289124303">Батерија је скоро празна</translation> <translation id="8008356846765065031">Веза са интернетом је прекинута. Проверите интернет везу.</translation> @@ -5189,6 +5190,7 @@ <translation id="8116190140324504026">Више информација...</translation> <translation id="8116483400482790018">Прилагођени речник за правопис</translation> <translation id="8116972784401310538">&Менаџер обележивача</translation> +<translation id="8117838550640702864">Подешавања бележака</translation> <translation id="8117957376775388318">Метод уноса даји</translation> <translation id="8118860139461251237">Управљање преузимањима</translation> <translation id="8119572489781388874">Измени подешавања</translation> @@ -5283,7 +5285,7 @@ <translation id="8226222018808695353">Забрањено је</translation> <translation id="8226742006292257240">У наставку је насумично генерисана TPM лозинка која је додељена рачунару:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Нападачи који су тренутно на <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ће можда покушати да инсталирају опасне програме на рачунару који краду или бришу податке (на пример, слике, лозинке, поруке и бројеве кредитних картица).</translation> +<translation id="8230421197304563332">Нападачи који су тренутно на <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ће можда покушати да на ваш рачунар инсталирају опасне програме који краду или бришу податке (на пример, слике, лозинке, поруке и бројеве кредитних картица).</translation> <translation id="8233254008506535819">Додаје опцију за стављање важних сајтова на белу листу у дијалогу за брисање података прегледања.</translation> <translation id="8236231079192337250">Апликација Галерија Chrome веб-продавнице за управљачке програме за штампаче</translation> <translation id="8238649969398088015">Савет за помоћ</translation> @@ -5469,7 +5471,6 @@ <translation id="8472623782143987204">хардверски подржан</translation> <translation id="8475313423285172237">Други програм на рачунару је додао додатак који може да промени начин на који Chrome функционише.</translation> <translation id="8475647382427415476">Google диск тренутно није успео да синхронизује „<ph name="FILENAME" />“. Google диск ће покушати поново касније.</translation> -<translation id="8476195663057048998">Обриши и ресетуј</translation> <translation id="8477241577829954800">Замењено</translation> <translation id="8477384620836102176">&Опште</translation> <translation id="8480417584335382321">Зумирање странице:</translation> @@ -5699,7 +5700,6 @@ <translation id="8785135611469711856">Додатна компонента се не одазива</translation> <translation id="8787254343425541995">Дозволи проксије за дељене мреже</translation> <translation id="878763818693997570">Овај назив је предугачак</translation> -<translation id="8787865569533773240">Врати измењена подешавања <ph name="IDS_SHORT_PRODUCT_NAME" />-а на почетне вредности</translation> <translation id="8789375980715484686">Управљајте другим корисницима</translation> <translation id="8791534160414513928">Шаљи захтев „Не прати“ уз саобраћај прегледања</translation> <translation id="8795668016723474529">Додајте кредитну картицу</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index b19b883..1eb7617 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -520,7 +520,6 @@ <translation id="1673103856845176271">Det gick inte att öppna filen av säkerhetsskäl.</translation> <translation id="1675023460278456180">Material-hybrid</translation> <translation id="167832068858235403">volym ned</translation> -<translation id="1678331212993975953">Webbplatsinformation</translation> <translation id="1679068421605151609">Verktyg för utvecklare</translation> <translation id="1681120471812444678">Konfigurera nya skrivare ...</translation> <translation id="1682324559341535203">Registrera <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Öppna när nedladdning är &klar</translation> <translation id="2372036074421194686">Chrome hittade ett oönskat program (<ph name="UWS_NAME" />) på datorn. Det kan gå att ta bort det genom att köra Chrome Cleanup Tool.</translation> <translation id="2375701438512326360">Tvinga stöd för pekskärm att alltid aktiveras eller inaktiveras eller att aktiveras när en pekskärm upptäcks vid start (automatiskt – standard).</translation> -<translation id="2377619091472055321">Återställning ändrade inställningarna för <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> filer har valts</translation> <translation id="2378982052244864789">Välj tilläggets katalog.</translation> <translation id="2379281330731083556">Skriv ut via systemets dialogruta ... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Om du någon gång skulle behöva återställa datorns operativsystem behöver du ett SD-kort eller USB-minne.</translation> <translation id="305932878998873762">Den enkla cachen för HTTP är en ny cache som bygger på filsystemet för diskutrymmesfördelning.</translation> <translation id="3062606427884046423">Använd aviseringar från Android MediaStyle för medieaviseringar från Chrome.</translation> +<translation id="3063224679438508013">Starta appen för anteckningar automatiskt</translation> <translation id="3063844757726132584">Få tillgång till alla appar från det här praktiska startprogrammet. Spela spel, videochatta, lyssna på musik, redigera dokument eller ladda ned fler appar.</translation> <translation id="3064388234319122767">Translitterering (zdravo → здраво)</translation> <translation id="3065041951436100775">Feedback vid stängd flik.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock för lösenord</translation> <translation id="317583078218509884">De nya inställningarna för webbplatsbehörighet börjar gälla när sidan uppdateras.</translation> <translation id="3177048931975664371">Klicka om du vill dölja lösenordet</translation> +<translation id="3177909033752230686">Sidans språk:</translation> <translation id="3180365125572747493">Ange ett lösenord om du vill kryptera denna certifikatfil.</translation> <translation id="3183139917765991655">Profilimportör</translation> <translation id="3184560914950696195">Det går inte att spara i $1. Redigerade bilder sparas i mappen Nedladdningar.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812">Laddades ned med <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Visa <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Öppna i ny flik</translation> +<translation id="3616113530831147358">Ljud</translation> <translation id="3616741288025931835">&Rensa webbinformation...</translation> <translation id="3618849550573277856">Sök efter ”<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Allt har säkerhetskopierats!</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">&Zooma in</translation> <translation id="3995964755286119116">Adobe Flash Player använder andra inställningar för kameran.</translation> <translation id="39964277676607559">Det gick inte att läsa in JavaScript-filen <ph name="RELATIVE_PATH" /> för innehållsskriptet.</translation> -<translation id="3996912167543967198">Återställer ...</translation> <translation id="3997015411467176489">Experimentella canvas-funktioner</translation> <translation id="4002066346123236978">Titel</translation> <translation id="40027638859996362">Flytta ord</translation> @@ -2391,6 +2391,7 @@ <translation id="4140559601186535628">Push-meddelanden</translation> <translation id="4146026355784316281">Öppna alltid med systemets visningsprogram</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> vill kontrollera om din Chrome OS-enhet kvalificerar för ett erbjudande. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Skärm</translation> <translation id="4151403195736952345">Använd global standardinställning (Upptäck)</translation> <translation id="4152177296285305182">Bara den som kan din lösenfras kan läsa dina krypterade data – lösenfrasen skickas inte till eller lagras av Google. Om du glömmer frasen måste du återställa synkroniseringen.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 flik}other{# flikar}}</translation> @@ -2455,6 +2456,7 @@ <translation id="4250229828105606438">Skärmdump</translation> <translation id="4250680216510889253">Nej</translation> <translation id="4253168017788158739">Kommentar</translation> +<translation id="4254813446494774748">Översättningsspråk:</translation> <translation id="425573743389990240">Batteriurladdningstakt i watt (ett negativt värde betyder att batteriet laddas)</translation> <translation id="4256316378292851214">S&para video som...</translation> <translation id="4258348331913189841">Filsystem</translation> @@ -2532,6 +2534,7 @@ <translation id="4365673000813822030">Oj, synkroniseringen har slutat fungera.</translation> <translation id="4366509400410520531">Tillåts av dig</translation> <translation id="4367782753568896354">Det gick inte att installera:</translation> +<translation id="436904870295243580">Hitta fler appar för anteckningar</translation> <translation id="4370975561335139969">E-postadressen och lösenordet matchar inte</translation> <translation id="437184764829821926">Avancerade inställningar för teckensnitt</translation> <translation id="4372884569765913867">1:1</translation> @@ -3213,6 +3216,7 @@ <translation id="5324674707192845912">Du håller på att avregistrera den här <ph name="DEVICE_TYPE" /> hos Google för att inaktivera möjligheten att lokalisera, rensa och låsa den på distans. Det här kräver omstart. Vill du fortsätta?</translation> <translation id="5324780743567488672">Ange tidszon automatiskt genom att använda din plats</translation> <translation id="5325120507747984426">Använder en fast fönsterordning i översiktsläget som försöker minimera förflyttning av fönster när du öppnar eller lämnar översikten samt mellan översiktssessioner.</translation> +<translation id="5326182685622510062">Det finns flera implementeringar av pipeline för dynamisk bildrendering för 2D-kanvasen. De olika implementeringarna uppträder på olika sätt. Om den här flaggan aktiveras kan du, när du använder 2D-kanvasen, växla mellan dessa implementeringar direkt utifrån hur kanvasen används för att förbättra prestandan. Du kan till exempel växla mellan en implementering som använder GPU och en som inte gör det.</translation> <translation id="5327248766486351172">Namn</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Ta bort</translation> @@ -3345,7 +3349,6 @@ <translation id="54870580363317966">Välj en avatar för den här hanterade användaren.</translation> <translation id="5488468185303821006">Tillåt i inkognito</translation> <translation id="5489390182170331803">Händelseavlyssnare på dokumentnivå – passiva som standard</translation> -<translation id="5489789060051091748">Välj och läs upp: Tryck länge på Sök och klicka eller dra om du vill få något uppläst</translation> <translation id="549294555051714732">Delsträngsmatchning för förslag från Autofyll</translation> <translation id="5493996328530898436">Ny mixstrategi för återgivning av ljud</translation> <translation id="5494362494988149300">Öppna när nedladdning är &klar</translation> @@ -3702,9 +3705,6 @@ <translation id="5991049340509704927">Förstora</translation> <translation id="5991774521050363748">Aktivera anpassade layouter för webbaviseringar. De får subtila layoutförbättringar som annars inte vore möjliga.</translation> <translation id="5993332328670040093">Dataanvändningen mäts inte längre.</translation> -<translation id="5996258716334177896">Det gick inte att öppna din profil ordentligt. - - Vissa funktioner är eventuellt inte tillgängliga. Kontrollera att profilen finns och att du har behörighet att läsa och skriva till profilens innehåll.</translation> <translation id="6001799583597751002">Pinkoderna matchar inte varandra:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> kanske inte kan uppdateras automatiskt.</translation> <translation id="6003294706906016758">Aktiverar ram av webbappstyp för webbserverappar</translation> @@ -4154,7 +4154,6 @@ <translation id="6637362044401670482">Aktiverar stöd för överrullning på virtuellt tangentbord.</translation> <translation id="6639554308659482635">SQLite-minne</translation> <translation id="6643016212128521049">Rensa</translation> -<translation id="6644756108386233011">Har återställningen ändrat inställningarna för <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">Webbadress till Netscapes spärrlista för certifikatutfärdare</translation> <translation id="6647838571840953560">För närvarande på <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Ett ögonblick …</translation> @@ -4262,7 +4261,6 @@ <translation id="6810613314571580006">Logga in automatiskt på webbplatser med hjälp av lagrade inloggningsuppgifter. När funktionen är inaktiverad måste du bekräfta inloggningen varje gång du besöker en webbplats.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> kan inte köras av en systemadministratör.</translation> <translation id="6812841287760418429">Behåll ändringarna</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> upptäckte att webbläsarinställningarna kan ha ändrats utan din vetskap. Vill du återställa de ursprungliga standardinställningarna?</translation> <translation id="6815551780062710681">redigera</translation> <translation id="6817358880000653228">Lösenord som har sparats för den här webbplatsen:</translation> <translation id="6820008762872335722">Återställ till fråga</translation> @@ -4379,6 +4377,7 @@ <translation id="6980956047710795611">Migrera alla Chrome OS-uppgifter till det nya lösenordet (tidigare lösenord krävs)</translation> <translation id="6981982820502123353">Tillgänglighet</translation> <translation id="6981992744085917617">Välj den metod du vill använda för att logga in i kontot igen:</translation> +<translation id="698231206551913481">Alla filer inklusive lokal data som tillhör den här användaren tas bort permanent när användaren tas bort.</translation> <translation id="6982896539684144327">Skrivare från <ph name="VENDOR_NAME" /> har identifierats</translation> <translation id="6983783921975806247">Registrerat OID</translation> <translation id="6983991971286645866">Alla ändringar sparas i $1.</translation> @@ -4463,6 +4462,7 @@ <translation id="7073555242265688099">Om du har fler Chrome-enheter synkroniseras de automatiskt så att du även kan låsa upp dessa med mobilen.</translation> <translation id="707392107419594760">Välj tangentbord:</translation> <translation id="7075513071073410194">PKCS #1 MD5 med RSA-kryptering</translation> +<translation id="7075625805486468288">Hantera HTTPS/SSL-certifikat och inställningar</translation> <translation id="7076293881109082629">Logga in</translation> <translation id="7077829361966535409">Det gick inte att läsa in inloggningssidan med de aktuella proxyinställningarna. <ph name="GAIA_RELOAD_LINK_START" />Försök logga in igen<ph name="GAIA_RELOAD_LINK_END" /> eller använd andra <ph name="PROXY_SETTINGS_LINK_START" />proxyinställningar<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Ignorerade protokollhanterare</translation> @@ -4510,7 +4510,6 @@ <translation id="7141105143012495934">Inloggningen misslyckades eftersom det inte gick att hämta dina kontouppgifter. Kontakta administratören eller försök igen.</translation> <translation id="7143207342074048698">Ansluter</translation> <translation id="7144878232160441200">Försök igen</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> har inaktiverats. Besök <ph name="CHROME_PLUGINS_LINK" /> om du vill aktivera det igen.</translation> <translation id="715118844758971915">Vanliga skrivare</translation> <translation id="7154130902455071009">Ändra startsida till: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Det ursprungliga läget för kinesiska är förenklad kinesiska</translation> @@ -4788,6 +4787,7 @@ <translation id="7540972813190816353">Det gick inte att söka efter uppdateringar: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Bildundantag</translation> <translation id="7543104066686362383">Aktiverar felsökningsfunktioner på den här <ph name="IDS_SHORT_PRODUCT_NAME" />-enheten</translation> +<translation id="7543393759143837504">Öppna <ph name="BEGIN_LINK_CHROMIUM" />Hjälp för Google Chrome<ph name="END_LINK_CHROMIUM" /> om du inte hittar vad du letar efter.</translation> <translation id="7544853251252956727">Blanda</translation> <translation id="7545288882499673859">Minnesrensningsstrategi för avancerad belastningshantering</translation> <translation id="7545415673537747415">I <ph name="BEGIN_LINK" />Googles aktivitetsinställningar<ph name="END_LINK" /> kan du styra på vilket sätt Google använder webbhistorik för att anpassa Sök, annonser och andra Google-tjänster.</translation> @@ -5025,7 +5025,6 @@ <translation id="7879478708475862060">Följ inmatningsläge</translation> <translation id="7880836220014399562"><ph name="BUNDLE_NAME" /> lägger till följande appar och tillägg:</translation> <translation id="7881969471599061635">Inaktivera undertexter</translation> -<translation id="7884988936047469945">Experimentella tillgänglighetsfunktioner</translation> <translation id="7885253890047913815">Senaste platserna</translation> <translation id="7887192723714330082">Svara på ”Ok Google” när skärmen är på och olåst</translation> <translation id="7887334752153342268">Duplicera</translation> @@ -5093,6 +5092,7 @@ <translation id="7974067550340408553">Få aviseringar på mobilen varje gång Smart Lock låser upp <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Försök igen med <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Överskanning</translation> +<translation id="7976960358280528247">Aktivera användargränssnitt för fönsterväxling (synlig feedback vid användning av Alt + tabb).</translation> <translation id="7977551819349545646">Uppdaterar Chromebox ...</translation> <translation id="7978412674231730200">Privat nyckel</translation> <translation id="7979036127916589816">Synkroniseringsfel</translation> @@ -5120,6 +5120,7 @@ Spara nyckelfilen på ett säkert ställe. Den behövs om du ska skapa nya versioner av ditt tillägg.</translation> <translation id="799923393800005025">Kan visa</translation> +<translation id="8000066093800657092">Inget nätverk</translation> <translation id="8004582292198964060">Webbläsare</translation> <translation id="8007030362289124303">Batteriet snart slut</translation> <translation id="8008356846765065031">Internetanslutningen har avbrutits. Kontrollera internetanslutningen.</translation> @@ -5194,6 +5195,7 @@ <translation id="8116190140324504026">Mer information...</translation> <translation id="8116483400482790018">Anpassad stavningsordlista</translation> <translation id="8116972784401310538">&Bokmärkshanteraren</translation> +<translation id="8117838550640702864">Inställningar för anteckningar</translation> <translation id="8117957376775388318">Inmatningsmetoden dayi</translation> <translation id="8118860139461251237">Hantera dina nedladdningar</translation> <translation id="8119572489781388874">Ändra inställningar</translation> @@ -5472,7 +5474,6 @@ <translation id="8472623782143987204">maskinvarustödd</translation> <translation id="8475313423285172237">Ett annat program i datorn har lagt till ett tillägg som kan ändra hur Chrome fungerar.</translation> <translation id="8475647382427415476">Det gick inte att synkronisera <ph name="FILENAME" /> med Google Drive just nu. Ett nytt försök görs senare.</translation> -<translation id="8476195663057048998">Rensa och återställ</translation> <translation id="8477241577829954800">Ersatt</translation> <translation id="8477384620836102176">&Allmänt</translation> <translation id="8480417584335382321">Sidzoom:</translation> @@ -5702,7 +5703,6 @@ <translation id="8785135611469711856">Pluginprogrammet svarar inte</translation> <translation id="8787254343425541995">Tillåt proxyservrar för delade nätverk</translation> <translation id="878763818693997570">Namnet är för långt</translation> -<translation id="8787865569533773240">Återställningen ändrade inställningarna för <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Hantera andra användare</translation> <translation id="8791534160414513928">Skicka en begäran om att inte spåra med webbtrafik</translation> <translation id="8795668016723474529">Lägg till ett kreditkort</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 50a3492..c350770 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -519,12 +519,11 @@ <translation id="1673103856845176271">Faili isingeweza kufikiwa kwa sababu za usalama.</translation> <translation id="1675023460278456180">Nyenzo Mahuluti</translation> <translation id="167832068858235403">punguza sauti</translation> -<translation id="1678331212993975953">Maelezo ya Tovuti</translation> <translation id="1679068421605151609">Zana za Wasadini Programu</translation> <translation id="1681120471812444678">Sanidi ili uongeze printa...</translation> <translation id="1682324559341535203">Sajili <ph name="DEVICE_TYPE" /></translation> <translation id="1682548588986054654">Dirisha Fiche Jipya</translation> -<translation id="168328519870909584">Wavamizi walio kwenye <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kwa sasa huenda wakajaribu kusakinisha programu hatari ambazo zinaiba au kufuta maelezo kwenye kifaa chako (kwa mfano, picha, manenosiri, ujumbe, na kadi za malipo).</translation> +<translation id="168328519870909584">Huenda wavamizi walio kwenye <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kwa sasa wakajaribu kusakinisha programu hatari ambazo zinaiba au kufuta maelezo kwenye kifaa chako (kwa mfano, picha, manenosiri, ujumbe na kadi za mkopo).</translation> <translation id="1685141618403317602">Ondoa usajili</translation> <translation id="1685944703056982650">Vighairi vya kishale cha kipanya</translation> <translation id="1691063574428301566">Kompyuta yako itajizima na kujiwasha usasishaji wako ukikamilika.</translation> @@ -772,7 +771,7 @@ <translation id="2074527029802029717">Banua kichupo</translation> <translation id="2075594581020578008">Kivinjari cha <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2076269580855484719">Ficha programu-jalizi hii</translation> -<translation id="2077084898869955643">Ripoti maelezo ya uwezekano wa matukio yasiyo salama kwa Google kiotomatiki. <ph name="PRIVACY_PAGE_LINK" /></translation> +<translation id="2077084898869955643">Tumia Google ripoti ya matukio yanayotishia usalama mtandaoni, kiotomatiki. <ph name="PRIVACY_PAGE_LINK" /></translation> <translation id="2077129598763517140">Tumia uongezaji kasi wa maunzi wakati unapatikana</translation> <translation id="2078019350989722914">Onya Kabla ya Kutoka ( <ph name="KEY_EQUIVALENT" /> )</translation> <translation id="2079053412993822885">Ukifuta moja wapo ya vyeti vyako, huwezi kukitumia tena kujitambulisha.</translation> @@ -1009,7 +1008,6 @@ <translation id="2371076942591664043">Fungua baada ya &kumaliza</translation> <translation id="2372036074421194686">Chrome imepata programu (<ph name="UWS_NAME" />) ambayo haitakikani ikiwa imesakinishwa kwenye kompyuta yako. Unaweza kuiondoa kwa kutekeleza Zana ya Kusafisha Chrome.</translation> <translation id="2375701438512326360">Lazimisha msaada wa skrini ya kugusa ili kuwasha au kuzima wakati wote, au kuwashwa wakati skrini ya kugusa inapogunduliwa wakati wa kuanza (Kiotomatiki, chaguo-msingi).</translation> -<translation id="2377619091472055321">Kuweka upya Kulibadilisha Mipangilio ya <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Faili <ph name="SELCTED_FILE_COUNT" /> zimezochaguliwa</translation> <translation id="2378982052244864789">Chagua saraka ya kiendelezi.</translation> <translation id="2379281330731083556">Chapisha kwa kutumia kidadisi cha mfumo... <ph name="SHORTCUT_KEY" /></translation> @@ -1556,6 +1554,7 @@ <translation id="3058212636943679650">Ikiwa unahitaji kabisa kurejesha upya mfumo wako wa uendeshaji kompyuta utahitaji kadi ya ufufuaji ya SD au kijiti kumbukumbu cha USB.</translation> <translation id="305932878998873762">Akiba Rahisi ya HTTP ni akiba mpya. Inategemea mfumo wa faili kwa ugawaji wa nafasi ya diski.</translation> <translation id="3062606427884046423">Tumia arifa za Android MediaStyle kwa arifa za maudhui ya Chrome.</translation> +<translation id="3063224679438508013">Fungua programu ya madokezo kiotomatiki</translation> <translation id="3063844757726132584">Fikia programu zako zote kutoka kwenye kifungua programu hiki. Cheza michezo, piga gumzo la video, sikiliza miziki, badilisha hati au upate programu zaidi.</translation> <translation id="3064388234319122767">Unukuzi wa mfumo wa kuandika (zdravo → здраво)</translation> <translation id="3065041951436100775">Majibu ya kichupo kilichoangamizwa.</translation> @@ -1646,6 +1645,7 @@ <translation id="3172213052701798825">Google Smart Lock ya Manenosiri</translation> <translation id="317583078218509884">Mipangilio mipya ya vibali vya tovuti itaanza kufanya kazi baada ya kupakia upya ukurasa huu.</translation> <translation id="3177048931975664371">Bofya ili kuficha nenosiri</translation> +<translation id="3177909033752230686">Lugha ya Ukurasa:</translation> <translation id="3180365125572747493">Tafadhali ongeza nenosiri ili kusimbua faili hii ya cheti kwa njia fiche.</translation> <translation id="3183139917765991655">Kiletaji cha Wasifu</translation> <translation id="3184560914950696195">Haiwezi kuhifadhi kwenye $1. Picha zilizohaririwa zitahifadhiwa katika folda ya Vipakuliwa.</translation> @@ -1830,7 +1830,7 @@ <translation id="3414856743105198592">Uumbizaji wa media inayohamishika kutafuta data yote. Je, ungependa kuendelea?</translation> <translation id="3414952576877147120">Ukubwa:</translation> <translation id="3420980393175304359">Badilisha Wasifu</translation> -<translation id="342383653005737728">Mmiliki anaweza kuamua kutuma data ya utambuzi wa matatizo na matumizi ya kifaa hiki kwa Google. Unaweza kuangalia <ph name="BEGIN_LINK1" />mipangilio<ph name="END_LINK1" /> hii hapa. <ph name="BEGIN_LINK2" />Pata Maelezo zaidi<ph name="END_LINK2" /></translation> +<translation id="342383653005737728">Mmiliki anaweza kuamua kutuma data kuhusu matumizi na utambuzi wa matatizo ya kifaa hiki kwa Google. Unaweza kuangalia <ph name="BEGIN_LINK1" />mipangilio<ph name="END_LINK1" /> hii hapa. <ph name="BEGIN_LINK2" />Pata Maelezo zaidi<ph name="END_LINK2" /></translation> <translation id="3423858849633684918">Tafadhali Zindua upya <ph name="PRODUCT_NAME" /></translation> <translation id="3425233587047449821">IMEA Mpya ya Kikorea</translation> <translation id="3426704822745136852">Bainisha idadi ya mazungumzo ya rasta.</translation> @@ -1992,6 +1992,7 @@ <translation id="3612673635130633812">Imepakuliwa na <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Onyesha <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Fungua katika kichupo kipya</translation> +<translation id="3616113530831147358">Sauti</translation> <translation id="3616741288025931835">&Futa Data ya Kuvinjari</translation> <translation id="3618849550573277856">Angalia “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Zote zimehifadhiwa nakala!</translation> @@ -2288,7 +2289,6 @@ <translation id="3994878504415702912">&Kuza</translation> <translation id="3995964755286119116">Mipangilio ya kamera ya Adope Flash Player ni tofauti.</translation> <translation id="39964277676607559">JavaScript '<ph name="RELATIVE_PATH" />' haikuweza kupakiwa kwa ajili ya hati ya maudhui.</translation> -<translation id="3996912167543967198">Inaweka upya...</translation> <translation id="3997015411467176489">Vipengele vya majaribio vya mkusanyiko</translation> <translation id="4002066346123236978">Kichwa</translation> <translation id="40027638859996362">Uhamishaji wa neno</translation> @@ -2321,7 +2321,7 @@ <translation id="406070391919917862">Programu za Mandharinyuma</translation> <translation id="4062251648694601778">Furahia kifaa chako cha <ph name="SHORT_PRODUCT_NAME" />. Je, una maswali? Unaweza kutegemea kupata usaidizi wakati wote kwa kubofya "?" katika treya ya hali.</translation> <translation id="4065876735068446555">Mtandao unaotumia (<ph name="NETWORK_ID" />) unaweza kukuhitaji utembelee ukurasa wake wa kuingia katika akaunti.</translation> -<translation id="4068506536726151626">Ukurasa huu una vipengee kutoka tovuti zifuatazo zinazofuatilia mahali ulipo:</translation> +<translation id="4068506536726151626">Ukurasa huu una vipengee kutoka tovuti zifuatazo ambazo zinafuatilia mahali ulipo:</translation> <translation id="4070370845051020638">Mbinu ya Kikantoni ya kuingiza data</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: hitilafu ya kuingia katika akaunti</translation> <translation id="4072248638558688893">Kibodi ya Kitamil (Fonetiki)</translation> @@ -2382,6 +2382,7 @@ <translation id="4140559601186535628">Ujumbe Unaotumwa na Programu Hata Wakati Huitumii</translation> <translation id="4146026355784316281">Fungua Ukitumia Kitazamaji Cha Mfumo Wakati Wowote</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> inataka kuangalia ikiwa kifaa chako kinachotumia Chrome OS kinaweza kupata ofa. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Onyesho</translation> <translation id="4151403195736952345">Tumia chaguo-msingi la kimataifa (Gundua)</translation> <translation id="4152177296285305182">Mtu aliye na kaulisiri yako pekee ndiye anayeweza kusoma data yako iliyosimbwa kwa njia fiche. Kaulisiri haitumwi au kuhifadhiwa na Google. Ukisahau kaulisiri yako, utahitaji kuweka upya ulinganishaji.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{Kichupo 1}other{Vichupo #}}</translation> @@ -2446,6 +2447,7 @@ <translation id="4250229828105606438">Picha ya skrini</translation> <translation id="4250680216510889253">La</translation> <translation id="4253168017788158739">Dokezo</translation> +<translation id="4254813446494774748">Lugha ya Tafsiri:</translation> <translation id="425573743389990240">Kiwango cha Kutumia betri katika kipimo cha Wati (Nambari hasi inamaanisha betri inachaji)</translation> <translation id="4256316378292851214">&Hifadhi Video Kama...</translation> <translation id="4258348331913189841">Mifumo ya faili</translation> @@ -2523,6 +2525,7 @@ <translation id="4365673000813822030">Lo, Usawazishaji umekatizwa.</translation> <translation id="4366509400410520531">Kimeruhusiwa na wewe</translation> <translation id="4367782753568896354">Hatuwezi kusakinisha:</translation> +<translation id="436904870295243580">Pata programu zaidi za kuandika madokezo</translation> <translation id="4370975561335139969">Anwani ya barua pepe na nenosiri uliloweka havilingani</translation> <translation id="437184764829821926">Mipangilio ya kina ya fonti</translation> <translation id="4372884569765913867">1x1</translation> @@ -3202,6 +3205,7 @@ <translation id="5324674707192845912">Unakaribia kuondoa usajili wa <ph name="DEVICE_TYPE" /> hii kwenye Google ili uzime uwezo wa kutafuta, kuondoa, na kufunga kifaa hiki kwa mbali. Huku kutahitaji kuwasha tena. Je, ungependa kuendelea?</translation> <translation id="5324780743567488672">Weka saa za eneo kiotomatiki kwa kutumia mahali pako</translation> <translation id="5325120507747984426">Hutumia mpangilio thabiti wa dirisha katika hali ya muhtasari inayojaribu kupunguza kusonga kwa madirisha wakati wa kuingia / kuondoka kwenye muhtasari na kati ya vipindi vya muhtasari.</translation> +<translation id="5326182685622510062">Kuna utekelezaji mwingi wa picha zinazongojea kuwasilishwa kwa mkusanyiko wa 2D. Utekelezaji huu tofauti una sifa tofauti za utekelezaji. Kuwasha bendera hii kutaruhusu miktadha ya mkusanyiko wa 2D ili ubadilishe utekelezaji huu upendavyo unaposafiri kulingana na jinsi mkusanyiko unavyotumika ili kuongeza utendaji. Kwa mfano, kutoka kwenye utekelezaji unaotumia GPU hadi utekelezaji usiotumia GPU.</translation> <translation id="5327248766486351172">Jina</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Futa</translation> @@ -3334,7 +3338,6 @@ <translation id="54870580363317966">Chagua ishara ya mtumiaji huyu anayesimamiwa</translation> <translation id="5488468185303821006">Ruhusu katika hali fiche</translation> <translation id="5489390182170331803">Chaguo-Msingi Tuli ya Visikilizaji vya Tukio katika Ngazi ya Hati</translation> -<translation id="5489789060051091748">Chagua ili uzungumze: Shikilia kitufe cha Kutafuta na ubofye au uburute ili useme jambo</translation> <translation id="549294555051714732">Kulinganisha kiambishi cha msimbo kwa mapendekezo ya Kujaza otomatiki</translation> <translation id="5493996328530898436">Mkakati mpya wa kuchanganya uonyeshaji sauti</translation> <translation id="5494362494988149300">Funga &Utakapomalizika</translation> @@ -3691,9 +3694,6 @@ <translation id="5991049340509704927">Zidisha</translation> <translation id="5991774521050363748">Washa kipengee cha miundo maalum ya Arifa za Wavuti. Itakuwa na maboresho madogo ya miundo ambayo vinginevyo hayawezekani.</translation> <translation id="5993332328670040093">Matumizi yako ya data hayatapimwa tena.</translation> -<translation id="5996258716334177896">Wasifu wako haukuweza kufunguliwa ipasavyo. - -Vipengee fulani huenda visipatikane, Tafadhali hakikisha kuwa wasifu upo na una idhini ya kusoma na kuandika maudhui yake.</translation> <translation id="6001799583597751002">PIN hazilingani:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> huenda isiwezi kujisasisha.</translation> <translation id="6003294706906016758">Huwasha fremu ya mtindo wa programu ya wavuti kwa programu zilizopangishwa</translation> @@ -4143,7 +4143,6 @@ <translation id="6637362044401670482">Huwasha matumizi ya kusogeza kibodi pepe.</translation> <translation id="6639554308659482635">Kumbukumbu ya SQLite</translation> <translation id="6643016212128521049">Futa</translation> -<translation id="6644756108386233011">Je, ungependa kuweka upya mipangilio iliyobadilishwa ya <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">URL ya Kupinga Mamlaka ya Uidhinishaji wa Netscape</translation> <translation id="6647838571840953560">Hivi sasa kwenye <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Subiri kidogo...</translation> @@ -4251,7 +4250,6 @@ <translation id="6810613314571580006">Ingia katika tovuti kiotomatiki ukitumia kitambulisho kilichohifadhiwa. Kipengele kikizimwa, utaombwa kuthibitisha kila wakati kabla ya kuingia katika tovuti.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> haiwezi kuendeshwa kama kina.</translation> <translation id="6812841287760418429">Weka mabadiliko</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> iligundua kwamba mipangilio ya kivinjari chako huenda imebadilishwa bila ufahamu wako. Ungependa kuirejesha katika chaguo-msingi lake la awali?</translation> <translation id="6815551780062710681">badilisha</translation> <translation id="6817358880000653228">Nenosiri la tovuti hii limehifadhiwa:</translation> <translation id="6820008762872335722">Fanya ikuulize wakati mwingine</translation> @@ -4368,6 +4366,7 @@ (inahitaji nenosiri la awali)</translation> <translation id="6981982820502123353">Upatikanaji</translation> <translation id="6981992744085917617">Chagua mbinu ambayo ungependa kutumia kuingia tena katika akaunti yako:</translation> +<translation id="698231206551913481">Faili na data zote za ndani zinazohusishwa na mtumiaji zitafutwa kabisa pindi tu mtumiaji huyu atakapoondolewa.</translation> <translation id="6982896539684144327">Printa kutoka <ph name="VENDOR_NAME" /> imetambuliwa</translation> <translation id="6983783921975806247">OID Iliyosajiliwa</translation> <translation id="6983991971286645866">Mabadiliko yote yatahifadhiwa kwenye $1.</translation> @@ -4380,7 +4379,7 @@ <translation id="6990778048354947307">Mandhari Kolevu</translation> <translation id="6991128190741664836">Baadaye</translation> <translation id="6991665348624301627">Chagua printa</translation> -<translation id="699220179437400583">Ripoti maelezo ya uwezekano wa matukio yasiyo salama kwa Google kiotomatiki</translation> +<translation id="699220179437400583">Tumia Google ripoti ya matukio yanayotishia usalama mtandaoni, kiotomatiki</translation> <translation id="6993929801679678186">Onyesha utabiri wa Kujaza kiotomatiki</translation> <translation id="6998711733709403587">Folda <ph name="SELCTED_FOLDERS_COUNT" /> zilizochaguliwa</translation> <translation id="6998872712520806535">{NUM_PAGES,plural, =1{Ukurasa unaofuata umekwama. Unaweza kuusubiri ili uanze kufanya kazi au uuangamize.}other{Kurasa zinazofuata zimekwama. Unaweza kuzisubiri ili zianze kufanya kazi au uziangamize.}}</translation> @@ -4454,6 +4453,7 @@ <translation id="7073555242265688099">Ikiwa una vifaa vingine vya Chrome, vitasawazishwa kiotomatiki, ili simu yako ivifungue pia.</translation> <translation id="707392107419594760">Chagua kibodi yako:</translation> <translation id="7075513071073410194">na Usimbaji wa RSA</translation> +<translation id="7075625805486468288">Dhibiti vyeti na mipangilio ya HTTPS/SSL</translation> <translation id="7076293881109082629">Unaingia katika akaunti</translation> <translation id="7077829361966535409">Ukurasa wa kuingia ulishindwa kupakiwa kutumia mipangilio ya sasa ya proksi. Tafadhali <ph name="GAIA_RELOAD_LINK_START" />jaribu tena kuingia<ph name="GAIA_RELOAD_LINK_END" />, au tumia <ph name="PROXY_SETTINGS_LINK_START" />mipangilio ya proksi<ph name="PROXY_SETTINGS_LINK_END" /> tofauti.</translation> <translation id="7077872827894353012">Vishikizi vya itifaki vilivyopuuzwa</translation> @@ -4501,7 +4501,6 @@ <translation id="7141105143012495934">Haikufaulu kuingia katika akaunti kwa sababu maelezo ya akaunti yako hayakupatikana. Tafadhali wasiliana na msimamizi wako au jaribu tena.</translation> <translation id="7143207342074048698">Inaunganisha</translation> <translation id="7144878232160441200">Jaribu tena</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> imelemazwa. Ili kuiwezesha upya, tafadhali nenda kwenye <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Printa za zamani</translation> <translation id="7154130902455071009">Badilisha ukurasa wako uwe: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Modi ya Kwanza ya Kichina ni Kichina Kilichorahisishwa</translation> @@ -4563,7 +4562,7 @@ <translation id="7243055093079293866">Sema "Ok Google" katika kichupo kipya na google.com</translation> <translation id="7243632151880336635">Futa na Uondoke kwenye Akaunti</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (Bora)</translation> -<translation id="724691107663265825">Tovuti iliyo mbele ina programu hasidi</translation> +<translation id="724691107663265825">Tovuti unayoelekea kufungua ina programu hasidi</translation> <translation id="725109152065019550">Samahani, msimamizi wako amelemaza hifadhi ya nje kwenye akaunti yako.</translation> <translation id="7252661675567922360">Usipakie</translation> <translation id="7253521419891527137">&Pata Maelezo Zaidi</translation> @@ -4647,7 +4646,7 @@ <translation id="7366909168761621528">Data ya kuvinjari</translation> <translation id="7369521049655330548">Programu-jalizi zinazofuata zilizuiwa kwenye ukurasa huu:</translation> <translation id="7371490661692457119">Upana chaguo-msingi wa kigae</translation> -<translation id="7373789336584437724">Kwa sasa kifaa hiki kinatuma kiotomatiki data ya utambuzi wa matatizo na matumizi kwa Google. Unaweza kubadilisha mipangilio hii wakati wowote katika <ph name="BEGIN_LINK1" />mipangilio<ph name="END_LINK1" /> ya kifaa chako. <ph name="BEGIN_LINK2" />Pata Maelezo zaidi<ph name="END_LINK2" /></translation> +<translation id="7373789336584437724">Kwa sasa kifaa hiki kinatuma kiotomatiki data kuhusu matumizi na utambuzi wa matatizo kwa Google. Unaweza kubadilisha mipangilio hii wakati wowote katika <ph name="BEGIN_LINK1" />mipangilio<ph name="END_LINK1" /> ya kifaa chako. <ph name="BEGIN_LINK2" />Pata Maelezo zaidi<ph name="END_LINK2" /></translation> <translation id="7374461526650987610">Vishikizi vya itifaki</translation> <translation id="7375125077091615385">Aina:</translation> <translation id="7376553024552204454">Angazia kishale cha kipanya kinaposonga</translation> @@ -4681,7 +4680,7 @@ <translation id="7403358905955888520">Zima sera ya kifaa cha ugunduzi otomatiki wa mfumo wa saa za eneo.</translation> <translation id="7405422715075171617">Washa kuchanganua nambari mpya ya kadi ya malipo unapojaza fomu ya kadi ya malipo.</translation> <translation id="740624631517654988">Kidirisha ibukizi kimezuiwa</translation> -<translation id="7406691462051376731">Kwa sasa kifaa hiki kinatuma data ya utambuzi wa matatizo na matumizi kwa Google. <ph name="BEGIN_LINK1" />Mipangilio<ph name="END_LINK1" /> hii inatekelezwa na mmiliki. <ph name="BEGIN_LINK2" />Pata Maelezo zaidi<ph name="END_LINK2" /></translation> +<translation id="7406691462051376731">Kwa sasa kifaa hiki kinatuma data kuhusu matumizi na utambuzi wa matatizo kwa Google. <ph name="BEGIN_LINK1" />Mipangilio<ph name="END_LINK1" /> hii inatekelezwa na mmiliki. <ph name="BEGIN_LINK2" />Pata Maelezo zaidi<ph name="END_LINK2" /></translation> <translation id="7409233648990234464">Zindua tena na Powerwash</translation> <translation id="7410344089573941623">Uliza iwapo <ph name="HOST" /> inataka kufikia kamera na maikrofoni yako</translation> <translation id="7411343637221933631">{NUM_COOKIES,plural, =1{1 kutoka kwenye tovuti hii}other{# kutoka kwenye tovuti hii}}</translation> @@ -4780,6 +4779,7 @@ <translation id="7540972813190816353">Hitilafu imetokea wakati wa kutafuta masasisho: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Vizuizi vya picha</translation> <translation id="7543104066686362383">Washa vipengele vya kutatua kwenye kifaa hiki cha <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Nenda kwenye <ph name="BEGIN_LINK_CHROMIUM" />usaidizi wa Google Chrome<ph name="END_LINK_CHROMIUM" /> ikiwa hupati unachotafuta.</translation> <translation id="7544853251252956727">Changanya</translation> <translation id="7545288882499673859">Mkakati wa kutupa hifadhi kwa ushughulikiaji bora wa shinikizo</translation> <translation id="7545415673537747415">Dhibiti namna Google inavyotumia historia ya jinsi unavyovinjari ili kuweka mapendeleo kwenye huduma ya Tafuta na Google, matangazo na huduma nyingine za Google kutoka kwenye <ph name="BEGIN_LINK" />Vidhibiti vya Shughuli za Google<ph name="END_LINK" />.</translation> @@ -4815,7 +4815,7 @@ <translation id="7582844466922312471">Data ya Simu</translation> <translation id="7583242026904249212"><ph name="DOMAIN" /> inataka utambulisho wa kifaa chako uthibitishwe na Google ili kubaini ustahiki kwa ajili ya kuimarisha uchezaji wa maudhui yanayolindwa. <ph name="LEARN_MORE" />.</translation> <translation id="7584802760054545466">Inaunganisha kwa <ph name="NETWORK_ID" /></translation> -<translation id="7586312264284919041">Ungependa kuutafsiri ukurasa huu?</translation> +<translation id="7586312264284919041">Ungependa kutafsiri ukurasa huu?</translation> <translation id="7586498138629385861">Chrome itaendelea kufanya kazi Programu za Chrome zikiwa wazi.</translation> <translation id="7587108133605326224">Kibaltiki</translation> <translation id="7589461650300748890">Lo! Kuwa mwangalifu!</translation> @@ -5017,7 +5017,6 @@ <translation id="7879478708475862060">Fuata programu ya kuingiza data</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" huongeza programu na viendelezi hivi:</translation> <translation id="7881969471599061635">Zima manukuu</translation> -<translation id="7884988936047469945">Vipengele vya ufikiaji wa majaribio</translation> <translation id="7885253890047913815">Printa ulizotumia hivi karibuni</translation> <translation id="7887192723714330082">Jibu "Ok Google" skrini ikiwa imewashwa na kufunguliwa</translation> <translation id="7887334752153342268">Maradufu</translation> @@ -5086,6 +5085,7 @@ <translation id="7974067550340408553">Pokea arifa kwenye simu yako kila wakati Smart Lock inapofungua <ph name="DEVICE_TYPE" /> yako.</translation> <translation id="7974566588408714340">Jaribu tena kutumia <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Angalia kwa ujumla</translation> +<translation id="7976960358280528247">Washa kiolesura cha mduara wa dirisha (majibu ya kuonekana ya Alt+Tab).</translation> <translation id="7977551819349545646">Inasasisha Chromebox...</translation> <translation id="7978412674231730200">Ufunguo binafsi</translation> <translation id="7979036127916589816">Hitilafu ya Usawazishaji</translation> @@ -5113,6 +5113,7 @@ Weka faili yako ya funguo mahali salama. Utaihitaji kuunda matoleo mapya ya kiendelezi chako.</translation> <translation id="799923393800005025">Unaweza kuangalia</translation> +<translation id="8000066093800657092">Hakuna mtandao</translation> <translation id="8004582292198964060">Kivinjari</translation> <translation id="8007030362289124303">Bateria Imepungua Moto</translation> <translation id="8008356846765065031">Intaneti imekatizwa. Tafadhali kagua muunganisho wako wa intaneti.</translation> @@ -5187,6 +5188,7 @@ <translation id="8116190140324504026">Maelezo zaidi…</translation> <translation id="8116483400482790018">Kamusi maalum ya tahajia</translation> <translation id="8116972784401310538">Kidhi&biti alamisho</translation> +<translation id="8117838550640702864">Mipangilio ya madokezo</translation> <translation id="8117957376775388318">Mbinu ya kuingiza data ya Dayi</translation> <translation id="8118860139461251237">Dhibiti vipakuliwa vyako</translation> <translation id="8119572489781388874">Rekebisha mipangilio</translation> @@ -5281,7 +5283,7 @@ <translation id="8226222018808695353">Hairuhusiwi</translation> <translation id="8226742006292257240">Hapa chini kuna nenosiri la TPM lililoundwa kinasibu ambalo limetolewa kwa kompyuta yako:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Wavamizi walio kwenye <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kwa sasa huenda wakajaribu kusakinisha programu hatari ambazo zinaiba au kufuta maelezo kwenye kifaa chako (kwa mfano, picha, manenosiri, ujumbe, na kadi za malipo).</translation> +<translation id="8230421197304563332">Huenda wavamizi walio kwenye <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kwa sasa wakajaribu kusakinisha programu hatari ambazo zinaiba au kufuta maelezo kwenye kifaa chako (kwa mfano, picha, manenosiri, ujumbe na kadi za mkopo).</translation> <translation id="8233254008506535819">Jumuisha chaguo za kuidhinisha tovuti muhimu katika kidirisha cha kufuta data ya kuvinjari.</translation> <translation id="8236231079192337250">Programu ya Ghala la Duka la Chrome kwenye Wavuti kwa viendeshaji vya printa</translation> <translation id="8238649969398088015">Dokezo la msaada</translation> @@ -5467,7 +5469,6 @@ <translation id="8472623782143987204">maunzi-imechelezwa</translation> <translation id="8475313423285172237">Programu nyingine kwenye kompyuta yako iliongeza kiendelezi ambacho kinaweza kubadilisha jinsi Chrome inavyofanya kazi.</translation> <translation id="8475647382427415476">Hifadhi ya Google haikuweza kusawazisha "<ph name="FILENAME" />" hivi sasa. Hifadhi ya Google itajaribu tena baadaye.</translation> -<translation id="8476195663057048998">Futa na Uweke upya</translation> <translation id="8477241577829954800">Mahali pake pamechukuliwa</translation> <translation id="8477384620836102176">&Kawaida</translation> <translation id="8480417584335382321">Kuza ukurasa:</translation> @@ -5697,7 +5698,6 @@ <translation id="8785135611469711856">Programu-jalizi Imekwama</translation> <translation id="8787254343425541995">Ruhusu proksi za mitandao iliyoshirikiwa</translation> <translation id="878763818693997570">Jina hili ni ndefu mno</translation> -<translation id="8787865569533773240">Kuweka upya kulibadilisha mipangilio ya <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Dhibiti watumiaji wengine</translation> <translation id="8791534160414513928">Tuma ombi la 'Usifuatilie' pamoja na trafiki yako ya kuvinjari</translation> <translation id="8795668016723474529">Ongeza kadi ya malipo</translation> @@ -5833,14 +5833,14 @@ <translation id="8982248110486356984">Badili watumiaji</translation> <translation id="8986267729801483565">Mahali pa vipakuliwa:</translation> <translation id="8986362086234534611">Sahau</translation> -<translation id="8986494364107987395">Tumia Google, moja kwa moja, takwimu za matumizi na ripoti za mara ambazo kivinjari kinaacha kufanya kazi</translation> +<translation id="8986494364107987395">Tumia Google takwimu za matumizi na ripoti za mara ambazo kivinjari kinaacha kufanya kazi, moja kwa moja</translation> <translation id="8987736167266086032">Endelea kutoka ulipoachia</translation> <translation id="8987927404178983737">Mwezi</translation> <translation id="899403249577094719">URL ya Msingi wa Vyeti wa Netscape</translation> <translation id="8994845581478641365">Zana ya Kujenga Akiba ya Fonti ya DirectWrite</translation> <translation id="8995603266996330174">Inadhibitiwa na <ph name="DOMAIN" /></translation> <translation id="8996526648899750015">Ongeza akaunti...</translation> -<translation id="8996941253935762404">Tovuti iliyo mbele ina programu zinazodhuru</translation> +<translation id="8996941253935762404">Tovuti unayoelekea kufungua ina programu zinazodhuru</translation> <translation id="8997135628821231"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (<ph name="DEVICE" />)</translation> <translation id="9000649589621199759">Haiwezi kupata simu yako. Hakikisha kuwa unatumia simu ya Android inayooana ambayo imewashwa na unayoweza kufikia. <a>Pata maelezo zaidi</a>></translation> <translation id="9001035236599590379">Aina ya MIME</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 0269ee56..8a5e9bc 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">பாதுகாப்பு காரணங்களுக்காக கோப்பை அணுக முடியவில்லை.</translation> <translation id="1675023460278456180">மெட்டீரியல் ஹைபிரிட்</translation> <translation id="167832068858235403">ஒலியைக் குறை</translation> -<translation id="1678331212993975953">தள விவரங்கள்</translation> <translation id="1679068421605151609">டெவலப்பர் கருவிகள்</translation> <translation id="1681120471812444678">பிரிண்டர்களைச் சேர்ப்பதற்கான அமைவு…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" />ஐப் பதிவுசெய்யவும்</translation> @@ -707,7 +706,7 @@ <translation id="1963227389609234879">அனைத்தையும் அகற்று</translation> <translation id="1965328510789761112">தனிப்பட்ட நினைவகம்</translation> <translation id="1965624977906726414">எந்தச் சிறப்பு அனுமதிகளும் இல்லை.</translation> -<translation id="1971177026734674543">மிகவும் குறுகியது (600மை.வி)</translation> +<translation id="1971177026734674543">மிகமிகக் குறுகியது (600மை.வி)</translation> <translation id="197288927597451399">வைத்திரு</translation> <translation id="1973491249112991739"><ph name="PLUGIN_NAME" /> பதிவிறக்கம் தோல்வியடைந்தது.</translation> <translation id="1974043046396539880">CRL பகிர்வுப் புள்ளிகள்</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">&முடிந்ததும் திற</translation> <translation id="2372036074421194686">உங்கள் கணினியில் வேண்டாத நிரல் (<ph name="UWS_NAME" />) நிறுவப்பட்டுள்ளதை Chrome கண்டறிந்தது. Chrome சுத்திகரிப்புக் கருவியை இயக்கி அதை நீங்கள் அகற்றலாம்.</translation> <translation id="2375701438512326360">தொடக்கத்தில் (தானியங்காக, இயல்புநிலையில்) டச்ஸ்கிரீன் கண்டறியப்படும்போது அதன் ஆதரவை எப்போதும் செயலாக்கத்தில் அல்லது முடக்கத்தில் வைக்கலாம்.</translation> -<translation id="2377619091472055321">மாற்றப்பட்ட <ph name="IDS_SHORT_PRODUCT_NAME" /> அமைப்புகளை மீட்டமை</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> கோப்புகள் தேர்ந்தெடுக்கப்பட்டன</translation> <translation id="2378982052244864789">நீட்டிப்பு கோப்பகத்தைத் தேர்ந்தெடு.</translation> <translation id="2379281330731083556">கணினி உரையாடலைப் பயன்படுத்தி அச்சிடுக…<ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">உங்கள் கணினியின் இயக்க முறைமையை எப்போதாவது மீட்டெடுக்க வேண்டுமெனில், உங்களுக்கு தேவையானதெல்லாம் மீட்பு SD அட்டை அல்லது USB நினைவகம் ஆகியவையே.</translation> <translation id="305932878998873762">HTTP க்கான எளிய தற்காலிகச் சேமிப்பு என்பது புதிய தற்காலிகச் சேமிப்புதான். வட்டு இடத்தின் ஒதுக்கீட்டிற்காக கோப்பு அமைப்பைச் சார்ந்திருக்கும்.</translation> <translation id="3062606427884046423">Chrome மீடியா அறிவிப்புகளுக்கு Android மீடியா ஸ்டைல் அறிவிப்புகளைப் பயன்படுத்து.</translation> +<translation id="3063224679438508013">குறிப்புப் பயன்பாட்டைத் தானாகத் தொடங்கு</translation> <translation id="3063844757726132584">இந்த எளிதான துவக்கியிலிருந்து உங்களின் எல்லா பயன்பாடுகளையும் அணுகலாம். கேம்கள் விளையாடலாம், வீடியோவின் மூலம் அரட்டையடிக்கலாம், இசையைக் கேட்கலாம், ஆவணங்களைத் திருத்தலாம் அல்லது கூடுதல் பயன்பாடுகளைப் பெறலாம்.</translation> <translation id="3064388234319122767">ஒலிபெயர்ப்பு (zdravo → здраво)</translation> <translation id="3065041951436100775">தாவல் நிறுத்தப்பட்டது பற்றிய கருத்து.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">கடவுச்சொற்களுக்கான Google Smart Lock</translation> <translation id="317583078218509884">பக்கத்தை மீண்டும் ஏற்றியபின் புதிய தள அனுமதிகள் செயலாக்கப்படும்.</translation> <translation id="3177048931975664371">கடவுச்சொல்லை மறைக்க கிளிக் செய்க</translation> +<translation id="3177909033752230686">பக்கத்தின் மொழி:</translation> <translation id="3180365125572747493">இந்த சான்றிதழ் கோப்பை என்க்ரிப்ட் செய்ய கடவுச்சொல்லை உள்ளிடுக.</translation> <translation id="3183139917765991655">புரோஃபைல் இம்போர்ட்டர்</translation> <translation id="3184560914950696195">$1 இல் சேமிக்க முடியவில்லை. திருத்தப்பட்ட படங்கள், பதிவிறக்கங்கள் கோப்புறையில் சேமிக்கப்படும்.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> ஆல் பதிவிறக்கப்பட்டது</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> ஐக் காட்டு</translation> <translation id="3613422051106148727">புதிய தாவலில் &திற</translation> +<translation id="3616113530831147358">ஆடியோ</translation> <translation id="3616741288025931835">உலாவல் தரவை &சுத்தமாக்கு...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />” எனத் தேடு</translation> <translation id="3620292326130836921">எல்லாம் காப்புப் பிரதி எடுக்கப்பட்டன!</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">&பெரிதாக்கு</translation> <translation id="3995964755286119116">Adobe Flash Player கேமரா அமைப்புகள் வித்தியாசமானவை.</translation> <translation id="39964277676607559">உள்ளடக்க ஸ்கிரிப்டுக்காக javascript '<ph name="RELATIVE_PATH" />' ஐ ஏற்ற முடியவில்லை.</translation> -<translation id="3996912167543967198">மீட்டமைக்கிறது...</translation> <translation id="3997015411467176489">பரிசோதனைக்குரிய கேன்வாஸ் அம்சங்கள்</translation> <translation id="4002066346123236978">தலைப்பு</translation> <translation id="40027638859996362">சொல் நகர்த்தல்</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">புஷ் செய்திகள்</translation> <translation id="4146026355784316281">எப்போதும் சிஸ்டம் வியூவரைக் கொண்டு திற</translation> <translation id="4146175323503586871">உங்கள் Chrome OS சாதனம் சலுகைக்குத் தகுதியானதா என்பதை <ph name="SERVICE_NAME" /> சோதிக்க விரும்புகிறது. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">காட்சி</translation> <translation id="4151403195736952345">குளோபல் இயல்பைப் பயன்படுத்து (கண்டறிதல்)</translation> <translation id="4152177296285305182">உங்கள் கடவுச்சொற்றொடரைக் கொண்டிருப்பவர்கள் மட்டுமே உங்களுடைய குறியாக்கப்பட்ட தரவைப் படிக்க முடியும் -- கடவுச்சொற்றொடரை Google அனுப்புவதோ அல்லது சேமித்து வைப்பதோ இல்லை. உங்கள் கடவுச்சொற்றொடரை மறந்துவிட்டீர்கள் என்றால், ஒத்திசைவை மீட்டமைக்க வேண்டும்.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 தாவல்}other{# தாவல்கள்}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">ஸ்கிரீன் ஷாட்</translation> <translation id="4250680216510889253">இல்லை</translation> <translation id="4253168017788158739">குறிப்பு</translation> +<translation id="4254813446494774748">மொழிபெயர்க்கப்படும் மொழி:</translation> <translation id="425573743389990240">வாட்ஸ் அலகில் பேட்டரி வெளியேற்ற வீதம் (எதிர்மறையான மதிப்பு என்பது பேட்டரி மின்னேற்றம் செய்யப்படுகிறது என பொருளாகும்)</translation> <translation id="4256316378292851214">வீடியோவை இவ்வாறு சே&மி...</translation> <translation id="4258348331913189841">கோப்பு முறைமைகள்</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">அச்சச்சோ, ஒத்திசைவு பணியை நிறுத்தியுள்ளது.</translation> <translation id="4366509400410520531">நீங்கள் அனுமதித்தவை</translation> <translation id="4367782753568896354">எங்களால் நிறுவ முடியவில்லை:</translation> +<translation id="436904870295243580">மேலும் குறிப்பெடுப்பதற்கான பயன்பாடுகளைக் கண்டறிக</translation> <translation id="4370975561335139969">உள்ளிட்ட மின்னஞ்சலும், கடவுச்சொல்லும் பொருந்தவில்லை.</translation> <translation id="437184764829821926">மேம்பட்ட எழுத்துரு அமைப்புகள்</translation> <translation id="4372884569765913867">1x1</translation> @@ -2653,7 +2656,7 @@ <translation id="4556110439722119938">புக்மார்க்குகள், வரலாறு, கடவுச்சொற்கள் மற்றும் பிற அமைப்புகள் ஆகியவை உங்கள் Google கணக்குடன் ஒத்திசைக்கப்படும் என்பதால் அவற்றை எல்லா சாதனங்களிலும் பயன்படுத்தலாம்</translation> <translation id="4557136421275541763">எச்சரிக்கை: </translation> <translation id="4558426062282641716">தானியங்கு துவக்கத்திற்கான அனுமதி கோரப்பட்டது</translation> -<translation id="4562991793854515912">மிகவும் குறுகியது (600 மை.வி)</translation> +<translation id="4562991793854515912">மிகமிகக் குறுகியது (600 மை.வி)</translation> <translation id="4563210852471260509">தொடக்க உள்ளீட்டு மொழி சீனம்</translation> <translation id="456664934433279154">டூல்கிட்-வியூஸ் சார்ந்த Chrome பயன்பாட்டுச் சாளரங்களைப் பயன்படுத்துவதைக் கட்டுப்படுத்தும்.</translation> <translation id="4567772783389002344">சொல்லைச் சேர்</translation> @@ -3209,6 +3212,7 @@ <translation id="5324674707192845912">தொலைநிலையிலிருந்து கண்டறிதல், தகவலை அழித்தல், பூட்டுதல் ஆகிய வசதிகளை, சாதனத்தில் முடக்க, இந்த <ph name="DEVICE_TYPE" />ஐ Google இல் பதிவுநீக்கப் போகிறீர்கள். இதற்குச் சாதனத்தை மறுதொடக்கம் செய்ய வேண்டியதிருக்கும். தொடர விரும்புகிறீர்களா?</translation> <translation id="5324780743567488672">எனது இருப்பிடத்தைப் பயன்படுத்தி, தானாகவே நேர மண்டலத்தை அமை</translation> <translation id="5325120507747984426">மேலோட்டப் பார்வைப் பயன்முறையில் நிலையான சாளர வரிசைப்படுத்தலைப் பயன்படுத்தும், அது மேலோட்டப் பார்வையில் நுழையும்போதும் / வெளியேறும்போதும், மேலோட்டப் பார்வை அமர்வுகளில் இருக்கும்போதும் சாளரங்கள் நகர்வதைக் குறைக்க முயற்சிக்கும்.</translation> +<translation id="5326182685622510062">2டி கேன்வாஸுக்குக் கிராஃபிக்ஸ் ரெண்டரிங் பைப்லைனின் பல்வேறு செயல்படுத்தல்கள் உள்ளன. இந்த வெவ்வேறு செயலாக்கங்களில் வெவ்வேறு செயல்திறன் சிறப்பியல்புகள் உள்ளன. இந்தக் கொடியை இயக்கினால், செயல்திறனை அதிகரிக்கும் பொருட்டு, கேன்வாஸ் எப்படிப் பயன்படுத்தப்படுகிறது என்னும் சூழ்நிலையின் அடிப்படையில் இந்தச் செயலாக்கங்களுக்கு இடையே கேன்வாஸ் 2டி சூழல்களை மாற்ற அனுமதிக்கும். எடுத்துக்காட்டாக, GPUஐப் பயன்படுத்தும் செயல்படுத்தலில் இருந்து அதைப் பயன்படுத்தாத செயல்படுத்தலுக்கு மாற்றுதல்.</translation> <translation id="5327248766486351172">பெயர்</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&நீக்கு</translation> @@ -3341,7 +3345,6 @@ <translation id="54870580363317966">இந்தக் கண்காணிக்கப்படும் பயனருக்கான தோற்றத்தைத் தேர்வுசெய்யவும்.</translation> <translation id="5488468185303821006">மறைநிலையில் அனுமதி</translation> <translation id="5489390182170331803">ஆவண நிலையில் செயலற்ற ஈவன்ட் லிசனர்களின் இயல்புநிலை</translation> -<translation id="5489789060051091748">படிக்கத் தேர்ந்தெடு: எதையேனும் ஒலி வடிவத்தில் கேட்க, தேடல் விசையைப் பிடித்திருந்து, கிளிக் செய்யவும் அல்லது இழுக்கவும்</translation> <translation id="549294555051714732">தன்னிரப்பி பரிந்துரைகளுக்கான உட்சர ஒப்பீடு</translation> <translation id="5493996328530898436">புதிய ஆடியோ பதிவுக் கலவை வியூகம்</translation> <translation id="5494362494988149300">&முடிந்ததும் திற</translation> @@ -3699,7 +3702,6 @@ <translation id="5991049340509704927">பெரிதாக்கலாம்</translation> <translation id="5991774521050363748">இணைய அறிவிப்புகளுக்கான தனிப்பயன் தளவமைப்புகளை இயக்கும். அவை நுணுக்கமான தளவமைப்பு மேம்படுத்தல்களைக் கொண்டிருக்கும்.</translation> <translation id="5993332328670040093">உங்கள் தரவுப் பயன்பாடு இனி அளவிடப்படாது.</translation> -<translation id="5996258716334177896">உங்கள் சுயவிவரத்தைச் சரியாக திறக்க முடியவில்லை. சில அம்சங்கள் கிடைக்காதிருக்கலாம். சுயவிவரம் இருக்கிறதா என்பதையும், அதன் உள்ளடக்கங்களைப் படிக்கவும் எழுதவும் உங்களுக்குள்ள அனுமதியையும் சரிபாருங்கள்.</translation> <translation id="6001799583597751002">பின்கள் பொருந்தவில்லை:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> தன்னையே புதுப்பிக்க இயலாது போகலாம்.</translation> <translation id="6003294706906016758">ஹோஸ்ட் செய்த பயன்பாடுகளுக்கான இணையப் பயன்பாட்டு நடைச் சட்டத்தை இயக்கும்</translation> @@ -4149,7 +4151,6 @@ <translation id="6637362044401670482">விர்ச்சுவல் விசைப்பலகை மிகைஉருட்டல் ஆதரவை இயக்கும்.</translation> <translation id="6639554308659482635">SQLite நினைவகம்</translation> <translation id="6643016212128521049">அழி</translation> -<translation id="6644756108386233011">மாற்றப்பட்ட <ph name="IDS_SHORT_PRODUCT_NAME" /> அமைப்புகளை மீட்டமைக்கவா?</translation> <translation id="6647228709620733774">Netscape சான்றளிக்கும் மைய தளர்த்தல் URL</translation> <translation id="6647838571840953560">தற்போதைய சேனல்: <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">சற்று காத்திருக்கவும்...</translation> @@ -4257,7 +4258,6 @@ <translation id="6810613314571580006">சேமித்த நற்சான்றிதழ்களைப் பயன்படுத்தி இணையதளங்களில் தானாகவே உள்நுழையும். இந்த அம்சம் முடக்கப்பட்டிருக்கும் போது, ஒவ்வொரு முறை இணையதளத்தில் உள்நுழைவதற்கு முன் உறுதிப்படுத்தும்படி கேட்கும்.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> ஐ மூலமாக இயக்க முடியாது.</translation> <translation id="6812841287760418429">மாற்றங்களை வைத்திரு</translation> -<translation id="6815353853907306610">உங்களுக்குத் தெரியாமலே உங்கள் உலாவியின் அமைப்புகள் ஒருவேளை மாற்றப்பட்டிருக்கலாம் என்பதை <ph name="IDS_SHORT_PRODUCT_NAME" /> கண்டறிந்துள்ளது. அதன் அசல் இயல்புநிலைகளுக்கு மீட்டமைக்க விரும்புகிறீர்களா?</translation> <translation id="6815551780062710681">மாற்று</translation> <translation id="6817358880000653228">இந்தத் தளத்திற்குச் சேமிக்கப்பட்ட கடவுச்சொற்கள்:</translation> <translation id="6820008762872335722">அனுமதி கேட்கும்படி மீட்டமை</translation> @@ -4374,6 +4374,7 @@ <translation id="6980956047710795611">எல்லா Chrome OS தரவுகளை புதிய கடவுச்சொல்லிற்கு மாற்று (முந்தைய கடவுச்சொல் அவசியம்)</translation> <translation id="6981982820502123353">அணுகல் தன்மை</translation> <translation id="6981992744085917617">உங்கள் கணக்கில் மீண்டும் உள்நுழைய பயன்படுத்த விரும்பும் முறையைத் தேர்வுசெய்யவும்:</translation> +<translation id="698231206551913481">இந்தப் பயனர் அகற்றப்பட்டதும், பயனருடன் தொடர்புடைய எல்லா கோப்புகளும் அகத் தரவும் நிரந்தரமாக நீக்கப்படும்.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> இன் பிரிண்டர் கண்டறியப்பட்டது</translation> <translation id="6983783921975806247">பதிவுசெய்யப்பட்ட OID</translation> <translation id="6983991971286645866">அனைத்து மாற்றங்களும் $1 இல் சேமிக்கப்படும்.</translation> @@ -4458,6 +4459,7 @@ <translation id="7073555242265688099">வேறு Chrome சாதனங்கள் இருப்பின், அவை தானாகவே ஒத்திசைக்கப்படும், எனவே உங்கள் மொபைல் மூலம் அவற்றையும் திறக்கலாம்.</translation> <translation id="707392107419594760">உங்கள் விசைப்பலகையைத் தேர்ந்தெடு:</translation> <translation id="7075513071073410194">RSA குறியாக்கத்துடன் PKCS #1 MD5</translation> +<translation id="7075625805486468288">HTTPS/SSL சான்றிதழ்களையும் அமைப்புகளையும் நிர்வகிக்கவும்</translation> <translation id="7076293881109082629">உள்நுழைகிறீர்கள்</translation> <translation id="7077829361966535409">தற்போதைய பிராக்ஸி அமைப்புகளைப் பயன்படுத்தி உள்நுழைவுப் பக்கத்தை ஏற்றுவது தோல்வியடைந்தது. <ph name="GAIA_RELOAD_LINK_START" />மீண்டும் உள்நுழைய முயற்சிக்கவும்<ph name="GAIA_RELOAD_LINK_END" /> அல்லது வேறொரு <ph name="PROXY_SETTINGS_LINK_START" />பிராக்ஸி அமைப்புகளைப்<ph name="PROXY_SETTINGS_LINK_END" /> பயன்படுத்தவும்.</translation> <translation id="7077872827894353012">புறக்கணிக்கப்பட்ட நெறிமுறை ஹேண்ட்லர்கள்</translation> @@ -4505,7 +4507,6 @@ <translation id="7141105143012495934">உங்கள் கணக்கு விவரங்களை மீட்டெடுக்க முடியாததால் உள்நுழைவு தோல்வியானது. உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும் அல்லது மீண்டும் முயலவும்.</translation> <translation id="7143207342074048698">இணைத்தல்</translation> <translation id="7144878232160441200">மீண்டும் முயலவும்</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> முடக்கப்பட்டுள்ளது. இதை மீண்டும் இயக்க, <ph name="CHROME_PLUGINS_LINK" /> க்குச் செல்க.</translation> <translation id="715118844758971915">கிளாசிக் பிரிண்டர்கள்</translation> <translation id="7154130902455071009">உங்கள் தொடக்கப் பக்கத்தை இதற்கு மாற்றவும்: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">தொடக்க சீனப் பயன்முறையானது எளிமையாக்கப்பட்ட சீனம்</translation> @@ -4651,7 +4652,7 @@ <translation id="7366909168761621528">உலாவல் தரவு</translation> <translation id="7369521049655330548">இந்தப் பக்கத்தில் தடுக்கப்பட்டுள்ள செருகுநிரல்கள்:</translation> <translation id="7371490661692457119">இயல்புநிலை அடுக்கின் அகலம்</translation> -<translation id="7373789336584437724">இந்தச் சாதனம் தற்போது பிழை அறிக்கையையும் உபயோகத் தரவையும் Googleக்கு அனுப்பும். இதை எப்போது வேண்டுமானாலும் சாதன <ph name="BEGIN_LINK1" />அமைப்புகளில்<ph name="END_LINK1" /> மாற்றலாம். <ph name="BEGIN_LINK2" />மேலும் அறிக<ph name="END_LINK2" /></translation> +<translation id="7373789336584437724">இந்தச் சாதனம் தற்போது பிழை அறிக்கையையும் உபயோகத் தரவையும் Googleக்கு அனுப்புகிறது. இதை எப்போது வேண்டுமானாலும் சாதன <ph name="BEGIN_LINK1" />அமைப்புகளில்<ph name="END_LINK1" /> மாற்றலாம். <ph name="BEGIN_LINK2" />மேலும் அறிக<ph name="END_LINK2" /></translation> <translation id="7374461526650987610">நெறிமுறை ஹேண்ட்லர்கள்</translation> <translation id="7375125077091615385">வகை:</translation> <translation id="7376553024552204454">மவுஸ் கர்சரை நகர்த்தும் போது, அதை ஹைலைட் செய்</translation> @@ -4679,7 +4680,7 @@ <translation id="7403358905955888520">system timezone automatic detection சாதனக் கொள்கையை முடக்கு.</translation> <translation id="7405422715075171617">கிரெடிட் கார்டு படிவத்தை நிரப்பும் போது, புதிய கிரெடிட் கார்டு எண்ணை ஸ்கேன் செய்வதை இயக்கு.</translation> <translation id="740624631517654988">மேல்-விரி தடுக்கப்பட்டது</translation> -<translation id="7406691462051376731">இந்தச் சாதனம் தற்போது பிழை அறிக்கையையும் உபயோகத் தரவையும் Googleக்கு அனுப்பும். இந்த <ph name="BEGIN_LINK1" />அமைப்பு<ph name="END_LINK1" /> உரிமையாளரால் செயல்படுத்தப்பட்டது. <ph name="BEGIN_LINK2" />மேலும் அறிக<ph name="END_LINK2" /></translation> +<translation id="7406691462051376731">இந்தச் சாதனம் தற்போது பிழை அறிக்கையையும் உபயோகத் தரவையும் Googleக்கு அனுப்புகிறது. இந்த <ph name="BEGIN_LINK1" />அமைப்பு<ph name="END_LINK1" /> உரிமையாளரால் செயல்படுத்தப்பட்டது. <ph name="BEGIN_LINK2" />மேலும் அறிக<ph name="END_LINK2" /></translation> <translation id="7409233648990234464">மீண்டும் தொடங்கி, பவர்வாஷ் செய்க</translation> <translation id="7410344089573941623">உங்கள் கேமராவையும் மைக்ரோஃபோனையும் <ph name="HOST" /> அணுக வேண்டுமெனில் கேட்கவும்</translation> <translation id="7411343637221933631">{NUM_COOKIES,plural, =1{இந்தத் தளத்திலிருந்து 1 குக்கீ}other{இந்தத் தளத்திலிருந்து # குக்கீகள்}}</translation> @@ -4778,6 +4779,7 @@ <translation id="7540972813190816353">புதுப்பிப்பதற்கு தேர்வுசெய்யும்போது பிழை ஏற்பட்டது: <ph name="ERROR" /></translation> <translation id="7541121857749629630">பட விதிவிலக்குகள்</translation> <translation id="7543104066686362383">இந்த <ph name="IDS_SHORT_PRODUCT_NAME" /> சாதனத்தில் பிழைதிருத்த அம்சங்களை இயக்கும்</translation> +<translation id="7543393759143837504">தேடுவது கிடைக்கவில்லை எனில், <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome உதவிக்குச்<ph name="END_LINK_CHROMIUM" /> செல்லவும்.</translation> <translation id="7544853251252956727">கலை</translation> <translation id="7545288882499673859">மேம்படுத்தப்பட்ட நெருக்கடி கையாளுதலுக்கான நினைவக விலக்கு உத்தி</translation> <translation id="7545415673537747415">தேடல், விளம்பரங்கள் மற்றும் பிற Google சேவைகளைத் தனிப்பயனாக்க, உங்கள் உலாவல் வரலாற்றை Google எவ்வாறு பயன்படுத்துகிறது என்பதை <ph name="BEGIN_LINK" />Google செயல்பாட்டுக் கட்டுப்பாடுகள்<ph name="END_LINK" /> என்பதில் கட்டுப்படுத்தலாம்.</translation> @@ -5013,7 +5015,6 @@ <translation id="7879478708475862060">உள்ளீட்டு முறையைப் பின்தொடர்</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />", இந்தப் பயன்பாடுகளையும் நீட்டிப்புகளையும் சேர்க்கும்:</translation> <translation id="7881969471599061635">வசனங்களை முடக்கு</translation> -<translation id="7884988936047469945">பரிசோதனைக்குரிய அணுகல்தன்மை அம்சங்கள்</translation> <translation id="7885253890047913815">சமீபத்திய இலக்குகள்</translation> <translation id="7887192723714330082">திரை இயக்கப்பட்டிருக்கும் போதும், திறக்கப்பட்டிருக்கும் போதும், "Ok Google"க்குப் பதிலளிக்கும்</translation> <translation id="7887334752153342268">பிரதி எடு</translation> @@ -5081,6 +5082,7 @@ <translation id="7974067550340408553"><ph name="DEVICE_TYPE" />ஐ Smart Lock ஒவ்வொரு முறை திறக்கும்போதும், உங்கள் ஃபோனில் அறிவிப்பைப் பெறவும்.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" />ஐப் பயன்படுத்த முயற்சி</translation> <translation id="7974936243149753750">ஓவர்ஸ்கேன்</translation> +<translation id="7976960358280528247">சாளர மாற்ற பயனர் இடைமுகத்தை இயக்கு (Alt+Tabக்கான காட்சி வடிவக் கருத்து).</translation> <translation id="7977551819349545646">Chromeboxஐப் புதுப்பிக்கிறது...</translation> <translation id="7978412674231730200">தனிப்பட்ட விசை</translation> <translation id="7979036127916589816">ஒத்திசைவு பிழை</translation> @@ -5108,6 +5110,7 @@ உங்கள் முக்கிய கோப்பை பாதுகாப்பான இடத்தில் வையுங்கள். உங்கள் நீட்டிப்பின் புதிய பதிப்புகளை நீங்கள் உருவாக்க வேண்டி ஏற்படும்.</translation> <translation id="799923393800005025">பார்க்கலாம்</translation> +<translation id="8000066093800657092">நெட்வொர்க் இல்லை</translation> <translation id="8004582292198964060">உலாவி</translation> <translation id="8007030362289124303">பேட்டரி குறைவு</translation> <translation id="8008356846765065031">இணையம் துண்டிக்கப்பட்டது. உங்கள் இணைய இணைப்பைச் சரிபார்க்கவும்.</translation> @@ -5182,6 +5185,7 @@ <translation id="8116190140324504026">மேலும் தகவல்கள்...</translation> <translation id="8116483400482790018">தனிப்பயன் எழுத்துவரிசை அகராதி</translation> <translation id="8116972784401310538">&புக்மார்க் நிர்வாகி</translation> +<translation id="8117838550640702864">குறிப்பு அமைப்புகள்</translation> <translation id="8117957376775388318">டாயி உள்ளீட்டு முறை</translation> <translation id="8118860139461251237">உங்கள் பதிவிறக்கங்களை நிர்வகிக்கவும்</translation> <translation id="8119572489781388874">அமைப்புகளை மாற்று</translation> @@ -5377,7 +5381,7 @@ <translation id="8373281062075027970">பார்ட்டி பெயர்: <ph name="PARTY_NAME" /></translation> <translation id="8373360586245335572">எல்லா தளங்களையும் அறிவிப்புகளைக் காட்ட அனுமதி</translation> <translation id="8373553483208508744">தாவல்களை முடக்கு</translation> -<translation id="8378285435971754261">உங்கள் இருப்பிடத்தை விரைவாகவும் துல்லியமாகவும் (பேட்டரி உபயோகத்தைக் குறைக்கலாம்) கண்டறிய பயன்பாடுகளுக்கு உதவ, Google இன் இருப்பிடச் சேவையை அனுமதிக்கவும். எந்தப் பயன்பாடும் இயங்காத போதும், அநாமதேய இருப்பிடத் தரவு Googleக்கு அனுப்பப்படும். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> +<translation id="8378285435971754261">உங்கள் இருப்பிடத்தை விரைவாகவும் துல்லியமாகவும் கண்டறிய பயன்பாடுகளுக்கு உதவ, Google இன் இருப்பிடச் சேவையை அனுமதிக்கவும் (இது பேட்டரி உபயோகத்தைக் குறைக்கலாம்). எந்தப் பயன்பாடும் இயங்காத போதும், அநாமதேய இருப்பிடத் தரவு Googleக்கு அனுப்பப்படும். <ph name="BEGIN_LINK1" />மேலும் அறிக<ph name="END_LINK1" /></translation> <translation id="8379970328220427967"><ph name="SPACE_AVAILABLE" /> இடம் காலியாக உள்ளது</translation> <translation id="8381055888183086563">தொகுக்கப்பட்ட பயன்பாடுகளுக்கான உறுப்பைக் கண்காணித்தல் போன்ற மெனு விருப்பங்களின் பிழைத்திருத்த சூழலை இயக்கும்.</translation> <translation id="8381179624334829711">கேமரா அமைப்புகளை நிர்வகிக்கவும்...</translation> @@ -5460,7 +5464,6 @@ <translation id="8472623782143987204">வன்பொருளைச் சார்ந்தது</translation> <translation id="8475313423285172237">உங்கள் கணினியில் உள்ள மற்றொரு நிரலானது, Chrome வேலைசெய்யும் வழியை மாற்றும் நீட்டிப்பைச் சேர்த்துள்ளது.</translation> <translation id="8475647382427415476">Google இயக்ககத்தால் "<ph name="FILENAME" />"ஐ இப்போது ஒத்திசைக்க முடியவில்லை. Google இயக்ககம் பிறகு முயற்சிக்கும்.</translation> -<translation id="8476195663057048998">அழித்து, மீட்டமை</translation> <translation id="8477241577829954800">இடமாற்றப்பட்டது</translation> <translation id="8477384620836102176">&பொது</translation> <translation id="8480417584335382321">பக்கத்தைப் பெரிதாக்கு:</translation> @@ -5691,7 +5694,6 @@ <translation id="8785135611469711856">செருகுநிரல் பதிலளிக்கவில்லை</translation> <translation id="8787254343425541995">பகிர்ந்த பிணையங்களில் புராக்ஸிகளை அனுமதி</translation> <translation id="878763818693997570">இந்தப் பெயர் மிக நீளமாக உள்ளது</translation> -<translation id="8787865569533773240">மாற்றப்பட்ட <ph name="IDS_SHORT_PRODUCT_NAME" /> அமைப்புகளை மீட்டமை</translation> <translation id="8789375980715484686">பிற பயனர்களை நிர்வகிக்கவும்</translation> <translation id="8791534160414513928">"கண்காணிக்க வேண்டாம்" என்ற கோரிக்கையுடன் எனது உலாவல் ட்ராஃபிக்கை அனுப்பு</translation> <translation id="8795668016723474529">கிரெடிட் கார்டைச் சேர்</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index ce436ca..a37d1154a 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">భద్రతా కారణాల దృష్ట్యా ఫైల్ను ప్రాప్యత చేయడం సాధ్యపడదు.</translation> <translation id="1675023460278456180">విశిష్ట మిశ్రమం</translation> <translation id="167832068858235403">వాల్యూ. తగ్గించు</translation> -<translation id="1678331212993975953">సైట్ వివరాలు</translation> <translation id="1679068421605151609">డెవలపర్ సాధనాలు</translation> <translation id="1681120471812444678">ప్రింటర్లను జోడించడానికి సెటప్ చేయండి...</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" />ని నమోదు చేయండి</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">&పూర్తవగానే తెరువు</translation> <translation id="2372036074421194686">Chrome మీ కంప్యూటర్లో అవాంఛిత ప్రోగ్రామ్ (<ph name="UWS_NAME" />)ను ఇన్స్టాల్ చేసినట్లు కనుగొన్నది. మీరు Chrome శుభ్రత సాధనాన్ని అమలు చేయడం ద్వారా దాన్ని తీసివేయవచ్చు.</translation> <translation id="2375701438512326360">టచ్స్క్రీన్ మద్దతును ఎల్లప్పుడూ ప్రారంభించబడి లేదా నిలిపివేయబడి ఉండేలా లేదా ప్రారంభంలో టచ్స్క్రీన్ కనుగొనబడినప్పుడు ప్రారంభించబడి ఉండేలా నిర్బంధించండి (స్వయంచాలకం, డిఫాల్ట్).</translation> -<translation id="2377619091472055321">మార్చబడిన <ph name="IDS_SHORT_PRODUCT_NAME" /> సెట్టింగ్లను రీసెట్ చేయండి</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> ఫైల్లు ఎంచుకోబడ్డాయి</translation> <translation id="2378982052244864789">పొడిగింపు డైరెక్టరీని ఎంచుకోండి.</translation> <translation id="2379281330731083556">సిస్టమ్ డైలాగ్ ఉపయోగించి ముద్రించు ...<ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">మీరు మీ కంప్యూటర్ యొక్క ఆపరేటింగ్ సిస్టమ్ని రీస్టోర్ చెయ్యాలనుకుంటే, మీకు రికవరీ SD కార్డ్ లేదా USB మెమరీ స్టిక్ అవసరం.</translation> <translation id="305932878998873762">HTTP కోసం సరళమైన కాష్ అనేది క్రొత్త కాష్. ఇది డిస్క్ స్థలం కేటాయింపు కోసం ఫైల్సిస్టమ్పై ఆధారపడుతుంది.</translation> <translation id="3062606427884046423">Chrome మీడియా నోటిఫికేషన్ల కోసం Android మీడియా శైలి నోటిఫికేషన్లను ఉపయోగిస్తుంది.</translation> +<translation id="3063224679438508013">విషయ సేకరణ అనువర్తనాన్ని స్వయంచాలకంగా ప్రారంభిస్తుంది</translation> <translation id="3063844757726132584">ఈ నిర్వాహక లాంచర్ నుండి మీ అన్ని అనువర్తనాలను ప్రాప్యత చేయండి. గేమ్లను ఆడండి, వీడియో చాట్ చేయండి, సంగీతం వినండి, పత్రాలను సవరించండి లేదా మరిన్ని అనువర్తనాలను పొందండి.</translation> <translation id="3064388234319122767">లిప్యంతరీకరణ (zdravo → здраво)</translation> <translation id="3065041951436100775">ట్యాబ్ మూసివేత అభిప్రాయం.</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">పాస్వర్డ్ల కోసం Google Smart Lock</translation> <translation id="317583078218509884">క్రొత్త సైట్ అనుమతుల సెట్టింగ్లు పేజీని మళ్లీ లోడ్ చేసిన తర్వాత ప్రభావితమవుతాయి.</translation> <translation id="3177048931975664371">పాస్వర్డ్ దాచుటకు క్లిక్ చేయండి</translation> +<translation id="3177909033752230686">పేజీ భాష:</translation> <translation id="3180365125572747493">దయచేసి ఈ ప్రమాణపత్రం ఫైల్ని గుప్తీకరించడానికి పాస్వర్డ్ని ఎంటర్ చెయ్యండి.</translation> <translation id="3183139917765991655">ప్రొఫైల్ ఇంపోర్టర్</translation> <translation id="3184560914950696195">$1కు సేవ్ చేయడం సాధ్యపడదు. సవరించిన చిత్రాలు డౌన్లోడ్ల ఫోల్డర్లో సేవ్ చేయబడతాయి.</translation> @@ -1998,6 +1998,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> ద్వారా డౌన్లోడ్ చేయబడింది</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" />ని చూపు</translation> <translation id="3613422051106148727">&క్రొత్త ట్యాబ్లో తెరువు</translation> +<translation id="3616113530831147358">ఆడియో</translation> <translation id="3616741288025931835">బ్రౌజింగ్ డేటాను &క్లియర్ చెయ్యి...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />”ని వెతకండి</translation> <translation id="3620292326130836921">అన్నీ బ్యాకప్ చేయబడ్డాయి!</translation> @@ -2294,7 +2295,6 @@ <translation id="3994878504415702912">&జూమ్ చెయ్యి</translation> <translation id="3995964755286119116">Adobe Flash Player కెమెరా సెట్టింగ్లు భిన్నమైనవి.</translation> <translation id="39964277676607559">కంటెంట్ స్క్రిప్ట్ కోసం javascript '<ph name="RELATIVE_PATH" />' లోడ్ చేయబడలేదు.</translation> -<translation id="3996912167543967198">రీసెట్ చేస్తోంది...</translation> <translation id="3997015411467176489">ప్రయోగాత్మక కాన్వాస్ లక్షణాలు</translation> <translation id="4002066346123236978">శీర్షిక</translation> <translation id="40027638859996362">పద తరలింపు</translation> @@ -2327,7 +2327,7 @@ <translation id="406070391919917862">నేపథ్య అనువర్తనాలు</translation> <translation id="4062251648694601778">మీ <ph name="SHORT_PRODUCT_NAME" /> పరికరాన్ని ఆస్వాదించండి. సందేహాలు ఉన్నాయా? మీరు స్థితి ట్రేలోని "?"ని క్లిక్ చేయడం ద్వారా ఎల్లవేళలా సహాయం పొందవచ్చు.</translation> <translation id="4065876735068446555">మీరు ఉపయోగిస్తున్న నెట్వర్క్ (<ph name="NETWORK_ID" />)కి మీరు దాని లాగిన్ పేజీని సందర్శించడం అవసరం కావచ్చు.</translation> -<translation id="4068506536726151626">మీ స్థానాన్ని ట్రాక్ చేస్తున్న క్రింది సైట్ల నుండి ఈ పేజీ ఎలిమెంట్లను కలిగి ఉంది:</translation> +<translation id="4068506536726151626">ఈ పేజీలో మీ స్థానాన్ని ట్రాక్ చేస్తున్న క్రింది సైట్ల ఎలిమెంట్లు ఉన్నాయి:</translation> <translation id="4070370845051020638">కాంటోనీస్ ఇన్పుట్ పద్ధతి</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: సైన్ ఇన్ లోపం</translation> <translation id="4072248638558688893">తమిళ కీబోర్డ్ (ఫొనెటిక్)</translation> @@ -2391,6 +2391,7 @@ <translation id="4140559601186535628">పుష్ సందేశాలు</translation> <translation id="4146026355784316281">ఎల్లప్పుడూ సిస్టమ్ వ్యూయర్తో తెరువు</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> ఒక ఆఫర్కు మీ Chrome OS పరికరం అర్హత కలిగి ఉందో లేదో తనిఖీ చేయడానికి అనుమతి కోరుతోంది. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">ప్రదర్శన</translation> <translation id="4151403195736952345">భౌగోళిక డిఫాల్ట్ను ఉపయోగించు (గుర్తించు)</translation> <translation id="4152177296285305182">మీ రహస్య పదబంధాన్ని కలిగిన వారు మాత్రమే మీ గుప్తీకరించిన డేటాను చదవగలరు. రహస్య పదబంధం Googleకు పంపబడదు లేదా దీనిలో నిల్వ చేయబడదు. మీరు మీ రహస్య పదబంధాన్ని మర్చిపోతే, మీరు సమకాలీకరణను రీసెట్ చేయాలి.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 ట్యాబ్}other{# ట్యాబ్లు}}</translation> @@ -2455,6 +2456,7 @@ <translation id="4250229828105606438">స్క్రీన్షాట్</translation> <translation id="4250680216510889253">కాదు</translation> <translation id="4253168017788158739">గమనిక</translation> +<translation id="4254813446494774748">అనువాద భాష:</translation> <translation id="425573743389990240">వాట్లలో బ్యాటరీ తరుగుదల రేట్ (రుణాత్మక విలువ ఉందంటే బ్యాటరీ ఛార్జ్ అవుతోందని అర్థం)</translation> <translation id="4256316378292851214">వీడియోను ఇలా సే&వ్ చెయ్యి...</translation> <translation id="4258348331913189841">ఫైల్ సిస్టమ్లు</translation> @@ -2532,6 +2534,7 @@ <translation id="4365673000813822030">అయ్యో, సమకాలీకరణ పని చేయడం ఆగిపోయింది.</translation> <translation id="4366509400410520531">మీరు అనుమతించారు</translation> <translation id="4367782753568896354">మేము వ్యవస్థాపించలేము:</translation> +<translation id="436904870295243580">మరిన్ని విషయ సేకరణ అనువర్తనాలను కనుగొనండి</translation> <translation id="4370975561335139969">మీరు నమోదు చేసిన ఇమెయిల్ మరియు పాస్వర్డ్ సరిపోలలేదు</translation> <translation id="437184764829821926">అధునాతన ఫాంట్ సెట్టింగ్లు</translation> <translation id="4372884569765913867">1x1</translation> @@ -3213,6 +3216,7 @@ <translation id="5324674707192845912">మీరు పరికరాన్ని రిమోట్ పద్ధతిలో గుర్తించే, డేటాను తొలగించే మరియు లాక్ చేసే సామర్థ్యాన్ని నిలిపివేయడానికి ఈ <ph name="DEVICE_TYPE" /> Googleతో కలిగి ఉన్న నమోదును తీసివేయబోతున్నారు. ఇందుకు రీబూట్ చేయడం అవసరం. మీరు కొనసాగాలనుకుంటున్నారా?</translation> <translation id="5324780743567488672">మీ స్థానాన్ని ఉపయోగించి సమయ మండలిని స్వయంచాలకంగా సెట్ చేయండి</translation> <translation id="5325120507747984426">స్థూలదృష్టి మోడ్లో స్థిర విండో క్రమాన్ని ఉపయోగిస్తుంది, ఇది స్థూలదృష్టిలోకి ప్రవేశిస్తున్నప్పుడు / నిష్క్రమిస్తున్నప్పుడు మరియు స్థూలదృష్టి సెషన్ల మధ్య విండోల కదలికను కనిష్టీకరించడానికి ప్రయత్నిస్తుంది.</translation> +<translation id="5326182685622510062">2డి కాన్వాస్ కోసం గ్రాఫిక్స్ అమలు పైప్లైన్లో అనేక ఆచరణలు ఉన్నాయి. ఈ వివిధ ఆచరణలు విబిన్న పనితీరు లక్షణాలను కలిగి ఉన్నాయి. ఈ ఫ్లాగ్ను ఆన్ చేయడం వలన పనితీరుని మెరుగుపరిచేందుకు కాన్వాస్ని ఉపయోగించాల్సిన విధానాన్ని ఈ ఆచరణల మధ్య సందర్భాలకు అనుగుణంగా అమలు చేయబడేలా మార్చడానికి కాన్వాస్ 2D అనుమతించబడుతుంది. ఉదాహరణకు, GPUని ఉపయోగించే ఆచరణ నుండి ఉపయోగించని దానికి మారడం వంటిది.</translation> <translation id="5327248766486351172">పేరు</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&తొలగించు</translation> @@ -3345,7 +3349,6 @@ <translation id="54870580363317966">ఈ పర్యవేక్షించబడే వినియోగదారు కోసం అవతార్ని ఎంచుకోండి.</translation> <translation id="5488468185303821006">అజ్ఞాతంలో అనుమతించు</translation> <translation id="5489390182170331803">పత్ర స్థాయి ఈవెంట్ శ్రోతల నిష్క్రియ డిఫాల్ట్</translation> -<translation id="5489789060051091748">చదివి వినిపించడానికి ఎంచుకోండి: శోధన కీని నొక్కి ఉంచి, ఆపై ఏదైనా చదివి వినిపించడానికి క్లిక్ చేయండి లేదా లాగండి</translation> <translation id="549294555051714732">స్వీయపూర్తి సూచనల కోసం ఉపవాక్య సరిపోలిక</translation> <translation id="5493996328530898436">కొత్త ఆడియో భాషాంతరీకరణ మిక్సింగ్ వ్యూహం</translation> <translation id="5494362494988149300">&పూర్తవగానే తెరువు</translation> @@ -3702,7 +3705,6 @@ <translation id="5991049340509704927">పెద్దదిగా చేయండి</translation> <translation id="5991774521050363748">వెబ్ నోటిఫికేషన్ల కోసం అనుకూల లేఅవుట్లను ప్రారంభిస్తుంది. ఇవి మరే విధంగానూ సాధ్యం కాని సూక్ష్మస్థాయి లేఅవుట్ మెరుగుదలలను కలిగి ఉంటాయి.</translation> <translation id="5993332328670040093">మీ డేటా వినియోగం ఇకపై గణించబడదు.</translation> -<translation id="5996258716334177896">మీ ప్రొఫైల్ సరిగ్గా తెరవబడదు. కొన్ని లక్షణాలు అందుబాటులో ఉండకపోవచ్చు. దయచేసి ప్రొఫైల్ ఉనికిలో ఉందో లేదో మరియు దాని కంటెంట్లను చదవడానికి మరియు వ్రాయడానికి మీకు అనుమతుందో లేదో తనిఖీ చేయండి.</translation> <translation id="6001799583597751002">PINలు సరిపోలలేదు:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" />దానిని అది అప్డేట్ చేసుకోలేకపోవచ్చు. </translation> <translation id="6003294706906016758">హోస్ట్ చేసిన అనువర్తనాల కోసం వెబ్ అనువర్తన శైలి ఫ్రేమ్ను ప్రారంభిస్తుంది</translation> @@ -4152,7 +4154,6 @@ <translation id="6637362044401670482">వర్చువల్ కీబోర్డ్ అతిస్క్రోల్కు మద్దతును ప్రారంభిస్తుంది.</translation> <translation id="6639554308659482635">SQLite మెమరీ</translation> <translation id="6643016212128521049">క్లియర్ చేయి</translation> -<translation id="6644756108386233011">మార్చబడిన <ph name="IDS_SHORT_PRODUCT_NAME" /> సెట్టింగ్లను రీసెట్ చేయాలా?</translation> <translation id="6647228709620733774">Netscape ప్రమాణపత్రం అధికార రద్దు URL</translation> <translation id="6647838571840953560">ప్రస్తుతం <ph name="CHANNEL_NAME" />లో ఉన్నారు</translation> <translation id="6649018507441623493">ఒక సెకను వేచి ఉండండి…</translation> @@ -4260,7 +4261,6 @@ <translation id="6810613314571580006">నిల్వ చేసిన ఆధారాలను ఉపయోగించి స్వయంచాలకంగా వెబ్సైట్లకు సైన్ ఇన్ చేస్తుంది. లక్షణాన్ని నిలిపివేసినప్పుడు, మీరు వెబ్సైట్కు సైన్ ఇన్ చేసే ప్రతిసారి నిర్ధారణ కోసం మిమ్మల్ని అడుగుతుంది.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> రూట్గా రన్ చేయలేదు.</translation> <translation id="6812841287760418429">మార్పులను ఉంచు</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> మీ బ్రౌజర్ సెట్టింగ్లు మీకు తెలియకుండానే మార్చబడి ఉండవచ్చని గుర్తించింది. మీరు వాటి యొక్క అసలు డిఫాల్ట్లకు వాటిని రీసెట్ చేయాలనుకుంటున్నారా?</translation> <translation id="6815551780062710681">సవరించు</translation> <translation id="6817358880000653228">ఈ సైట్ కోసం సేవ్ చేయబడిన పాస్వర్డ్లు:</translation> <translation id="6820008762872335722">అనుమతి అడిగేలా రీసెట్ చేయి</translation> @@ -4378,6 +4378,7 @@ <translation id="6980956047710795611">క్రొత్త పాస్వర్డ్కు మొత్తం Chrome OS డేటాను తరలించు (మునుపటి పాస్వర్డ్లు అవసరం)</translation> <translation id="6981982820502123353">ప్రాప్యత</translation> <translation id="6981992744085917617">మీ ఖాతాలోకి తిరిగి లాగిన్ చేయడానికి మీరు ఉపయోగించాలనుకునే పద్ధతిని ఎంచుకోండి:</translation> +<translation id="698231206551913481">ఈ వినియోగదారును తీసివేసిన తర్వాత ఈ వినియోగదారుతో అనుబంధించిన అన్ని ఫైల్లు మరియు స్థానిక డేటా శాశ్వతంగా తొలగించబడతాయి.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> నుండి ప్రింటర్ కనుగొనబడింది</translation> <translation id="6983783921975806247">రిజిస్టర్ చేసిన OID</translation> <translation id="6983991971286645866">అన్ని సవరణలు $1కి సేవ్ చేయబడతాయి.</translation> @@ -4462,6 +4463,7 @@ <translation id="7073555242265688099">మీకు ఇతర Chrome పరికరాలు ఉంటే, అవి స్వయంచాలకంగా సమకాలీకరించబడతాయి, అందువలన మీ ఫోన్ వాటిని కూడా అన్లాక్ చేస్తుంది.</translation> <translation id="707392107419594760">మీ కీబోర్డ్ని ఎంచుకోండి:</translation> <translation id="7075513071073410194">RSA గుప్తీకరణతో PKCS #1 MD5</translation> +<translation id="7075625805486468288">HTTPS/SSL ప్రమాణపత్రాలు మరియు సెట్టింగ్లను నిర్వహించండి</translation> <translation id="7076293881109082629">సైన్ ఇన్ చేస్తోంది</translation> <translation id="7077829361966535409">సైన్ ఇన్ పేజీ ప్రస్తుత ప్రాక్సీ సెట్టింగ్లను ఉపయోగించి లోడ్ కావడంలో విఫలమైంది. దయచేసి <ph name="GAIA_RELOAD_LINK_START" />మళ్లీ సైన్ ఇన్ చేయడానికి ప్రయత్నించండి<ph name="GAIA_RELOAD_LINK_END" /> లేదా విభిన్న <ph name="PROXY_SETTINGS_LINK_START" />ప్రాక్సీ సెట్టింగ్ల<ph name="PROXY_SETTINGS_LINK_END" />ను ఉపయోగించండి.</translation> <translation id="7077872827894353012">విస్మరించబడిన ప్రోటోకాల్ హ్యాండ్లెర్స్</translation> @@ -4509,7 +4511,6 @@ <translation id="7141105143012495934">మీ ఖాతా వివరాలను తిరిగి పొందలేనందున సైన్-ఇన్ విఫలమైంది. దయచేసి మీ నిర్వాహకుడిని సంప్రదించండి లేదా మళ్లీ ప్రయత్నించండి.</translation> <translation id="7143207342074048698">కనెక్ట్ అవుతోంది</translation> <translation id="7144878232160441200">మళ్లీ ప్రయత్నించండి</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> నిలిపివేయబడింది. దీన్ని మళ్లీ ప్రారంభించడానికి, దయచేసి <ph name="CHROME_PLUGINS_LINK" />కు వెళ్లండి.</translation> <translation id="715118844758971915">క్లాసిక్ ప్రింటర్లు</translation> <translation id="7154130902455071009">మీ ప్రారంభ పేజీని దీనికి మార్చండి: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">ప్రారంభ చైనీస్ మోడ్ అనేది సులభపరచిన చైనీస్</translation> @@ -4788,6 +4789,7 @@ <translation id="7540972813190816353">నవీకరణల కోసం తనిఖీ చేస్తున్నప్పుడు లోపం సంభవించింది: <ph name="ERROR" /></translation> <translation id="7541121857749629630">చిత్రం మినహాయింపులు</translation> <translation id="7543104066686362383">ఈ <ph name="IDS_SHORT_PRODUCT_NAME" /> పరికరంలో డీబగ్గింగ్ లక్షణాలను ప్రారంభించండి</translation> +<translation id="7543393759143837504">మీరు వెతుకుతున్నది మీకు కనిపించకపోతే <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome సహాయాని<ph name="END_LINK_CHROMIUM" />కి వెళ్లండి.</translation> <translation id="7544853251252956727">షఫుల్ చేయి</translation> <translation id="7545288882499673859">అధునాతన ఒత్తిడి నిర్వహణ కోసం మెమరీ పరిత్యాగ స్ట్రాటజీ</translation> <translation id="7545415673537747415">శోధన, ప్రకటనలు మరియు ఇతర Google సేవలను వ్యక్తిగతీకరించడం కోసం Google మీ బ్రౌజింగ్ చరిత్రను ఉపయోగించే విధానాన్ని <ph name="BEGIN_LINK" />Google కార్యాచరణ నియంత్రణలు<ph name="END_LINK" /> ద్వారా నియంత్రించండి.</translation> @@ -5025,7 +5027,6 @@ <translation id="7879478708475862060">ఇన్పుట్ మోడ్ను అనుసరించండి</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" ఈ అనువర్తనాలు మరియు పొడిగింపులను జోడిస్తుంది:</translation> <translation id="7881969471599061635">ఉపశీర్షికలను నిలిపివేయి</translation> -<translation id="7884988936047469945">ప్రయోగాత్మక ప్రాప్యత లక్షణాలు</translation> <translation id="7885253890047913815">ఇటీవలి గమ్యస్థానాలు</translation> <translation id="7887192723714330082">స్క్రీన్ ఆన్లో ఉండి, ఆన్లాక్ చేయబడినప్పుడు "Ok Google"కి ప్రతిస్పందించండి</translation> <translation id="7887334752153342268">నకిలీ</translation> @@ -5093,6 +5094,7 @@ <translation id="7974067550340408553">Smart Lock మీ <ph name="DEVICE_TYPE" />ని అన్లాక్ చేసే ప్రతిసారీ మీ ఫోన్లో నోటిఫికేషన్ పొందండి.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" />ని ఉపయోగించి మళ్లీ ప్రయత్నించు</translation> <translation id="7974936243149753750">ఓవర్స్కాన్ సర్దుబాటు</translation> +<translation id="7976960358280528247">విండో ఆవృత్తి UI (Alt+Tabకు దృశ్య అభిప్రాయం) ప్రారంభించండి.</translation> <translation id="7977551819349545646">Chromeboxని నవీకరిస్తోంది...</translation> <translation id="7978412674231730200">వ్యక్తిగత కీ</translation> <translation id="7979036127916589816">సమకాలీకరణ లోపం</translation> @@ -5117,6 +5119,7 @@ పొడిగింపు: <ph name="EXTENSION_FILE" />కీ ఫైల్: <ph name="KEY_FILE" />మీ కీ ఫైల్ను ఒక సురక్షితమైన స్థలంలో ఉంచండి. మీ పొడిగింపు యొక్క క్రొత్త సంస్కరణను సృష్టించడానికి మీకు ఇది అవసరం అవుతుంది.</translation> <translation id="799923393800005025">వీక్షించవచ్చు</translation> +<translation id="8000066093800657092">ఏ నెట్వర్క్ లేదు</translation> <translation id="8004582292198964060">బ్రౌజర్</translation> <translation id="8007030362289124303">తక్కువ బ్యాటరీ</translation> <translation id="8008356846765065031">ఇంటర్నెట్ డిస్కనెక్ట్ చేయబడింది. దయచేసి మీ ఇంటర్నెట్ కనెక్షన్ను తనిఖీ చేయండి.</translation> @@ -5191,6 +5194,7 @@ <translation id="8116190140324504026">మరింత సమాచారం...</translation> <translation id="8116483400482790018">అనుకూల అక్షరక్రమ నిఘంటువు</translation> <translation id="8116972784401310538">&బుక్మార్క్ నిర్వాహకుడు</translation> +<translation id="8117838550640702864">గమనిక సెట్టింగ్లు</translation> <translation id="8117957376775388318">డేయి ఇన్పుట్ పద్ధతి</translation> <translation id="8118860139461251237">మీ డౌన్లోడ్లను నిర్వహించండి</translation> <translation id="8119572489781388874">సెట్టింగ్లను సవరించు</translation> @@ -5469,7 +5473,6 @@ <translation id="8472623782143987204">హార్డ్వేర్-వెనుకకు చెయ్యి</translation> <translation id="8475313423285172237">మీ కంప్యూటర్లోని మరో ప్రోగ్రామ్ జోడించిన పొడిగింపు కారణంగా Chrome పని చేసే విధానం మారవచ్చు.</translation> <translation id="8475647382427415476">Google డిస్క్ ప్రస్తుతం "<ph name="FILENAME" />"ని సమకాలీకరించలేకపోయింది. Google డిస్క్ తర్వాత మళ్లీ ప్రయత్నిస్తుంది.</translation> -<translation id="8476195663057048998">తీసివేసి & రీసెట్ చేయి</translation> <translation id="8477241577829954800">బదులు పెట్టు</translation> <translation id="8477384620836102176">&సాధారణ</translation> <translation id="8480417584335382321">పేజీ జూమ్:</translation> @@ -5699,7 +5702,6 @@ <translation id="8785135611469711856">ప్లగిన్ ప్రతిస్పందించడం లేదు</translation> <translation id="8787254343425541995">భాగస్వామ్య నెట్వర్క్లకు ప్రాక్సీలను అనుమతించండి</translation> <translation id="878763818693997570">ఈ పేరు చాలా పొడవుగా ఉంది</translation> -<translation id="8787865569533773240">మార్చబడిన <ph name="IDS_SHORT_PRODUCT_NAME" /> సెట్టింగ్లను రీసెట్ చేయి</translation> <translation id="8789375980715484686">ఇతర వినియోగదారులను నిర్వహించండి</translation> <translation id="8791534160414513928">మీ బ్రౌజింగ్ రద్దీతో ‘ట్రాక్ చేయవద్దు’ అభ్యర్థనను పంపండి</translation> <translation id="8795668016723474529">క్రెడిట్ కార్డ్ను జోడించండి</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index f4cb4eb1..753868f 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">ไม่สามารถเข้าถึงไฟล์เนื่องจากเหตุผลด้านความปลอดภัย</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">ลดเสียง</translation> -<translation id="1678331212993975953">รายละเอียดเว็บไซต์</translation> <translation id="1679068421605151609">เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์</translation> <translation id="1681120471812444678">ตั้งค่าเพื่อเพิ่มเครื่องพิมพ์…</translation> <translation id="1682324559341535203">ลงทะเบียน <ph name="DEVICE_TYPE" /></translation> @@ -774,7 +773,7 @@ <translation id="2074527029802029717">ยกเลิกการตรึงแท็บ</translation> <translation id="2075594581020578008">เบราว์เซอร์ <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2076269580855484719">ซ่อนปลั๊กอินนี้</translation> -<translation id="2077084898869955643">รายงานรายละเอียดของเหตุการณ์ความปลอดภัยที่เป็นไปได้ต่อ Google โดยอัตโนมัติ <ph name="PRIVACY_PAGE_LINK" /></translation> +<translation id="2077084898869955643">รายงานรายละเอียดของเหตุการณ์ด้านความปลอดภัยที่อาจจะเกิดขึ้นต่อ Google โดยอัตโนมัติ <ph name="PRIVACY_PAGE_LINK" /></translation> <translation id="2077129598763517140">ใช้การเร่งฮาร์ดแวร์เมื่อสามารถใช้ได้</translation> <translation id="2078019350989722914">เตือนก่อนออก (<ph name="KEY_EQUIVALENT" />)</translation> <translation id="2079053412993822885">หากคุณลบใบรับรองใบใดของคุณ คุณจะใช้ใบรับรองนั้นเพื่อระบุตัวตนของคุณไม่ได้อีก</translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">เปิดเมื่อเ&สร็จ</translation> <translation id="2372036074421194686">Chrome พบโปรแกรมไม่พึงประสงค์ (<ph name="UWS_NAME" />) ติดตั้งในคอมพิวเตอร์ของคุณ คุณอาจนำออกได้โดยเรียกใช้เครื่องมือทำความสะอาด Chrome</translation> <translation id="2375701438512326360">บังคับการสนับสนุนหน้าจอสัมผัสให้เปิดหรือปิดใช้งานตลอดเวลา หรือเปิดใช้งานเมื่อตรวจพบหน้าจอสัมผัสเมื่อเริ่มการทำงาน (อัตโนมัติ, ค่าเริ่มต้น)</translation> -<translation id="2377619091472055321">รีเซ็ตการตั้งค่า <ph name="IDS_SHORT_PRODUCT_NAME" /> ที่ปรับปรุงแก้ไข</translation> <translation id="2378075407703503998">เลือก <ph name="SELCTED_FILE_COUNT" /> ไฟล์</translation> <translation id="2378982052244864789">เลือกไดเรกทอรีของส่วนขยาย</translation> <translation id="2379281330731083556">พิมพ์โดยใช้ช่องโต้ตอบของระบบ... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">หากคุณจำเป็นต้องกู้คืนระบบปฏิบัติการของเครื่องคอมพิวเตอร์ คุณจะต้องมีการ์ด SD หรืออุปกรณ์หน่วยความจำ USB สำหรับการกู้คืน</translation> <translation id="305932878998873762">แคชพื้นฐานสำหรับ HTTP เป็นแคชใหม่ ซึ่งขึ้นอยู่กับระบบไฟล์สำหรับการจัดสรรเนื้อที่ในดิสก์</translation> <translation id="3062606427884046423">ใช้การแจ้งเตือน Android MediaStyle สำหรับการแจ้งเตือนสื่อของ Chrome</translation> +<translation id="3063224679438508013">เปิดแอปจดบันทึกโดยอัตโนมัติ</translation> <translation id="3063844757726132584">เข้าถึงทุกแอปของคุณจากตัวเรียกใช้งานที่ใช้ง่ายนี้ เล่นเกม วิดีโอแชท ฟังเพลง แก้ไขเอกสาร หรือรับแอปเพิ่ม</translation> <translation id="3064388234319122767">การทับศัพท์ (zdravo → здраво)</translation> <translation id="3065041951436100775">แตะความคิดเห็นที่ปิดไป</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock สำหรับรหัสผ่าน</translation> <translation id="317583078218509884">การตั้งค่าการอนุญาตไซต์ใหม่จะมีผลหลังจากโหลดซ้ำหน้าเว็บนี้</translation> <translation id="3177048931975664371">คลิกเพื่อซ่อนรหัสผ่าน</translation> +<translation id="3177909033752230686">ภาษาหน้าเว็บ:</translation> <translation id="3180365125572747493">ป้อนรหัสผ่านเพื่อเข้ารหัสไฟล์ใบรับรองนี้</translation> <translation id="3183139917765991655">ตัวนำเข้าโปรไฟล์</translation> <translation id="3184560914950696195">ไม่สามารถบันทึกลงใน $1 ภาพที่แก้ไขจะถูกบันทึกไว้ในโฟลเดอร์ "ดาวน์โหลด"</translation> @@ -1997,6 +1997,7 @@ <translation id="3612673635130633812">ดาวน์โหลดโดย <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">แสดง <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&เปิดในแท็บใหม่่</translation> +<translation id="3616113530831147358">เสียง</translation> <translation id="3616741288025931835">&ล้างข้อมูลการท่องเว็บ...</translation> <translation id="3618849550573277856">ค้นหา “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">สำรองข้อมูลทั้งหมดแล้ว!</translation> @@ -2111,7 +2112,7 @@ <translation id="3764583730281406327">{NUM_DEVICES,plural, =1{สื่อสารกับอุปกรณ์ USB 1 เครื่อง}other{สื่อสารกับอุปกรณ์ USB # เครื่อง}}</translation> <translation id="3764800135428056022">เสนอการบันทึกรหัสผ่านเว็บของคุณ</translation> <translation id="3764986667044728669">ไม่สามารถลงทะเบียน</translation> -<translation id="3765285310188645110">เปิดใช้หน้าออฟไลน์เพื่อแชร์</translation> +<translation id="3765285310188645110">เปิดใช้การแชร์หน้าออฟไลน์</translation> <translation id="3768037234834996183">กำลังซิงค์ค่ากำหนดของคุณ...</translation> <translation id="3771294271822695279">ไฟล์วิดีโอ</translation> <translation id="3774278775728862009">วิธีป้อนข้อมูลภาษาไทย (แป้นพิมพ์ TIS-820.2538)</translation> @@ -2293,7 +2294,6 @@ <translation id="3994878504415702912">ซู&ม</translation> <translation id="3995964755286119116">การตั้งค่ากล้องถ่ายรูปของ Adobe Flash Player จะแตกต่างกันไป</translation> <translation id="39964277676607559">ไม่สามารถโหลด javascript "<ph name="RELATIVE_PATH" />" สำหรับสคริปต์เนื้อหา</translation> -<translation id="3996912167543967198">กำลังรีเซ็ต...</translation> <translation id="3997015411467176489">คุณลักษณะ Canvas รุ่นทดสอบ</translation> <translation id="4002066346123236978">ชื่อ</translation> <translation id="40027638859996362">ย้ายคำ</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">ข้อความพุช</translation> <translation id="4146026355784316281">เปิดด้วยโปรแกรมดูของระบบทุกครั้ง</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> ต้องการตรวจสอบว่าอุปกรณ์ Chrome OS ของคุณมีสิทธิ์ในข้อเสนอพิเศษไหม <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">การแสดงผล</translation> <translation id="4151403195736952345">ใช้ค่าเริ่มต้นส่วนกลาง (ตรวจหา)</translation> <translation id="4152177296285305182">เฉพาะผู้ที่มีข้อความรหัสผ่านของคุณเท่านั้นจึงจะสามารถอ่านข้อมูลที่เข้ารหัสของคุณได้ Google จะไม่ได้รับหรือจัดเก็บข้อความรหัสผ่านนี้ หากคุณลืมข้อความรหัสผ่าน คุณจะต้องรีเซ็ตการซิงค์</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 แท็บ}other{# แท็บ}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">ภาพหน้าจอ</translation> <translation id="4250680216510889253">ไม่มี</translation> <translation id="4253168017788158739">หมายเหตุ</translation> +<translation id="4254813446494774748">ภาษาที่แปล:</translation> <translation id="425573743389990240">อัตราการใช้แบตเตอรี่เป็นวัตต์ (ค่าลบหมายถึงแบตเตอรี่กำลังชาร์จ)</translation> <translation id="4256316378292851214">บั&นทึกวิดีโอเป็น...</translation> <translation id="4258348331913189841">ระบบไฟล์</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">อ๊ะ การซิงค์หยุดทำงาน</translation> <translation id="4366509400410520531">อนุญาตโดยคุณ</translation> <translation id="4367782753568896354">เราไม่สามารถติดตั้ง:</translation> +<translation id="436904870295243580">ค้นหาแอปพลิเคชันสำหรับการจดบันทึกอื่นๆ</translation> <translation id="4370975561335139969">อีเมลและรหัสผ่านที่คุณป้อนไม่ตรงกัน</translation> <translation id="437184764829821926">การตั้งค่าแบบอักษรขึ้นสูง</translation> <translation id="4372884569765913867">1x1</translation> @@ -3211,6 +3214,7 @@ <translation id="5324674707192845912">คุณกำลังจะยกเลิกการลงทะเบียน <ph name="DEVICE_TYPE" /> เครื่องนี้กับ Google เพื่อปิดใช้ความสามารถในการค้นหา ล้างข้อมูล และล็อกอุปกรณ์ระยะไกล การดำเนินการนี้จำเป็นต้องรีบูตเครื่อง คุณต้องการดำเนินการต่อไหม</translation> <translation id="5324780743567488672">ตั้งค่าเขตเวลาโดยอัตโนมัติโดยใช้ตำแหน่งของคุณ</translation> <translation id="5325120507747984426">ใช้การจัดลำดับหน้าต่างที่มีเสถียรภาพในโหมดภาพรวมซึ่งจะพยายามลดการเคลื่อนไหวของหน้าต่างเมื่อเข้า/ออกจากโหมดภาพรวมและในระหว่างเซสชันของโหมดภาพรวม</translation> +<translation id="5326182685622510062">มีการใช้งานช่องทางการแสดงภาพกราฟิกสำหรับ Canvas แบบ 2 มิติหลายครั้ง การใช้งานที่แตกต่างกันเหล่านี้มีคุณลักษณะด้านประสิทธิภาพที่แตกต่างกัน การเปิดคำถามติดธงทำให้บริบท Canvas แบบ 2 มิติสามารถสลับไปมาระหว่างการใช้งานเหล่านี้ได้ทันทีตามวิธีใช้ Canvas เพื่อเสริมประสิทธิภาพ เช่น การเปลี่ยนจากการใช้งานที่ใช้ GPU ไปเป็นแบบที่ไม่ใช้ GPU</translation> <translation id="5327248766486351172">ชื่อ</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&ลบ</translation> @@ -3343,7 +3347,6 @@ <translation id="54870580363317966">เลือกอวาตาร์สำหรับผู้ใช้ภายใต้การดูแลนี้</translation> <translation id="5488468185303821006">อนุญาตให้ใช้โหมดไม่ระบุตัวตน</translation> <translation id="5489390182170331803">ค่าเริ่มต้นของ Listener เหตุการณ์แบบแพสซีฟระดับเอกสาร</translation> -<translation id="5489789060051091748">เลือกเพื่อพูด: กดแป้น Search ค้างไว้ แล้วคลิกหรือลากเพื่อพูดอะไรก็ได้</translation> <translation id="549294555051714732">สตริงย่อยที่ตรงกับคำแนะนำในการป้อนข้อความอัตโนมัติ</translation> <translation id="5493996328530898436">วิธีมิกซ์เมื่อเรนเดอร์เสียงแบบใหม่</translation> <translation id="5494362494988149300">เปิดเมื่อเ&สร็จ</translation> @@ -3700,7 +3703,6 @@ <translation id="5991049340509704927">ขยาย</translation> <translation id="5991774521050363748">เปิดใช้รูปแบบที่กำหนดเองสำหรับการแจ้งเตือนในเว็บ การแจ้งเตือนนี้จะมีการปรับปรุงรูปแบบอย่างละเอียด ซึ่งหากไม่เปิดใช้ จะไม่สามารถทำได้</translation> <translation id="5993332328670040093">ระบบจะไม่วัดการใช้อินเทอร์เน็ตของคุณอีกต่อไป</translation> -<translation id="5996258716334177896">ไม่สามารถเปิดโปรไฟล์ของคุณอย่างถูกต้องได้ คุณลักษณะบางอย่างอาจใช้งานไม่ได้ โปรดตรวจสอบว่าโปรไฟล์นี้มีอยู่และคุณได้รับอนุญาตให้อ่านและเขียนเนื้อหาลงในนั้น</translation> <translation id="6001799583597751002">PIN ไม่ตรงกัน:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> อาจไม่สามารถอัปเดตตัวเองได้ตลอดเวลา</translation> <translation id="6003294706906016758">เปิดใช้เฟรมรูปแบบเว็บแอปสำหรับแอปที่โฮสต์</translation> @@ -4150,7 +4152,6 @@ <translation id="6637362044401670482">เปิดใช้การสนับสนุนการเลื่อนไปจนสุดของแป้นพิมพ์เสมือน</translation> <translation id="6639554308659482635">หน่วยความจำ SQLite</translation> <translation id="6643016212128521049">ล้าง</translation> -<translation id="6644756108386233011">รีเซ็ตการตั้งค่า <ph name="IDS_SHORT_PRODUCT_NAME" /> ที่ปรับปรุงแก้ไขไหม</translation> <translation id="6647228709620733774">URL การเพิกถอนผู้ออกใบรับรองของ Netscape</translation> <translation id="6647838571840953560">ขณะนี้อยู่ที่ช่อง <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">รอสักครู่...</translation> @@ -4258,7 +4259,6 @@ <translation id="6810613314571580006">ลงชื่อเข้าใช้เว็บไซต์โดยอัตโนมัติโดยใช้ข้อมูลรับรองที่เก็บไว้ เมื่อคุณลักษณะนี้ปิดอยู่ ระบบจะขอให้คุณยืนยันทุกครั้งก่อนลงชื่อเข้าใช้เว็บไซต์</translation> <translation id="6812349420832218321">ไม่สามารถเรียกใช้ <ph name="PRODUCT_NAME" /> ในฐานะผู้ใช้ระดับราก</translation> <translation id="6812841287760418429">เก็บการเปลี่ยนแปลงไว้</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> ตรวจพบว่าการตั้งค่าเบราว์เซอร์ของคุณอาจถูกเปลี่ยนแปลงโดยที่คุณไม่ทราบ คุณต้องการรีเซ็ตการตั้งค่าให้เป็นค่าเริ่มต้นดั้งเดิมไหม</translation> <translation id="6815551780062710681">แก้ไข</translation> <translation id="6817358880000653228">รหัสผ่านที่บันทึกไว้สำหรับไซต์นี้:</translation> <translation id="6820008762872335722">รีเซ็ตเพื่อให้ถาม</translation> @@ -4375,6 +4375,7 @@ <translation id="6980956047710795611">ย้ายข้อมูล Chrome OS ทั้งหมดไปใช้รหัสผ่านใหม่ (ต้องใส่รหัสผ่านก่อนหน้า)</translation> <translation id="6981982820502123353">การเข้าถึง</translation> <translation id="6981992744085917617">เลือกวิธีการที่คุณต้องการใช้ในการกลับเข้าสู่ระบบบัญชีของคุณ</translation> +<translation id="698231206551913481">ระบบจะลบไฟล์ทั้งหมดและข้อมูลในเครื่องที่เชื่อมโยงกับผู้ใช้รายนี้ออกอย่างถาวรหลังจากนำผู้ใช้รายนี้ออกแล้ว</translation> <translation id="6982896539684144327">ตรวจพบเครื่องพิมพ์ <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">OID ที่ลงทะเบียนแล้ว</translation> <translation id="6983991971286645866">การแก้ไขทั้งหมดจะบันทึกเป็น $1</translation> @@ -4387,7 +4388,7 @@ <translation id="6990778048354947307">ธีมสีเข้ม</translation> <translation id="6991128190741664836">ในภายหลัง</translation> <translation id="6991665348624301627">เลือกปลายทาง</translation> -<translation id="699220179437400583">รายงานรายละเอียดของเหตุการณ์ความปลอดภัยที่เป็นไปได้ต่อ Google โดยอัตโนมัติ</translation> +<translation id="699220179437400583">รายงานรายละเอียดของเหตุการณ์ด้านความปลอดภัยที่อาจจะเกิดขึ้นต่อ Google โดยอัตโนมัติ</translation> <translation id="6993929801679678186">แสดงการคาดคะเนการป้อนอัตโนมัติ</translation> <translation id="6998711733709403587">เลือก <ph name="SELCTED_FOLDERS_COUNT" /> โฟลเดอร์</translation> <translation id="6998872712520806535">{NUM_PAGES,plural, =1{หน้าต่อไปนี้ไม่มีการตอบสนอง คุณสามารถรอให้ตอบสนองหรือปิดไปเลยได้}other{หน้าต่อไปนี้ไม่มีการตอบสนอง คุณสามารถรอให้ตอบสนองหรือปิดไปเลยได้}}</translation> @@ -4459,6 +4460,7 @@ <translation id="7073555242265688099">หากคุณมีอุปกรณ์ Chrome เครื่องอื่นๆ ด้วย อุปกรณ์เหล่านั้นจะซิงค์โดยอัตโนมัติ เพื่อให้โทรศัพท์ของคุณปลดล็อกอุปกรณ์เหล่านั้นด้วย</translation> <translation id="707392107419594760">เลือกแป้นพิมพ์:</translation> <translation id="7075513071073410194">PKCS #1 MD5 พร้อมการเข้ารหัส RSA</translation> +<translation id="7075625805486468288">จัดการใบรับรอง HTTPS/SSL และการตั้งค่า</translation> <translation id="7076293881109082629">กำลังลงชื่อเข้าใช้</translation> <translation id="7077829361966535409">หน้าลงชื่อเข้าใช้ไม่สามารถโหลดโดยใช้การตั้งค่าพร็อกซีในปัจจุบัน โปรด <ph name="GAIA_RELOAD_LINK_START" />ลองลงชื่อเข้าใช้อีกครั้ง<ph name="GAIA_RELOAD_LINK_END" /> หรือใช้<ph name="PROXY_SETTINGS_LINK_START" />การตั้งค่าพร็อกซี<ph name="PROXY_SETTINGS_LINK_END" />อื่นๆ</translation> <translation id="7077872827894353012">ตัวจัดการโปรโตคอลที่ละเว้น</translation> @@ -4506,7 +4508,6 @@ <translation id="7141105143012495934">การลงชื่อเข้าใช้ล้มเหลวเนื่องจากไม่สามารถเรียกคืนรายละเอียดบัญชีของคุณได้ โปรดติดต่อผู้ดูแลระบบของคุณหรือลองอีกครั้ง</translation> <translation id="7143207342074048698">กำลังเชื่อมต่อ</translation> <translation id="7144878232160441200">ลองอีกครั้ง</translation> -<translation id="7148311641502571842">ปลั๊กอิน <ph name="PLUGIN_NAME" /> ถูกปิดใช้งานแล้ว หากต้องการเปิดใช้งานใหม่ โปรดไปที่ <ph name="CHROME_PLUGINS_LINK" /></translation> <translation id="715118844758971915">เครื่องพิมพ์แบบเดิม</translation> <translation id="7154130902455071009">เปลี่ยนหน้าเริ่มต้นของคุณเป็น: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">โหมดภาษาจีนเบื้องต้นคือจีนตัวย่อ</translation> @@ -4568,7 +4569,7 @@ <translation id="7243055093079293866">พูดว่า "Ok Google" ในแท็บใหม่และ google.com</translation> <translation id="7243632151880336635">ล้างและออกจากระบบ</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (ดีที่สุด)</translation> -<translation id="724691107663265825">ไซต์ข้างหน้ามีมัลแวร์</translation> +<translation id="724691107663265825">ไซต์ที่จะเปิดมีมัลแวร์</translation> <translation id="725109152065019550">ขออภัย ผู้ดูแลระบบของคุณได้ปิดใช้งานพื้นที่เก็บข้อมูลภายนอกกับบัญชีของคุณ</translation> <translation id="7252661675567922360">ไม่โหลด</translation> <translation id="7253521419891527137">&เรียนรู้เพิ่มเติม</translation> @@ -4785,6 +4786,7 @@ <translation id="7540972813190816353">เกิดข้อผิดพลาดในขณะทำการตรวจสอบการอัปเดต: <ph name="ERROR" /></translation> <translation id="7541121857749629630">ข้อยกเว้นรูปภาพ</translation> <translation id="7543104066686362383">เปิดใช้คุณลักษณะการแก้ไขข้อบกพร่องบนอุปกรณ์ <ph name="IDS_SHORT_PRODUCT_NAME" /> นี้</translation> +<translation id="7543393759143837504">ไปที่<ph name="BEGIN_LINK_CHROMIUM" />ศูนย์ช่วยเหลือ Google Chrome<ph name="END_LINK_CHROMIUM" /> หากคุณไม่พบข้อมูลที่กำลังค้นหา</translation> <translation id="7544853251252956727">สุ่มเพลง</translation> <translation id="7545288882499673859">กลยุทธ์การยกเลิกหน่วยความจำสำหรับการจัดการการใช้หน่วยความจำขั้นสูง</translation> <translation id="7545415673537747415">ควบคุมวิธีที่ Google ใช้ประวัติการท่องเว็บของคุณเพื่อปรับเปลี่ยนการค้นหา โฆษณา และบริการอื่นๆ ของ Google ในแบบของคุณจาก<ph name="BEGIN_LINK" />ส่วนควบคุมกิจกรรม Google<ph name="END_LINK" /></translation> @@ -5022,7 +5024,6 @@ <translation id="7879478708475862060">ใช้ตามโหมดป้อนข้อมูล</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" เพิ่มแอปและส่วนขยายเหล่านี้:</translation> <translation id="7881969471599061635">ปิดคำบรรยาย</translation> -<translation id="7884988936047469945">คุณลักษณะการเข้าถึงรุ่นทดลอง</translation> <translation id="7885253890047913815">ปลายทางล่าสุด</translation> <translation id="7887192723714330082">ตอบสนองต่อ "Ok Google" เมื่อหน้าจอเปิดอยู่และไม่ได้ล็อก</translation> <translation id="7887334752153342268">ทำซ้ำ</translation> @@ -5090,6 +5091,7 @@ <translation id="7974067550340408553">รับการแจ้งเตือนบนโทรศัพท์ทุกครั้งที่ Smart Lock ปลดล็อก <ph name="DEVICE_TYPE" /></translation> <translation id="7974566588408714340">ลองอีกครั้งโดยใช้ <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">โอเวอร์สแกน</translation> +<translation id="7976960358280528247">เปิดใช้ UI การวนรอบหน้าต่าง (การตอบสนองด้วยภาพสำหรับ Alt-Tab)</translation> <translation id="7977551819349545646">กำลังอัปเดต Chromebox...</translation> <translation id="7978412674231730200">กุญแจส่วนตัว</translation> <translation id="7979036127916589816">เกิดข้อผิดพลาดในการทำให้ข้อมูลตรงกัน</translation> @@ -5117,6 +5119,7 @@ รักษาไฟล์กุญแจของคุณไว้ในที่ปลอดภัย คุณจะต้องใช้ไฟล์นี้ในการสร้างส่วนขยายรุ่นใหม่</translation> <translation id="799923393800005025">สามารถดูได้</translation> +<translation id="8000066093800657092">ไม่มีเครือข่าย</translation> <translation id="8004582292198964060">เบราว์เซอร์</translation> <translation id="8007030362289124303">แบตเตอรี่ต่ำ</translation> <translation id="8008356846765065031">อินเทอร์เน็ตถูกตัด โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน็ต</translation> @@ -5191,6 +5194,7 @@ <translation id="8116190140324504026">เพิ่มเติม...</translation> <translation id="8116483400482790018">พจนานุกรมตัวสะกดที่กำหนดเอง</translation> <translation id="8116972784401310538">ตั&วจัดการบุ๊กมาร์ก</translation> +<translation id="8117838550640702864">การตั้งค่าการจดบันทึก</translation> <translation id="8117957376775388318">วิธีการป้อนข้อมูล Dayi</translation> <translation id="8118860139461251237">จัดการการดาวน์โหลดของคุณ</translation> <translation id="8119572489781388874">แก้ไขการตั้งค่า</translation> @@ -5469,7 +5473,6 @@ <translation id="8472623782143987204">การสนับสนุนฮาร์ดแวร์</translation> <translation id="8475313423285172237">โปรแกรมอื่นในคอมพิวเตอร์ของคุณเพิ่มส่วนขยายที่อาจเปลี่ยนวิธีการทำงานของ Chrome</translation> <translation id="8475647382427415476">Google ไดรฟ์ไม่สามารถซิงค์ "<ph name="FILENAME" />" ได้ตอนนี้ Google ไดรฟ์จะลองใหม่ภายหลัง</translation> -<translation id="8476195663057048998">ล้างและรีเซ็ต</translation> <translation id="8477241577829954800">ถูกแทนที่</translation> <translation id="8477384620836102176">&ทั่วไป</translation> <translation id="8480417584335382321">การซูมหน้าเว็บ:</translation> @@ -5699,7 +5702,6 @@ <translation id="8785135611469711856">ปลั๊กอินไม่ตอบสนอง</translation> <translation id="8787254343425541995">อนุญาตให้ใช้พร็อกซีสำหรับเครือข่ายที่แชร์ไว้</translation> <translation id="878763818693997570">ชื่อนี้ยาวเกินไป</translation> -<translation id="8787865569533773240">รีเซ็ตการตั้งค่า <ph name="IDS_SHORT_PRODUCT_NAME" /> ที่ปรับปรุงแก้ไข</translation> <translation id="8789375980715484686">จัดการผู้ใช้คนอื่นๆ</translation> <translation id="8791534160414513928">ส่งคำขอ "ไม่ติดตาม" พร้อมกับการเข้าชมของคุณ</translation> <translation id="8795668016723474529">เพิ่มบัตรเครดิต</translation> @@ -5842,7 +5844,7 @@ <translation id="8994845581478641365">เครื่องสร้างแคชแบบอักษร DirectWrite</translation> <translation id="8995603266996330174">จัดการโดย <ph name="DOMAIN" /></translation> <translation id="8996526648899750015">เพิ่มบัญชี...</translation> -<translation id="8996941253935762404">เว็บไซต์ข้างหน้ามีโปรแกรมที่เป็นอันตราย</translation> +<translation id="8996941253935762404">ไซต์ที่จะเปิดมีโปรแกรมที่เป็นอันตราย</translation> <translation id="8997135628821231"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (<ph name="DEVICE" />)</translation> <translation id="9000649589621199759">ไม่พบโทรศัพท์ของคุณ โปรดตรวจสอบว่าคุณใช้โทรศัพท์ Android ที่เข้ากันได้ซึ่งเปิดอยู่และอยู่ใกล้ๆ มือคุณ <a>เรียนรู้เพิ่มเติม</a></translation> <translation id="9001035236599590379">ชนิดของ MIME</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 6e20444..8622364 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Güvenlik nedenleriyle dosyaya erişilemedi.</translation> <translation id="1675023460278456180">Karma Malzeme</translation> <translation id="167832068858235403">sesi kapat</translation> -<translation id="1678331212993975953">Site Ayrıntıları</translation> <translation id="1679068421605151609">Geliştirici Araçları</translation> <translation id="1681120471812444678">Yazıcı eklemek için kur…</translation> <translation id="1682324559341535203"><ph name="DEVICE_TYPE" /> cihazı kaydet</translation> @@ -1011,7 +1010,6 @@ <translation id="2371076942591664043">İşlem tamamlandığın&da aç</translation> <translation id="2372036074421194686">Chrome, bilgisayarınızda yüklü istenmeyen bir program (<ph name="UWS_NAME" />) buldu. Chrome Temizleme Aracı'nı kullanarak söz konusu programı kaldırabilirsiniz.</translation> <translation id="2375701438512326360">Dokunmatik ekran desteğini her zaman etkin veya devre dışı olacak şekilde ayarlayın ya da başlangıçta bir dokunmatik ekran algılandığında etkinleşmesini sağlayın (Otomatik, varsayılan).</translation> -<translation id="2377619091472055321">Değiştirilmiş <ph name="IDS_SHORT_PRODUCT_NAME" /> Ayarlarını Sıfırla</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> dosya seçildi</translation> <translation id="2378982052244864789">Uzantı dizinini seçin.</translation> <translation id="2379281330731083556">Sistem iletişim kutusunu kullanarak yazdır... <ph name="SHORTCUT_KEY" /></translation> @@ -1559,6 +1557,7 @@ <translation id="3058212636943679650">Bilgisayarınızın işletim sistemini kurtarmanız gerekirse, kurtarma SD kartına veya USB bellek çubuğuna ihtiyacınız olacaktır.</translation> <translation id="305932878998873762">HTTP için Basit Önbellek yeni bir önbellektir. Disk alanı ayırmak için filesystem'a bağlı olarak çalışır.</translation> <translation id="3062606427884046423">Chrome medya bildirimleri için Android MediaStyle bildirimlerini kullanın.</translation> +<translation id="3063224679438508013">Not uygulamasını otomatik olarak başlat</translation> <translation id="3063844757726132584">Bu kullanışlı başlatıcıdan tüm uygulamalarınıza erişin. Oyun oynayın, görüntülü sohbet edin, müzik dinleyin, dokümanları düzenleyin veya diğer uygulamaları edinin.</translation> <translation id="3064388234319122767">Harf çevirisi (zdravo → здраво)</translation> <translation id="3065041951436100775">Sekme sonlandırıldı geri bildirimi.</translation> @@ -1649,6 +1648,7 @@ <translation id="3172213052701798825">Şifreler için Google Smart Lock</translation> <translation id="317583078218509884">Yeni site izinleri için ayarlar sayfa yeniden yüklendikten sonra geçerli olacaktır.</translation> <translation id="3177048931975664371">Şifreyi gizlemek için tıklayın</translation> +<translation id="3177909033752230686">Sayfanın Dili:</translation> <translation id="3180365125572747493">Lütfen bu sertifika dosyasını şifrelemek için bir şifre girin.</translation> <translation id="3183139917765991655">Profil İçe Aktarıcısı</translation> <translation id="3184560914950696195">$1 konumuna kaydedilemiyor. Düzenlenen resimler İndirilenler klasörüne kaydedilecek.</translation> @@ -1837,7 +1837,7 @@ <translation id="3414856743105198592">Çıkarılabilir medyanın biçimlendirilmesi tüm verileri silecektir. Devam etmek istiyor musunuz?</translation> <translation id="3414952576877147120">Boyut:</translation> <translation id="3420980393175304359">Kişi Değiştir</translation> -<translation id="342383653005737728">Cihazın sahibi, bu cihazın teşhis ve kullanım verilerini Google'a göndermeyi seçebilir. Bu <ph name="BEGIN_LINK1" />ayarı<ph name="END_LINK1" />, buradan görüntüleyebilirsiniz. <ph name="BEGIN_LINK2" />Daha Fazla Bilgi Edinin<ph name="END_LINK2" /></translation> +<translation id="342383653005737728">Cihazın sahibi, bu cihazın teşhis ve kullanım verilerini Google'a göndermeyi seçebilir. Bu <ph name="BEGIN_LINK1" />ayarı<ph name="END_LINK1" /> buradan görüntüleyebilirsiniz. <ph name="BEGIN_LINK2" />Daha Fazla Bilgi Edinin<ph name="END_LINK2" /></translation> <translation id="3423858849633684918">Lütfen <ph name="PRODUCT_NAME" /> uygulamasını yeniden başlatın</translation> <translation id="3425233587047449821">Yeni Korece IME</translation> <translation id="3426704822745136852">Kafes iş parçacığı sayısını belirtin.</translation> @@ -1999,6 +1999,7 @@ <translation id="3612673635130633812"><a href="<ph name="URL" />"><ph name="EXTENSION" /></a> tarafından indirildi</translation> <translation id="3613134908380545408"><ph name="FOLDER_NAME" /> Klasörünü Göster</translation> <translation id="3613422051106148727">Yeni sekmede &aç</translation> +<translation id="3616113530831147358">Ses</translation> <translation id="3616741288025931835">Tarama Verilerini &Temizle...</translation> <translation id="3618849550573277856">“<ph name="LOOKUP_STRING" />” Araması Yap</translation> <translation id="3620292326130836921">Tümü yedeklendi!</translation> @@ -2295,7 +2296,6 @@ <translation id="3994878504415702912">Y&aklaştır</translation> <translation id="3995964755286119116">Adobe Flash Player kamera ayarları farklıdır.</translation> <translation id="39964277676607559">İçerik komut dosyasına ilişkin '<ph name="RELATIVE_PATH" />' javascript'i yüklenemedi.</translation> -<translation id="3996912167543967198">Sıfırlanıyor...</translation> <translation id="3997015411467176489">Deneysel tuval özellikleri</translation> <translation id="4002066346123236978">Başlık</translation> <translation id="40027638859996362">Kelime taşıma</translation> @@ -2392,6 +2392,7 @@ <translation id="4140559601186535628">Push Mesajları</translation> <translation id="4146026355784316281">Her Zaman Sistem Görüntüleyici ile Aç</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" />, Chrome OS cihazınızın bir teklif için uygun olup olmadığını kontrol etmek istiyor. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Ekran</translation> <translation id="4151403195736952345">Genel varsayılanı kullan (Algıla)</translation> <translation id="4152177296285305182">Şifrelenmiş verileriniz yalnızca parolanıza sahip bir kişi tarafından okunabilir. Parola Google'a gönderilmez veya Google tarafından saklanmaz. Parolanızı unutursanız, senkronizasyonu sıfırlamanız gerekir.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 sekme}other{# sekme}}</translation> @@ -2456,6 +2457,7 @@ <translation id="4250229828105606438">Ekran görüntüsü</translation> <translation id="4250680216510889253">Hayır</translation> <translation id="4253168017788158739">Notlar</translation> +<translation id="4254813446494774748">Çeviri Dili:</translation> <translation id="425573743389990240">Vat Cinsinden Pil Boşalma Oranı (Negatif değer, pilin şarj edilmekte olduğu anlamına gelir)</translation> <translation id="4256316378292851214">Video Olarak Kay&det...</translation> <translation id="4258348331913189841">Dosya sistemleri</translation> @@ -2533,6 +2535,7 @@ <translation id="4365673000813822030">Hata, Senkronizasyonun çalışması durdu.</translation> <translation id="4366509400410520531">Siz tarafınızdan izin verildi</translation> <translation id="4367782753568896354">Şunları yükleyemedik:</translation> +<translation id="436904870295243580">Daha fazla not alma uygulaması bul</translation> <translation id="4370975561335139969">Girdiğiniz e-posta ve şifre eşleşmiyor</translation> <translation id="437184764829821926">Gelişmiş yazı tipi ayarları</translation> <translation id="4372884569765913867">1x1</translation> @@ -3214,6 +3217,7 @@ <translation id="5324674707192845912">Bu <ph name="DEVICE_TYPE" /> cihazının uzaktan bulunmasını, silinmesini ve kilitlenmesini devre dışı bırakmak için cihazın Google'daki kaydını silmek üzeresiniz. Bu işlem, cihazın yeniden başlatılmasını gerektirir. Devam etmek istiyor musunuz?</translation> <translation id="5324780743567488672">Konumumu kullanarak saat dilimini otomatik olarak ayarla</translation> <translation id="5325120507747984426">Genel bakış moduna girerken/moddan çıkarken ve genel bakış oturumları arasında, genel bakış modunda pencerelerin hareketini en aza indirmeye çalışan sabit bir pencere sıralaması kullanır.</translation> +<translation id="5326182685622510062">2D kanvas için birden fazla grafik oluşturma hattı kullanımı vardır. Bu farklı kullanımların performans özellikleri de farklıdır. Bu işaretin etkin hale getirilmesi, kanvas 2D içeriklerinin kanvasın kullanılma şekline göre performansı artırmak amacıyla bu kullanımlar arasında anlık olarak geçiş yapmasına olanak tanır. Örneğin, GPU'lu bir kullanımdan GPU'suz bir kullanıma geçiş yapılır.</translation> <translation id="5327248766486351172">Ad</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Sil</translation> @@ -3346,7 +3350,6 @@ <translation id="54870580363317966">Denetlenen bu kullanıcı için bir avatar seçin.</translation> <translation id="5488468185303821006">Gizli modda izin ver</translation> <translation id="5489390182170331803">Doküman Düzeyinde Etkinlik İşleyicileri Pasif Varsayılan</translation> -<translation id="5489789060051091748">Sesli okunması için seçin: Arama düğmesini basılı tutun ve sesli okunmasını istediğiniz metni tıklayıp sürükleyin</translation> <translation id="549294555051714732">Otomatik Doldurma önerileri için alt dize eşleştirme</translation> <translation id="5493996328530898436">Yeni ses oluşturma mix stratejisi</translation> <translation id="5494362494988149300">İşlem &Tamamlandığında Aç</translation> @@ -3704,7 +3707,6 @@ <translation id="5991049340509704927">Büyüt</translation> <translation id="5991774521050363748">Web Bildirimleri için özel düzenleri etkinleştirin. Bunlar, düzenle ilgili başka türlü mümkün olmayan hafif iyileştirmeler içerir.</translation> <translation id="5993332328670040093">Veri kullanımınız artık ölçülmeyecek.</translation> -<translation id="5996258716334177896">Profiliniz doğru açılamıyor. Bazı özellikler kullanılamayabilir. Lütfen profilin bulunduğundan ve içeriğini okuma ve yazma izniniz olduğundan emin olun.</translation> <translation id="6001799583597751002">PIN'ler eşleşmiyor:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> kendisini güncel tutamayabilir.</translation> <translation id="6003294706906016758">Barındırılan uygulamalar için web uygulaması stil çerçevesini etkinleştirir</translation> @@ -4154,7 +4156,6 @@ <translation id="6637362044401670482">Sanal klavye fazla kaydırma desteğini etkinleştirir.</translation> <translation id="6639554308659482635">SQLite belleği</translation> <translation id="6643016212128521049">Temizle</translation> -<translation id="6644756108386233011">Değiştirilmiş <ph name="IDS_SHORT_PRODUCT_NAME" /> ayarları sıfırlansın mı?</translation> <translation id="6647228709620733774">Netscape Sertifika Yetki İptali URL'si</translation> <translation id="6647838571840953560">Şu anda <ph name="CHANNEL_NAME" /> kanalında</translation> <translation id="6649018507441623493">Bir saniye...</translation> @@ -4262,7 +4263,6 @@ <translation id="6810613314571580006">Depolanmış kimlik bilgileriyle web sitelerinde otomatik olarak oturum açın. Bu özellik devre dışı olduğunda, bir web sitesinde oturum açmadan önce her defasında işlemi onaylamanız istenir.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> kök olarak çalıştırılamaz.</translation> <translation id="6812841287760418429">Değişiklikleri koru</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" />, tarayıcı ayarlarınızın bilginiz haricinde değiştirilmiş olabileceğini algıladı. Bunları orijinal varsayılan ayarlarına sıfırlamak ister misiniz?</translation> <translation id="6815551780062710681">düzenle</translation> <translation id="6817358880000653228">Bu site için kaydedilen şifreler:</translation> <translation id="6820008762872335722">Sormak için sıfırla</translation> @@ -4379,6 +4379,7 @@ <translation id="6980956047710795611">Tüm Chrome OS verilerini yeni şifreye taşı (önceki şifre gerekir)</translation> <translation id="6981982820502123353">Erişilebilirlik</translation> <translation id="6981992744085917617">Hesabınıza tekrar giriş yapmak için kullanmak istediğiniz yöntemi seçin:</translation> +<translation id="698231206551913481">Bu kullanıcıyla ilişkilendirilen tüm dosyalar ve yerel veriler, bu kullanıcı kaldırıldıktan sonra kalıcı olarak silinir.</translation> <translation id="6982896539684144327"><ph name="VENDOR_NAME" /> yazıcı algılandı</translation> <translation id="6983783921975806247">Kayıtlı OID</translation> <translation id="6983991971286645866">Tüm düzenlemeler $1 dosyasına kaydedilecektir.</translation> @@ -4463,6 +4464,7 @@ <translation id="7073555242265688099">Başka Chrome cihazlarınız varsa bunlar otomatik olarak senkronize edileceğinden telefonunuz, bu cihazların da kilidini açar.</translation> <translation id="707392107419594760">Klavyenizi seçin:</translation> <translation id="7075513071073410194">PKCS #1 RSA Şifrelemeli MD5</translation> +<translation id="7075625805486468288">HTTPS/SSL sertifikalarını ve ayarlarını yönetme</translation> <translation id="7076293881109082629">Oturum açılıyor</translation> <translation id="7077829361966535409">Oturum açma sayfası, mevcut proxy ayarları kullanılarak yüklenemedi. Lütfen <ph name="GAIA_RELOAD_LINK_START" />tekrar oturum açmayı deneyin<ph name="GAIA_RELOAD_LINK_END" /> veya farklı <ph name="PROXY_SETTINGS_LINK_START" />proxy ayarları<ph name="PROXY_SETTINGS_LINK_END" /> kullanın.</translation> <translation id="7077872827894353012">Göz ardı edilen protokol işleyicileri</translation> @@ -4510,7 +4512,6 @@ <translation id="7141105143012495934">Hesap ayrıntılarınız alınamadığı için oturum açma işlemi başarısız oldu. Lütfen yöneticinizle iletişime geçin veya tekrar deneyin.</translation> <translation id="7143207342074048698">Bağlanıyor</translation> <translation id="7144878232160441200">Yeniden Dene</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> eklentisi devre dışı bırakıldı. Yeniden etkinleştirmek için lütfen <ph name="CHROME_PLUGINS_LINK" /> adresine gidin.</translation> <translation id="715118844758971915">Klasik yazıcılar</translation> <translation id="7154130902455071009">Başlangıç sayfanızı <ph name="START_PAGE" /> olarak değiştirme</translation> <translation id="715487527529576698">Başlangıç Çince modu Basitleştirilmiş Çince</translation> @@ -4656,7 +4657,7 @@ <translation id="7366909168761621528">Göz atma verileri</translation> <translation id="7369521049655330548">Bu sayfada engellenen eklentiler:</translation> <translation id="7371490661692457119">Varsayılan karo genişliği</translation> -<translation id="7373789336584437724">Bu cihaz, teşhis ve kullanım verilerini otomatik olarak Google'a göndermektedir. Bu seçimi, cihaz <ph name="BEGIN_LINK1" />ayarlarınızdan<ph name="END_LINK1" /> istediğiniz zaman değiştirebilirsiniz. <ph name="BEGIN_LINK2" />Daha Fazla Bilgi Edinin<ph name="END_LINK2" /></translation> +<translation id="7373789336584437724">Bu cihaz, teşhis ve kullanım verilerini otomatik olarak Google'a göndermektedir. Bu seçimi cihaz <ph name="BEGIN_LINK1" />ayarlarınızdan<ph name="END_LINK1" /> istediğiniz zaman değiştirebilirsiniz. <ph name="BEGIN_LINK2" />Daha Fazla Bilgi Edinin<ph name="END_LINK2" /></translation> <translation id="7374461526650987610">Protokol işleyicileri</translation> <translation id="7375125077091615385">Tür:</translation> <translation id="7376553024552204454">Hareket ederken fare imlecini vurgula</translation> @@ -4789,6 +4790,7 @@ <translation id="7540972813190816353">Güncelleme olup olmadığı kontrol edilirken bir hata oluştu: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Resim istisnaları</translation> <translation id="7543104066686362383">Bu <ph name="IDS_SHORT_PRODUCT_NAME" /> cihazında hata ayıklama özelliklerini etkinleştir</translation> +<translation id="7543393759143837504">Aradığınız bilgiyi bulamazsanız <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome yardımına<ph name="END_LINK_CHROMIUM" /> gidin.</translation> <translation id="7544853251252956727">Karıştır</translation> <translation id="7545288882499673859">Baskı durumunda gelişmiş işlem için bellek silme stratejisi</translation> <translation id="7545415673537747415">Google'ın Arama, reklamlar ve diğer Google hizmetlerini kişiselleştirmek için tarama geçmişinizi nasıl kullanacağını <ph name="BEGIN_LINK" />Google Etkinlik Kontrolleri<ph name="END_LINK" />'nden kontrol edin.</translation> @@ -5026,7 +5028,6 @@ <translation id="7879478708475862060">İzleme giriş modu</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" şu uygulamaları ve uzantıları ekler:</translation> <translation id="7881969471599061635">Altyazıları devre dışı bırak</translation> -<translation id="7884988936047469945">Deneysel erişilebilirlik özellikleri</translation> <translation id="7885253890047913815">En Son Hedefler</translation> <translation id="7887192723714330082">Ekran ve kilidi açıkken "Ok Google"a yanıt verme</translation> <translation id="7887334752153342268">Yinele</translation> @@ -5094,6 +5095,7 @@ <translation id="7974067550340408553">Smart Lock <ph name="DEVICE_TYPE" /> cihazınızın kilidini her açışında, telefonunuzda bildirim alın.</translation> <translation id="7974566588408714340"><ph name="EXTENSIONNAME" /> uzantısını kullanmayı yeniden dene</translation> <translation id="7974936243149753750">Fazla tarama</translation> +<translation id="7976960358280528247">Pencere döngüsü kullanıcı arayüzünü etkinleştirin (Alt+Sekme için görsel geri bildirim).</translation> <translation id="7977551819349545646">Chromebox güncelleniyor...</translation> <translation id="7978412674231730200">Özel anahtar</translation> <translation id="7979036127916589816">Senkronizasyon Hatası</translation> @@ -5121,6 +5123,7 @@ Anahtar dosyanızı güvenli bir yerde saklayın. Uzantınızın yeni sürümlerini oluşturmak için bu dosyaya ihtiyacınız olacak.</translation> <translation id="799923393800005025">Görüntüleyebilir</translation> +<translation id="8000066093800657092">Ağ yok</translation> <translation id="8004582292198964060">Tarayıcı</translation> <translation id="8007030362289124303">Pil Düzeyi Düşük</translation> <translation id="8008356846765065031">İnternet bağlantısı kesildi. Lütfen İnternet bağlantınızı kontrol edin.</translation> @@ -5195,6 +5198,7 @@ <translation id="8116190140324504026">Daha fazla bilgi...</translation> <translation id="8116483400482790018">Özel yazım sözlüğü</translation> <translation id="8116972784401310538">&Yer imi yöneticisi</translation> +<translation id="8117838550640702864">Not ayarları</translation> <translation id="8117957376775388318">Dayi giriş yöntemi</translation> <translation id="8118860139461251237">İndirilen öğelerinizi yönetme</translation> <translation id="8119572489781388874">Ayarları değiştir</translation> @@ -5475,7 +5479,6 @@ <translation id="8472623782143987204">donanım esaslı</translation> <translation id="8475313423285172237">Bilgisayarınızdaki başka bir program, Chrome'un çalışma şeklini değiştirebilecek bir uzantı ekledi.</translation> <translation id="8475647382427415476">Google Drive, "<ph name="FILENAME" />" dosyasını şu anda senkronize edemedi. Google Drive senkronize etme işlemini daha sonra tekrar deneyecek.</translation> -<translation id="8476195663057048998">Temizle ve Sıfırla</translation> <translation id="8477241577829954800">Geçersiz kılındı</translation> <translation id="8477384620836102176">&Genel</translation> <translation id="8480417584335382321">Sayfa yakınlaştırma:</translation> @@ -5705,7 +5708,6 @@ <translation id="8785135611469711856">Eklenti Yanıt Vermiyor</translation> <translation id="8787254343425541995">Paylaşılan ağlar için proxy'lere izin ver</translation> <translation id="878763818693997570">Bu ad çok uzun</translation> -<translation id="8787865569533773240">Değiştirilmiş <ph name="IDS_SHORT_PRODUCT_NAME" /> ayarlarını sıfırla</translation> <translation id="8789375980715484686">Diğer kullanıcıları yönetme</translation> <translation id="8791534160414513928">Göz atma trafiğimle birlikte bir "Do Not Track" isteği gönder</translation> <translation id="8795668016723474529">Kredi kartı ekle</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 9e62d26..bec0e1f 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">Доступ до файлу неможливо отримати з міркувань безпеки.</translation> <translation id="1675023460278456180">Матеріальний гібридний</translation> <translation id="167832068858235403">зменшити гучність</translation> -<translation id="1678331212993975953">Інформація про сайт</translation> <translation id="1679068421605151609">Інструменти для розробників</translation> <translation id="1681120471812444678">Додати принтери…</translation> <translation id="1682324559341535203">Зареєструвати <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">Відкрити коли &виконано</translation> <translation id="2372036074421194686">На вашому комп’ютері встановлено небажану програму (<ph name="UWS_NAME" />). Видаліть її за допомогою Майстра очищення Chrome.</translation> <translation id="2375701438512326360">Підтримка сенсорного екрана завжди ввімкнена чи вимкнена або вмикається, якщо сенсорний екран виявлено під час запуску (за умовчанням – автоматично).</translation> -<translation id="2377619091472055321">Скинути змінені налаштування <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="2378075407703503998">Вибрано файлів: <ph name="SELCTED_FILE_COUNT" /></translation> <translation id="2378982052244864789">Виберіть каталог розширення.</translation> <translation id="2379281330731083556">Друкувати за допомогою діалогового вікна системи... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">Щоб відновити операційну систему комп’ютера, вам знадобиться карта SD чи карта флеш-пам’яті USB для відновлення.</translation> <translation id="305932878998873762">Simple Cache для HTTP – це новий кеш. Він виконує розподіл місця на диску, використовуючи файлову систему.</translation> <translation id="3062606427884046423">Використовувати сповіщення Android MediaStyle для медійних сповіщень у Chrome.</translation> +<translation id="3063224679438508013">Автоматично запускати додаток для нотаток</translation> <translation id="3063844757726132584">Відкривайте всі свої додатки з цієї зручної панелі запуску. Грайте в ігри, спілкуйтеся у відеочатах, слухайте музику, редагуйте документи та завантажуйте інші додатки.</translation> <translation id="3064388234319122767">Транслітерація (zdravo → здраво)</translation> <translation id="3065041951436100775">Відповідь "Вкладка закрилась".</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">Google Smart Lock для паролів</translation> <translation id="317583078218509884">Нові налаштування дозволів сайту почнуть діяти після перезавантаження сторінки.</translation> <translation id="3177048931975664371">Натисніть, щоб сховати пароль</translation> +<translation id="3177909033752230686">Мова сторінки:</translation> <translation id="3180365125572747493">Введіть пароль, щоб зашифрувати цей файл сертифіката.</translation> <translation id="3183139917765991655">Засіб імпортування профілів</translation> <translation id="3184560914950696195">Неможливо зберегти в $1. Редаговані зображення буде збережено в папці "Завантаження".</translation> @@ -1997,6 +1997,7 @@ <translation id="3612673635130633812">Завантажило розширення <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Показати "<ph name="FOLDER_NAME" />"</translation> <translation id="3613422051106148727">&Відкрити в новій вкладці</translation> +<translation id="3616113530831147358">Звук</translation> <translation id="3616741288025931835">&Очистити дані веб-перегляду...</translation> <translation id="3618849550573277856">Шукати "<ph name="LOOKUP_STRING" />"</translation> <translation id="3620292326130836921">Усі файли імпортовано!</translation> @@ -2293,7 +2294,6 @@ <translation id="3994878504415702912">&Масштаб</translation> <translation id="3995964755286119116">В Adobe Flash Player використовуються інші налаштування камери.</translation> <translation id="39964277676607559">Не вдалося завантажити javascript "<ph name="RELATIVE_PATH" />" для сценарію вмісту.</translation> -<translation id="3996912167543967198">Скидання…</translation> <translation id="3997015411467176489">Експериментальні функції canvas</translation> <translation id="4002066346123236978">Назва</translation> <translation id="40027638859996362">Перенести слово</translation> @@ -2390,6 +2390,7 @@ <translation id="4140559601186535628">Push-повідомлення</translation> <translation id="4146026355784316281">Завжди відкривати за допомогою системного переглядача</translation> <translation id="4146175323503586871">Служба <ph name="SERVICE_NAME" /> хоче перевірити, чи ваш пристрій з ОС Chrome відповідає умовам для цієї пропозиції. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Екран</translation> <translation id="4151403195736952345">Використовувати загальне значення за умовчанням (визначати)</translation> <translation id="4152177296285305182">Ваші зашифровані дані може читати лише користувач, який знає вашу парольну фразу. Парольна фраза не надсилається в Google і не зберігається там. Якщо ви забули парольну фразу, потрібно скинути синхронізацію.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 вкладка}one{# вкладка}few{# вкладки}many{# вкладок}other{# вкладки}}</translation> @@ -2454,6 +2455,7 @@ <translation id="4250229828105606438">Знімок екрана</translation> <translation id="4250680216510889253">ні</translation> <translation id="4253168017788158739">Примітка</translation> +<translation id="4254813446494774748">Мова перекладу:</translation> <translation id="425573743389990240">Швидкість розряджання акумулятора у ватах (від’ємне значення означає, що акумулятор заряджається)</translation> <translation id="4256316378292851214">Збере&гти відео як...</translation> <translation id="4258348331913189841">Файлові системи</translation> @@ -2531,6 +2533,7 @@ <translation id="4365673000813822030">На жаль, синхронізація перестала працювати.</translation> <translation id="4366509400410520531">Дозволено користувачем</translation> <translation id="4367782753568896354">Не вдалося встановити:</translation> +<translation id="436904870295243580">Знайти більше додатків для створення нотаток</translation> <translation id="4370975561335139969">Введені електронна адреса та пароль не збігаються</translation> <translation id="437184764829821926">Розширені налаштування шрифтів</translation> <translation id="4372884569765913867">1x1</translation> @@ -3212,6 +3215,7 @@ <translation id="5324674707192845912">Ви збираєтеся скасувати реєстрацію цього <ph name="DEVICE_TYPE" /> у Google, щоб вимкнути можливість віддалено знаходити та блокувати пристрій, а також стирати дані на ньому. Для цього потрібне перезавантаження. Продовжити?</translation> <translation id="5324780743567488672">Автоматично визначати часовий пояс на основі ваших геоданих</translation> <translation id="5325120507747984426">Використовується стабільний порядок вікон у режимі огляду. Мінімізується переміщення вікон під час входу в режим огляду або виходу з нього, а також між сеансами огляду.</translation> +<translation id="5326182685622510062">Є багато застосувань графічних конвеєрів обробки Canvas 2D. Ці застосування мають різну продуктивність. Якщо ввімкнути цю опцію, контексти Canvas 2D зможуть миттєво перемикатися між застосуваннями, залежно від того, як Canvas використовується, щоб покращити продуктивність. Наприклад, переходить із застосування, що використовує графічний процесор, на таке, яке не використовує його.</translation> <translation id="5327248766486351172">Назва</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Видалити</translation> @@ -3344,7 +3348,6 @@ <translation id="54870580363317966">Вибрати аватар для контрольованого користувача.</translation> <translation id="5488468185303821006">Дозволити в режимі анонімного перегляду</translation> <translation id="5489390182170331803">Пасивні обробники подій на рівні документа за умовчанням</translation> -<translation id="5489789060051091748">Виберіть, щоб озвучити: утримуйте клавішу "Пошук" і натисніть або перетягніть текст, щоб його озвучити</translation> <translation id="549294555051714732">Пошук пропозицій автозаповнення на основі підрядків</translation> <translation id="5493996328530898436">Нова стратегія змішування під час відтворення аудіо</translation> <translation id="5494362494988149300">Відкрити після &завантаження</translation> @@ -3701,7 +3704,6 @@ <translation id="5991049340509704927">Збільшити</translation> <translation id="5991774521050363748">Увімкнути спеціальні макети для веб-сповіщень. Вони міститимуть незначні покращення, які в іншому випадку будуть недоступними.</translation> <translation id="5993332328670040093">Використання трафіку більше не відстежуватиметься.</translation> -<translation id="5996258716334177896">Не вдається відкрити ваш профіль належним чином. Можливо, деякі функції недоступні. Переконайтеся, що профіль існує та ви маєте дозвіл переглядати й створювати його вміст.</translation> <translation id="6001799583597751002">PIN-коди не збігаються:</translation> <translation id="6003177993629630467">Можливо <ph name="PRODUCT_NAME" /> не зможе оновлюватись.</translation> <translation id="6003294706906016758">Увімкнути рамку стилю веб-додатка для розміщених додатків</translation> @@ -4151,7 +4153,6 @@ <translation id="6637362044401670482">Вмикається підтримка прокручування віртуальної клавіатури.</translation> <translation id="6639554308659482635">Пам'ять SQLite</translation> <translation id="6643016212128521049">Очистити</translation> -<translation id="6644756108386233011">Скинути змінені налаштування <ph name="IDS_SHORT_PRODUCT_NAME" />?</translation> <translation id="6647228709620733774">URL-адреса відкликання Центру сертифікації Netscape</translation> <translation id="6647838571840953560">Зараз на каналі <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Зачекайте…</translation> @@ -4259,7 +4260,6 @@ <translation id="6810613314571580006">Автоматично входити в облікові записи на веб-сайтах за допомогою збережених даних. Якщо цю функцію вимкнено, потрібно підтверджувати облікові дані під час кожного входу на сайтах.</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> неможливо запустити з кореневого каталогу.</translation> <translation id="6812841287760418429">Залишити зміни</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> виявив, що налаштування вашого веб-переглядача могли бути змінені без вашого відома. Бажаєте відновити налаштування за замовчуванням?</translation> <translation id="6815551780062710681">редагувати</translation> <translation id="6817358880000653228">Збережені паролі для цього сайту:</translation> <translation id="6820008762872335722">Скинути дозвіл</translation> @@ -4377,6 +4377,7 @@ <translation id="6980956047710795611">Перемістити всі дані ОС Chrome під новий пароль (потрібен попередній пароль)</translation> <translation id="6981982820502123353">Доступність</translation> <translation id="6981992744085917617">Виберіть спосіб, який потрібно використовувати, щоб знову ввійти в обліковий запис:</translation> +<translation id="698231206551913481">Якщо видалити цього користувача, усі файли та локальні дані, зв’язані з ним, буде видалено назавжди.</translation> <translation id="6982896539684144327">Виявлено принтер (<ph name="VENDOR_NAME" />)</translation> <translation id="6983783921975806247">Зареєстрований ідентифікатор об'єкта (OID)</translation> <translation id="6983991971286645866">Усі зміни буде збережено у файлі "$1".</translation> @@ -4461,6 +4462,7 @@ <translation id="7073555242265688099">Якщо у вас є інші пристрої Chrome, вони автоматично синхронізуються, щоб ви могли також розблоковувати їх за допомогою свого телефона.</translation> <translation id="707392107419594760">Виберіть свою клавіатуру:</translation> <translation id="7075513071073410194">PKCS #1 MD5 із шифруванням RSA</translation> +<translation id="7075625805486468288">Керування сертифікатами та налаштуваннями HTTPS або SSL</translation> <translation id="7076293881109082629">Вхід</translation> <translation id="7077829361966535409">Не вдалося завантажити сторінку входу за допомогою поточних налаштувань проксі-сервера. <ph name="GAIA_RELOAD_LINK_START" />Спробуйте ввійти знову<ph name="GAIA_RELOAD_LINK_END" /> або скористайтеся іншими <ph name="PROXY_SETTINGS_LINK_START" />налаштуваннями проксі-сервера<ph name="PROXY_SETTINGS_LINK_END" />.</translation> <translation id="7077872827894353012">Проігноровані обробники протоколів</translation> @@ -4508,7 +4510,6 @@ <translation id="7141105143012495934">Помилка входу. Не вдалось отримати дані вашого облікового запису. Зв’яжіться з адміністратором або повторіть спробу.</translation> <translation id="7143207342074048698">Під’єднання</translation> <translation id="7144878232160441200">Повторити спробу</translation> -<translation id="7148311641502571842">Плагін <ph name="PLUGIN_NAME" /> вимкнено. Щоб знову його активувати, перейдіть на сторінку <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Типові принтери</translation> <translation id="7154130902455071009">Зробити <ph name="START_PAGE" /> домашньою сторінкою</translation> <translation id="715487527529576698">Початковий режим введення китайською мовою: китайська (спрощена)</translation> @@ -4787,6 +4788,7 @@ <translation id="7540972813190816353">Під час перевірки наявності оновлень сталася помилка: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Винятки для зображень</translation> <translation id="7543104066686362383">Увімкнути функції налагодження на цьому пристрої <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> +<translation id="7543393759143837504">Якщо не вдається знайти потрібний вміст, перейдіть на сторінку <ph name="BEGIN_LINK_CHROMIUM" />довідки Google Chrome<ph name="END_LINK_CHROMIUM" />.</translation> <translation id="7544853251252956727">Перемішати</translation> <translation id="7545288882499673859">Стратегія очищення пам’яті для її ефективного вивільнення</translation> <translation id="7545415673537747415">Керуйте тим, як Google використовує вашу історію веб-перегляду, щоб персоналізувати Пошук, рекламу та інші служби Google на сторінці <ph name="BEGIN_LINK" />Керування активністю в продуктах Google<ph name="END_LINK" />.</translation> @@ -5024,7 +5026,6 @@ <translation id="7879478708475862060">Як у режимі введення</translation> <translation id="7880836220014399562">Пакет "<ph name="BUNDLE_NAME" />" додає такі додатки та розширення:</translation> <translation id="7881969471599061635">Вимкнути субтитри</translation> -<translation id="7884988936047469945">Експериментальні спеціальні можливості</translation> <translation id="7885253890047913815">Останні місця призначення</translation> <translation id="7887192723714330082">Реагувати на команду "Ok Google", коли екран увімкнено та розблоковано</translation> <translation id="7887334752153342268">Створити копію</translation> @@ -5092,6 +5093,7 @@ <translation id="7974067550340408553">Отримувати сповіщення щоразу, коли Smart Lock розблоковує ваш <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Повторити спробу, використовуючи розширення <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Облямівка екрана</translation> +<translation id="7976960358280528247">Увімкнути інтерфейс циклу вікон (візуальна реакція на натискання клавіш Alt+Tab).</translation> <translation id="7977551819349545646">Оновлення Chromebox…</translation> <translation id="7978412674231730200">Секретний ключ</translation> <translation id="7979036127916589816">Помилка синхронізації</translation> @@ -5119,6 +5121,7 @@ Зберігайте свій файл ключа в безпечному місці. Він знадобиться вам для створення нових версій вашого розширення.</translation> <translation id="799923393800005025">Може переглядати</translation> +<translation id="8000066093800657092">Немає мережі</translation> <translation id="8004582292198964060">Переглядач</translation> <translation id="8007030362289124303">Низький заряд батареї</translation> <translation id="8008356846765065031">Утрачено з’єднання з Інтернетом. Перевірте з’єднання.</translation> @@ -5193,6 +5196,7 @@ <translation id="8116190140324504026">Докладніше...</translation> <translation id="8116483400482790018">Спеціальний орфографічний словник</translation> <translation id="8116972784401310538">&Диспетчер закладок</translation> +<translation id="8117838550640702864">Налаштування нотаток</translation> <translation id="8117957376775388318">Метод введення даї</translation> <translation id="8118860139461251237">Керувати вашими завантаженнями</translation> <translation id="8119572489781388874">Змінити налаштування</translation> @@ -5471,7 +5475,6 @@ <translation id="8472623782143987204">з апаратною підтримкою</translation> <translation id="8475313423285172237">Інша програма на вашому комп’ютері додала розширення, яке може змінити роботу Chrome.</translation> <translation id="8475647382427415476">Не вдалося синхронізувати файл "<ph name="FILENAME" />". Google Диск спробує пізніше.</translation> -<translation id="8476195663057048998">Очистити та скинути</translation> <translation id="8477241577829954800">Заміщено</translation> <translation id="8477384620836102176">&Загальне</translation> <translation id="8480417584335382321">Масштаб сторінки:</translation> @@ -5701,7 +5704,6 @@ <translation id="8785135611469711856">Плагін не відповідає</translation> <translation id="8787254343425541995">Дозволити проксі-сервери для спільних мереж</translation> <translation id="878763818693997570">Це ім’я задовге.</translation> -<translation id="8787865569533773240">Скинути змінені налаштування <ph name="IDS_SHORT_PRODUCT_NAME" /></translation> <translation id="8789375980715484686">Керувати іншими користувачами</translation> <translation id="8791534160414513928">Надсилати запит "Не відстежувати" разом із трафіком веб-перегляду</translation> <translation id="8795668016723474529">Додати кредитну картку</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index 98d31e2..7b800411 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -522,7 +522,6 @@ <translation id="1673103856845176271">Không thể truy cập tệp vì các lý do bảo mật.</translation> <translation id="1675023460278456180">Material Hybrid</translation> <translation id="167832068858235403">giảm âm</translation> -<translation id="1678331212993975953">Chi tiết trang web</translation> <translation id="1679068421605151609">Công cụ dành cho nhà phát triển</translation> <translation id="1681120471812444678">Thiết lập để thêm máy in…</translation> <translation id="1682324559341535203">Đăng ký <ph name="DEVICE_TYPE" /></translation> @@ -1012,7 +1011,6 @@ <translation id="2371076942591664043">Mở khi &hoàn tất</translation> <translation id="2372036074421194686">Chrome đã tìm thấy chương trình không mong muốn (<ph name="UWS_NAME" />) được cài đặt trên máy tính của bạn. Bạn có thể xóa chương trình đó bằng cách chạy Công cụ làm sạch Chrome.</translation> <translation id="2375701438512326360">Buộc hỗ trợ màn hình cảm ứng luôn được bật hoặc tắt hoặc được bật khi phát hiện màn hình cảm ứng vào lúc khởi động (Tự động, mặc định).</translation> -<translation id="2377619091472055321">Đặt lại cài đặt <ph name="IDS_SHORT_PRODUCT_NAME" /> đã thay đổi?</translation> <translation id="2378075407703503998"><ph name="SELCTED_FILE_COUNT" /> tệp được chọn</translation> <translation id="2378982052244864789">Chọn thư mục tiện ích.</translation> <translation id="2379281330731083556">In bằng hộp thoại hệ thống... <ph name="SHORTCUT_KEY" /></translation> @@ -1560,6 +1558,7 @@ <translation id="3058212636943679650">Nếu bạn từng cần khôi phục hệ điều hành máy tính của mình, bạn sẽ cần thẻ SD hoặc thẻ nhớ USB khôi phục.</translation> <translation id="305932878998873762">Bộ nhớ cache đơn giản cho HTTP là bộ nhớ cache mới. Bộ nhớ cache này dựa trên hệ thống tệp cho phân bổ dung lượng đĩa.</translation> <translation id="3062606427884046423">Sử dụng thông báo Android MediaStyle cho thông báo phương tiện Chrome.</translation> +<translation id="3063224679438508013">Tự động chạy ứng dụng ghi chép</translation> <translation id="3063844757726132584">Truy cập tất cả ứng dụng của bạn từ trình chạy tiện dụng này. Chơi trò chơi, trò chuyện video, nghe nhạc, chỉnh sửa tài liệu hoặc tải thêm ứng dụng.</translation> <translation id="3064388234319122767">Chuyển ngữ (zdravo → здраво)</translation> <translation id="3065041951436100775">Phản hồi tab bị lỗi.</translation> @@ -1650,6 +1649,7 @@ <translation id="3172213052701798825">Google Smart Lock cho Mật khẩu</translation> <translation id="317583078218509884">Cài đặt giấy phép trang web mới sẽ có hiệu lực sau khi tải lại trang.</translation> <translation id="3177048931975664371">Nhấp để ẩn mật khẩu</translation> +<translation id="3177909033752230686">Ngôn ngữ trang:</translation> <translation id="3180365125572747493">Vui lòng nhập mật khẩu để mã hóa tệp chứng chỉ này.</translation> <translation id="3183139917765991655">Trình nhập hồ sơ</translation> <translation id="3184560914950696195">Không thể lưu vào $1. Ảnh đã chỉnh sửa sẽ được lưu vào thư mục Tải xuống.</translation> @@ -2000,6 +2000,7 @@ <translation id="3612673635130633812">Đã tải xuống bởi <a href="<ph name="URL" />"><ph name="EXTENSION" /></a></translation> <translation id="3613134908380545408">Hiển thị <ph name="FOLDER_NAME" /></translation> <translation id="3613422051106148727">&Mở trong tab mới</translation> +<translation id="3616113530831147358">Âm thanh</translation> <translation id="3616741288025931835">&Xoá Dữ liệu Duyệt web...</translation> <translation id="3618849550573277856">Tra cứu “<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">Đã sao lưu tất cả!</translation> @@ -2296,7 +2297,6 @@ <translation id="3994878504415702912">Thu &phóng</translation> <translation id="3995964755286119116">Các cài đặt máy ảnh của Adobe Flash Player là khác nhau.</translation> <translation id="39964277676607559">Không thể tải javascript '<ph name="RELATIVE_PATH" />' cho tập lệnh nội dung.</translation> -<translation id="3996912167543967198">Đang đặt lại...</translation> <translation id="3997015411467176489">Tính năng canvas thử nghiệm</translation> <translation id="4002066346123236978">Tiêu đề</translation> <translation id="40027638859996362">Di chuyển từ</translation> @@ -2329,7 +2329,7 @@ <translation id="406070391919917862">Ứng dụng nền</translation> <translation id="4062251648694601778">Trải nghiệm thiết bị <ph name="SHORT_PRODUCT_NAME" /> của bạn. Bạn có câu hỏi? Bạn luôn có thể nhận trợ giúp bằng cách nhấp vào "?" trong khay trạng thái.</translation> <translation id="4065876735068446555">Mạng bạn đang sử dụng (<ph name="NETWORK_ID" />) có thể yêu cầu bạn truy cập vào trang đăng nhập của mạng đó.</translation> -<translation id="4068506536726151626">Trang này chứa các yếu tố từ các trang web đang theo dõi vị trí của bạn sau đây:</translation> +<translation id="4068506536726151626">Trang này chứa các yếu tố từ các trang web đang theo dõi vị trí của bạn:</translation> <translation id="4070370845051020638">Phương thức nhập tiếng Quảng Đông</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />: lỗi đăng nhập</translation> <translation id="4072248638558688893">Bàn phím tiếng Tamil (Ngữ âm)</translation> @@ -2393,6 +2393,7 @@ <translation id="4140559601186535628">Thông báo đẩy</translation> <translation id="4146026355784316281">Luôn mở bằng trình xem hệ thống</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" /> muốn kiểm tra xem thiết bị Chrome OS có đủ điều kiện để nhận được ưu đãi hay không. <ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">Hiển thị</translation> <translation id="4151403195736952345">Sử dụng cài đặt mặc định chung (Phát hiện)</translation> <translation id="4152177296285305182">Chỉ những người có cụm mật khẩu mới có thể đọc dữ liệu được mã hóa của bạn. Cụm mật khẩu không được gửi tới hoặc được lưu trữ bởi Google. Nếu bạn quên cụm mật khẩu của mình, bạn cần đặt lại đồng bộ hóa.</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 tab}other{# tab}}</translation> @@ -2457,6 +2458,7 @@ <translation id="4250229828105606438">Ảnh chụp màn hình</translation> <translation id="4250680216510889253">Không</translation> <translation id="4253168017788158739">Lưu ý</translation> +<translation id="4254813446494774748">Ngôn ngữ dịch:</translation> <translation id="425573743389990240">Tốc độ phóng điện của pin tính bằng Watt (giá trị âm có nghĩa là đang sạc pin)</translation> <translation id="4256316378292851214">Lưu &Video Dưới dạng...</translation> <translation id="4258348331913189841">Hệ thống tệp</translation> @@ -2534,6 +2536,7 @@ <translation id="4365673000813822030">Rất tiếc, Đồng bộ hóa đã ngừng hoạt động.</translation> <translation id="4366509400410520531">Được cho phép bởi bạn</translation> <translation id="4367782753568896354">Chúng tôi không thể cài đặt:</translation> +<translation id="436904870295243580">Tìm thêm ứng dụng ghi chép</translation> <translation id="4370975561335139969">Email và mật khẩu bạn nhập không khớp</translation> <translation id="437184764829821926">Cài đặt phông chữ nâng cao</translation> <translation id="4372884569765913867">1x1</translation> @@ -3215,6 +3218,7 @@ <translation id="5324674707192845912">Bạn sắp hủy đăng ký <ph name="DEVICE_TYPE" /> này với Google để vô hiệu hóa khả năng định vị, xóa và khóa thiết bị từ xa. Bạn cần phải khởi động lại thiết bị. Bạn có muốn tiếp tục không?</translation> <translation id="5324780743567488672">Tự động đặt múi giờ bằng cách sử dụng vị trí của bạn</translation> <translation id="5325120507747984426">Sử dụng trình tự cửa sổ ổn định ở chế độ tổng quan nhằm giảm thiểu việc di chuyển cửa sổ khi vào / thoát phiên tổng quan và chuyển đổi giữa các phiên tổng quan.</translation> +<translation id="5326182685622510062">Có nhiều lượt triển khai kênh hiển thị hình ảnh cho canvas 2D. Các lượt triển khai khác nhau này có các đặc điểm hiệu suất khác nhau. Bật cờ này sẽ cho phép ngữ cảnh canvas 2D chuyển nhanh giữa các lượt triển khai này dựa trên cách canvas được sử dụng để tăng hiệu suất. Ví dụ: đi từ lượt triển khai sử dụng GPU đển triển khai không sử dụng GPU.</translation> <translation id="5327248766486351172">Tên</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">&Xoá</translation> @@ -3347,7 +3351,6 @@ <translation id="54870580363317966">Chọn hình đại diện cho người dùng được giám sát này.</translation> <translation id="5488468185303821006">Cho phép ở chế độ ẩn danh</translation> <translation id="5489390182170331803">Hành vi mặc định thụ động cho trình xử lý sự kiện cấp tài liệu</translation> -<translation id="5489789060051091748">Chọn để nói: Nhấn và giữ nút Tìm kiếm rồi nhấp hoặc kéo để nói bất cứ nội dung gì</translation> <translation id="549294555051714732">Khớp chuỗi con cho đề xuất Tự động điền</translation> <translation id="5493996328530898436">Chiến lược trộn và kết xuất âm thanh mới</translation> <translation id="5494362494988149300">Mở Khi &Hoàn tất</translation> @@ -3704,9 +3707,6 @@ <translation id="5991049340509704927">Phóng to</translation> <translation id="5991774521050363748">Bật bố cục tùy chỉnh cho Thông báo trên web. Những thông báo này sẽ có cải tiến bố cục tinh tế mà nếu không có bố cục tùy chỉnh sẽ không thể thực hiện được.</translation> <translation id="5993332328670040093">Mức sử dụng dữ liệu của bạn sẽ không được đo lường nữa.</translation> -<translation id="5996258716334177896">Không thể mở hồ sơ của bạn đúng cách. - -Một số tính năng có thể không có sẵn. Hãy kiểm tra xem hồ sơ có tồn tại và bạn có quyền đọc và ghi nội dung trong hồ sơ không.</translation> <translation id="6001799583597751002">Mã PIN không khớp:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" /> không thể tự cập nhật.</translation> <translation id="6003294706906016758">Bật khung kiểu ứng dụng web cho các ứng dụng được lưu trữ</translation> @@ -4156,7 +4156,6 @@ <translation id="6637362044401670482">Bật hỗ trợ cuộn quá mức bàn phím ảo.</translation> <translation id="6639554308659482635">Bộ nhớ SQLite</translation> <translation id="6643016212128521049">Xóa</translation> -<translation id="6644756108386233011">Đặt lại cài đặt <ph name="IDS_SHORT_PRODUCT_NAME" /> đã thay đổi?</translation> <translation id="6647228709620733774">URL thu hồi của tổ chức phát hành chứng chỉ Netscape</translation> <translation id="6647838571840953560">Hiện ở trên <ph name="CHANNEL_NAME" /></translation> <translation id="6649018507441623493">Hãy đợi giây lát…</translation> @@ -4264,7 +4263,6 @@ <translation id="6810613314571580006">Tự động đăng nhập vào các trang web bằng thông tin đăng nhập được lưu trữ. Khi tính năng này tắt, bạn sẽ luôn được yêu cầu xác nhận trước khi đăng nhập vào trang web.</translation> <translation id="6812349420832218321">Không thể chạy <ph name="PRODUCT_NAME" /> như chương trình gốc.</translation> <translation id="6812841287760418429">Lưu thay đổi</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> phát hiện thấy cài đặt trình duyệt của bạn có thể đã bị thay đổi mà bạn không biết. Bạn có muốn đặt lại cài đặt về mặc định ban đầu không?</translation> <translation id="6815551780062710681">chỉnh sửa</translation> <translation id="6817358880000653228">Đã lưu mật khẩu cho trang web này:</translation> <translation id="6820008762872335722">Đặt lại để hỏi</translation> @@ -4383,6 +4381,7 @@ (yêu cầu mật khẩu trước đó)</translation> <translation id="6981982820502123353">Truy cập</translation> <translation id="6981992744085917617">Chọn phương pháp bạn muốn sử dụng để đăng nhập lại vào tài khoản của mình:</translation> +<translation id="698231206551913481">Tất cả các tệp và dữ liệu cục bộ liên quan tới người dùng này sẽ bị xóa vĩnh viễn sau khi người dùng này bị xóa.</translation> <translation id="6982896539684144327">Đã phát hiện thấy máy in từ <ph name="VENDOR_NAME" /></translation> <translation id="6983783921975806247">OID đã Đăng ký</translation> <translation id="6983991971286645866">Tất cả các chỉnh sửa sẽ được lưu vào $1.</translation> @@ -4467,6 +4466,7 @@ <translation id="7073555242265688099">Nếu bạn có các thiết bị Chrome khác, chúng sẽ được đồng bộ hóa tự động, do đó điện thoại của bạn cũng sẽ mở khóa các thiết bị đó.</translation> <translation id="707392107419594760">Chọn bàn phím của bạn:</translation> <translation id="7075513071073410194">PKCS #1 MD5 Với Mã hóa RSA</translation> +<translation id="7075625805486468288">Quản lý cài đặt và chứng chỉ HTTPS/SSL</translation> <translation id="7076293881109082629">Đăng nhập</translation> <translation id="7077829361966535409">Không thể tải trang đăng nhập bằng cài đặt proxy hiện tại. Vui lòng <ph name="GAIA_RELOAD_LINK_START" />thử đăng nhập lại<ph name="GAIA_RELOAD_LINK_END" /> hoặc sử dụng <ph name="PROXY_SETTINGS_LINK_START" />cài đặt proxy<ph name="PROXY_SETTINGS_LINK_END" /> khác.</translation> <translation id="7077872827894353012">Trình xử lý giao thức bị bỏ qua</translation> @@ -4514,7 +4514,6 @@ <translation id="7141105143012495934">Đăng nhập không thành công vì không thể truy xuất chi tiết tài khoản của bạn. Vui lòng liên hệ với quản trị viên của bạn hoặc thử lại.</translation> <translation id="7143207342074048698">Đang kết nối</translation> <translation id="7144878232160441200">Thử lại</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> đã bị tắt. Để bật lại plugin này, hãy truy cập vào <ph name="CHROME_PLUGINS_LINK" />.</translation> <translation id="715118844758971915">Máy in cổ điển</translation> <translation id="7154130902455071009">Thay đổi trang chủ của bạn thành: <ph name="START_PAGE" /></translation> <translation id="715487527529576698">Chế độ tiếng Trung ban đầu là tiếng Trung Giản thể</translation> @@ -4576,7 +4575,7 @@ <translation id="7243055093079293866">Nói "Ok Google" vào tab mới và google.com</translation> <translation id="7243632151880336635">Xóa và đăng xuất</translation> <translation id="7245628041916450754"><ph name="WIDTH" /> x <ph name="HEIGHT" /> (Tốt nhất)</translation> -<translation id="724691107663265825">Trang web sắp truy cập chứa phần mềm độc hại</translation> +<translation id="724691107663265825">Trang web bạn sắp truy cập chứa phần mềm độc hại</translation> <translation id="725109152065019550">Rất tiếc, quản trị viên của bạn đã tắt bộ nhớ ngoài trên tài khoản của bạn.</translation> <translation id="7252661675567922360">Không tải</translation> <translation id="7253521419891527137">&Tìm hiểu thêm</translation> @@ -4793,6 +4792,7 @@ <translation id="7540972813190816353">Đã xảy ra lỗi khi kiểm tra cập nhật: <ph name="ERROR" /></translation> <translation id="7541121857749629630">Ngoại lệ cho hình ảnh</translation> <translation id="7543104066686362383">Bật tính năng gỡ lỗi trên thiết bị <ph name="IDS_SHORT_PRODUCT_NAME" /> này</translation> +<translation id="7543393759143837504">Truy cập <ph name="BEGIN_LINK_CHROMIUM" />Trợ giúp về Google Chrome<ph name="END_LINK_CHROMIUM" /> nếu bạn không tìm được thứ mà bạn đang tìm kiếm.</translation> <translation id="7544853251252956727">Phát ngẫu nhiên</translation> <translation id="7545288882499673859">Chiến lược hủy bộ nhớ để xử lý áp lực nâng cao</translation> <translation id="7545415673537747415">Kiểm soát cách Google sử dụng lịch sử duyệt web của bạn để cá nhân hóa Tìm kiếm, quảng cáo và các dịch vụ khác của Google từ <ph name="BEGIN_LINK" />Kiểm soát hoạt động của Google<ph name="END_LINK" />.</translation> @@ -5030,7 +5030,6 @@ <translation id="7879478708475862060">Theo dõi chế độ nhập</translation> <translation id="7880836220014399562">"<ph name="BUNDLE_NAME" />" thêm các ứng dụng và tiện ích sau:</translation> <translation id="7881969471599061635">Tắt phụ đề</translation> -<translation id="7884988936047469945">Tính năng trợ năng thử nghiệm</translation> <translation id="7885253890047913815">Máy in đích gần đây</translation> <translation id="7887192723714330082">Phải hồi "Ok Google" khi màn hình được bật và mở khóa</translation> <translation id="7887334752153342268">Nhân đôi</translation> @@ -5098,6 +5097,7 @@ <translation id="7974067550340408553">Nhận thông báo trên điện thoại của bạn mỗi lần Smart Lock mở khóa <ph name="DEVICE_TYPE" />.</translation> <translation id="7974566588408714340">Thử lại bằng <ph name="EXTENSIONNAME" /></translation> <translation id="7974936243149753750">Quét thừa</translation> +<translation id="7976960358280528247">Bật giao diện người dùng chuyển đổi cửa sổ (phản hồi trực quan cho Alt+Tab).</translation> <translation id="7977551819349545646">Đang cập nhật Chromebox...</translation> <translation id="7978412674231730200">Khoá cá nhân</translation> <translation id="7979036127916589816">Lỗi Đồng bộ hóa</translation> @@ -5125,6 +5125,7 @@ Giữ tệp khóa của bạn ở nơi an toàn. Bạn sẽ cần tệp khóa để tạo phiên bản tiện ích mới của mình.</translation> <translation id="799923393800005025">Có thể xem</translation> +<translation id="8000066093800657092">Không có mạng nào</translation> <translation id="8004582292198964060">Trình duyệt</translation> <translation id="8007030362289124303">Pin Yếu</translation> <translation id="8008356846765065031">Internet đã bị ngắt kết nối. Vui lòng kiểm tra kết nối Internet của bạn.</translation> @@ -5199,6 +5200,7 @@ <translation id="8116190140324504026">Thông tin khác...</translation> <translation id="8116483400482790018">Từ điển chính tả tùy chỉnh</translation> <translation id="8116972784401310538">&Trình quản lý dấu trang</translation> +<translation id="8117838550640702864">Cài gặt ghi chép</translation> <translation id="8117957376775388318">Phương thức nhập Dayi</translation> <translation id="8118860139461251237">Quản lý bản tải xuống của bạn</translation> <translation id="8119572489781388874">Sửa đổi cài đặt</translation> @@ -5292,7 +5294,7 @@ <translation id="8226222018808695353">Bị cấm</translation> <translation id="8226742006292257240">Dưới đây là mật khẩu TPM được tạo ngẫu nhiên đã được gán cho máy tính của bạn:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />, <ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">Những kẻ tấn công hiện đang truy cập <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> có thể cố gắng cài đặt các chương trình nguy hiểm trên máy tính của bạn. Các chương trình này sẽ đánh cắp hoặc xóa thông tin của bạn (ví dụ: ảnh, mật khẩu, thư và thẻ tín dụng).</translation> +<translation id="8230421197304563332">Những kẻ tấn công đang ở trên <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> có thể cố gắng cài đặt các chương trình nguy hiểm vào máy tính của bạn. Các chương trình này sẽ đánh cắp hoặc xóa thông tin của bạn (ví dụ: ảnh, mật khẩu, thư và thẻ tín dụng).</translation> <translation id="8233254008506535819">Đưa tùy chọn này vào trang web quan trọng thuộc danh sách trắng trong hộp thoại xóa dữ liệu duyệt web.</translation> <translation id="8236231079192337250">Ứng dụng Thư viện của Cửa hàng Chrome trực tuyến cho trình điều khiển máy in</translation> <translation id="8238649969398088015">Mẹo trợ giúp</translation> @@ -5477,7 +5479,6 @@ <translation id="8472623782143987204">được hỗ trợ bằng phần cứng</translation> <translation id="8475313423285172237">Một chương trình khác trên máy tính của bạn đã thêm một tiện ích có thể thay đổi cách Chrome hoạt động.</translation> <translation id="8475647382427415476">Google Drive không thể đồng bộ hóa "<ph name="FILENAME" />" ngay bây giờ. Google Drive sẽ thử lại sau.</translation> -<translation id="8476195663057048998">Xóa và đặt lại</translation> <translation id="8477241577829954800">Đã thay thế</translation> <translation id="8477384620836102176">&Chung</translation> <translation id="8480417584335382321">Thu phóng trang:</translation> @@ -5707,7 +5708,6 @@ <translation id="8785135611469711856">Plugin không hồi đáp</translation> <translation id="8787254343425541995">Cho phép các proxy đối với mạng chia sẻ</translation> <translation id="878763818693997570">Tên này quá dài</translation> -<translation id="8787865569533773240">Đặt lại cài đặt <ph name="IDS_SHORT_PRODUCT_NAME" /> đã thay đổi</translation> <translation id="8789375980715484686">Quản lý những người dùng khác</translation> <translation id="8791534160414513928">Gửi yêu cầu "Không theo dõi" kèm theo lưu lượng duyệt web của bạn</translation> <translation id="8795668016723474529">Thêm thẻ tín dụng</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index de119a3..4655c2ea 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -518,12 +518,11 @@ <translation id="1673103856845176271">出于安全原因,无法访问该文件。</translation> <translation id="1675023460278456180">Material 混合设计</translation> <translation id="167832068858235403">调低音量</translation> -<translation id="1678331212993975953">网站详情</translation> <translation id="1679068421605151609">开发者工具</translation> <translation id="1681120471812444678">设置以添加打印机…</translation> <translation id="1682324559341535203">注册<ph name="DEVICE_TYPE" /></translation> <translation id="1682548588986054654">打开新的隐身窗口</translation> -<translation id="168328519870909584"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 上的现有攻击程序可能会试图通过在您的设备上安装危险应用来窃取或删除您的信息(例如:照片、密码、通讯内容和信用卡信息)。</translation> +<translation id="168328519870909584"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 上的现有攻击者可能会试图通过在您的设备上安装危险应用来窃取或删除您的信息(如照片、密码、通讯内容和信用卡信息)。</translation> <translation id="1685141618403317602">取消注册</translation> <translation id="1685944703056982650">鼠标指针例外情况</translation> <translation id="1691063574428301566">您的计算机会在更新完成后重新启动。</translation> @@ -771,7 +770,7 @@ <translation id="2074527029802029717">取消固定标签页</translation> <translation id="2075594581020578008"><ph name="IDS_SHORT_PRODUCT_NAME" /> 浏览器</translation> <translation id="2076269580855484719">隐藏此插件</translation> -<translation id="2077084898869955643">自动向Google报告可能出现的安全事件详情。<ph name="PRIVACY_PAGE_LINK" /></translation> +<translation id="2077084898869955643">自动向 Google 报告可能出现的安全事件详情。<ph name="PRIVACY_PAGE_LINK" /></translation> <translation id="2077129598763517140">使用硬件加速模式(如果可用)</translation> <translation id="2078019350989722914">退出前提示 (<ph name="KEY_EQUIVALENT" />)</translation> <translation id="2079053412993822885">如果您删除了自己的某个证书,则不能再用该证书标识自己的身份。</translation> @@ -1007,7 +1006,6 @@ <translation id="2371076942591664043">完成时打开(&D)</translation> <translation id="2372036074421194686">Chrome 发现您的计算机上安装了垃圾程序(<ph name="UWS_NAME" />)。通过运行 Chrome 清理工具也许可以将其移除。</translation> <translation id="2375701438512326360">将触摸屏支持强制设置为始终启用或停用,或在启动时检测到触摸屏即启用(默认为自动)。</translation> -<translation id="2377619091472055321">重置被更改的“<ph name="IDS_SHORT_PRODUCT_NAME" />”设置</translation> <translation id="2378075407703503998">已选择 <ph name="SELCTED_FILE_COUNT" /> 个文件</translation> <translation id="2378982052244864789">选择扩展程序目录。</translation> <translation id="2379281330731083556">使用系统对话框进行打印...<ph name="SHORTCUT_KEY" /></translation> @@ -1472,7 +1470,7 @@ <translation id="295947108480905647">“<ph name="CHROME_EXTENSION_NAME" />”想要连接到:</translation> <translation id="2959614062380389916">已被管理员禁用</translation> <translation id="2960393411257968125">密码管理器自动填充同步凭据的方式。</translation> -<translation id="29611076221683977">目前<ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />上的攻击程序可能会试图在您的Mac上安装危险程序来窃取或删除您信息(例如:照片、密码、通讯内容和信用卡信息)。</translation> +<translation id="29611076221683977">攻击者可能会试图通过 <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 在您的 Mac 上安装危险程序,以窃取或删除您的信息(如照片、密码、通讯内容和信用卡信息)。</translation> <translation id="2961695502793809356">点击可前进,按住可查看历史记录</translation> <translation id="296216853343927883">在上下文菜单中显示 Google 品牌标识</translation> <translation id="2963151496262057773">以下插件没有响应:<ph name="PLUGIN_NAME" />。是否要停止使用该插件?</translation> @@ -1554,6 +1552,7 @@ <translation id="3058212636943679650">如果您要恢复计算机的操作系统,则需要使用恢复 SD 卡或 USB 记忆棒。</translation> <translation id="305932878998873762">Simple Cache for HTTP 是一种新的缓存,它依靠文件系统来分配磁盘空间。</translation> <translation id="3062606427884046423">针对 Chrome 媒体通知使用 Android MediaStyle 通知。</translation> +<translation id="3063224679438508013">自动启动备注应用</translation> <translation id="3063844757726132584">通过这个便捷的启动器,您可以访问自己的所有应用,还能玩游戏、视频聊天、欣赏音乐、编辑文档或下载更多应用。</translation> <translation id="3064388234319122767">音译(zdravo → здраво)</translation> <translation id="3065041951436100775">标签页意外关闭反馈。</translation> @@ -1644,6 +1643,7 @@ <translation id="3172213052701798825">Google Smart Lock(密码专用)</translation> <translation id="317583078218509884">新的网站权限设置会在重新加载页面后生效。</translation> <translation id="3177048931975664371">点击可隐藏密码</translation> +<translation id="3177909033752230686">网页语言:</translation> <translation id="3180365125572747493">请输入密码,用于加密该证书文件。</translation> <translation id="3183139917765991655">个人资料导入应用</translation> <translation id="3184560914950696195">无法保存到 $1。经过修改的图片将保存在“下载内容”文件夹中。</translation> @@ -1991,6 +1991,7 @@ <translation id="3612673635130633812">由<a href="<ph name="URL" />"><ph name="EXTENSION" /></a>下载</translation> <translation id="3613134908380545408">显示“<ph name="FOLDER_NAME" />”</translation> <translation id="3613422051106148727">在新标签页中打开(&O)</translation> +<translation id="3616113530831147358">音频</translation> <translation id="3616741288025931835">清除浏览数据(&C)...</translation> <translation id="3618849550573277856">查询“<ph name="LOOKUP_STRING" />”</translation> <translation id="3620292326130836921">所有文件都已备份!</translation> @@ -2286,7 +2287,6 @@ <translation id="3994878504415702912">缩放(&Z)</translation> <translation id="3995964755286119116">Adobe Flash Player 的摄像头设置有所不同。</translation> <translation id="39964277676607559">无法为内容脚本加载 JavaScript“<ph name="RELATIVE_PATH" />”。</translation> -<translation id="3996912167543967198">正在重置…</translation> <translation id="3997015411467176489">实验性画布功能</translation> <translation id="4002066346123236978">标题</translation> <translation id="40027638859996362">字词移动</translation> @@ -2319,7 +2319,7 @@ <translation id="406070391919917862">后台应用</translation> <translation id="4062251648694601778">尽情享受<ph name="SHORT_PRODUCT_NAME" />设备给您带来的便利吧!如有任何问题,只需点击状态栏中的“?”,即可获得帮助。</translation> <translation id="4065876735068446555">您正在使用的网络 (<ph name="NETWORK_ID" />) 可能需要您访问其登录页面。</translation> -<translation id="4068506536726151626">此网页包含来自以下网站的元素,这些网站正在跟踪您的位置:</translation> +<translation id="4068506536726151626">此网页包含来自以下网站的元素,这些网站正在追踪您的位置:</translation> <translation id="4070370845051020638">粤语输入法</translation> <translation id="4071770069230198275"><ph name="PROFILE_NAME" />:登录错误</translation> <translation id="4072248638558688893">泰米尔语键盘(注音)</translation> @@ -2383,6 +2383,7 @@ <translation id="4140559601186535628">推送消息</translation> <translation id="4146026355784316281">始终使用系统查看器打开</translation> <translation id="4146175323503586871"><ph name="SERVICE_NAME" />需要检查您的Chrome操作系统设备是否能享受优惠。<ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">显示</translation> <translation id="4151403195736952345">使用全局默认设置(检测)</translation> <translation id="4152177296285305182">只有知道您密码的人才能读取您已加密的数据;该密码不会发送给 Google,也不会被 Google 存储。如果您忘记了密码,则需要重置同步设置。</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 个标签页}other{# 个标签页}}</translation> @@ -2447,6 +2448,7 @@ <translation id="4250229828105606438">屏幕截图</translation> <translation id="4250680216510889253">否</translation> <translation id="4253168017788158739">备注</translation> +<translation id="4254813446494774748">翻译语言:</translation> <translation id="425573743389990240">电池放电率(单位为瓦,负值表示电池正在充电)</translation> <translation id="4256316378292851214">视频存储为(&V)...</translation> <translation id="4258348331913189841">文件系统</translation> @@ -2524,6 +2526,7 @@ <translation id="4365673000813822030">糟糕,同步已停止。</translation> <translation id="4366509400410520531">您允许</translation> <translation id="4367782753568896354">我们无法安装:</translation> +<translation id="436904870295243580">查找更多备注应用</translation> <translation id="4370975561335139969">您输入的电子邮件地址和密码不匹配。</translation> <translation id="437184764829821926">高级字体设置</translation> <translation id="4372884569765913867">1x1</translation> @@ -3193,6 +3196,7 @@ <translation id="5324674707192845912">您打算取消在 Google 注册此<ph name="DEVICE_TYPE" />,以便停用远程定位、清空和锁定此设备的功能。这需要重新启动此设备。要继续吗?</translation> <translation id="5324780743567488672">使用您的位置信息自动设置时区</translation> <translation id="5325120507747984426">在概览模式下使用稳定的窗口顺序(可在进入/退出概览模式以及在切换概览会话时尽量减少窗口的移动)。</translation> +<translation id="5326182685622510062">2D 画布的图形渲染管道有多种实现方式。这些不同的实现方式具有不同的效果特征。启用此项后,2D 画布环境可根据画布的使用方式在这些实现方式之间快速切换,以便增强效果。例如,从使用 GPU 的实现方式切换为不使用 GPU 的实现方式。</translation> <translation id="5327248766486351172">名称</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">删除(&D)</translation> @@ -3202,7 +3206,7 @@ <translation id="5334142896108694079">脚本缓存</translation> <translation id="533433379391851622">正确版本应为“<ph name="EXPECTED_VERSION" />”,但实际版本为“<ph name="NEW_ID" />”。</translation> <translation id="5334844597069022743">查看源代码</translation> -<translation id="5337705430875057403"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 上的攻击程序可能会诱骗您做一些危险的事情,如安装软件或泄露您的个人信息(例如密码、电话号码或信用卡信息)。</translation> +<translation id="5337705430875057403"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 上的攻击者可能会诱骗您做一些危险的事情,如安装软件或泄露您的个人信息(如密码、电话号码或信用卡信息)。</translation> <translation id="5337771866151525739">由第三方安装。</translation> <translation id="5338503421962489998">本地存储</translation> <translation id="5340217413897845242">栏中第 6 项</translation> @@ -3325,7 +3329,6 @@ <translation id="54870580363317966">为该受监管用户选择头像。</translation> <translation id="5488468185303821006">在隐身模式下启用</translation> <translation id="5489390182170331803">将文档级事件监听器默认视为被动式</translation> -<translation id="5489789060051091748">随选朗读:按下“搜索”键并点击或拖动,即可朗读屏幕上的任何文字</translation> <translation id="549294555051714732">针对自动填充建议的子字符串匹配功能</translation> <translation id="5493996328530898436">新的音频渲染混合策略</translation> <translation id="5494362494988149300">完成后打开(&D)</translation> @@ -3682,7 +3685,6 @@ <translation id="5991049340509704927">放大</translation> <translation id="5991774521050363748">为网页通知启用自定义布局。启用后,布局将有细微的改进(如果不启用的话,将看不到这些改进)。</translation> <translation id="5993332328670040093">系统将不再衡量您的数据使用情况。</translation> -<translation id="5996258716334177896">无法正确打开您的个人资料。某些功能可能无法使用。请检查该个人资料是否存在,以及您是否有权对其中的内容进行读写操作。</translation> <translation id="6001799583597751002">PIN 码不正确:</translation> <translation id="6003177993629630467"><ph name="PRODUCT_NAME" />可能无法进行自动更新。</translation> <translation id="6003294706906016758">为托管的应用启用网络应用式框架</translation> @@ -3732,7 +3734,7 @@ <translation id="6073903501322152803">添加无障碍功能</translation> <translation id="6074825444536523002">Google 表单</translation> <translation id="6075731018162044558">糟糕!系统无法为此设备获得长期的 API 访问令牌。</translation> -<translation id="6075880972317537864"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />上的攻击程序可能会试图骗取您的信息(例如:密码、通讯内容或信用卡信息)。</translation> +<translation id="6075880972317537864"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 上的攻击者可能会试图骗取您的信息(如密码、通讯内容或信用卡信息)。</translation> <translation id="6075907793831890935">与名为“<ph name="HOSTNAME" />”的设备交换数据</translation> <translation id="607776788151925847">正在取消注册…</translation> <translation id="6079696972035130497">无限制</translation> @@ -4131,7 +4133,6 @@ <translation id="6637362044401670482">启用对虚拟键盘滚动反弹的支持。</translation> <translation id="6639554308659482635">SQLite 使用的内存</translation> <translation id="6643016212128521049">清除</translation> -<translation id="6644756108386233011">重置被更改的“<ph name="IDS_SHORT_PRODUCT_NAME" />”设置吗?</translation> <translation id="6647228709620733774">Netscape 证书授权中心吊销网址</translation> <translation id="6647838571840953560">目前使用的是<ph name="CHANNEL_NAME" />版本</translation> <translation id="6649018507441623493">请稍候…</translation> @@ -4239,7 +4240,6 @@ <translation id="6810613314571580006">使用存储的凭据自动登录网站。停用该功能后,系统会在您每次登录网站之前要求您进行确认。</translation> <translation id="6812349420832218321">不能以根用户身份运行 <ph name="PRODUCT_NAME" />。</translation> <translation id="6812841287760418429">保留更改</translation> -<translation id="6815353853907306610">“<ph name="IDS_SHORT_PRODUCT_NAME" />”检测到您的浏览器设置可能在您不知情的情况下发生了更改。要将其重置为原始默认设置吗?</translation> <translation id="6815551780062710681">修改</translation> <translation id="6817358880000653228">已保存此网站的密码:</translation> <translation id="6820008762872335722">重置为下次询问</translation> @@ -4356,6 +4356,7 @@ (需要旧密码)</translation> <translation id="6981982820502123353">无障碍</translation> <translation id="6981992744085917617">选择您要用来重新登录帐户的方式:</translation> +<translation id="698231206551913481">移除该用户后,与其关联的所有文件和本地数据都会被永久删除。</translation> <translation id="6982896539684144327">已检测到来自<ph name="VENDOR_NAME" />的打印机</translation> <translation id="6983783921975806247">已注册的 OID</translation> <translation id="6983991971286645866">所有修改都会被保存到 $1。</translation> @@ -4368,7 +4369,7 @@ <translation id="6990778048354947307">黑暗主题</translation> <translation id="6991128190741664836">以后再说</translation> <translation id="6991665348624301627">选择目标打印机</translation> -<translation id="699220179437400583">自动向Google报告可能出现的安全事件详情</translation> +<translation id="699220179437400583">自动向 Google 报告可能出现的安全事件详情</translation> <translation id="6993929801679678186">显示自动填充预测内容</translation> <translation id="6998711733709403587">已选择 <ph name="SELCTED_FOLDERS_COUNT" /> 个文件夹</translation> <translation id="6998872712520806535">{NUM_PAGES,plural, =1{以下页面已停止响应。您可以等待该页面恢复响应,也可以将其关闭。}other{以下页面已停止响应。您可以等待这些页面恢复响应,也可以将其关闭。}}</translation> @@ -4440,6 +4441,7 @@ <translation id="7073555242265688099">如果您还有其他 Chrome 设备,这些设备将会自动同步,因此配对手机也能用来为它们解锁。</translation> <translation id="707392107419594760">选择键盘:</translation> <translation id="7075513071073410194">PKCS #1,带有 RSA 加密的 MD5</translation> +<translation id="7075625805486468288">管理 HTTPS/SSL 证书和设置</translation> <translation id="7076293881109082629">正在登录</translation> <translation id="7077829361966535409">使用当前代理设置无法加载登录页面。请<ph name="GAIA_RELOAD_LINK_START" />尝试重新登录<ph name="GAIA_RELOAD_LINK_END" />,或者使用不同的<ph name="PROXY_SETTINGS_LINK_START" />代理设置<ph name="PROXY_SETTINGS_LINK_END" />。</translation> <translation id="7077872827894353012">已忽略的协议处理程序</translation> @@ -4487,7 +4489,6 @@ <translation id="7141105143012495934">由于无法获取您的帐户详情,因此登录失败了。请与管理员联系或重试。</translation> <translation id="7143207342074048698">正在连接</translation> <translation id="7144878232160441200">重试</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> 已停用。要重新启用该插件,请访问 <ph name="CHROME_PLUGINS_LINK" />。</translation> <translation id="715118844758971915">传统打印机</translation> <translation id="7154130902455071009">将您的初始页更改为:<ph name="START_PAGE" /></translation> <translation id="715487527529576698">初始中文输入模式是简体中文</translation> @@ -4759,6 +4760,7 @@ <translation id="7540972813190816353">检查更新时出错:<ph name="ERROR" /></translation> <translation id="7541121857749629630">图片例外情况</translation> <translation id="7543104066686362383">在此<ph name="IDS_SHORT_PRODUCT_NAME" />设备上启用调试功能</translation> +<translation id="7543393759143837504">如果您找不到要查找的内容,请参阅 <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome 帮助<ph name="END_LINK_CHROMIUM" />。</translation> <translation id="7544853251252956727">随机播放</translation> <translation id="7545288882499673859">高级压力处理功能使用的内存抛弃策略</translation> <translation id="7545415673537747415">您可以通过 <ph name="BEGIN_LINK" />Google 活动控件<ph name="END_LINK" />,控制 Google 如何利用您的浏览记录为您提供个性化的 Google 搜索、广告和其他 Google 服务。</translation> @@ -4792,7 +4794,7 @@ <translation id="7582844466922312471">移动数据</translation> <translation id="7583242026904249212"><ph name="DOMAIN" /> 希望您的设备通过 Google 的身份验证,以确定是否能对受保护的媒体使用增强播放功能。<ph name="LEARN_MORE" />。</translation> <translation id="7584802760054545466">正在连接至<ph name="NETWORK_ID" /></translation> -<translation id="7586312264284919041">您要翻译该网页吗?</translation> +<translation id="7586312264284919041">您是否要翻译该网页?</translation> <translation id="7586498138629385861">Chrome应用处于打开状态时,Chrome将持续运行。</translation> <translation id="7587108133605326224">波罗的海周边语言</translation> <translation id="7589461650300748890">注意!</translation> @@ -4994,7 +4996,6 @@ <translation id="7879478708475862060">按输入法</translation> <translation id="7880836220014399562">“<ph name="BUNDLE_NAME" />”会添加以下应用和扩展程序:</translation> <translation id="7881969471599061635">停用字幕</translation> -<translation id="7884988936047469945">实验性无障碍功能</translation> <translation id="7885253890047913815">近期使用过的目标打印机</translation> <translation id="7887192723714330082">当屏幕处于开启状态并且未锁定时,对“Ok Google”做出回应</translation> <translation id="7887334752153342268">复制</translation> @@ -5062,6 +5063,7 @@ <translation id="7974067550340408553">每当 Smart Lock 为您的 <ph name="DEVICE_TYPE" /> 解锁时,一律向配对手机发送通知。</translation> <translation id="7974566588408714340">使用“<ph name="EXTENSIONNAME" />”重试</translation> <translation id="7974936243149753750">过扫描</translation> +<translation id="7976960358280528247">启用窗口循环切换界面(按 Alt+Tab 键后的视觉反馈)。</translation> <translation id="7977551819349545646">正在更新 Chromebox…</translation> <translation id="7978412674231730200">私有密钥</translation> <translation id="7979036127916589816">同步错误</translation> @@ -5089,6 +5091,7 @@ 请妥善保存您的密钥文件。您还需要使用该文件创建新版扩展程序。</translation> <translation id="799923393800005025">可以查看</translation> +<translation id="8000066093800657092">未连接任何网络</translation> <translation id="8004582292198964060">浏览器</translation> <translation id="8007030362289124303">电池电量低</translation> <translation id="8008356846765065031">网络已断开,请检查您的互联网连接是否正常。</translation> @@ -5163,6 +5166,7 @@ <translation id="8116190140324504026">详情...</translation> <translation id="8116483400482790018">自定义拼写检查字典</translation> <translation id="8116972784401310538">书签管理器(&B)</translation> +<translation id="8117838550640702864">备注设置</translation> <translation id="8117957376775388318">大易输入法</translation> <translation id="8118860139461251237">管理您的下载内容</translation> <translation id="8119572489781388874">修改设置</translation> @@ -5256,7 +5260,7 @@ <translation id="8226222018808695353">已被禁止</translation> <translation id="8226742006292257240">以下是一个分配给您计算机的、随机生成的 TPM 密码:</translation> <translation id="822964464349305906"><ph name="TYPE_1" />、<ph name="TYPE_2" /></translation> -<translation id="8230421197304563332">目前<ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />上的攻击程序可能会试图在您的计算机上安装危险程序来窃取或删除您的信息(例如:照片、密码、通讯内容和信用卡信息)。</translation> +<translation id="8230421197304563332">攻击者可能会试图通过 <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 在您的计算机上安装危险程序,以窃取或删除您的信息(如照片、密码、通讯内容和信用卡信息)。</translation> <translation id="8233254008506535819">包含在“清除浏览数据”对话框中将重要网站加入白名单的选项。</translation> <translation id="8236231079192337250">专门搜索打印机驱动程序的“Chrome 网上应用店扩展程序列表”应用</translation> <translation id="8238649969398088015">帮助提示</translation> @@ -5441,7 +5445,6 @@ <translation id="8472623782143987204">硬件支持</translation> <translation id="8475313423285172237">您计算机上的其他程序添加了一个扩展程序,该扩展程序可能会改变 Chrome 的工作方式。</translation> <translation id="8475647382427415476">Google 云端硬盘暂时无法同步“<ph name="FILENAME" />”,将在稍后重试。</translation> -<translation id="8476195663057048998">清除并重置</translation> <translation id="8477241577829954800">被取代</translation> <translation id="8477384620836102176">基本信息(&G)</translation> <translation id="8480417584335382321">网页缩放:</translation> @@ -5671,7 +5674,6 @@ <translation id="8785135611469711856">插件没有响应</translation> <translation id="8787254343425541995">允许共享网络使用代理</translation> <translation id="878763818693997570">名称过长</translation> -<translation id="8787865569533773240">重置被更改的“<ph name="IDS_SHORT_PRODUCT_NAME" />”设置</translation> <translation id="8789375980715484686">管理其他用户</translation> <translation id="8791534160414513928">随浏览流量一起发送“不跟踪”请求</translation> <translation id="8795668016723474529">添加信用卡</translation> @@ -5855,7 +5857,7 @@ <translation id="9038649477754266430">使用联想查询服务更快速地加载网页</translation> <translation id="9039663905644212491">PEAP</translation> <translation id="9039890312082871605">将所有标签页静音</translation> -<translation id="9040185888511745258"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />上的攻击程序可能会试图骗您安装有损浏览体验(例如,更改您的主页或在您访问的网站上显示额外的广告)的程序。</translation> +<translation id="9040185888511745258"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 上的攻击者可能会试图骗您安装有损浏览体验的程序(例如更改您的主页或在您访问的网站上显示额外的广告)。</translation> <translation id="9040421302519041149">对此网络的访问受保护。</translation> <translation id="9041603713188951722">在窗口中显示设置</translation> <translation id="9042893549633094279">隐私设置和安全性</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 2dc51db..ebb42c60 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -521,7 +521,6 @@ <translation id="1673103856845176271">基於安全理由,您無法存取檔案。</translation> <translation id="1675023460278456180">質感混合</translation> <translation id="167832068858235403">調低音量鍵</translation> -<translation id="1678331212993975953">網站詳細資料</translation> <translation id="1679068421605151609">開發人員工具</translation> <translation id="1681120471812444678">設定新增印表機…</translation> <translation id="1682324559341535203">註冊 <ph name="DEVICE_TYPE" /></translation> @@ -1010,7 +1009,6 @@ <translation id="2371076942591664043">完成後開啟(&D)</translation> <translation id="2372036074421194686">Chrome 發現您的電腦裝有惡意程式 (<ph name="UWS_NAME" />)。您可以運用 Chrome 清理工具移除程式。</translation> <translation id="2375701438512326360">強制啟用或停用觸控螢幕支援,或是在起始過程中偵測到觸控螢幕時啟用支援 (預設為自動啟用)。</translation> -<translation id="2377619091472055321">重設已修改的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 設定</translation> <translation id="2378075407703503998">已選取 <ph name="SELCTED_FILE_COUNT" /> 個檔案</translation> <translation id="2378982052244864789">選取擴充功能目錄。</translation> <translation id="2379281330731083556">使用系統對話方塊進行列印... <ph name="SHORTCUT_KEY" /></translation> @@ -1558,6 +1556,7 @@ <translation id="3058212636943679650">如果您需要還原電腦的作業系統,請準備復原系統所需的 SD 卡或 USB 隨身碟。</translation> <translation id="305932878998873762">HTTP 簡易快取是一種新的快取檔案,必須透過檔案系統配置磁碟空間。</translation> <translation id="3062606427884046423">讓 Chrome 媒體通知使用 Android MediaStyle 通知。</translation> +<translation id="3063224679438508013">自動啟動記事應用程式</translation> <translation id="3063844757726132584">這個便捷的啟動器能讓您存取所有應用程式。您可以從這裡選擇玩遊戲、進行視訊通訊、聆聽音樂、編輯文件,或是下載更多應用程式。</translation> <translation id="3064388234319122767">音譯 (zdravo → здраво)</translation> <translation id="3065041951436100775">分頁毀損意見回饋。</translation> @@ -1648,6 +1647,7 @@ <translation id="3172213052701798825">密碼專用 Google Smart Lock</translation> <translation id="317583078218509884">新的網站權限設定會在重新載入網頁後生效。</translation> <translation id="3177048931975664371">按這裡隱藏密碼</translation> +<translation id="3177909033752230686">網頁語言:</translation> <translation id="3180365125572747493">請輸入對這個憑證檔案進行加密時使用的密碼。</translation> <translation id="3183139917765991655">設定檔匯入工具</translation> <translation id="3184560914950696195">無法儲存到 $1,系統會將編輯過的圖片儲存在「下載」資料夾。</translation> @@ -1997,6 +1997,7 @@ <translation id="3612673635130633812">「<a href="<ph name="URL" />"><ph name="EXTENSION" /></a>」下載了這個檔案</translation> <translation id="3613134908380545408">顯示「<ph name="FOLDER_NAME" />」</translation> <translation id="3613422051106148727">在新分頁中開啟(&O)</translation> +<translation id="3616113530831147358">音訊</translation> <translation id="3616741288025931835">清除瀏覽資料(&C)...</translation> <translation id="3618849550573277856">查詢「<ph name="LOOKUP_STRING" />」</translation> <translation id="3620292326130836921">所有檔案都已備份!</translation> @@ -2292,7 +2293,6 @@ <translation id="3994878504415702912">縮放(&Z)</translation> <translation id="3995964755286119116">Adobe Flash Player 適用不同的攝影機設定。</translation> <translation id="39964277676607559">無法載入內容指令碼的 javascript「<ph name="RELATIVE_PATH" />」。</translation> -<translation id="3996912167543967198">重設中...</translation> <translation id="3997015411467176489">實驗性 Canvas 功能</translation> <translation id="4002066346123236978">標題</translation> <translation id="40027638859996362">文字移動</translation> @@ -2389,6 +2389,7 @@ <translation id="4140559601186535628">推送訊息</translation> <translation id="4146026355784316281">一律使用系統檢視器開啟</translation> <translation id="4146175323503586871">「<ph name="SERVICE_NAME" />」要求確認您的 Chrome 作業系統裝置是否符合優惠兌換資格。<ph name="MORE_INFO_LINK" /></translation> +<translation id="4150201353443180367">顯示設定</translation> <translation id="4151403195736952345">使用全域預設設定 (偵測)</translation> <translation id="4152177296285305182">只有知道您通關密語的使用者,才能讀取加密保護的檔案 -- 系統不會將通關密語傳送給 Google,Google 也不會儲存通關密語。如果您忘記自己的通關密語,則必須重設同步處理。</translation> <translation id="4152670763139331043">{NUM_TABS,plural, =1{1 個分頁}other{# 個分頁}}</translation> @@ -2453,6 +2454,7 @@ <translation id="4250229828105606438">螢幕擷取畫面</translation> <translation id="4250680216510889253">否</translation> <translation id="4253168017788158739">附註</translation> +<translation id="4254813446494774748">翻譯語言:</translation> <translation id="425573743389990240">電池放電速率 (瓦特) (如為負值,表示電池正在充電)</translation> <translation id="4256316378292851214">另存影片(&V)...</translation> <translation id="4258348331913189841">檔案系統</translation> @@ -2530,6 +2532,7 @@ <translation id="4365673000813822030">糟糕,同步處理已停止運作。</translation> <translation id="4366509400410520531">依據您的設定允許</translation> <translation id="4367782753568896354">無法安裝:</translation> +<translation id="436904870295243580">尋找其他記事應用程式</translation> <translation id="4370975561335139969">您所輸入的電子郵件和密碼不相符</translation> <translation id="437184764829821926">進階字型設定</translation> <translation id="4372884569765913867">1x1</translation> @@ -3206,6 +3209,7 @@ <translation id="5324674707192845912">您即將向 Google 取消註冊這台 <ph name="DEVICE_TYPE" />,以停用遠端定位、清除及鎖定裝置的功能。這項設定需要重新啟動後才會生效,您要繼續嗎?</translation> <translation id="5324780743567488672">自動使用您的位置資訊設定時區</translation> <translation id="5325120507747984426">在總覽模式中使用穩定視窗順序,目的是減少進入/退出總覽模式及總覽工作階段之間的視窗動作。</translation> +<translation id="5326182685622510062">我們提供多種 2D 畫布圖形轉譯管線執行方式,各有不同的效能特性。啟用這個標記後,即可根據畫布使用情形快速切換不同的畫布 2D 內容執行方式 (例如從使用 GPU 的執行方式切換至不使用 GPU 的執行方式),藉此提升執行效能。</translation> <translation id="5327248766486351172">名稱</translation> <translation id="5328031682234198929">8</translation> <translation id="5329858601952122676">刪除(&D)</translation> @@ -3338,7 +3342,6 @@ <translation id="54870580363317966">為這位受監管使用者選擇一張顯示圖片。</translation> <translation id="5488468185303821006">允許在無痕模式中執行</translation> <translation id="5489390182170331803">文件層級事件監聽器被動預設值</translation> -<translation id="5489789060051091748">隨選朗讀:按住搜尋鍵,然後直接點選或拖曳,即可讓系統朗讀畫面上的任何文字</translation> <translation id="549294555051714732">自動填入建議的子字串比對功能</translation> <translation id="5493996328530898436">新音訊轉譯混合策略</translation> <translation id="5494362494988149300">下載完成時自動開啟檔案(&D)</translation> @@ -3695,7 +3698,6 @@ <translation id="5991049340509704927">放大</translation> <translation id="5991774521050363748">為網路通知啟用自訂版面配置。啟用後,版面配置方面會有細微的改善 (必須啟用這項功能才有效果)。</translation> <translation id="5993332328670040093">系統不會再監測您的數據用量。</translation> -<translation id="5996258716334177896">無法正確開啟您的設定檔。部分功能可能無法使用,請檢查該設定檔是否存在,並確認您擁有讀寫設定檔內容的權限。</translation> <translation id="6001799583597751002">PIN 不符:</translation> <translation id="6003177993629630467">「<ph name="PRODUCT_NAME" />」可能無法自動更新。</translation> <translation id="6003294706906016758">針對代管應用程式啟用網路應用程式樣式頁框</translation> @@ -4144,7 +4146,6 @@ <translation id="6637362044401670482">啟用虛擬鍵盤捲動邊界支援。</translation> <translation id="6639554308659482635">SQLite 記憶體使用量</translation> <translation id="6643016212128521049">清除</translation> -<translation id="6644756108386233011">重設已修改的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 設定?</translation> <translation id="6647228709620733774">Netscape 憑證授權撤銷網址</translation> <translation id="6647838571840953560">目前使用<ph name="CHANNEL_NAME" />版</translation> <translation id="6649018507441623493">請稍候...</translation> @@ -4252,7 +4253,6 @@ <translation id="6810613314571580006">自動使用已儲存的憑證登入網站。如果停用這項功能,每當您登入網站時,都必須向系統確認您的登入憑證。</translation> <translation id="6812349420832218321"><ph name="PRODUCT_NAME" /> 無法以根使用者的身分執行。</translation> <translation id="6812841287760418429">保留變更</translation> -<translation id="6815353853907306610"><ph name="IDS_SHORT_PRODUCT_NAME" /> 偵測到瀏覽器設定可能已在您不知情的情況下遭到變更。您要將瀏覽器設定重設為其原始預設值嗎?</translation> <translation id="6815551780062710681">編輯</translation> <translation id="6817358880000653228">已儲存這個網站的密碼:</translation> <translation id="6820008762872335722">重設為必須詢問您</translation> @@ -4369,6 +4369,7 @@ (需要原來的密碼)</translation> <translation id="6981982820502123353">協助工具</translation> <translation id="6981992744085917617">選擇您要用來重新登入帳戶的方法:</translation> +<translation id="698231206551913481">將這位使用者移除後,與這位使用者相關聯的所有檔案和本機資料都會遭到永久刪除。</translation> <translation id="6982896539684144327">偵測到 <ph name="VENDOR_NAME" /> 的印表機</translation> <translation id="6983783921975806247">已註冊的 OID</translation> <translation id="6983991971286645866">所有編輯內容都會儲存到「$1」。</translation> @@ -4453,6 +4454,7 @@ <translation id="7073555242265688099">您的其他 Chrome 裝置 (如果有的話) 會自動保持同步,因此您也可以使用手機解鎖其他 Chrome 裝置。</translation> <translation id="707392107419594760">選擇鍵盤:</translation> <translation id="7075513071073410194">PKCS #1 MD5 (使用 RSA 加密)</translation> +<translation id="7075625805486468288">管理 HTTPS/SSL 憑證和設定</translation> <translation id="7076293881109082629">登入中</translation> <translation id="7077829361966535409">無法使用目前的 Proxy 設定載入登入頁面。請<ph name="GAIA_RELOAD_LINK_START" />重新登入<ph name="GAIA_RELOAD_LINK_END" />或使用其他 <ph name="PROXY_SETTINGS_LINK_START" />Proxy 設定<ph name="PROXY_SETTINGS_LINK_END" />。</translation> <translation id="7077872827894353012">略過的通訊協定處理常式</translation> @@ -4500,7 +4502,6 @@ <translation id="7141105143012495934">無法擷取您的帳戶詳細資料,導致登入失敗。請與您的管理員聯絡或再試一次。</translation> <translation id="7143207342074048698">連線中</translation> <translation id="7144878232160441200">重試</translation> -<translation id="7148311641502571842"><ph name="PLUGIN_NAME" /> 已停用。如要重新啟用外掛程式,請前往 <ph name="CHROME_PLUGINS_LINK" />。</translation> <translation id="715118844758971915">傳統印表機</translation> <translation id="7154130902455071009">將您的起始網頁變更為:<ph name="START_PAGE" /></translation> <translation id="715487527529576698">初始中文模式為簡體中文</translation> @@ -4777,6 +4778,7 @@ <translation id="7540972813190816353">檢查更新時發生錯誤:<ph name="ERROR" /></translation> <translation id="7541121857749629630">圖片例外情況</translation> <translation id="7543104066686362383">在這個 <ph name="IDS_SHORT_PRODUCT_NAME" /> 裝置上啟用偵錯功能</translation> +<translation id="7543393759143837504">如果您找不到需要的資訊,請參閱 <ph name="BEGIN_LINK_CHROMIUM" />Google Chrome 說明<ph name="END_LINK_CHROMIUM" />。</translation> <translation id="7544853251252956727">隨機播放</translation> <translation id="7545288882499673859">進階壓力處理功能的記憶體釋放策略</translation> <translation id="7545415673537747415">Google 會使用您的瀏覽紀錄為您提供個人化的搜尋服務、廣告內容和其他各項 Google 服務,而您可以透過 <ph name="BEGIN_LINK" />Google 活動控制項<ph name="END_LINK" />對這項行為進行控管。</translation> @@ -5013,7 +5015,6 @@ <translation id="7879478708475862060">按照輸入模式</translation> <translation id="7880836220014399562">「<ph name="BUNDLE_NAME" />」會新增下列應用程式和擴充功能:</translation> <translation id="7881969471599061635">停用字幕</translation> -<translation id="7884988936047469945">實驗性協助工具功能</translation> <translation id="7885253890047913815">最近用過的印表機</translation> <translation id="7887192723714330082">螢幕開啟且已解鎖時回應「Ok Google」</translation> <translation id="7887334752153342268">複製</translation> @@ -5081,6 +5082,7 @@ <translation id="7974067550340408553">Smart Lock 解鎖 <ph name="DEVICE_TYPE" /> 時一律在手機上顯示通知。</translation> <translation id="7974566588408714340">使用「<ph name="EXTENSIONNAME" />」重試</translation> <translation id="7974936243149753750">遮視區域</translation> +<translation id="7976960358280528247">啟用視窗循環使用者介面 (Alt+Tab 鍵的視覺回饋)。</translation> <translation id="7977551819349545646">更新 Chromebox...</translation> <translation id="7978412674231730200">秘密金鑰</translation> <translation id="7979036127916589816">同步功能發生錯誤</translation> @@ -5108,6 +5110,7 @@ 請妥善保管您的金鑰檔案;建立新版本的擴充功能時將需要使用該金鑰檔案。</translation> <translation id="799923393800005025">可以檢視</translation> +<translation id="8000066093800657092">沒有網路</translation> <translation id="8004582292198964060">瀏覽器</translation> <translation id="8007030362289124303">電池電量不足</translation> <translation id="8008356846765065031">網路連線中斷,請檢查您的網際網路連線。</translation> @@ -5182,6 +5185,7 @@ <translation id="8116190140324504026">更多資訊...</translation> <translation id="8116483400482790018">自訂拼字字典</translation> <translation id="8116972784401310538">書籤管理員(&B)</translation> +<translation id="8117838550640702864">記事設定</translation> <translation id="8117957376775388318">大易輸入法</translation> <translation id="8118860139461251237">管理下載內容</translation> <translation id="8119572489781388874">修改設定</translation> @@ -5460,7 +5464,6 @@ <translation id="8472623782143987204">硬體支援</translation> <translation id="8475313423285172237">電腦中其他程式所新增的擴充功能可能會變更 Chrome 的運作方式。</translation> <translation id="8475647382427415476">Google 雲端硬碟目前無法同步處理「<ph name="FILENAME" />」,將於稍後再試。</translation> -<translation id="8476195663057048998">清除並重設</translation> <translation id="8477241577829954800">已取代</translation> <translation id="8477384620836102176">一般(&G)</translation> <translation id="8480417584335382321">頁面縮放:</translation> @@ -5690,7 +5693,6 @@ <translation id="8785135611469711856">外掛程式未回應</translation> <translation id="8787254343425541995">允許共用網路使用 Proxy</translation> <translation id="878763818693997570">名稱過長</translation> -<translation id="8787865569533773240">重設已修改的 <ph name="IDS_SHORT_PRODUCT_NAME" /> 設定</translation> <translation id="8789375980715484686">管理其他使用者</translation> <translation id="8791534160414513928">將「不追蹤」要求與瀏覽流量一併送出</translation> <translation id="8795668016723474529">新增信用卡</translation>
diff --git a/chrome/app/resources/google_chrome_strings_am.xtb b/chrome/app/resources/google_chrome_strings_am.xtb index 767443e..7d77e2a 100644 --- a/chrome/app/resources/google_chrome_strings_am.xtb +++ b/chrome/app/resources/google_chrome_strings_am.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">የChrome የመተግበሪያ ማስጀመሪያው ይቋረጣል።</translation> <translation id="1877026089748256423">Chrome ጊዜው አልፎበታል</translation> <translation id="1924381329666691588">Google Chrome በዚህ ቋንቋ እንዲታይ ማድረግ አይቻልም።</translation> +<translation id="2063848847527508675">Chrome OS ዝማኔውን ለመተግበር ዳግም መጀመር አለበት።</translation> <translation id="2077129598763517140">ሲገኝ የሃርድዌር ማጣደፍን ተጠቀም</translation> <translation id="2084710999043359739">ወደ Chrome አክል</translation> <translation id="2246246234298806438">አብሮት የተሰራው የፒ ዲ ኤፍ መመልከቻ ሲጎድል Google Chrome የህትመት ቅድመ-እይታውን ሊያሳይ አይችልም።</translation> @@ -56,6 +57,7 @@ ዝም ብሎ መግባት እንደ ዕልባቶች፣ ታሪክ እና ሌሎች ቅንብሮች ያሉ የChrome መረጃዎችን ከ<ph name="ACCOUNT_EMAIL_NEW" /> ጋር ያዋህዳቸዋል።</translation> <translation id="2397416548179033562">የChrome ምናሌ አሳይ</translation> <translation id="2429317896000329049">ማመሳሰል ለጎራዎ ስለማይገኝ Google Chrome ውሂብዎን ማመሳሰል አልቻለም።</translation> +<translation id="2446511512801740068">Chrome ለሆነ ጊዜ ያህል ዳግም ስላልተጀመረ ጊዜው አልፎበታል። አንድ ዝማኔ አለ እና ልክ ዳግም ሲያስጀምሩት ይተገበራል።</translation> <translation id="2485422356828889247">አራግፍ</translation> <translation id="2580411288591421699">አሁን እየሰራ ካለው Google Chrome ጋር አንድ አይነት የሆነ ስሪት መጫን አይቻልም። እባክዎ Google Chrome ይዝጉና እንደገና ይሞክሩ።</translation> <translation id="2582790009689336987">የLinux ስርዓት ከአሁን በኋላ ስለማይደገፉ ይህ ኮምፒውተር በቅርቡ የGoogle Chrome ዝማኔዎችን መቀበል ያቆማል።</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ar.xtb b/chrome/app/resources/google_chrome_strings_ar.xtb index 7e0bacc..4ebefdf0 100644 --- a/chrome/app/resources/google_chrome_strings_ar.xtb +++ b/chrome/app/resources/google_chrome_strings_ar.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">إيقاف Launcher تطبيقات Chrome.</translation> <translation id="1877026089748256423">إصدار Chrome قديم</translation> <translation id="1924381329666691588">لا يمكن عرض Google Chrome بهذه اللغة.</translation> +<translation id="2063848847527508675">يلزم إعادة تشغيل نظام التشغيل Chrome حتى يتم تطبيق التحديث.</translation> <translation id="2077129598763517140">استخدام تسريع الأجهزة عند توفره</translation> <translation id="2084710999043359739">إضافة إلى Chrome</translation> <translation id="2246246234298806438">لا يمكن لـ Google Chrome عرض معاينة الطباعة عندما يكون عارض PDF المضمّن مفقودًا.</translation> @@ -54,6 +55,7 @@ سيؤدي تسجيل الدخول على أية حال إلى دمج معلومات Chrome مثل الإشارات المرجعية والسجل والإعدادات الأخرى مع <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">لإظهار قائمة Chrome</translation> <translation id="2429317896000329049">تعذر على Google Chrome مزامنة البيانات نظرًا لأن المزامنة غير متاحة في نطاقك.</translation> +<translation id="2446511512801740068">Chrome غير محدّث لأنه لم تتم إعادة تشغيله منذ فترة. هناك تحديث متوفر وسيتم تطبيقه بمجرد إعادة تشغيله.</translation> <translation id="2485422356828889247">إزالة التثبيت</translation> <translation id="2580411288591421699">لا يمكن تثبيت نفس الإصدار المثبت من Google Chrome والذي يتم تشغيله حاليًا. الرجاء إغلاق Google Chrome وإعادة المحاولة.</translation> <translation id="2582790009689336987">سيتوقف هذا الكمبيوتر قريبًا عن تلقي تحديثات Google Chrome نظرًا لأن نظام Linux هذا لم يعد مدعومًا.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb index 075f04d..cc92a84a 100644 --- a/chrome/app/resources/google_chrome_strings_bg.xtb +++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">Стартовият панел за приложения в Chrome ще бъде оттеглен.</translation> <translation id="1877026089748256423">Chrome не е актуален</translation> <translation id="1924381329666691588">Google Chrome не може да се показва на този език.</translation> +<translation id="2063848847527508675">Chrome OS трябва да се рестартира, за да приложи актуализацията.</translation> <translation id="2077129598763517140">Да се използва хардуерно ускорение, когато е налице</translation> <translation id="2084710999043359739">Добавяне</translation> <translation id="2246246234298806438">Google Chrome не може да покаже визуализацията за печат, когато вграденият визуализатор на PDF файлове липсва.</translation> @@ -54,6 +55,7 @@ В случай че влезете въпреки това, данните в Chrome като отметки, история и други настройки ще се обединят с/ъс <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Показване на менюто на Chrome</translation> <translation id="2429317896000329049">Google Chrome не можа да синхронизира данните ви, защото синхронизирането не е налице за домейна ви.</translation> +<translation id="2446511512801740068">Chrome не е актуален, защото не е бил стартиран отново известно време. Налице е актуализация, която ще бъде приложена веднага, когато рестартирате.</translation> <translation id="2485422356828889247">Деинсталиране</translation> <translation id="2580411288591421699">Не може да се инсталира същата версия на Google Chrome, която се използва понастоящем. Моля, затворете браузъра и опитайте отново.</translation> <translation id="2582790009689336987">Компютърът скоро ще спре да получава актуализации на Google Chrome, тъй като тази система Linux вече няма да се поддържа.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb index 129c86e..bb8996a 100644 --- a/chrome/app/resources/google_chrome_strings_bn.xtb +++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">Chrome অ্যাপ্লিকেশান লঞ্চার চলে যাচ্ছে।</translation> <translation id="1877026089748256423">Chrome পুরানো হয়ে গেছে</translation> <translation id="1924381329666691588">এই ভাষায় Google Chrome প্রদর্শন করা যাবে না।</translation> +<translation id="2063848847527508675">আপডেটটি প্রয়োগ করতে Chrome OS পুনরায় চালু করা প্রয়োজন।</translation> <translation id="2077129598763517140">যখনই উপলব্ধ তখন হার্ডওয়্যার অ্যাক্সিলারেশন ব্যবহার করুন</translation> <translation id="2084710999043359739">Chrome এ জুড়ুন</translation> <translation id="2246246234298806438">বিল্ট-ইন PDF viewer অনুপস্থিত থাকার সময়ে Google Chrome মুদ্রণের পূর্বরুপ দেখাতে পারে না৷</translation> @@ -54,6 +55,7 @@ যেকোনো উপায়ে প্রবেশ করুন করা হলে তা বুকমার্কগুলি, ইতিহাস, এবং অন্যান্য সেটিংসের মত Chrome তথ্যকে <ph name="ACCOUNT_EMAIL_NEW" /> এ মার্জ করবে৷</translation> <translation id="2397416548179033562">Chrome মেনু দেখান</translation> <translation id="2429317896000329049">আপনার ডোমেনে সিঙ্ক উপলব্ধ না থাকার কারণে Google Chrome সিঙ্ক করতে পারেনি৷</translation> +<translation id="2446511512801740068">Chrome পুরানো হয়ে গেছে কারণ কিছু সময় ধরে এটিকে পুনঃলঞ্চ করা হয়নি। একটি আপডেট উপলব্ধ রয়েছে এবং আপনি পুনঃলঞ্চ করার সাথে সাথেই এটি প্রয়োগ করা হবে।</translation> <translation id="2485422356828889247">আনইনস্টল</translation> <translation id="2580411288591421699">বর্তমানে Google Chrome এর যে সংস্করণটি চলছে সেটি ইনস্টল করতে পারে না৷ দয়া করে Google Chrome বন্ধ করুন এবং আবার চেষ্টা করুন৷</translation> <translation id="2582790009689336987">এই কম্পিউটারটি শীঘ্রই Google Chrome এর আপডেটগুলি গ্রহণ করা বন্ধ করবে কারণ এই Linux সিস্টেম আর সমর্থন করা হবে না।</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ca.xtb b/chrome/app/resources/google_chrome_strings_ca.xtb index a307bff..4be7a748 100644 --- a/chrome/app/resources/google_chrome_strings_ca.xtb +++ b/chrome/app/resources/google_chrome_strings_ca.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">El menú d'aplicacions de Chrome deixarà de funcionar.</translation> <translation id="1877026089748256423">Chrome no està actualitzat</translation> <translation id="1924381329666691588">Google Chrome no es pot mostrar en aquest idioma.</translation> +<translation id="2063848847527508675">Cal reiniciar Chrome OS per aplicar l'actualització.</translation> <translation id="2077129598763517140">Utilitza l'acceleració per maquinari quan estigui disponible</translation> <translation id="2084710999043359739">Afegeix a Chrome</translation> <translation id="2246246234298806438">Google Chrome no pot mostrar la previsualització d'impressió perquè falta el lector de PDF incorporat.</translation> @@ -52,6 +53,7 @@ En iniciar la sessió, sigui amb l'usuari que sigui, es combinarà amb <ph name="ACCOUNT_EMAIL_NEW" /> la informació de Chrome com ara adreces d'interès, historial i altres configuracions.</translation> <translation id="2397416548179033562">Mostra el menú de Chrome</translation> <translation id="2429317896000329049">Google Chrome no ha pogut sincronitzar les dades perquè la sincronització no està disponible per al vostre domini.</translation> +<translation id="2446511512801740068">Chrome està obsolet perquè fa temps que no s'inicia. Hi ha una actualització disponible i s'aplicarà tan aviat com el tornis a iniciar.</translation> <translation id="2485422356828889247">Desinstal·la</translation> <translation id="2580411288591421699">No es pot instal·lar la mateixa versió de Google Chrome que s'executa actualment. Tanqueu Google Chrome i torneu-ho a provar.</translation> <translation id="2582790009689336987">Aquest ordinador aviat deixarà de rebre actualitzacions de Google Chrome perquè aquest sistema Linux ja no serà compatible.</translation> @@ -246,7 +248,7 @@ <translation id="8037887340639533879">No s'ha trobat cap instal·lació de Google Chrome pendent d'actualització.</translation> <translation id="8129812357326543296">Quant a &Google Chrome</translation> <translation id="8183957050892517584">Chrome emmagatzemarà de manera segura les vostres dades personals perquè no les hàgiu de tornar a escriure</translation> -<translation id="8205111949707227942">Opcional: ajudeu-nos a millorar Chrome OS enviant estadístiques d'ús i informes d'error a Google automàticament.</translation> +<translation id="8205111949707227942">Opcional: ajuda'ns a millorar Chrome OS enviant estadístiques d'ús i informes d'error a Google automàticament.</translation> <translation id="8211929904040702368">Amb aquesta acció, se suprimiran almenys <ph name="TOTAL_COUNT" /> elements d'aquest dispositiu de manera permanent. Per recuperar les vostres dades més endavant, inicieu la sessió a Chrome com a $2.</translation> <translation id="8227755444512189073">Google Chrome ha d'iniciar una aplicació externa per gestionar els enllaços <ph name="SCHEME" />. L'enllaç sol·licitat és <ph name="PROTOLINK" />.</translation> <translation id="8255190535488645436">Google Chrome està utilitzant la càmera i el micròfon.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_cs.xtb b/chrome/app/resources/google_chrome_strings_cs.xtb index 2518a859..04138cb 100644 --- a/chrome/app/resources/google_chrome_strings_cs.xtb +++ b/chrome/app/resources/google_chrome_strings_cs.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Spouštěč aplikací Chrome již nebude podporován</translation> <translation id="1877026089748256423">Chrome je zastaralý</translation> <translation id="1924381329666691588">Google Chrome v tomto jazyce nelze zobrazit.</translation> +<translation id="2063848847527508675">Aktualizace se použije po restartování systému Chrome OS.</translation> <translation id="2077129598763517140">V případě dostupnosti použít hardwarovou akceleraci</translation> <translation id="2084710999043359739">Přidat do prohlížeče Chrome</translation> <translation id="2246246234298806438">Pokud chybí integrovaný program k zobrazení souborů PDF, nemůže Google Chrome zobrazit náhled tisku.</translation> @@ -56,6 +57,7 @@ Pokud se přesto přihlásíte, budou data prohlížeče Chrome (například záložky, historie a další nastavení) sloučena s účtem <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Zobrazit nabídku Chrome</translation> <translation id="2429317896000329049">Google Chrome nemohl synchronizovat vaše data, protože Synchronizace ve vaší doméně není k dispozici.</translation> +<translation id="2446511512801740068">Prohlížeč Chrome není aktuální, protože nějakou dobu nebyl restartován. Je k dispozici aktualizace, která bude použita po restartování.</translation> <translation id="2485422356828889247">Odinstalovat</translation> <translation id="2580411288591421699">Nelze nainstalovat verzi aplikace Google Chrome, která je právě spuštěná. Ukončete aplikaci Google Chrome a opakujte akci.</translation> <translation id="2582790009689336987">Google Chrome se v tomto počítači již brzy přestane aktualizovat, protože tento systém Linux již nebude podporován.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb index ed2fa10..969a69b1 100644 --- a/chrome/app/resources/google_chrome_strings_da.xtb +++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome-applisten forsvinder.</translation> <translation id="1877026089748256423">Chrome er forældet</translation> <translation id="1924381329666691588">Google Chrome kan ikke vises på dette sprog.</translation> +<translation id="2063848847527508675">Chrome OS skal genstartes, før opdateringen kan anvendes.</translation> <translation id="2077129598763517140">Brug hardwareacceleration, når det er muligt</translation> <translation id="2084710999043359739">Føj til Chrome</translation> <translation id="2246246234298806438">Google Chrome kan ikke vise udskrifter, når den indbyggede PDF-fremviser mangler.</translation> @@ -52,6 +53,7 @@ Hvis du logger ind alligevel, flettes Chrome-oplysninger, som f.eks. bogmærker, historik and andre indstillinger, med <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Vis Chrome-menuen</translation> <translation id="2429317896000329049">Google Chrome kunne ikke synkronisere dine data, fordi synkronisering ikke er tilgængelig for dit domæne.</translation> +<translation id="2446511512801740068">Chrome er forældet, da den ikke er blevet genstartet i et stykke tid. Der er en tilgængelig opdatering, som anvendes, så snart du genstarter.</translation> <translation id="2485422356828889247">Afinstaller</translation> <translation id="2580411288591421699">Det er ikke muligt at installere den samme version af Google Chrome, som allerede kører. Luk Google Chrome, og prøv igen.</translation> <translation id="2582790009689336987">Denne computer holder snart op med at modtage Google Chrome-opdateringer, da dette Linux-system ikke længere understøttes.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_de.xtb b/chrome/app/resources/google_chrome_strings_de.xtb index 54a570f..e1fe862 100644 --- a/chrome/app/resources/google_chrome_strings_de.xtb +++ b/chrome/app/resources/google_chrome_strings_de.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Der Chrome App Launcher wird eingestellt.</translation> <translation id="1877026089748256423">Chrome ist veraltet.</translation> <translation id="1924381329666691588">Google Chrome kann in dieser Sprache nicht angezeigt werden.</translation> +<translation id="2063848847527508675">Chrome OS muss neu gestartet werden, um das Update zu übernehmen.</translation> <translation id="2077129598763517140">Hardwarebeschleunigung verwenden, falls verfügbar</translation> <translation id="2084710999043359739">Zu Chrome hinzufügen</translation> <translation id="2246246234298806438">Google Chrome kann ohne den integrierten PDF-Viewer keine Druckvorschau anzeigen.</translation> @@ -52,6 +53,7 @@ Sollten Sie sich trotzdem anmelden, werden die Chrome-Daten wie Lesezeichen, Verlauf und andere Einstellungen in <ph name="ACCOUNT_EMAIL_NEW" /> zusammengeführt.</translation> <translation id="2397416548179033562">Chrome-Menü anzeigen</translation> <translation id="2429317896000329049">Google Chrome konnte Ihre Daten nicht synchronisieren, da die Synchronisierung für Ihre Domain nicht zur Verfügung steht.</translation> +<translation id="2446511512801740068">Chrome ist veraltet, da es über einen längeren Zeitraum nicht neu gestartet wurde. Ein Update ist verfügbar und wird übernommen, sobald Sie Chrome neu starten.</translation> <translation id="2485422356828889247">Deinstallieren</translation> <translation id="2580411288591421699">Die Google Chrome-Version kann nicht installiert werden, da sie aktuell ausgeführt wird. Schließen Sie Google Chrome und versuchen Sie es erneut.</translation> <translation id="2582790009689336987">Dieser Computer erhält demnächst keine Google Chrome-Updates mehr, da dieses Linux-System nicht mehr unterstützt wird.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb index f989662..a6c1d68c 100644 --- a/chrome/app/resources/google_chrome_strings_el.xtb +++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">Η Εφαρμογή εκκίνησης του Chrome πρόκειται να αποσυρθεί.</translation> <translation id="1877026089748256423">Το Chrome δεν είναι ενημερωμένο</translation> <translation id="1924381329666691588">Δεν είναι δυνατή η εμφάνιση του Google Chrome σε αυτήν τη γλώσσα.</translation> +<translation id="2063848847527508675">Για να εφαρμοστεί η ενημέρωση, πρέπει να γίνει επανεκκίνηση του Chrome OS.</translation> <translation id="2077129598763517140">Χρήση της επιτάχυνσης υλικού όταν είναι διαθέσιμη</translation> <translation id="2084710999043359739">Προσθήκη στο Chrome</translation> <translation id="2246246234298806438">Το Google Chrome δεν είναι δυνατό να εμφανίσει την προεπισκόπηση εκτύπωσης όταν λείπει το ενσωματωμένο πρόγραμμα προβολής PDF.</translation> @@ -54,6 +55,7 @@ Με τη σύνδεση, θα συγχωνευτούν στο Chrome πληροφορίες όπως οι σελιδοδείκτες, το ιστορικό και άλλες ρυθμίσεις στο <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Εμφάνιση του μενού του Chrome</translation> <translation id="2429317896000329049">Το Google Chrome δεν κατάφερε να συγχρονίσει τα δεδομένα σας επειδή ο συγχρονισμός δεν είναι διαθέσιμος για τον τομέα σας.</translation> +<translation id="2446511512801740068">Το Chrome δεν είναι ενημερωμένο επειδή δεν έχει γίνει επανεκκίνησή του για αρκετό χρονικό διάστημα. Υπάρχει διαθέσιμη ενημέρωση και θα γίνει εφαρμογή της μόλις κάνετε επανεκκίνηση.</translation> <translation id="2485422356828889247">Κατάργηση Εγκατάστασης</translation> <translation id="2580411288591421699">Δεν είναι δυνατή η εγκατάσταση της ίδιας έκδοσης του Google Chrome που εκτελείται αυτήν τη στιγμή. Κλείστε το Google Chrome και προσπαθήστε ξανά.</translation> <translation id="2582790009689336987">Αυτός ο υπολογιστής θα σταματήσει σύντομα να λαμβάνει ενημερώσεις για το Google Chrome, επειδή αυτό το σύστημα Linux δεν θα υποστηρίζεται πλέον.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb index 16f232b..b50193e7 100644 --- a/chrome/app/resources/google_chrome_strings_en-GB.xtb +++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">The Chrome App Launcher is going away.</translation> <translation id="1877026089748256423">Chrome is out of date</translation> <translation id="1924381329666691588">Google Chrome cannot be displayed in this language.</translation> +<translation id="2063848847527508675">Chrome OS needs to be restarted to apply the update.</translation> <translation id="2077129598763517140">Use hardware acceleration when available</translation> <translation id="2084710999043359739">Add to Chrome</translation> <translation id="2246246234298806438">Google Chrome cannot show the print preview when the built-in PDF viewer is missing.</translation> @@ -56,6 +57,7 @@ Signing in anyway will merge Chrome information like bookmarks, history and other settings to <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Show Chrome menu</translation> <translation id="2429317896000329049">Google Chrome could not sync your data because Sync is not available for your domain.</translation> +<translation id="2446511512801740068">Chrome is out of date because it hasn't been relaunched for a while. An update is available and will be applied as soon as you relaunch.</translation> <translation id="2485422356828889247">Uninstall</translation> <translation id="2580411288591421699">Cannot install the same Google Chrome version that is currently running. Please close Google Chrome and try again.</translation> <translation id="2582790009689336987">This computer will soon stop receiving Google Chrome updates because this Linux system will no longer be supported.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es-419.xtb b/chrome/app/resources/google_chrome_strings_es-419.xtb index 6125abf..6ae47b3 100644 --- a/chrome/app/resources/google_chrome_strings_es-419.xtb +++ b/chrome/app/resources/google_chrome_strings_es-419.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">El Selector de aplicaciones de Chrome está por desaparecer.</translation> <translation id="1877026089748256423">Chrome no está actualizado.</translation> <translation id="1924381329666691588">Google Chrome no se puede mostrar en este idioma.</translation> +<translation id="2063848847527508675">El Sistema operativo Chrome debe reiniciarse para que se aplique la actualización.</translation> <translation id="2077129598763517140">Usar aceleración de hardware cuando esté disponible</translation> <translation id="2084710999043359739">Agregar a Chrome</translation> <translation id="2246246234298806438">Google Chrome no puede mostrar la vista previa de impresión si falta el visor de PDF incorporado.</translation> @@ -52,6 +53,7 @@ Si accedes de todos modos, se fusionará la información de Google Chrome, como los marcadores, el historial y otros parámetros de configuración en <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Mostrar el menú de Chrome</translation> <translation id="2429317896000329049">Google Chrome no pudo sincronizar los datos porque la sincronización no está disponible para el dominio.</translation> +<translation id="2446511512801740068">Chrome no está actualizado porque no se reinició por un tiempo. Cuando lo reinicies, se aplicará la actualización disponible.</translation> <translation id="2485422356828889247">Desinstalación</translation> <translation id="2580411288591421699">No se puede instalar la misma versión de Google Chrome que se está ejecutando actualmente. Cierra Google Chrome e intenta nuevamente.</translation> <translation id="2582790009689336987">Esta computadora dejará de recibir actualizaciones de Google Chrome en breve porque este sistema Linux ya no se admitirá más.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb index aa82466..87d31f2 100644 --- a/chrome/app/resources/google_chrome_strings_es.xtb +++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">El menú de aplicaciones de Chrome va a desaparecer.</translation> <translation id="1877026089748256423">Chrome no está actualizado</translation> <translation id="1924381329666691588">Google Chrome no se puede mostrar en este idioma.</translation> +<translation id="2063848847527508675">Chrome OS se debe reiniciar para que se aplique la actualización.</translation> <translation id="2077129598763517140">Utilizar aceleración por hardware cuando esté disponible</translation> <translation id="2084710999043359739">Añadir a Chrome</translation> <translation id="2246246234298806438">Google Chrome no puede mostrar la vista previa de impresión si falta el visor de PDF integrado.</translation> @@ -56,6 +57,7 @@ Si decides iniciar sesión de todas formas, se fusionará la información de Chrome, como marcadores, historial y otras opciones, con la de <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Mostrar menú de Chrome</translation> <translation id="2429317896000329049">Google Chrome no ha podido sincronizar los datos porque la función de sincronización no está disponible para tu dominio.</translation> +<translation id="2446511512801740068">Chrome no está actualizado porque hace algún tiempo que no se reinicia. Hay una actualización disponible, que se aplicará en cuanto lo reinicies.</translation> <translation id="2485422356828889247">Desinstalar</translation> <translation id="2580411288591421699">No se puede instalar la misma versión de Google Chrome que se está ejecutando. Cierra el navegador y vuelve a intentarlo.</translation> <translation id="2582790009689336987">Este ordenador pronto dejará de recibir actualizaciones de Google Chrome porque este sistema Linux dejará de ser compatible.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_et.xtb b/chrome/app/resources/google_chrome_strings_et.xtb index 672bd1f..d21f401 100644 --- a/chrome/app/resources/google_chrome_strings_et.xtb +++ b/chrome/app/resources/google_chrome_strings_et.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">Lõpetame Chrome'i rakenduste käivitaja toe pakkumise.</translation> <translation id="1877026089748256423">Chrome on aegunud</translation> <translation id="1924381329666691588">Google Chrome'i ei saa selles keeles kuvada.</translation> +<translation id="2063848847527508675">Chrome OS tuleb värskenduse rakendamiseks taaskäivitada.</translation> <translation id="2077129598763517140">Kasuta võimaluse korral riistvarakiirendust</translation> <translation id="2084710999043359739">Chrome'i lisamine</translation> <translation id="2246246234298806438">Google Chrome ei saa kuvada printimise eelvaadet, kui sisseehitatud PDF-vaatur puudub.</translation> @@ -54,6 +55,7 @@ Kui logite siiski sisse, liidetakse Chrome'i teave, nagu järjehoidjad, ajalugu ja muud seaded, kontoga <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Kuva Chrome'i menüü</translation> <translation id="2429317896000329049">Google Chrome ei saa teie andmeid sünkroonida, sest sünkroonimine pole teie domeenil saadaval.</translation> +<translation id="2446511512801740068">Chrome on aegunud, kuna seda ei ole tükk aega taaskäivitatud. Saadaval on värskendus, mis rakendatakse taaskäivitamisel.</translation> <translation id="2485422356828889247">Desinstalli</translation> <translation id="2580411288591421699">Töötava Google Chrome'i versiooniga sama versiooni ei saa installida. Sulgege Google Chrome ja proovige uuesti.</translation> <translation id="2582790009689336987">See arvuti ei saa peagi enam Google Chrome'i värskendusi, kuna seda Linuxi süsteemi enam ei toetata.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb index 5c41a48..1ee93f3 100644 --- a/chrome/app/resources/google_chrome_strings_fa.xtb +++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">راهانداز برنامه Chrome از دور خارج میشود.</translation> <translation id="1877026089748256423">نسخه Chrome قدیمی است</translation> <translation id="1924381329666691588">Google Chrome نمیتواند به این زبان نشان داده شود.</translation> +<translation id="2063848847527508675">برای اعمال بهروزرسانی، سیستمعامل Chrome باید راهاندازی مجدد شود.</translation> <translation id="2077129598763517140">در صورت امکان از شتاب سختافزاری استفاده شود</translation> <translation id="2084710999043359739">افزودن به Chrome</translation> <translation id="2246246234298806438">زمانی که نمایش دهنده داخلی PDF وجود نداشته باشد، Google Chrome نمیتواند پیشنمایش چاپ را نشان دهد.</translation> @@ -52,6 +53,7 @@ ورود به سیستم به هر حال اطلاعات Chrome مانند نشانکها، سابقه، و سایر تنظیمات را در <ph name="ACCOUNT_EMAIL_NEW" /> ادغام میکند.</translation> <translation id="2397416548179033562">نمایش منوی Chrome</translation> <translation id="2429317896000329049">Google Chrome قادر به همگامسازی دادههای شما نبود زیرا همگامسازی برای دامنه شما قابل دسترسی نیست.</translation> +<translation id="2446511512801740068">Chrome قدیمی است چون برای مدتی راهاندازی مجدد نشده است. یک نسخه بهروز دردسترس است و بهمحض راهاندازی مجدد اعمال خواهد شد.</translation> <translation id="2485422356828889247">حذف نصب</translation> <translation id="2580411288591421699">نمیتوان همان نسخه Google Chrome را که اکنون در حال اجراست نصب کرد. لطفاً Google Chrome را ببندید و دوباره سعی کنید.</translation> <translation id="2582790009689336987">این رایانه به زودی دریافت بهروزرسانیهای Google Chrome را متوقف میکند، زیرا این سیستم Linux دیگر پشتیبانی نمیشود.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb index 9bdc078ee..672714b 100644 --- a/chrome/app/resources/google_chrome_strings_fi.xtb +++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chromen sovellusten käynnistysohjelma poistuu käytöstä</translation> <translation id="1877026089748256423">Chrome on vanhentunut</translation> <translation id="1924381329666691588">Google Chromea ei voi näyttää tällä kielellä.</translation> +<translation id="2063848847527508675">Chrome-käyttöjärjestelmä täytyy käynnistää uudelleen, jotta päivitys voidaan ottaa käyttöön.</translation> <translation id="2077129598763517140">Käytä laitteistokiihdytystä, jos mahdollista</translation> <translation id="2084710999043359739">Lisää Chromeen</translation> <translation id="2246246234298806438">Google Chrome ei voi näyttää tulostusesikatselua, koska PDF-katseluohjelma puuttuu.</translation> @@ -52,6 +53,7 @@ Jos kirjaudut silti sisään, Chrome-tiedot, kuten kirjanmerkit, historia ja asetukset, yhdistetään tiliin <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Näytä Chrome-valikko</translation> <translation id="2429317896000329049">Google Chrome ei voinut synkronoida tietoja, koska synkronointi ei ole käytettävissä verkkotunnuksessasi.</translation> +<translation id="2446511512801740068">Chrome on vanhentunut, koska sitä ei ole käynnistetty uudelleen viime aikoina. Päivitys on saatavilla, ja se otetaan käyttöön uudelleenkäynnistyksen jälkeen.</translation> <translation id="2485422356828889247">Poista</translation> <translation id="2580411288591421699">Ei voi asentaa samaa Google Chromen versiota, joka tällä hetkellä on käytössä. Sulje Google Chrome ja yritä uudelleen.</translation> <translation id="2582790009689336987">Google Chromen päivitykset eivät pian ole saatavilla tällä tietokoneella, koska tämän Linux-järjestelmän tuki loppuu.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb index 665922f..2f49cce0 100644 --- a/chrome/app/resources/google_chrome_strings_fil.xtb +++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Umaalis na ang Chrome App Launcher.</translation> <translation id="1877026089748256423">Luma na ang Chrome</translation> <translation id="1924381329666691588">Hindi maipapakita ang Google Chrome sa wikang ito.</translation> +<translation id="2063848847527508675">Kailangang ma-restart ang Chrome OS upang mailapat ang update.</translation> <translation id="2077129598763517140">Gamitin ang pagpapabilis ng hardware kapag available</translation> <translation id="2084710999043359739">Idagdag sa Chrome</translation> <translation id="2246246234298806438">Hindi maipapakita ng Google Chrome ang preview sa pag-print kapag nawawala ang built-in na PDF viewer.</translation> @@ -56,6 +57,7 @@ Kapag nag-sign in ka pa rin, isasama sa <ph name="ACCOUNT_EMAIL_NEW" /> ang impormasyon sa Chrome gaya ng mga bookmark, kasaysayan, at iba pang mga setting.</translation> <translation id="2397416548179033562">Ipakita ang menu ng Chrome</translation> <translation id="2429317896000329049">Hindi mai-sync ng Google Chrome ang iyong data dahil hindi available ang Pag-sync para sa iyong domain.</translation> +<translation id="2446511512801740068">Luma na ang Chrome dahil matagal na itong hindi muling nailunsad. Available ang isang update at ilalapat ito sa sandaling muli mo itong inilunsad.</translation> <translation id="2485422356828889247">I-uninstall</translation> <translation id="2580411288591421699">Hindi ma-install ang parehong bersyon ng Google Chrome na kasalukuyang tumatakbo. Mangyaring isara ang Google Chrome at muling subukan.</translation> <translation id="2582790009689336987">Malapit nang hindi makatanggap ng mga update sa Google Chrome ang computer na ito dahil hindi na susuportahan ang Linux system na ito.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb index be82f48..836ece8e 100644 --- a/chrome/app/resources/google_chrome_strings_fr.xtb +++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -39,6 +39,7 @@ <translation id="1864458292167284385">Le lanceur d'applications Chrome ne sera bientôt plus disponible</translation> <translation id="1877026089748256423">Version de Chrome obsolète</translation> <translation id="1924381329666691588">Google Chrome ne peut pas être affiché dans cette langue.</translation> +<translation id="2063848847527508675">Redémarrez Chrome OS pour appliquer la mise à jour.</translation> <translation id="2077129598763517140">Utiliser l'accélération matérielle (le cas échéant)</translation> <translation id="2084710999043359739">Ajouter à Chrome</translation> <translation id="2246246234298806438">Impossible d'afficher l'aperçu d'impression dans Google Chrome, car la visionneuse de documents PDF intégrée est absente.</translation> @@ -55,6 +56,7 @@ Si vous vous connectez quand même, toutes les informations Chrome, comme les favoris, l'historique et les autres paramètres, seront fusionnées avec <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Afficher le menu Chrome</translation> <translation id="2429317896000329049">Impossible de synchroniser vos données dans Google Chrome, car la synchronisation n'est pas disponible pour votre domaine.</translation> +<translation id="2446511512801740068">Chrome n'est plus à jour, car il n'a pas été relancé depuis quelque temps. La mise à jour disponible sera installée dès que vous le relancerez.</translation> <translation id="2485422356828889247">Désinstaller</translation> <translation id="2580411288591421699">Impossible d'installer la version de Google Chrome qui est en cours d'exécution. Fermez Google Chrome et réessayez.</translation> <translation id="2582790009689336987">Cet ordinateur ne recevra bientôt plus les mises à jour de Google Chrome, car la compatibilité ne sera plus assurée sur ce système Linux.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb index 41dbc87..56d5222 100644 --- a/chrome/app/resources/google_chrome_strings_gu.xtb +++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Chrome ઍપ લૉન્ચર બંધ કરવામાં આવી રહ્યું છે.</translation> <translation id="1877026089748256423">Chrome જૂનું થઈ ગયું છે</translation> <translation id="1924381329666691588">આ ભાષામાં Google Chrome પ્રદર્શિત કરી શકાતું નથી.</translation> +<translation id="2063848847527508675">અપડેટ લાગુ કરવા માટે Chrome OS ને પુનઃપ્રારંભ કરવાની જરૂર છે.</translation> <translation id="2077129598763517140">હાર્ડવેર ઍક્સિલરેશન ઉપલબ્ધ હોવા પર ઉપયોગ કરો</translation> <translation id="2084710999043359739">Chrome માં ઉમેરો</translation> <translation id="2246246234298806438">જ્યારે બિલ્ટ-ઇન PDF વ્યૂઅર ગૂમ હોય ત્યારે Google Chrome પ્રિંટ પૂર્વાવલોકન બતાવી શકતું નથી.</translation> @@ -56,6 +57,7 @@ કોઈપણ રીતે સાઇન ઇન કરવું બુકમાર્ક્સ, ઇતિહાસ, અને અન્ય સેટિંગ્સ જેવી Chrome માહિતીને <ph name="ACCOUNT_EMAIL_NEW" /> માં મર્જ કરશે.</translation> <translation id="2397416548179033562">Chrome મેનૂ દર્શાવો</translation> <translation id="2429317896000329049">Google Chrome તમારા ડેટાને સમન્વયિત કરી શક્યું નથી કારણ કે તમારા ડોમેન માટે સમન્વયન ઉપલબ્ધ નથી.</translation> +<translation id="2446511512801740068">Chrome જૂનું થઈ ગયું છે કારણ કે તે ઘણા સમયથી ફરીથી લોંચ કરવામાં આવ્યું નથી. અપડેટ ઉપલબ્ધ છે અને તે તમે જેવું જ ફરીથી લોંચ કરશો, લાગુ થઈ જશે.</translation> <translation id="2485422356828889247">અનઇન્સ્ટોલ કરો</translation> <translation id="2580411288591421699">હાલમાં ચાલી રહ્યું છે તે જ Google Chrome સંસ્કરણને ઇન્સ્ટોલ કરી શકાતું નથી. કૃપા કરીને Google Chrome બંધ કરો અને ફરીથી પ્રયાસ કરો.</translation> <translation id="2582790009689336987">આ કમ્પ્યુટર ટૂંક સમયમાં Google Chrome અપડેટ્સ પ્રાપ્ત કરવાનું બંધ કરશે કારણ કે આ Linux સિસ્ટમ હવેથી સમર્થિત હશે નહીં.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hi.xtb b/chrome/app/resources/google_chrome_strings_hi.xtb index 3354ed7..a1fa23dc 100644 --- a/chrome/app/resources/google_chrome_strings_hi.xtb +++ b/chrome/app/resources/google_chrome_strings_hi.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome में ऐप चलाने का साधन बंद किया जा रहा है.</translation> <translation id="1877026089748256423">Chrome पुराना हो गया है</translation> <translation id="1924381329666691588">Google Chrome इस भाषा में नहीं दिखाया जा सकता है.</translation> +<translation id="2063848847527508675">अपडेट लागू करने के लिए Chrome OS को फिर से चालू करने की आवश्यकता होती है.</translation> <translation id="2077129598763517140">उपलब्ध होने पर हार्डवेयर त्वरण का उपयोग करें</translation> <translation id="2084710999043359739">Chrome में जोड़ें</translation> <translation id="2246246234298806438">अंतर्निहित PDF दिखाने का साधन गुम होने पर Google Chrome प्रिंट पूर्वावलोकन नहीं दिखा सकता.</translation> @@ -52,6 +53,7 @@ किसी भी तरह प्रवेश करने से बुकमार्क, इतिहास, और अन्य सेटिंग जैसी Chrome जानकारी <ph name="ACCOUNT_EMAIL_NEW" /> में मर्ज हो जाएगी.</translation> <translation id="2397416548179033562">Chrome मेनू दिखाएं</translation> <translation id="2429317896000329049">Google Chrome आपका डेटा समन्वयित नहीं कर सका क्योंकि समन्वयन आपके डोमेन के लिए उपलब्ध नहीं है.</translation> +<translation id="2446511512801740068">Chrome पुराना हो गया है क्योंकि उसे कुछ समय से फिर से लॉन्च नहीं किया गया है. एक अपडेट उपलब्ध है और जैसे ही आप फिर से लॉन्च करेंगे, अपडेट लागू कर दिया जाएगा.</translation> <translation id="2485422356828889247">विस्थापित करें</translation> <translation id="2580411288591421699">Google Chrome के उस वर्शन के समान वर्शन को इंस्टॉल नहीं कर सकता, जो वर्तमान में चल रहा है. कृपया Google Chrome बंद करें और फिर से प्रयास करें.</translation> <translation id="2582790009689336987">यह कंप्यूटर जल्दी ही Google Chrome के अपडेट प्राप्त करना बंद कर देगा क्योंकि यह Linux सिस्टम अब समर्थित नहीं रहेगा.</translation> @@ -248,7 +250,7 @@ <translation id="8037887340639533879">अपडेट करने के लिए Google Chrome का कोई इंस्टॉलेशन नहीं मिला.</translation> <translation id="8129812357326543296">&Google Chrome के बारे में</translation> <translation id="8183957050892517584">Chrome आपके व्यक्तिगत विवरण को सुरक्षित रूप से संग्रहीत करेगा, इसलिए आपको इन्हें पुनः लिखने की आवश्यकता नहीं है.</translation> -<translation id="8205111949707227942">वैकल्पिक: अपने आप उपयोग के आंकड़े और क्रैश रिपोर्ट भेजकर Chrome OS को बेहतर बनाने में सहायता करें.</translation> +<translation id="8205111949707227942">वैकल्पिक: अपने आप उपयोग संबंधी आंकड़े और क्रैश रिपोर्ट Google को भेजने की अनुमति देकर Chrome OS को बेहतर बनाने में सहायता करें.</translation> <translation id="8211929904040702368">इससे इस डिवाइस से कम से कम <ph name="TOTAL_COUNT" /> आइटम स्थायी रूप से हट जाएंगे. बाद में अपना डेटा प्राप्त करने के लिए, Chrome में $2 के रूप में प्रवेश करें.</translation> <translation id="8227755444512189073"><ph name="SCHEME" /> लिंक प्रबंधित करने के लिए Google Chrome को एक बाहरी ऐप्स लॉन्च करने की आवश्यकता होती है. अनुरोध की गई लिंक <ph name="PROTOLINK" /> है</translation> <translation id="8255190535488645436">Google Chrome आपके कैमरे और माइक्रोफ़ोन का उपयोग कर रहा है.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb index 1abc48067..099c937 100644 --- a/chrome/app/resources/google_chrome_strings_hr.xtb +++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Povlačimo Pokretač aplikacija za Chrome.</translation> <translation id="1877026089748256423">Chrome je zastario</translation> <translation id="1924381329666691588">Google Chrome ne može se prikazati na tom jeziku.</translation> +<translation id="2063848847527508675">Potrebno je ponovo pokrenuti Chrome OS kako bi se ažuriranje primijenilo.</translation> <translation id="2077129598763517140">Upotrijebi hardversko ubrzanje kada je dostupno</translation> <translation id="2084710999043359739">Dodajte u Chrome</translation> <translation id="2246246234298806438">Google Chrome ne može prikazati pregled ispisa ako nema ugrađeni preglednik PDF-a.</translation> @@ -52,6 +53,7 @@ Ako se ipak prijavite, podaci sustava Chrome kao što su oznake, povijest i ostale postavke spojit će se s korisnikom <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Prikaži izbornik Chrome</translation> <translation id="2429317896000329049">Google Chrome nije mogao sinkronizirati vaše podatke jer sinkronizacija nije dostupna za vašu domenu.</translation> +<translation id="2446511512801740068">Chrome je zastario jer dulje vrijeme nije ponovo pokrenut. Ažuriranje je dostupno i primijenit će se čim ponovo pokrenete proizvod.</translation> <translation id="2485422356828889247">Deinstaliraj</translation> <translation id="2580411288591421699">Nije moguće instalirati istu verziju programa Google Chrome koja je trenutačno pokrenuta. Zatvorite Google Chrome i pokušajte ponovo.</translation> <translation id="2582790009689336987">Ovo će računalo uskoro prestati primati ažuriranja za Google Chrome jer taj sustav Linuxa više neće biti podržan.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb index 6f3fc76..5ed2df21 100644 --- a/chrome/app/resources/google_chrome_strings_hu.xtb +++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">A Chrome Alkalmazásindító meg fog szűnni.</translation> <translation id="1877026089748256423">A Chrome elavult</translation> <translation id="1924381329666691588">A Google Chrome nem jeleníthető meg ezen a nyelven</translation> +<translation id="2063848847527508675">A frissítés alkalmazásához újra kell indítani a Chrome OS-t.</translation> <translation id="2077129598763517140">Hardveres gyorsítás alkalmazása lehetőség szerint</translation> <translation id="2084710999043359739">Hozzáadás a Chrome-hoz</translation> <translation id="2246246234298806438">A Google Chrome nem tudja megjeleníteni a nyomtatási előnézetet, ha nincs beépített PDF-megjelenítő.</translation> @@ -52,6 +53,7 @@ Ha mindenképp bejelentkezik, akkor egyesíti a(z) <ph name="ACCOUNT_EMAIL_NEW" /> fiókkal az olyan Chrome-adatokat, mint a könyvjelzők, az előzmények és más beállítások.</translation> <translation id="2397416548179033562">A Chrome-menü megjelenítése</translation> <translation id="2429317896000329049">A Google Chrome nem tudta szinkronizálni az adatait, mert a szinkronizálás nem érhető el az Ön domainjénél.</translation> +<translation id="2446511512801740068">A Chrome elavult, mert nem volt újraindítva egy ideje. Megjelent egy frissítés, amelyik az újraindítás után azonnal érvénybe lép.</translation> <translation id="2485422356828889247">Eltávolítás</translation> <translation id="2580411288591421699">Nem lehet ugyanazt a Google Chrome verziót telepíteni, amely jelenleg is fut. Zárja be a Google Chrome-ot, és próbálja újra.</translation> <translation id="2582790009689336987">Ez a számítógép hamarosan nem fog több Google Chrome-frissítést kapni, mert a böngésző többé nem fogja támogatni ezt a Linux rendszert.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb index b8e65a0..99d10d8d 100644 --- a/chrome/app/resources/google_chrome_strings_id.xtb +++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Peluncur Aplikasi Chrome tidak akan digunakan lagi.</translation> <translation id="1877026089748256423">Chrome terlalu lawas</translation> <translation id="1924381329666691588">Google Chrome tidak dapat ditampilkan dalam bahasa ini.</translation> +<translation id="2063848847527508675">Chrome OS harus dimulai ulang untuk menerapkan pembaruan.</translation> <translation id="2077129598763517140">Gunakan percepatan perangkat keras saat tersedia</translation> <translation id="2084710999043359739">Tambah ke Chrome</translation> <translation id="2246246234298806438">Google Chrome tidak dapat menampilkan pratinjau cetak jika penampil PDF default hilang.</translation> @@ -52,6 +53,7 @@ Tetap masuk akan menggabungkan informasi Chrome seperti bookmark, riwayat, dan setelan lain ke <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Tampilkan Menu Chrome</translation> <translation id="2429317896000329049">Google Chrome tidak dapat menyinkronkan data Anda karena Sinkronisasi tidak tersedia untuk domain Anda.</translation> +<translation id="2446511512801740068">Chrome telah kedaluwarsa karena tidak diluncurkan untuk beberapa saat. Pembaruan telah tersedia dan akan diterapkan setelah Anda meluncurkan ulang.</translation> <translation id="2485422356828889247">Copot pemasangan</translation> <translation id="2580411288591421699">Tak dapat memasang Google Chrome dengan versi yang sama dengan yang sedang aktif. Tutup dulu, baru coba lagi.</translation> <translation id="2582790009689336987">Komputer ini akan segera berhenti menerima pembaruan Google Chrome karena sistem Linux ini sudah tidak didukung.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_it.xtb b/chrome/app/resources/google_chrome_strings_it.xtb index fc3fb112f..2c5d0a2 100644 --- a/chrome/app/resources/google_chrome_strings_it.xtb +++ b/chrome/app/resources/google_chrome_strings_it.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Avvio applicazioni di Chrome non sarà più disponibile.</translation> <translation id="1877026089748256423">Chrome non è aggiornato</translation> <translation id="1924381329666691588">Impossibile visualizzare Google Chrome in questa lingua.</translation> +<translation id="2063848847527508675">Per applicare l'aggiornamento è necessario riavviare Chrome OS.</translation> <translation id="2077129598763517140">Usa accelerazione hardware quando disponibile</translation> <translation id="2084710999043359739">Aggiungi a Chrome</translation> <translation id="2246246234298806438">Impossibile visualizzare l'anteprima di stampa in Google Chrome senza il visualizzatore PDF integrato.</translation> @@ -52,6 +53,7 @@ Se esegui comunque l'accesso, le informazioni di Chrome come Preferiti, cronologia e altre impostazioni verranno unite a quelle di <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Mostra il menu Chrome</translation> <translation id="2429317896000329049">Impossibile sincronizzare i dati in Google Chrome perché la sincronizzazione non è disponibile per il tuo dominio.</translation> +<translation id="2446511512801740068">Chrome non è aggiornato perché non viene riavviato da un po'. È disponibile un aggiornamento che verrà applicato non appena riavvierai.</translation> <translation id="2485422356828889247">Disinstalla</translation> <translation id="2580411288591421699">Impossibile installare la stessa versione di Google Chrome attualmente in esecuzione. Chiudi Google Chrome e riprova.</translation> <translation id="2582790009689336987">A breve questo computer non riceverà più gli aggiornamenti di Google Chrome perché questo sistema Linux non sarà più supportato.</translation> @@ -205,7 +207,7 @@ <translation id="7106741999175697885">Task Manager - Google Chrome</translation> <translation id="7125719106133729027">Chrome non è riuscito ad aggiornarsi all'ultima versione, quindi ti stai perdendo le nuove funzioni e correzioni per la sicurezza. Devi reinstallare manualmente Chrome.</translation> <translation id="7161904924553537242">Benvenuto in Google Chrome</translation> -<translation id="7164397146364144019">Puoi contribuire a rendere Chrome più sicuro e più facile da utilizzare segnalando automaticamente a Google dettagli dei possibili incidenti di sicurezza.</translation> +<translation id="7164397146364144019">Puoi contribuire a rendere Chrome più sicuro e più facile da utilizzare segnalando automaticamente a Google i dettagli dei possibili problemi di sicurezza.</translation> <translation id="7177347454226092725">Verranno eliminati definitivamente i tuoi dati di navigazione da questo dispositivo. Per recuperare i dati in un secondo momento, accedi a Chrome come $2.</translation> <translation id="7185038942300673794">L'estensione <ph name="EXTENSION_NAME" /> è stata aggiunta a Chrome.</translation> <translation id="7191567847629796517">Google Chrome OS non supporta l'avvio di un'applicazione esterna per gestire i link <ph name="SCHEME" />. Il link richiesto è <ph name="PROTOLINK" />.</translation> @@ -247,7 +249,7 @@ <translation id="8037887340639533879">Impossibile trovare un'installazione di Google Chrome da aggiornare.</translation> <translation id="8129812357326543296">Informazioni su &Google Chrome</translation> <translation id="8183957050892517584">Chrome memorizzerà in sicurezza i tuoi dati personali affinché tu non debba digitarli di nuovo.</translation> -<translation id="8205111949707227942">Facoltativo: aiutaci a migliorare Google Chrome OS inviando automaticamente a Google le statistiche sull'utilizzo e segnalazioni sugli arresti anomali.</translation> +<translation id="8205111949707227942">Facoltativo: aiutaci a migliorare Google Chrome OS inviando automaticamente a Google le statistiche sull'utilizzo e rapporti sugli arresti anomali.</translation> <translation id="8211929904040702368">Verranno eliminati definitivamente almeno <ph name="TOTAL_COUNT" /> elementi da questo dispositivo. Per recuperare i dati in un secondo momento, accedi a Chrome come $2.</translation> <translation id="8227755444512189073">Google Chrome deve avviare un'applicazione esterna per gestire i link <ph name="SCHEME" />. Il link richiesto è <ph name="PROTOLINK" />.</translation> <translation id="8255190535488645436">Google Chrome sta utilizzando videocamera e microfono.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb index b3c78e1..48e998f8 100644 --- a/chrome/app/resources/google_chrome_strings_iw.xtb +++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome App Launcher יוצא משימוש.</translation> <translation id="1877026089748256423">Chrome אינו מעודכן</translation> <translation id="1924381329666691588">לא ניתן להציג את Google Chrome בשפה זו.</translation> +<translation id="2063848847527508675">יש להפעיל מחדש את Chrome OS כדי להחיל את העדכון.</translation> <translation id="2077129598763517140">השתמש בהאצת חומרה כשניתן</translation> <translation id="2084710999043359739">הוסף ל-Chrome</translation> <translation id="2246246234298806438">Google Chrome אינו יכול להצג תצוגה מקדימה של ההדפסה כאשר מציג ה-PDF המובנה חסר.</translation> @@ -52,6 +53,7 @@ אם תמשיך ותיכנס, המידע ב-Chrome, כמו סימניות, היסטוריה והגדרות אחרות, ימוזג עם <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">הצג את תפריט Chrome</translation> <translation id="2429317896000329049">Google Chrome לא הצליח לסנכרן את הנתונים שלך מפני שהסנכרון אינו זמין עבור הדומיין שלך.</translation> +<translation id="2446511512801740068">Chrome אינו מעודכן מכיוון שהוא לא הופעל לאחרונה. יש עדכון זמין והוא יחול ברגע שתבצע הפעלה מחדש.</translation> <translation id="2485422356828889247">הסר התקנה</translation> <translation id="2580411288591421699">אין אפשרות להתקין את אותה גרסת Google Chrome הפועלת כעת. סגור את Google Chrome ונסה שוב.</translation> <translation id="2582790009689336987">בקרוב המחשב הזה יפסיק לקבל עדכונים של Google Chrome בשל הפסקת התמיכה במערכת Linux זו.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ja.xtb b/chrome/app/resources/google_chrome_strings_ja.xtb index e722019..720dc58 100644 --- a/chrome/app/resources/google_chrome_strings_ja.xtb +++ b/chrome/app/resources/google_chrome_strings_ja.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome アプリ ランチャーを非表示にします。</translation> <translation id="1877026089748256423">Chrome は古いバージョンです</translation> <translation id="1924381329666691588">Google Chrome をこの言語で表示することはできません。</translation> +<translation id="2063848847527508675">アップデートを適用するには、Chrome OS を再起動する必要があります。</translation> <translation id="2077129598763517140">ハードウェア アクセラレーションが使用可能な場合は使用する</translation> <translation id="2084710999043359739">Chrome に追加</translation> <translation id="2246246234298806438">Google Chrome では、組み込みの PDF ビューアがない場合、印刷プレビューを表示できません。</translation> @@ -52,6 +53,7 @@ このままログインすると、ブックマーク、履歴、その他の設定などの Chrome データが <ph name="ACCOUNT_EMAIL_NEW" /> と統合されます。</translation> <translation id="2397416548179033562">Chrome メニューを表示</translation> <translation id="2429317896000329049">お使いのドメインでは同期を利用できないため、Google Chrome はデータを同期できませんでした。</translation> +<translation id="2446511512801740068">Chrome はしばらく再起動していないため最新ではありません。再起動するとすぐにアップデートが適用されます。</translation> <translation id="2485422356828889247">アンインストール</translation> <translation id="2580411288591421699">実行中の Google Chrome と同じバージョンをインストールすることはできません。Google Chrome を閉じてからもう一度お試しください。</translation> <translation id="2582790009689336987">この Linux システムはサポートが終了するため、このパソコンでは間もなく Google Chrome のアップデートが受信されなくなります。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_kn.xtb b/chrome/app/resources/google_chrome_strings_kn.xtb index 46bf9e09..c8a5e87 100644 --- a/chrome/app/resources/google_chrome_strings_kn.xtb +++ b/chrome/app/resources/google_chrome_strings_kn.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">Chrome ಅಪ್ಲಿಕೇಶನ್ ಲಾಂಚರ್ ಇನ್ನು ಮುಂದೆ ಇರುವುದಿಲ್ಲ.</translation> <translation id="1877026089748256423">Chrome ನ ಅವಧಿ ಮುಗಿದಿದೆ</translation> <translation id="1924381329666691588">ಈ ಭಾಷೆಯಲ್ಲಿ Google Chrome ಪ್ರದರ್ಶಿಸಲಾಗುವುದಿಲ್ಲ.</translation> +<translation id="2063848847527508675">ಅಪ್ಡೇಟ್ ಅನ್ವಯಿಸಲು Chrome OS ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಬೇಕಾಗುತ್ತದೆ.</translation> <translation id="2077129598763517140">ಲಭ್ಯವಿರುವಾಗ ಹಾರ್ಡ್ವೇರ್ ಆಕ್ಸಲರೇಶನ್ ಬಳಸು</translation> <translation id="2084710999043359739">Chrome ಗೆ ಸೇರಿಸಿ</translation> <translation id="2246246234298806438">ಬಿಲ್ಟ್ ಇನ್ PDF ವೀಕ್ಷಣೆಯು ಕಾಣೆಯಾಗಿರುವಾಗ Google Chrome ಮುದ್ರಣ ಪೂರ್ವವೀಕ್ಷಣೆಯನ್ನು ತೋರಿಸುವುದಿಲ್ಲ.</translation> @@ -54,6 +55,7 @@ ಸೈನ್ ಇನ್ ಮಾಡುವುದು ಬುಕ್ಮಾರ್ಕ್ಗಳು, ಇತಿಹಾಸ, ಹಾಗೂ ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳಂತಹ Chrome ಮಾಹಿತಿಯನ್ನು <ph name="ACCOUNT_EMAIL_NEW" /> ಗೆ ಹೇಗಿದ್ದರೂ ವಿಲೀನಗೊಳಿಸುತ್ತದೆ.</translation> <translation id="2397416548179033562">Chrome ಮೆನು ತೋರಿಸು</translation> <translation id="2429317896000329049">ನಿಮ್ಮ ಡೊಮೇನ್ನಲ್ಲಿ ಸಿಂಕ್ ಮಾಡುವ ಸೌಲಭ್ಯವಿಲ್ಲದ ಕಾರಣ Google Chrome ಗೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಸಿಂಕ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation> +<translation id="2446511512801740068">ದೀರ್ಘ ಸಮಯದ ಕಾಲ Chrome ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸದೇ ಇರುವ ಕಾರಣದಿಂದ ಅದರ ಅವಧಿ ಮುಗಿದಿದೆ. ಒಂದು ಅಪ್ಡೇಟ್ ಲಭ್ಯವಿದ್ದು ನೀವು ಮರುಪ್ರಾರಂಭಿಸಿದ ತಕ್ಷಣವೇ ಅದನ್ನು ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ.</translation> <translation id="2485422356828889247">ಅಸ್ಥಾಪಿಸು</translation> <translation id="2580411288591421699">ಪ್ರಸ್ತುತ ಚಾಲನೆಯಲ್ಲಿರುವ ಅದೇ Google Chrome ಆವೃತ್ತಿಯನ್ನು ಸ್ಥಾಪಿಸಲಾಗುವುದಿಲ್ಲ. ದಯವಿಟ್ಟು Google Chrome ಮುಚ್ಚಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation> <translation id="2582790009689336987">ಈ Linux ಸಿಸ್ಟಂ ಇನ್ನೂ ಬೆಂಬಲಿಸಲ್ಪಡದಿರುವುದರಿಂದ ಈ ಕಂಪ್ಯೂಟರ್ ಶೀಘ್ರದಲ್ಲಿಯೇ Google Chrome ಅಪ್ಡೇಟ್ಗಳನ್ನು ಸ್ವೀಕರಿಸುವುದನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb index 8853fa5a..a5114dc 100644 --- a/chrome/app/resources/google_chrome_strings_ko.xtb +++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Chrome 앱 런처 서비스 중단 예정</translation> <translation id="1877026089748256423">Chrome이 이전 버전임</translation> <translation id="1924381329666691588">Chrome을 이 언어로 표시할 수 없습니다.</translation> +<translation id="2063848847527508675">업데이트를 적용하려면 Chrome OS를 다시 시작해야 합니다.</translation> <translation id="2077129598763517140">가능한 경우 하드웨어 가속 사용</translation> <translation id="2084710999043359739">Chrome에 추가</translation> <translation id="2246246234298806438">기본 제공되는 PDF 뷰어가 없는 경우 Chrome에서 인쇄 미리보기를 표시할 수 없습니다.</translation> @@ -56,6 +57,7 @@ 로그인하면 북마크, 방문 기록 및 기타 설정과 같은 Chrome 정보가 <ph name="ACCOUNT_EMAIL_NEW" />에 병합됩니다.</translation> <translation id="2397416548179033562">Chrome 메뉴 표시</translation> <translation id="2429317896000329049">도메인에서 동기화를 사용할 수 없어 Chrome에서 데이터를 동기화하지 못했습니다.</translation> +<translation id="2446511512801740068">한동안 사용하지 않아 Chrome의 버전이 오래되었습니다. 업데이트를 사용할 수 있으며 다시 시작하면 바로 업데이트됩니다.</translation> <translation id="2485422356828889247">제거</translation> <translation id="2580411288591421699">현재 실행 중인 Chrome과 동일한 버전은 설치할 수 없습니다. Chrome을 닫고 다시 시도하세요.</translation> <translation id="2582790009689336987">이 Linux 시스템이 더 이상 지원되지 않을 예정이므로 곧 이 컴퓨터에서 Chrome 업데이트를 받을 수 없게 됩니다.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lt.xtb b/chrome/app/resources/google_chrome_strings_lt.xtb index 26a5db0..e6a69cb 100644 --- a/chrome/app/resources/google_chrome_strings_lt.xtb +++ b/chrome/app/resources/google_chrome_strings_lt.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Nutraukiamas „Chrome“ programų paleidimo priemonės teikimas.</translation> <translation id="1877026089748256423">„Chrome“ versija yra pasenusi</translation> <translation id="1924381329666691588">„Google Chrome“ negalima pateikti šia kalba.</translation> +<translation id="2063848847527508675">Kad būtų galima pritaikyti naujinį, „Chrome“ OS reikia paleisti iš naujo.</translation> <translation id="2077129598763517140">Kai galima, naudoti aparatinės įrangos paspartinimą</translation> <translation id="2084710999043359739">Pridėti į „Chrome“</translation> <translation id="2246246234298806438">„Google Chrome“ negali rodyti spaudinio peržiūros, kai nėra integruotos PDF žiūryklės.</translation> @@ -56,6 +57,7 @@ Prisijungus bet kuriuo būdu, „Chrome“ informacija, pvz., žymės, istorija ir kiti nustatymai, bus sujungta su <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Rodyti „Chrome“ meniu</translation> <translation id="2429317896000329049">„Google Chrome“ negali sinchronizuoti duomenų, nes jūsų domene sinchronizavimas nepasiekiamas.</translation> +<translation id="2446511512801740068">„Chrome“ yra pasenusi, nes ilgą laiką nebuvo paleista iš naujo. Naujinys pasiekiamas ir jis bus pritaikytas, kai paleisite iš naujo.</translation> <translation id="2485422356828889247">Pašalinti</translation> <translation id="2580411288591421699">Negalima įdiegti tos pačios „Google Chrome“ versijos, kuri dabar paleista. Uždarykite „Google Chrome“ ir bandykite dar kartą.</translation> <translation id="2582790009689336987">Netrukus šis kompiuteris nebegaus „Google Chrome“ naujinių, nes nebebus palaikoma ši „Linux“ sistema.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lv.xtb b/chrome/app/resources/google_chrome_strings_lv.xtb index 89bd05e..00e81589 100644 --- a/chrome/app/resources/google_chrome_strings_lv.xtb +++ b/chrome/app/resources/google_chrome_strings_lv.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">Chrome lietotņu palaidēja darbība tiek pārtraukta.</translation> <translation id="1877026089748256423">Chrome versija ir novecojusi.</translation> <translation id="1924381329666691588">Google Chrome nevar rādīt šajā valodā.</translation> +<translation id="2063848847527508675">Lai lietotu atjauninājumu, Chrome OS ir jārestartē.</translation> <translation id="2077129598763517140">Izmantot aparatūras paātrināšanas režīmu, kad tas ir pieejams</translation> <translation id="2084710999043359739">Pievienot pārlūkam Chrome</translation> <translation id="2246246234298806438">Pārlūks Google Chrome nevar parādīt drukas priekšskatījumu, ja nav pieejams iebūvētais PDF skatītājs.</translation> @@ -54,6 +55,7 @@ Ja pierakstīsieties tik un tā, Chrome informācija, piemēram, grāmatzīmes, vēsture un citi iestatījumi, tiks apvienota ar konta <ph name="ACCOUNT_EMAIL_NEW" /> informāciju.</translation> <translation id="2397416548179033562">Rādīt Chrome izvēlni</translation> <translation id="2429317896000329049">Google Chrome nevarēja sinhronizēt jūsu datus, jo jūsu domēnam nav pieejama sinhronizācija.</translation> +<translation id="2446511512801740068">Pārlūks Chrome ir novecojis, jo jau kādu laiku tas nav atkārtoti palaists. Atjauninājums ir pieejams un tiks lietots, tiklīdz atkārtoti palaidīsiet pārlūku.</translation> <translation id="2485422356828889247">Atinstalēt</translation> <translation id="2580411288591421699">Nevar instalēt to pašu Google Chrome versiju, kas jau darbojas. Lūdzu, aizveriet Google Chrome un mēģiniet vēlreiz.</translation> <translation id="2582790009689336987">Šajā datorā drīzumā vairs netiks saņemti Google Chrome atjauninājumi, jo šī Linux sistēma vairs netiks atbalstīta.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb index 68e25a3..0727d68 100644 --- a/chrome/app/resources/google_chrome_strings_ml.xtb +++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Chrome അപ്ലിക്കേഷൻ ലോഞ്ചർ പ്രവർത്തനം അവസാനിപ്പിക്കാൻ പോവുകയാണ്.</translation> <translation id="1877026089748256423">Chrome കാലഹരണപ്പെട്ടതാണ്</translation> <translation id="1924381329666691588">Google Chrome ഈ ഭാഷയിൽ പ്രദർശിപ്പിക്കാൻ കഴിയില്ല.</translation> +<translation id="2063848847527508675">അപ്ഡേറ്റ് പ്രയോഗത്തിൽ വരുത്താൻ Chrome OS പുനഃരാരംഭിക്കേണ്ടതുണ്ട്.</translation> <translation id="2077129598763517140">ലഭ്യമാകുമ്പോൾ ഹാർഡ്വെയർ ത്വരിതപ്പെടുത്തൽ ഉപയോഗിക്കുക</translation> <translation id="2084710999043359739">Chrome-ലേക്ക് ചേർക്കുക</translation> <translation id="2246246234298806438">ബിൽറ്റ്-ഇൻ PDF വ്യൂവർ കാണുന്നില്ലെങ്കിൽ Google Chrome-ന് പ്രിന്റ് പ്രിവ്യു കാണിക്കാൻ കഴിയില്ല.</translation> @@ -56,6 +57,7 @@ ഏതുവിധേനയും സൈൻ ഇൻ ചെയ്യുന്നത് ബുക്ക്മാർക്കുകൾ, ചരിത്രം, മറ്റ് ക്രമീകരണങ്ങൾ എന്നിവ പോലുള്ള Chrome വിവരങ്ങൾ <ph name="ACCOUNT_EMAIL_NEW" /> എന്നതുമായി ലയിപ്പിക്കും.</translation> <translation id="2397416548179033562">Chrome മെനു കാണിക്കുക</translation> <translation id="2429317896000329049">നിങ്ങളുടെ ഡൊമെയ്നിനായി സമന്വയം ലഭ്യമല്ലാത്തതിനാൽ Google Chrome-ന് നിങ്ങളുടെ ഡാറ്റ സമന്വയിപ്പിക്കാനായില്ല.</translation> +<translation id="2446511512801740068">അൽപ്പസമയത്തിനുള്ളിൽ വീണ്ടും ആരംഭിക്കാത്തതിനാൽ Chrome കാലഹരണപ്പെട്ടു. അപ്ഡേറ്റ് ലഭ്യമായതിനാൽ, നിങ്ങൾ വീണ്ടും ആരംഭിച്ചയുടനെ അത് അപ്ഡേറ്റുചെയ്യും.</translation> <translation id="2485422356828889247">അണ്ഇന്സ്റ്റാള് ചെയ്യുക</translation> <translation id="2580411288591421699">നിലവില് പ്രവര്ത്തിക്കുന്ന സമാന Google Chrome പതിപ്പ് ഇന്സ്റ്റാള് ചെയ്യാന് കഴിയില്ല. ദയവായി Google Chrome അടച്ച് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="2582790009689336987">Linux സിസ്റ്റം ഇനി പിന്തുണയ്ക്കാത്തതിനാൽ ഈ കമ്പ്യൂട്ടർ ഉടനെ Google Chrome അപ്ഡേറ്റുകൾ സ്വീകരിക്കുന്നത് നിർത്തും.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mr.xtb b/chrome/app/resources/google_chrome_strings_mr.xtb index 2b6b70d7..52dc21d 100644 --- a/chrome/app/resources/google_chrome_strings_mr.xtb +++ b/chrome/app/resources/google_chrome_strings_mr.xtb
@@ -39,6 +39,7 @@ <translation id="1864458292167284385">Chrome अॅप लाँचर जाणार आहे.</translation> <translation id="1877026089748256423">Chrome कालबाह्य आहे</translation> <translation id="1924381329666691588">Google Chrome या भाषेत प्रदर्शित केली जाऊ शकत नाही.</translation> +<translation id="2063848847527508675">अद्यतन लागू करण्यासाठी Chrome OS रीस्टार्ट करणे आवश्यक आहे.</translation> <translation id="2077129598763517140">उपलब्ध असेल तेव्हा हार्डवेअर ऍक्सीलरेशन वापरा</translation> <translation id="2084710999043359739">Chrome मध्ये जोडा</translation> <translation id="2246246234298806438">बिल्ट-इन PDF दर्शक गहाळ असताना Google Chrome मुद्रण पूर्वावलोकन दर्शवू शकत नाही.</translation> @@ -55,6 +56,7 @@ तरीही साइन इन करण्यामुळे <ph name="ACCOUNT_EMAIL_NEW" /> मध्ये बुकमार्क, इतिहास यासारखी Chrome माहिती आणि अन्य सेटिंग्ज विलीन होतील.</translation> <translation id="2397416548179033562">Chrome मेनू दर्शवा</translation> <translation id="2429317896000329049">आपल्या डोमेनसाठी संकालन उपलब्ध नसल्यामुळे Google Chrome आपला डेटा संकालित करू शकले नाही.</translation> +<translation id="2446511512801740068">Chrome कालबाह्य झाले आहे कारण हे काही क्षणात पुन्हा लाँच झाले नाही. एक अद्यतन उपलब्ध आहे आणि आपण पुन्हा लाँच केल्यावर ते लवकरात लवकर लागू होईल.</translation> <translation id="2485422356828889247">अनइन्स्टॉल करणे</translation> <translation id="2580411288591421699">सध्या चालत असलेली Google Chrome ची समान आवृत्ती स्थापित करू शकत नाही. कृपया Google Chrome बंद करा आणि पुन्हा प्रयत्न करा.</translation> <translation id="2582790009689336987">Linux सिस्टीम यापुढे समर्थित नसल्याने हा संगणक लवकरच Google Chrome अद्यतने प्राप्त करणे थांबवेल.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb index 0830fbe6d..ad5da9ed 100644 --- a/chrome/app/resources/google_chrome_strings_ms.xtb +++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Pelancar Apl Chrome akan ditamatkan.</translation> <translation id="1877026089748256423">Chrome sudah usang</translation> <translation id="1924381329666691588">Google Chrome tidak boleh dipaparkan dalam bahasa ini.</translation> +<translation id="2063848847527508675">OS Chrome perlu dimulakan semula untuk melaksanakan kemas kini.</translation> <translation id="2077129598763517140">Gunakan pecutan perkakasan apabila tersedia</translation> <translation id="2084710999043359739">Tambahkan pada Chrome</translation> <translation id="2246246234298806438">Google Chrome tidak dapat memaparkan pratonton cetakan apabila pemapar PDF terbina dalam tiada.</translation> @@ -52,6 +53,7 @@ Teruskan juga log masuk akan menggabungkan maklumat Chrome seperti penanda halaman, sejarah dan tetapan lain ke <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Paparkan menu Chrome</translation> <translation id="2429317896000329049">Google Chrome tidak dapat menyegerakkan data anda kerana Segerak tidak tersedia untuk domain anda.</translation> +<translation id="2446511512801740068">Chrome sudah usang kerana telah lama tidak dilancarkan. Terdapat kemas kini tersedia dan akan digunakan sebaik sahaja anda melancarkannya semula.</translation> <translation id="2485422356828889247">Nyahpasang</translation> <translation id="2580411288591421699">Tidak dapat memasang versi Google Chrome yang sama yang kini dijalankan. Sila tutup Google Chrome dan cuba semula.</translation> <translation id="2582790009689336987">Tidak lama lagi, komputer ini akan berhenti menerima kemas kini Google Chrome kerana sistem Linux ini tidak akan disokong lagi.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb index 78683b94..65d63a6 100644 --- a/chrome/app/resources/google_chrome_strings_nl.xtb +++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">De Chrome App Launcher gaat verdwijnen.</translation> <translation id="1877026089748256423">Chrome is verouderd</translation> <translation id="1924381329666691588">Google Chrome kan niet worden weergegeven in deze taal.</translation> +<translation id="2063848847527508675">Chrome OS moet opnieuw worden gestart om de update toe te passen.</translation> <translation id="2077129598763517140">Hardwareversnelling gebruiken indien beschikbaar</translation> <translation id="2084710999043359739">Toevoegen aan Chrome</translation> <translation id="2246246234298806438">Google Chrome kan het afdrukvoorbeeld niet weergeven wanneer de ingebouwde pdf-viewer ontbreekt.</translation> @@ -56,6 +57,7 @@ Als je inlogt, worden Chrome-gegevens zoals bladwijzers, geschiedenis en andere instellingen samengevoegd met <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Chrome-menu weergeven</translation> <translation id="2429317896000329049">Google Chrome kan je gegevens niet synchroniseren, omdat synchronisatie niet beschikbaar is voor je domein.</translation> +<translation id="2446511512801740068">Chrome is verouderd omdat het programma al een tijd niet opnieuw is gestart. Er is een update beschikbaar die wordt toegepast zodra je het programma opnieuw start.</translation> <translation id="2485422356828889247">Installatie ongedaan maken</translation> <translation id="2580411288591421699">Kan dezelfde Google Chrome-versie die momenteel actief is, niet installeren. Sluit Google Chrome en probeer het opnieuw.</translation> <translation id="2582790009689336987">Deze computer ontvangt binnenkort geen Google Chrome-updates meer omdat dit Linux-systeem niet meer wordt ondersteund.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb index b2e189f..199c9b7f 100644 --- a/chrome/app/resources/google_chrome_strings_no.xtb +++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome-appvelgeren forsvinner.</translation> <translation id="1877026089748256423">Chrome er utdatert</translation> <translation id="1924381329666691588">Google Chrome kan ikke vises på dette språket.</translation> +<translation id="2063848847527508675">Chrome OS må startes på nytt for at oppdateringen skal tas i bruk.</translation> <translation id="2077129598763517140">Bruk maskinvareakselerasjon når det er tilgjengelig</translation> <translation id="2084710999043359739">Legg til i Chrome</translation> <translation id="2246246234298806438">Google Chrome kan ikke vise forhåndsvisningen av utskrift når det innebygde PDF-visningsprogrammet mangler.</translation> @@ -52,6 +53,7 @@ Hvis du logger deg på allikevel, blir Chrome-informasjon som bokmerker, loggen og andre innstillinger slått sammen med <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Vis Chrome-menyen</translation> <translation id="2429317896000329049">Google Chrome kunne ikke synkronisere dataene dine fordi synkronisering ikke er tilgjengelig for domenet ditt.</translation> +<translation id="2446511512801740068">Chrome er utdatert fordi den ikke har vært startet på nytt på en stund. En oppdatering er tilgjengelig og tas i bruk når du starter Chrome på nytt.</translation> <translation id="2485422356828889247">Avinstaller</translation> <translation id="2580411288591421699">Google Chrome-versjonen du prøver å installere, kjører allerede. Lukk Google Chrome og forsøk å installere på nytt.</translation> <translation id="2582790009689336987">Denne datamaskinen slutter snart å motta oppdateringer av Google Chrome fordi dette Linux-systemet ikke støttes lenger.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pl.xtb b/chrome/app/resources/google_chrome_strings_pl.xtb index bdd37531..22f35cf 100644 --- a/chrome/app/resources/google_chrome_strings_pl.xtb +++ b/chrome/app/resources/google_chrome_strings_pl.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Wycofujemy Menu z aplikacjami Chrome.</translation> <translation id="1877026089748256423">Chrome jest nieaktualny</translation> <translation id="1924381329666691588">Google Chrome nie może działać w tym języku.</translation> +<translation id="2063848847527508675">Zastosowanie aktualizacji wymaga ponownego uruchomienia systemu operacyjnego Chrome.</translation> <translation id="2077129598763517140">Użyj akceleracji sprzętowej, gdy jest dostępna</translation> <translation id="2084710999043359739">Dodaj do Chrome</translation> <translation id="2246246234298806438">Google Chrome nie może pokazać podglądu wydruku, gdy nie ma wbudowanej przeglądarki PDF.</translation> @@ -52,6 +53,7 @@ Jeśli jednak zalogujesz się teraz, informacje Chrome, takie jak zakładki, historia i inne ustawienia, zostaną połączone z kontem <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Pokaż menu Chrome</translation> <translation id="2429317896000329049">Google Chrome nie może zsynchronizować danych, ponieważ synchronizacja jest niedostępna w Twojej domenie.</translation> +<translation id="2446511512801740068">Chrome jest nieaktualny, ponieważ od pewnego czasu nie był uruchamiany ponownie. Dostępna jest aktualizacja, która zostanie zastosowana natychmiast po ponownym uruchomieniu.</translation> <translation id="2485422356828889247">Odinstaluj</translation> <translation id="2580411288591421699">Nie można zainstalować tej samej wersji przeglądarki Google Chrome co obecnie uruchomiona. Zamknij przeglądarkę Google Chrome i spróbuj ponownie.</translation> <translation id="2582790009689336987">Google Chrome wkrótce przestanie aktualizować się na tym komputerze, bo ten system Linux nie będzie już obsługiwany.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-BR.xtb b/chrome/app/resources/google_chrome_strings_pt-BR.xtb index 4cd7c59..aaa8bce 100644 --- a/chrome/app/resources/google_chrome_strings_pt-BR.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-BR.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">O Iniciador de aplicativos do Google Chrome será desativado.</translation> <translation id="1877026089748256423">O Google Chrome está desatualizado</translation> <translation id="1924381329666691588">Não é possível exibir o Google Chrome neste idioma.</translation> +<translation id="2063848847527508675">É necessário reiniciar o Chrome OS para aplicar a atualização.</translation> <translation id="2077129598763517140">Usar aceleração de hardware quando disponível</translation> <translation id="2084710999043359739">Adicionar ao Google Chrome</translation> <translation id="2246246234298806438">O Google Chrome não consegue mostrar a visualização de impressão quando não há visualizador de PDF integrado.</translation> @@ -52,6 +53,7 @@ Se você decidir fazer login assim mesmo, as informações do Google Chrome, como favoritos, histórico e outras configurações serão mescladas com as informações de <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Exibir o menu do Google Chrome</translation> <translation id="2429317896000329049">O Google Chrome não pôde sincronizar seus dados porque a sincronização não está disponível para seu domínio.</translation> +<translation id="2446511512801740068">O Chrome está desatualizado porque não foi reiniciado durante algum tempo. Uma atualização está disponível e será aplicada assim que você reiniciá-lo.</translation> <translation id="2485422356828889247">Desinstalar</translation> <translation id="2580411288591421699">Não é possível instalar a mesma versão do Google Chrome que está em execução. Feche o Google Chrome e tente novamente.</translation> <translation id="2582790009689336987">Em breve, este computador parará de receber atualizações do Google Chrome, porque este sistema Linux não será mais compatível.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_pt-PT.xtb b/chrome/app/resources/google_chrome_strings_pt-PT.xtb index 10e3eb3..f5d693c 100644 --- a/chrome/app/resources/google_chrome_strings_pt-PT.xtb +++ b/chrome/app/resources/google_chrome_strings_pt-PT.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">O Iniciador de Aplicações do Chrome será descontinuado.</translation> <translation id="1877026089748256423">O Chrome está desatualizado</translation> <translation id="1924381329666691588">Não é possível apresentar o Google Chrome neste idioma.</translation> +<translation id="2063848847527508675">O SO Chrome tem de ser reiniciado para aplicar a atualização.</translation> <translation id="2077129598763517140">Utilizar aceleração de hardware sempre que estiver disponível</translation> <translation id="2084710999043359739">Adicionar ao Chrome</translation> <translation id="2246246234298806438">O Google Chrome não pode mostrar a pré-visualização de impressão quando o visualizador de PDF incorporado está em falta.</translation> @@ -52,6 +53,7 @@ Se, mesmo assim, iniciar sessão, as informações do Chrome, como marcadores, histórico e outras definições, fundir-se-ão com <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Mostrar menu do Chrome</translation> <translation id="2429317896000329049">O Google Chrome não conseguiu sincronizar os dados porque a Sincronização não está disponível para o seu domínio.</translation> +<translation id="2446511512801740068">O Chrome está desatualizado porque não é reiniciado há algum tempo. Está disponível uma atualização que será aplicada logo que o reinicie.</translation> <translation id="2485422356828889247">Desinstalar</translation> <translation id="2580411288591421699">Não é possível instalar a mesma versão do Google Chrome atualmente em execução. Feche o Google Chrome e tente novamente.</translation> <translation id="2582790009689336987">Em breve, este computador deixará de receber atualizações do Google Chrome, uma vez que este sistema Linux já não será suportado.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ro.xtb b/chrome/app/resources/google_chrome_strings_ro.xtb index 76b8d86..503b7ad 100644 --- a/chrome/app/resources/google_chrome_strings_ro.xtb +++ b/chrome/app/resources/google_chrome_strings_ro.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Lansatorul de aplicații Chrome nu va mai fi disponibil.</translation> <translation id="1877026089748256423">Chrome nu este actualizat</translation> <translation id="1924381329666691588">Google Chrome nu poate fi afișat în această limbă.</translation> +<translation id="2063848847527508675">Pentru a se aplica actualizarea, sistemul de operare Chrome trebuie să fie repornit.</translation> <translation id="2077129598763517140">Utilizează accelerarea hardware când este disponibilă</translation> <translation id="2084710999043359739">Adaugă în Chrome</translation> <translation id="2246246234298806438">Google Chrome nu poate afișa previzualizarea înainte de printare când vizualizatorul PDF încorporat lipsește.</translation> @@ -52,6 +53,7 @@ Dacă totuși vă conectați, informațiile Chrome cum ar fi marcajele, istoricul și alte setări vor fi îmbinate cu <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Afișează meniul Chrome</translation> <translation id="2429317896000329049">Google Chrome nu a putut sincroniza datele, deoarece sincronizarea nu este disponibilă pentru domeniul dvs.</translation> +<translation id="2446511512801740068">Chrome este neactualizat, deoarece în ultimul timp nu a fost repornit. Este disponibilă o actualizare, iar aceasta va fi aplicată după repornire.</translation> <translation id="2485422356828889247">Dezinstalează</translation> <translation id="2580411288591421699">Nu se poate instala aceeași versiune Google Chrome care rulează în prezent. Închide Google Chrome și încearcă din nou.</translation> <translation id="2582790009689336987">În curând, acest computer nu va mai primi actualizări pentru Google Chrome, deoarece acest sistem Linux nu va mai fi acceptat.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb index 5d836339..7c7da276 100644 --- a/chrome/app/resources/google_chrome_strings_ru.xtb +++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Мы прекращаем поддержку Панели запуска приложений Chromе</translation> <translation id="1877026089748256423">Версия Chrome устарела</translation> <translation id="1924381329666691588">Интерфейс Google Chrome невозможно отобразить на этом языке.</translation> +<translation id="2063848847527508675">Перезагрузите Chrome OS, чтобы установить обновление.</translation> <translation id="2077129598763517140">Использовать аппаратное ускорение (при наличии)</translation> <translation id="2084710999043359739">Установить</translation> <translation id="2246246234298806438">Если отсутствует встроенный просмотрщик PDF, предварительный просмотр в Google Chrome невозможен.</translation> @@ -52,6 +53,7 @@ Если войти в систему сейчас, закладки, история и прочие данные Chrome будут синхронизированы с аккаунтом <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Отображение меню Chrome</translation> <translation id="2429317896000329049">Google Chrome не удалось синхронизировать данные, поскольку служба Sync недоступна для вашего домена.</translation> +<translation id="2446511512801740068">Для текущей версии Chrome доступно обновление. Оно будет установлено при перезапуске приложения.</translation> <translation id="2485422356828889247">Удалить</translation> <translation id="2580411288591421699">Не удается установить версию Google Chrome, аналогичную уже выполняемой. Закройте Google Chrome и повторите попытку.</translation> <translation id="2582790009689336987">Google Chrome скоро перестанет обновляться на этом компьютере, поскольку поддержка этой системы Linux будет прекращена.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb index e16c091..0c49577 100644 --- a/chrome/app/resources/google_chrome_strings_sk.xtb +++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">Čoskoro ukončíme používanie Spúšťača aplikácií Chrome.</translation> <translation id="1877026089748256423">Prehliadač Chrome je zastaraný</translation> <translation id="1924381329666691588">Google Chrome nie je možné zobraziť v tomto jazyku.</translation> +<translation id="2063848847527508675">Ak chcete uplatniť aktualizáciu, musíte reštartovať systém Chrome OS.</translation> <translation id="2077129598763517140">Používať hardvérovú akceleráciu (keď je dostupná)</translation> <translation id="2084710999043359739">Pridať do prehliadača Chrome</translation> <translation id="2246246234298806438">Ak vstavaný zobrazovač súborov PDF chýba, prehliadač Google Chrome nemôže zobraziť ukážku pred tlačou.</translation> @@ -54,6 +55,7 @@ Ak sa chcete aj napriek tomu prihlásiť, informácie prehliadača Chrome, ako sú záložky, história a iné nastavenia, sa priradia k účtu <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Zobraziť Ponuku Chrome</translation> <translation id="2429317896000329049">Prehliadaču Google Chrome sa nepodarilo synchronizovať vaše údaje, pretože možnosť synchronizácie nie je pre vašu doménu k dispozícii.</translation> +<translation id="2446511512801740068">Chrome je zastaraný, pretože nebol dlhší čas reštartovaný. K dispozícii je aktualizácia, ktorá bude uplatnená po najbližšom opätovnom spustení.</translation> <translation id="2485422356828889247">Odinštalovať</translation> <translation id="2580411288591421699">Nie je možné nainštalovať rovnakú verziu prehliadača Google Chrome, ako je aktuálne spustená verzia. Zavrite Google Chrome a skúste znova.</translation> <translation id="2582790009689336987">Tento počítač čoskoro prestane dostávať aktualizácie prehliadača Google Chrome, pretože táto verzia systému Linux už nebude ďalej podporovaná.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb index 1c538eb..71db4f7 100644 --- a/chrome/app/resources/google_chrome_strings_sl.xtb +++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Chromov zaganjalnik aplikacij se poslavlja.</translation> <translation id="1877026089748256423">Chrome je zastarel</translation> <translation id="1924381329666691588">Google Chroma ni mogoče prikazati v tem jeziku.</translation> +<translation id="2063848847527508675">Če želite namestiti posodobitev, morate znova zagnati OS Chrome.</translation> <translation id="2077129598763517140">Uporabi strojno pospeševanje, če je na voljo</translation> <translation id="2084710999043359739">Dodaj v Chrome</translation> <translation id="2246246234298806438">Google Chrome ne more odpreti predogleda tiskanja, če ni vgrajenega pregledovalnika datotek PDF.</translation> @@ -56,6 +57,7 @@ Če se boste kljub temu prijavili, bodo podatki v Chromu, na primer zaznamki, zgodovina in druge nastavitve, združeni v računu <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Prikaz Chromovega menija</translation> <translation id="2429317896000329049">Google Chrome ni mogel sinhronizirati podatkov, ker sinhronizacija ni na voljo za vašo domeno.</translation> +<translation id="2446511512801740068">Chrome je zastarel, ker ga že nekaj časa niste znova zagnali. Na voljo je posodobitev, ki bo nameščena, takoj ko ga znova zaženete.</translation> <translation id="2485422356828889247">Odstranjevanje</translation> <translation id="2580411288591421699">Ni mogoče namestiti različice Google Chroma, enake tisti, ki se trenutno izvaja. Zaprite Google Chrome in poskusite znova.</translation> <translation id="2582790009689336987">Ta računalnik kmalu ne bo več prejemal posodobitev za Google Chrome, ker ta sistem Linux ne bo več podprt.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sr.xtb b/chrome/app/resources/google_chrome_strings_sr.xtb index 5a40fb46..07f7255 100644 --- a/chrome/app/resources/google_chrome_strings_sr.xtb +++ b/chrome/app/resources/google_chrome_strings_sr.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Покретач Chrome апликација се укида.</translation> <translation id="1877026089748256423">Chrome је застарео</translation> <translation id="1924381329666691588">Google Chrome не може да се приказује на овом језику.</translation> +<translation id="2063848847527508675">Треба да рестартујете Chrome OS да бисте применили ажурирање.</translation> <translation id="2077129598763517140">Користи хардверско убрзање када је доступно</translation> <translation id="2084710999043359739">Додавање у Chrome</translation> <translation id="2246246234298806438">Google Chrome не може да покаже приказ пре штампања када недостаје уграђени PDF приказивач.</translation> @@ -56,6 +57,7 @@ Ако се ипак пријавите, Chrome информације као што су обележивачи, историја и друга подешавања ће бити обједињене на <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Приказ Chrome менија</translation> <translation id="2429317896000329049">Google Chrome не може да синхронизује податке јер Синхронизација није доступна за домен.</translation> +<translation id="2446511512801740068">Chrome је застарео јер дуго није поново покренут. Ажурирање је доступно и биће примењено чим га поново покренете.</translation> <translation id="2485422356828889247">Деинсталирај</translation> <translation id="2580411288591421699">Није могуће инсталирати верзију Google Chrome прегледача која је иста као тренутно покренута верзија. Затворите Google Chrome и покушајте поново.</translation> <translation id="2582790009689336987">Овај рачунар ће ускоро престати да добија ажурирања за Google Chrome јер овај Linux систем више неће бити подржан.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb index 4c13fd77..fd6fc45 100644 --- a/chrome/app/resources/google_chrome_strings_sv.xtb +++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Startprogrammet för appar försvinner.</translation> <translation id="1877026089748256423">Den här versionen av Chrome är inaktuell</translation> <translation id="1924381329666691588">Det går inte att visa Google Chrome på det här språket.</translation> +<translation id="2063848847527508675">Chrome OS måste startas om för att uppdateringen ska börja gälla.</translation> <translation id="2077129598763517140">Använd maskinvaruacceleration när det är tillgängligt</translation> <translation id="2084710999043359739">Lägg till i Chrome</translation> <translation id="2246246234298806438">Förhandsgranskningen av utskriften kan inte visas i Google Chrome eftersom den inbyggda PDF-läsaren saknas.</translation> @@ -56,6 +57,7 @@ Om du loggar in ändå synkroniseras din information i Chrome, till exempel bokmärken, historik och andra inställningar, med <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Visa Chrome-menyn</translation> <translation id="2429317896000329049">Google Chrome kunde inte synkronisera data eftersom synkronisering inte är tillgängligt för din domän.</translation> +<translation id="2446511512801740068">Chrome är inaktuellt eftersom det inte har startats om på ett tag. Det finns en uppdatering tillgänglig som tillämpas så snart du startar om.</translation> <translation id="2485422356828889247">Avinstallera</translation> <translation id="2580411288591421699">Det går inte att installera samma version av Google Chrome som redan körs. Stäng Google Chrome och försök igen.</translation> <translation id="2582790009689336987">Den här datorn slutar snart att få uppdateringar för Google Chrome eftersom dess Linux-system inte längre stöds.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb index 008407f..1729f44 100644 --- a/chrome/app/resources/google_chrome_strings_sw.xtb +++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -40,6 +40,7 @@ <translation id="1864458292167284385">Kifungua Programu cha Chrome kinatoweka.</translation> <translation id="1877026089748256423">Toleo hili la Chrome limepitwa na wakati</translation> <translation id="1924381329666691588">Google Chrome haiwezi kuonyeshwa katika lugha hii.</translation> +<translation id="2063848847527508675">Mfumo wa Uendeshaji wa Chrome unahitaji kuzimwa na kuwashwa upya ili utumie sasisho.</translation> <translation id="2077129598763517140">Tumia uongezaji kasi wa maunzi wakati unapatikana</translation> <translation id="2084710999043359739">Ongeza kwenye Chrome</translation> <translation id="2246246234298806438">Google Chrome haiwezi kuonyesha uhakiki wa kuchapisha wakati kionyeshi kilichojengewa ndani cha PDF kinakosekana.</translation> @@ -56,6 +57,7 @@ Kuingia bila kujali kutaunganisha maelezo ya Chrome kama vile alamisho, historia, na mipangilio mingine kwenye <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Onyesha Menyu ya Chrome</translation> <translation id="2429317896000329049">Google Chrome haikuweza kusawazisha data yako kwa sababu Usawazishaji haupatikani kwa kikoa chako.</translation> +<translation id="2446511512801740068">Muda wa matumizi wa Chrome umeisha kwa sababu haijafunguliwa upya kwa muda mrefu. Sasisho linapatikana na litaanza kutumika pindi tu utakapofungua upya.</translation> <translation id="2485422356828889247">Ondoa</translation> <translation id="2580411288591421699">Huwezi kusakinisha toleo la Google Chrome ambalo tayari linatumika. Tafadhali funga Google Chrome na ujaribu tena.</translation> <translation id="2582790009689336987">Kompyuta itaacha kupokea sasisho za Google Chrome hivi karibuni kwa sababu mfumo huu wa Linux hautatumika tena.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ta.xtb b/chrome/app/resources/google_chrome_strings_ta.xtb index 89b9030..3405ebb 100644 --- a/chrome/app/resources/google_chrome_strings_ta.xtb +++ b/chrome/app/resources/google_chrome_strings_ta.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome பயன்பாட்டுத் துவக்கியை நிறுத்தவுள்ளோம்.</translation> <translation id="1877026089748256423">Chrome காலாவதியானது</translation> <translation id="1924381329666691588">Google Chromeஐ இந்த மொழியில் காட்ட முடியாது.</translation> +<translation id="2063848847527508675">புதுப்பிப்பைப் பயன்படுத்த, Chrome OSஐ மீண்டும் தொடங்க வேண்டும்.</translation> <translation id="2077129598763517140">கிடைக்கும்போது வன்பொருளின் முடுக்கத்தைப் பயன்படுத்தவும்</translation> <translation id="2084710999043359739">Chrome இல் சேர்</translation> <translation id="2246246234298806438">உள்ளமைக்கப்பட்ட PDF வியூவர் இல்லையென்றால், Google Chrome அச்சிடல் மாதிரிக்காட்சியைக் காண்பிக்காது.</translation> @@ -52,6 +53,7 @@ எப்படியிருந்தாலும் உள்நுழைதல் <ph name="ACCOUNT_EMAIL_NEW" /> க்கான புக்மார்க்குகள், வரலாறு, மற்றும் பிற அமைப்புகள் போன்ற Chrome தகவலைப் பிணைக்கும்.</translation> <translation id="2397416548179033562">Chrome மெனுவைக் காட்டு</translation> <translation id="2429317896000329049">உங்கள் களத்திற்கு ஒத்திசைவு இல்லாததால், Google Chrome ஆல் உங்கள் தரவை ஒத்திசைக்க முடியவில்லை.</translation> +<translation id="2446511512801740068">சிறிது காலமாக மறுதொடக்கம் செய்யப்படாததால், Chrome காலாவதியாகிவிட்டது. புதுப்பிப்பு உள்ளது. நீங்கள் மறுதொடக்கம் செய்தவுடன் பயன்படுத்தப்படும்.</translation> <translation id="2485422356828889247">நிறுவல் நீக்கு</translation> <translation id="2580411288591421699">நடப்பில் இயங்கிக்கொண்டிருக்கும் அதே Google Chrome பதிப்பை நிறுவ முடியாது. Google Chrome ஐ மூடிவிட்டு மீண்டும் முயற்சி செய்க.</translation> <translation id="2582790009689336987">இந்த Linux அமைப்பு இனி ஆதரிக்கப்படாது என்பதால் இந்தக் கணினி Google Chrome புதுப்பிப்புகளைப் பெறுவதை விரைவில் நிறுத்தும்.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_te.xtb b/chrome/app/resources/google_chrome_strings_te.xtb index 3b87cb85..afdc645 100644 --- a/chrome/app/resources/google_chrome_strings_te.xtb +++ b/chrome/app/resources/google_chrome_strings_te.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome అనువర్తన లాంచర్ త్వరలో నిలిపివేయబడుతుంది.</translation> <translation id="1877026089748256423">Chrome కాలం చెల్లినది</translation> <translation id="1924381329666691588">Google Chrome ఈ భాషలో ప్రదర్శించబడదు.</translation> +<translation id="2063848847527508675">నవీకరణను వర్తింపజేయడానికి Chrome OSని పునఃప్రారంభించాలి.</translation> <translation id="2077129598763517140">హార్డ్వేర్ త్వరితం అందుబాటులో ఉన్నప్పుడు ఉపయోగించు</translation> <translation id="2084710999043359739">Chromeకి జోడించు</translation> <translation id="2246246234298806438">అంతర్నిర్మిత PDF వ్యూవర్ లేనప్పుడు Google Chrome ముద్రణ పరిదృశ్యాన్ని చూపించదు.</translation> @@ -52,6 +53,7 @@ ఏదేమైనా సైన్ ఇన్ చేస్తే బుక్మార్క్లు, చరిత్ర మరియు ఇతర సెట్టింగ్ల వంటి Chrome సమాచారం <ph name="ACCOUNT_EMAIL_NEW" />కు విలీనం చేయబడుతుంది.</translation> <translation id="2397416548179033562">Chrome మెనును చూపు</translation> <translation id="2429317896000329049">మీ డొమైన్ కోసం సమకాలీకరణ అందుబాటులో లేనందున Google Chrome మీ డేటాను సమకాలీకరించలేకపోయింది.</translation> +<translation id="2446511512801740068">Chromeని కొంత కాలంగా పునఃప్రారంభించనందున దాని గడువు తేదీ ముగిసింది. నవీకరణ అందుబాటులో ఉంది, మీరు పునఃప్రారంభించిన తక్షణం వర్తింపజేయబడుతుంది.</translation> <translation id="2485422356828889247">వ్యవస్థాపనను తీసివెయ్యి</translation> <translation id="2580411288591421699">ప్రస్తుతం అమలవుతున్న అదే Google Chrome సంస్కరణను వ్యవస్థాపించలేదు. దయచేసి Google Chromeను మూసివేసి, మళ్ళీ ప్రయత్నించండి.</translation> <translation id="2582790009689336987">ఈ Linux సిస్టమ్కు ఇకపై మద్దతు నిలిపివేయబడుతున్నందున ఈ కంప్యూటర్ త్వరలోనే Google Chrome నవీకరణలను స్వీకరించడం ఆపివేస్తుంది.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_th.xtb b/chrome/app/resources/google_chrome_strings_th.xtb index d48fa21..95aae661 100644 --- a/chrome/app/resources/google_chrome_strings_th.xtb +++ b/chrome/app/resources/google_chrome_strings_th.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">เครื่องเรียกใช้งานแอป Chrome จะเลิกใช้งานในเร็วๆ นี้</translation> <translation id="1877026089748256423">Chrome ล้าสมัย</translation> <translation id="1924381329666691588">Google Chrome ไม่สามารถแสดงในภาษานี้</translation> +<translation id="2063848847527508675">ต้องรีสตาร์ท Chrome OS เพื่อใช้การอัปเดต</translation> <translation id="2077129598763517140">ใช้การเร่งฮาร์ดแวร์เมื่อสามารถใช้ได้</translation> <translation id="2084710999043359739">เพิ่มลงใน Chrome</translation> <translation id="2246246234298806438">Google Chrome ไม่สามารถแสดงหน้าตัวอย่างก่อนพิมพ์หากไม่มีโปรแกรมดู PDF ในตัว</translation> @@ -52,6 +53,7 @@ การลงชื่อเข้าใช้ต่อไปจะรวมข้อมูล Chrome เช่น บุ๊กมาร์ก ประวัติการเข้าชม และการตั้งค่าอื่นๆ เข้ากับ <ph name="ACCOUNT_EMAIL_NEW" /></translation> <translation id="2397416548179033562">แสดงเมนู Chrome</translation> <translation id="2429317896000329049">Google Chrome ไม่สามารถซิงค์ข้อมูลของคุณเนื่องจากไม่สามารถใช้การซิงค์กับโดเมนของคุณ</translation> +<translation id="2446511512801740068">Chrome ล้าสมัยเพราะไม่ได้เรียกใช้งานใหม่มาระยะหนึ่งแล้ว มีเวอร์ชันอัปเดตพร้อมใช้งานและระบบจะนำเวอร์ชันอัปเดตดังกล่าวไปใช้เมื่อคุณเปิดแอปใหม่</translation> <translation id="2485422356828889247">ถอนการติดตั้ง</translation> <translation id="2580411288591421699">ไม่สามารถติดตั้ง Google Chrome รุ่นเดียวกับที่กำลังเรียกใช้อยู่ได้ โปรดปิด Google Chrome แล้วลองใหม่อีกครั้ง</translation> <translation id="2582790009689336987">คอมพิวเตอร์เครื่องนี้จะหยุดรับการอัปเดต Google Chrome ในอีกไม่ช้าเนื่องจากไม่มีการสนับสนุนระบบ Linux นี้อีกต่อไป</translation> @@ -205,7 +207,7 @@ <translation id="7106741999175697885">ตัวจัดการงาน - Google Chrome</translation> <translation id="7125719106133729027">Chrome ไม่สามารถอัปเดตตัวเองเป็นเวอร์ชันล่าสุดได้ คุณกำลังพลาดคุณลักษณะเจ๋งๆ และการปรับปรุงความปลอดภัย คุณจำเป็นต้องติดตั้ง Chrome ใหม่ด้วยตนเอง</translation> <translation id="7161904924553537242">ยินดีต้อนรับสู่ Google Chrome</translation> -<translation id="7164397146364144019">คุณสามารถช่วยปรับปรุงให้ Chrome ปลอดภัยและใช้งานง่ายขึ้นโดยรายงานรายละเอียดของเหตุการณ์ความปลอดภัยที่เป็นไปได้ต่อ Google โดยอัตโนมัติ</translation> +<translation id="7164397146364144019">คุณสามารถช่วยปรับปรุงให้ Chrome ปลอดภัยและใช้งานง่ายขึ้นโดยรายงานรายละเอียดของเหตุการณ์ด้านความปลอดภัยที่อาจจะเกิดขึ้นต่อ Google โดยอัตโนมัติ</translation> <translation id="7177347454226092725">การดำเนินการนี้จะลบข้อมูลการท่องเว็บของคุณจากอุปกรณ์นี้อย่างถาวร หากต้องการดึงข้อมูลภายหลัง ให้ลงชื่อเข้าใช้ Chrome ในนาม $2</translation> <translation id="7185038942300673794">เพิ่ม <ph name="EXTENSION_NAME" /> ลงใน Chrome แล้ว</translation> <translation id="7191567847629796517">Google Chrome OS ไม่สนับสนุนการเรียกใช้แอปพลิเคชันภายนอกเพื่อจัดการลิงก์ <ph name="SCHEME" /> ลิงก์ที่ขอคือ <ph name="PROTOLINK" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_tr.xtb b/chrome/app/resources/google_chrome_strings_tr.xtb index 10a17b6..699f8ebf 100644 --- a/chrome/app/resources/google_chrome_strings_tr.xtb +++ b/chrome/app/resources/google_chrome_strings_tr.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome Uygulama Başlatıcı kullanımdan kaldırılıyor.</translation> <translation id="1877026089748256423">Chrome sürümü eski</translation> <translation id="1924381329666691588">Google Chrome bu dilde görüntülenemiyor.</translation> +<translation id="2063848847527508675">Güncellemenin uygulanması için Chrome OS yeniden başlatılmalıdır.</translation> <translation id="2077129598763517140">Kullanılabilir olduğunda donanım ivmesini kullan</translation> <translation id="2084710999043359739">Chrome'a ekle</translation> <translation id="2246246234298806438">Google Chrome, dahili PDF görüntüleyici yokken baskı önizlemeyi gösteremez.</translation> @@ -52,6 +53,7 @@ Yine de oturum açarsanız, yer işaretleriniz, geçmişiniz ve diğer ayarlarınız gibi Chrome bilgileriniz <ph name="ACCOUNT_EMAIL_NEW" /> ile birleştirilecektir.</translation> <translation id="2397416548179033562">Chrome menüsünü göster</translation> <translation id="2429317896000329049">Senkronizasyon, alan adınızda kullanılamadığından Google Chrome, verilerinizi senkronize edemedi.</translation> +<translation id="2446511512801740068">Bir süredir çalıştırılmadığından Chrome güncel değil. Kullanılabilir bir güncelleme var ve yeniden başlattığınızda hemen uygulanacak.</translation> <translation id="2485422356828889247">Yüklemeyi Kaldır</translation> <translation id="2580411288591421699">Şu anda çalışmakta olan Google Chrome ile aynı sürüm yüklenemez. Lütfen Google Chrome'u kapatın ve tekrar deneyin.</translation> <translation id="2582790009689336987">Bu Linux sistemi artık desteklenmeyeceğinden, bu bilgisayar yakında Google Chrome güncellemeleri almayı durduracaktır.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_uk.xtb b/chrome/app/resources/google_chrome_strings_uk.xtb index 47b5f740a..1ab4edc4 100644 --- a/chrome/app/resources/google_chrome_strings_uk.xtb +++ b/chrome/app/resources/google_chrome_strings_uk.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Панель запуску програм Chrome більше не доступна.</translation> <translation id="1877026089748256423">Версія Chrome застаріла</translation> <translation id="1924381329666691588">Не можна вибрати цю мову для Google Chrome.</translation> +<translation id="2063848847527508675">Щоб застосувати це оновлення, потрібно перезапустити ОС Chrome.</translation> <translation id="2077129598763517140">Використовувати апаратне прискорення, якщо доступно</translation> <translation id="2084710999043359739">Додати в Chrome</translation> <translation id="2246246234298806438">Google Chrome не може відобразити попередній перегляд версії для друку, якщо немає вбудованого переглядача PDF.</translation> @@ -52,6 +53,7 @@ Якщо ви все одно ввійдете, наявні дані Chrome, як-от закладки, історію й інші налаштування, буде об’єднано з обліковим записом <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Показати меню Chrome</translation> <translation id="2429317896000329049">Google Chrome не вдалося синхронізувати ваші дані, оскільки синхронізація для вашого домену недоступна.</translation> +<translation id="2446511512801740068">Chrome застарів, оскільки протягом якогось часу його не перезапускали. Оновлення доступне та буде застосоване одразу після перезапуску.</translation> <translation id="2485422356828889247">Видалити</translation> <translation id="2580411288591421699">Поки Google Chrome працює, неможливо встановити версію, аналогічну поточній. Закрийте Google Chrome і повторіть спробу.</translation> <translation id="2582790009689336987">На цей комп’ютер невдовзі перестануть надходити оновлення Google Chrome, оскільки ця система Linux більше не підтримуватиметься.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_vi.xtb b/chrome/app/resources/google_chrome_strings_vi.xtb index f75211f..983615f 100644 --- a/chrome/app/resources/google_chrome_strings_vi.xtb +++ b/chrome/app/resources/google_chrome_strings_vi.xtb
@@ -38,6 +38,7 @@ <translation id="1864458292167284385">Trình chạy ứng dụng Chrome sắp ngừng hoạt động.</translation> <translation id="1877026089748256423">Chrome đã lỗi thời</translation> <translation id="1924381329666691588">Không thể hiển thị Google Chrome bằng ngôn ngữ này.</translation> +<translation id="2063848847527508675">Chrome OS cần được khởi động lại để áp dụng bản cập nhật.</translation> <translation id="2077129598763517140">Sử dụng chế độ tăng tốc phần cứng khi khả dụng</translation> <translation id="2084710999043359739">Thêm vào Chrome</translation> <translation id="2246246234298806438">Google Chrome không thể hiển thị xem trước bản in khi thiếu trình xem PDF được cài sẵn.</translation> @@ -54,6 +55,7 @@ Đăng nhập bằng mọi cách sẽ kết hợp thông tin Chrome như dấu trang, lịch sử và các cài đặt khác vào <ph name="ACCOUNT_EMAIL_NEW" />.</translation> <translation id="2397416548179033562">Hiển thị menu Chrome</translation> <translation id="2429317896000329049">Google Chrome không thể đồng bộ hóa dữ liệu của bạn vì Đồng bộ hóa không khả dụng cho miền của bạn.</translation> +<translation id="2446511512801740068">Chrome đã lỗi thời vì ứng dụng này chưa được chạy lại trong một thời gian. Đã có bản cập nhật và bản cập nhật này sẽ được áp dụng ngay khi bạn chạy lại.</translation> <translation id="2485422356828889247">Gỡ cài đặt</translation> <translation id="2580411288591421699">Không thể cài đặt phiên bản Google Chrome giống với phiên bản hiện đang chạy. Vui lòng đóng Google Chrome và thử lại.</translation> <translation id="2582790009689336987">Máy tính này sắp dừng nhận bản cập nhật của Google Chrome do hệ thống Linux này sẽ không được hỗ trợ nữa.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb index 718b6ee..6f6703c9 100644 --- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome 应用启动器即将停用。</translation> <translation id="1877026089748256423">Chrome版本太旧</translation> <translation id="1924381329666691588">Google Chrome 无法以这种语言显示。</translation> +<translation id="2063848847527508675">需要重新启动 Chrome 操作系统以应用更新。</translation> <translation id="2077129598763517140">使用硬件加速模式(如果可用)</translation> <translation id="2084710999043359739">添加到 Chrome 浏览器</translation> <translation id="2246246234298806438">在缺少内置 PDF 查看器的情况下,Google Chrome 浏览器无法显示打印预览。</translation> @@ -52,6 +53,7 @@ 如果您仍然登录,Chrome 信息(例如书签、历史记录和其他设置)将合并到 <ph name="ACCOUNT_EMAIL_NEW" />。</translation> <translation id="2397416548179033562">显示 Chrome 菜单</translation> <translation id="2429317896000329049">由于您的网域停用了同步功能,Google Chrome无法同步您的数据。</translation> +<translation id="2446511512801740068">Chrome 已有一段时间未重新启动,因此现在已不是最新版本。目前有可用更新,系统会在您重新启动 Chrome 后应用这些更新。</translation> <translation id="2485422356828889247">卸载</translation> <translation id="2580411288591421699">无法安装与当前运行版本相同的 Google Chrome 浏览器。请关闭 Google Chrome 浏览器,然后重试。</translation> <translation id="2582790009689336987">Google Chrome 将不再支持此 Linux 系统,因此这台计算机很快将停止接收 Google Chrome 更新。</translation> @@ -205,7 +207,7 @@ <translation id="7106741999175697885">任务管理器 - Google Chrome</translation> <translation id="7125719106133729027">Chrome无法自动更新到最新版本,因此其中缺少一些非常棒的新功能和安全修复程序。要获得这些内容,您需要手动重新安装Chrome。</translation> <translation id="7161904924553537242">欢迎使用 Google Chrome</translation> -<translation id="7164397146364144019">您可以选择自动向Google报告可能出现的安全事件详情,以帮助我们提高Chrome的安全性和易用性。</translation> +<translation id="7164397146364144019">您可以选择自动向 Google 报告可能出现的安全事件详情,以帮助我们提高 Chrome 的安全性和易用性。</translation> <translation id="7177347454226092725">这会将您的浏览数据从这台设备上永久删除。如果日后想要检索您的数据,届时请以“$2”的身份登录 Chrome。</translation> <translation id="7185038942300673794"><ph name="EXTENSION_NAME" />已添加到 Chrome 浏览器。</translation> <translation id="7191567847629796517">Google Chrome操作系统不支持启动外部应用来处理<ph name="SCHEME" />链接。请求的链接是<ph name="PROTOLINK" />。</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb index 4e59645..d787ba0 100644 --- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -36,6 +36,7 @@ <translation id="1864458292167284385">Chrome 應用程式啟動器即將停止服務。</translation> <translation id="1877026089748256423">Chrome 版本過舊</translation> <translation id="1924381329666691588">Google Chrome 的介面文字無法設為這種語言。</translation> +<translation id="2063848847527508675">Chrome 作業系統必須重新啟動,才能套用更新。</translation> <translation id="2077129598763517140">在可用時使用硬體加速</translation> <translation id="2084710999043359739">加到 Chrome</translation> <translation id="2246246234298806438">缺乏內建的 PDF 檢視器時,Google Chrome 無法顯示列印預覽。</translation> @@ -52,6 +53,7 @@ 如果您仍要繼續登入帳戶,各項 Chrome 資訊 (例如書籤、紀錄和其他設定) 則會合併至 <ph name="ACCOUNT_EMAIL_NEW" />。</translation> <translation id="2397416548179033562">顯示 Chrome 選單</translation> <translation id="2429317896000329049">您的網域無法使用「同步功能」,因此 Google Chrome 無法同步處理您的資料。</translation> +<translation id="2446511512801740068">Chrome 已經一段時間未重新啟動,因此現已版本過舊。重新啟動後,即會套用可用的更新。</translation> <translation id="2485422356828889247">解除安裝</translation> <translation id="2580411288591421699">您無法安裝這個版本的 Google Chrome,因為相同的版本目前正在執行中。請關閉 Google Chrome 然後再試一次。</translation> <translation id="2582790009689336987">Google Chrome 將停止支援這種 Linux 系統,因此這部電腦很快就不會再收到 Google Chrome 更新。</translation>
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 08e1cde0..a2b3f61 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -893,11 +893,6 @@ IDS_FLAGS_MEDIA_DOCUMENT_DOWNLOAD_BUTTON_DESCRIPTION, kOsAndroid, FEATURE_VALUE_TYPE(features::kMediaDocumentDownloadButton)}, #endif -#if defined(OS_CHROMEOS) - {"download-notification", IDS_FLAGS_DOWNLOAD_NOTIFICATION_NAME, - IDS_FLAGS_DOWNLOAD_NOTIFICATION_DESCRIPTION, kOsCrOS, - SINGLE_DISABLE_VALUE_TYPE(switches::kDisableDownloadNotification)}, -#endif #if defined(ENABLE_PLUGINS) {"allow-nacl-socket-api", IDS_FLAGS_ALLOW_NACL_SOCKET_API_NAME, IDS_FLAGS_ALLOW_NACL_SOCKET_API_DESCRIPTION, kOsDesktop,
diff --git a/chrome/browser/chrome_browser_field_trials_desktop.cc b/chrome/browser/chrome_browser_field_trials_desktop.cc index 3970bf2..d5ee04e 100644 --- a/chrome/browser/chrome_browser_field_trials_desktop.cc +++ b/chrome/browser/chrome_browser_field_trials_desktop.cc
@@ -7,8 +7,12 @@ #include <string> #include "base/command_line.h" +#include "base/debug/activity_tracker.h" +#include "base/feature_list.h" #include "base/metrics/field_trial.h" +#include "base/path_service.h" #include "chrome/browser/prerender/prerender_field_trial.h" +#include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/variations/variations_util.h" #include "components/variations/variations_associated_data.h" @@ -18,6 +22,10 @@ namespace { +const base::Feature kStabilityDebuggingFeature{ + "StabilityDebugging", base::FEATURE_DISABLED_BY_DEFAULT +}; + void SetupLightSpeedTrials() { if (!variations::GetVariationParamValue("LightSpeed", "NoGpu").empty()) { base::CommandLine::ForCurrentProcess()->AppendSwitch( @@ -46,12 +54,35 @@ #endif } +void SetupStabilityDebugging() { + if (!base::FeatureList::IsEnabled(kStabilityDebuggingFeature)) + return; + + // TODO(bcwhite): Adjust these numbers once there is real data to show + // just how much of an arena is necessary. + const size_t kMemorySize = 1 << 20; // 1 MiB + const int kStackDepth = 4; + const uint64_t kAllocatorId = 0; + + // Track code activities (such as posting task, blocking on locks, and + // joining threads) that can cause hanging threads and general instability. + base::FilePath user_data_dir; + bool success = base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); + DCHECK(success); + base::debug::GlobalActivityTracker::CreateWithFile( + user_data_dir + .AppendASCII("StabilityDebugInfo") + .AddExtension(base::PersistentMemoryAllocator::kFileExtension), + kMemorySize, kAllocatorId, kStabilityDebuggingFeature.name, kStackDepth); +} + } // namespace void SetupDesktopFieldTrials(const base::CommandLine& parsed_command_line) { prerender::ConfigurePrerender(parsed_command_line); SetupLightSpeedTrials(); SetupStunProbeTrial(); + SetupStabilityDebugging(); } } // namespace chrome
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc index f9bce51e..7dfd3bd 100644 --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc
@@ -1219,6 +1219,12 @@ return content::RESULT_CODE_NORMAL_EXIT; } +void ChromeBrowserMainParts::MojoShellConnectionStarted( + content::MojoShellConnection* connection) { + for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) + chrome_extra_parts_[i]->MojoShellConnectionStarted(connection); +} + void ChromeBrowserMainParts::PreMainMessageLoopRun() { #if defined(USE_AURA) if (content::MojoShellConnection::GetForProcess() && shell::ShellIsRemote()) {
diff --git a/chrome/browser/chrome_browser_main.h b/chrome/browser/chrome_browser_main.h index 64b2614e..3064c70 100644 --- a/chrome/browser/chrome_browser_main.h +++ b/chrome/browser/chrome_browser_main.h
@@ -70,6 +70,8 @@ void PreMainMessageLoopStart() override; void PostMainMessageLoopStart() override; int PreCreateThreads() override; + void MojoShellConnectionStarted( + content::MojoShellConnection* connection) override; void PreMainMessageLoopRun() override; bool MainMessageLoopRun(int* result_code) override; void PostMainMessageLoopRun() override;
diff --git a/chrome/browser/chrome_browser_main_extra_parts.h b/chrome/browser/chrome_browser_main_extra_parts.h index 4ab0e51..a766592 100644 --- a/chrome/browser/chrome_browser_main_extra_parts.h +++ b/chrome/browser/chrome_browser_main_extra_parts.h
@@ -5,6 +5,10 @@ #ifndef CHROME_BROWSER_CHROME_BROWSER_MAIN_EXTRA_PARTS_H_ #define CHROME_BROWSER_CHROME_BROWSER_MAIN_EXTRA_PARTS_H_ +namespace content { +class MojoShellConnection; +} + // Interface class for Parts owned by ChromeBrowserMainParts. // The default implementation for all methods is empty. @@ -34,6 +38,8 @@ // MainMessageLoopRun methods. virtual void PreCreateThreads() {} + virtual void MojoShellConnectionStarted( + content::MojoShellConnection* connection) {} virtual void PreProfileInit() {} virtual void PostProfileInit() {} virtual void PreBrowserStart() {}
diff --git a/chrome/browser/chromeos/boot_times_recorder.cc b/chrome/browser/chromeos/boot_times_recorder.cc index 35bed8f..c6d5064 100644 --- a/chrome/browser/chromeos/boot_times_recorder.cc +++ b/chrome/browser/chromeos/boot_times_recorder.cc
@@ -356,8 +356,8 @@ // Either we're on the browser thread, or (more likely) Chrome is in the // process of shutting down and we're on the main thread but the message loop // has already been terminated. - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || - !BrowserThread::IsMessageLoopValid(BrowserThread::UI)); + DCHECK(!BrowserThread::IsMessageLoopValid(BrowserThread::UI) || + BrowserThread::CurrentlyOn(BrowserThread::UI)); WriteTimes(kLogoutTimes, (restart_requested_ ? kUmaRestart : kUmaLogout), @@ -462,8 +462,8 @@ // The marker vectors can only be safely manipulated on the main thread. // If we're late in the process of shutting down (eg. as can be the case at // logout), then we have to assume we're on the main thread already. - if (BrowserThread::CurrentlyOn(BrowserThread::UI) || - !BrowserThread::IsMessageLoopValid(BrowserThread::UI)) { + if (!BrowserThread::IsMessageLoopValid(BrowserThread::UI) || + BrowserThread::CurrentlyOn(BrowserThread::UI)) { vector->push_back(marker); } else { // Add the marker on the UI thread.
diff --git a/chrome/browser/chromeos/hats/hats_dialog.cc b/chrome/browser/chromeos/hats/hats_dialog.cc index 3e90e74..1cf5b4d 100644 --- a/chrome/browser/chromeos/hats/hats_dialog.cc +++ b/chrome/browser/chromeos/hats/hats_dialog.cc
@@ -27,10 +27,11 @@ // Default width/height ratio of screen size. const int kDefaultWidth = 400; const int kDefaultHeight = 420; +// Site ID for HaTS survey. +constexpr char kSiteID[] = "cs5lsagwwbho7l5cbbdniso22e"; +constexpr char kGooglerSiteID[] = "z56p2hjy7pegxh3gmmur4qlwha"; + constexpr char kReplacementToken[] = "$SCRIPT_SRC"; -// Site ID for the Google consumer HaTS survey. -// TODO(malaykeshav): Replace this demo survey with actual site id. -constexpr char kSiteID[] = "ckvqucibdlzn2"; // Base URL to fetch the google consumer survey script. constexpr char kBaseFormatUrl[] = "https://www.google.com/insights/consumersurveys/" @@ -106,7 +107,7 @@ } // namespace // static -void HatsDialog::CreateAndShow() { +void HatsDialog::CreateAndShow(bool is_google_account) { Profile* profile = ProfileManager::GetActiveUserProfile(); std::string user_locale = profile->GetPrefs()->GetString(prefs::kApplicationLocale); @@ -118,14 +119,16 @@ base::PostTaskAndReplyWithResult( content::BrowserThread::GetBlockingPool(), FROM_HERE, base::Bind(&GetFormattedSiteContext, user_locale, kDeviceInfoStopKeyword), - base::Bind(&HatsDialog::Show, base::Passed(&hats_dialog))); + base::Bind(&HatsDialog::Show, base::Passed(&hats_dialog), + is_google_account ? kGooglerSiteID : kSiteID)); } // static void HatsDialog::Show(std::unique_ptr<HatsDialog> hats_dialog, + std::string site_id, std::string site_context) { // Load and set the html data that needs to be displayed in the dialog. - hats_dialog->html_data_ = LoadLocalHtmlAsString(kSiteID, site_context); + hats_dialog->html_data_ = LoadLocalHtmlAsString(site_id, site_context); chrome::ShowWebDialog( nullptr, ProfileManager::GetActiveUserProfile()->GetOffTheRecordProfile(),
diff --git a/chrome/browser/chromeos/hats/hats_dialog.h b/chrome/browser/chromeos/hats/hats_dialog.h index 57a244f..09317de 100644 --- a/chrome/browser/chromeos/hats/hats_dialog.h +++ b/chrome/browser/chromeos/hats/hats_dialog.h
@@ -22,10 +22,11 @@ // Creates an instance of HatsDialog and posts a task to load all the relevant // device info before displaying the dialog. - static void CreateAndShow(); + static void CreateAndShow(bool is_google_account); private: static void Show(std::unique_ptr<HatsDialog> hats_dialog, + std::string site_id, std::string site_context); // ui::WebDialogDelegate implementation.
diff --git a/chrome/browser/chromeos/hats/hats_notification_controller.cc b/chrome/browser/chromeos/hats/hats_notification_controller.cc index 70efb15..cea30123 100644 --- a/chrome/browser/chromeos/hats/hats_notification_controller.cc +++ b/chrome/browser/chromeos/hats/hats_notification_controller.cc
@@ -172,7 +172,7 @@ UpdateLastInteractionTime(); // The dialog deletes itslef on close. - HatsDialog::CreateAndShow(); + HatsDialog::CreateAndShow(IsGoogleUser(profile_->GetProfileUserName())); // Remove the notification. g_browser_process->notification_ui_manager()->CancelById(
diff --git a/chrome/browser/chromeos/note_taking_app_utils.cc b/chrome/browser/chromeos/note_taking_app_utils.cc index ff06087d..1e3cef1 100644 --- a/chrome/browser/chromeos/note_taking_app_utils.cc +++ b/chrome/browser/chromeos/note_taking_app_utils.cc
@@ -28,11 +28,14 @@ // Returns the first installed and enabled whitelisted note-taking app, or null // if none is installed. -// TODO(derat): Instead of a using hardcoded list of IDs, use an app designated -// by a pref. const extensions::Extension* GetApp(Profile* profile) { + // TODO(derat): Check the to-be-added "note-taking app enabled" pref here and + // return null if it's disabled. + std::vector<std::string> ids; + // TODO(derat): Instead of a using hardcoded list of IDs, use an app + // designated by a to-be-added pref. const std::string switch_value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( switches::kNoteTakingAppIds); @@ -72,8 +75,9 @@ return; } - // TODO: Launch with an "action" launch source and the appropriate action type - // to create a new note once that's been added to chrome.appRuntime. + // TODO(derat): Launch with a "create new note" launch action once that's been + // added to chrome.appRuntime. Also decide what should be passed as the launch + // source. if (path.empty()) apps::LaunchPlatformApp(profile, app, extensions::SOURCE_UNTRACKED); else
diff --git a/chrome/browser/download/download_browsertest.cc b/chrome/browser/download/download_browsertest.cc index 46cd6f1b9..cee681b 100644 --- a/chrome/browser/download/download_browsertest.cc +++ b/chrome/browser/download/download_browsertest.cc
@@ -301,11 +301,13 @@ return item->GetAutoOpened(); } +#if !defined(OS_CHROMEOS) // Called when a download starts. Marks the download as hidden. void SetHiddenDownloadCallback(DownloadItem* item, content::DownloadInterruptReason reason) { DownloadItemModel(item).SetShouldShowInShelf(false); } +#endif // Callback for HistoryObserver; used in DownloadHistoryCheck bool HasDataAndName(const history::DownloadRow& row) { @@ -1977,7 +1979,7 @@ CheckDownload(browser(), file, file); } -// Download an extension. Expect a dangerous download warning. +// Download an extension. Expect a dangerous download warning. // Deny the download. IN_PROC_BROWSER_TEST_F(DownloadTest, CrxDenyInstall) { FeatureSwitch::ScopedOverride enable_easy_off_store_install( @@ -3415,17 +3417,11 @@ } #endif // FULL_SAFE_BROWSING -class DownloadTestWithShelf : public DownloadTest { - void SetUpCommandLine(base::CommandLine* command_line) override { -#if defined(OS_CHROMEOS) - command_line->AppendSwitch(switches::kDisableDownloadNotification); -#endif - DownloadTest::SetUpCommandLine(command_line); - } -}; - +// The rest of these tests rely on the download shelf, which ChromeOS doesn't +// use. +#if !defined(OS_CHROMEOS) // Test that the download shelf is shown by starting a download. -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, DownloadAndWait) { +IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadAndWait) { GURL url = net::URLRequestMockHTTPJob::GetMockUrl("downloads/a_zip_file.zip"); DownloadAndWait(browser(), url); @@ -3436,7 +3432,7 @@ // Test that the download shelf is per-window by starting a download in one // tab, opening a second tab, closing the shelf, going back to the first tab, // and checking that the shelf is closed. -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, PerWindowShelf) { +IN_PROC_BROWSER_TEST_F(DownloadTest, PerWindowShelf) { GURL url(URLRequestMockHTTPJob::GetMockUrl("download-test3.gif")); base::FilePath download_file( FILE_PATH_LITERAL("download-test3-attachment.gif")); @@ -3472,7 +3468,7 @@ // Check whether the downloads shelf is closed when the downloads tab is // invoked. -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, CloseShelfOnDownloadsTab) { +IN_PROC_BROWSER_TEST_F(DownloadTest, CloseShelfOnDownloadsTab) { GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); // Download the file and wait. We do not expect the Select File dialog. @@ -3488,9 +3484,9 @@ EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); } -// Test that when downloading an item in Incognito mode, check that the -// download shelf is not visible after closing the Incognito window. -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, IncognitoDownload) { +// Test that when downloading an item in Incognito mode, the download shelf is +// not visible after closing the Incognito window. +IN_PROC_BROWSER_TEST_F(DownloadTest, IncognitoDownloadShelfVisibility) { Browser* incognito = CreateIncognitoBrowser(); ASSERT_TRUE(incognito); @@ -3516,7 +3512,7 @@ // Verify that we have 1 window, and the download shelf is not visible. // // Regression test for http://crbug.com/44454 -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, NewWindow) { +IN_PROC_BROWSER_TEST_F(DownloadTest, NewWindow) { GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); #if !defined(OS_MACOSX) // See below. @@ -3531,7 +3527,7 @@ // the first window. ExpectWindowCountAfterDownload(2); EXPECT_EQ(1, browser()->tab_strip_model()->count()); - // Download shelf should close. Download panel stays open on ChromeOS. + // Download shelf should close. EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); // The download shelf SHOULD be visible in the second window. @@ -3563,14 +3559,14 @@ #endif EXPECT_EQ(1, browser()->tab_strip_model()->count()); - // Download shelf should close. Download panel stays open on ChromeOS. + // Download shelf should close. EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); base::FilePath file(FILE_PATH_LITERAL("download-test1.lib")); CheckDownload(browser(), file, file); } -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, PRE_DownloadTest_History) { +IN_PROC_BROWSER_TEST_F(DownloadTest, PRE_DownloadTest_History) { // Download a file and wait for it to be stored. GURL download_url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); HistoryObserver observer(browser()->profile()); @@ -3584,13 +3580,7 @@ content::RunMessageLoop(); } -#if defined(OS_CHROMEOS) -// Times out on ChromeOS: http://crbug.com/217810 -#define MAYBE_DownloadTest_History DISABLED_DownloadTest_History -#else -#define MAYBE_DownloadTest_History DownloadTest_History -#endif -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, MAYBE_DownloadTest_History) { +IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadTest_History) { // This starts up right after PRE_DownloadTest_History and shares the same // profile directory. GURL download_url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); @@ -3622,7 +3612,7 @@ EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); } -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, HiddenDownload) { +IN_PROC_BROWSER_TEST_F(DownloadTest, HiddenDownload) { GURL url(URLRequestMockHTTPJob::GetMockUrl(kDownloadTest1Path)); DownloadManager* download_manager = DownloadManagerForBrowser(browser()); @@ -3645,8 +3635,7 @@ EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); } -// Test to make sure auto-open works. -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, AutoOpen) { +IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpenClosesShelf) { base::FilePath file(FILE_PATH_LITERAL("download-autoopen.txt")); GURL url(URLRequestMockHTTPJob::GetMockUrl("download-autoopen.txt")); @@ -3655,13 +3644,11 @@ DownloadAndWait(browser(), url); - // Download shelf should close. Download panel stays open on ChromeOS. + // Download shelf should close. EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); } -// Download an extension. Expect a dangerous download warning. -// Deny the download. -IN_PROC_BROWSER_TEST_F(DownloadTestWithShelf, CrxDenyInstall) { +IN_PROC_BROWSER_TEST_F(DownloadTest, CrxDenyInstallClosesShelf) { FeatureSwitch::ScopedOverride enable_easy_off_store_install( FeatureSwitch::easy_off_store_install(), true); @@ -3678,3 +3665,4 @@ // Download shelf should close. EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); } +#endif // defined(OS_CHROMEOS)
diff --git a/chrome/browser/download/download_ui_controller.cc b/chrome/browser/download/download_ui_controller.cc index 9feefd6..ab3b7365e 100644 --- a/chrome/browser/download/download_ui_controller.cc +++ b/chrome/browser/download/download_ui_controller.cc
@@ -121,15 +121,14 @@ #if defined(OS_ANDROID) if (!delegate_) delegate_.reset(new AndroidUIControllerDelegate()); -#else -#if defined(OS_CHROMEOS) - if (!delegate_ && DownloadNotificationManager::IsEnabled()) { +#elif defined(OS_CHROMEOS) + if (!delegate_) { // The Profile is guaranteed to be valid since DownloadUIController is owned // by DownloadService, which in turn is a profile keyed service. delegate_.reset(new DownloadNotificationManager( Profile::FromBrowserContext(manager->GetBrowserContext()))); } -#endif // defined(OS_CHROMEOS) +#else // defined(OS_CHROMEOS) if (!delegate_) { delegate_.reset(new DownloadShelfUIControllerDelegate( Profile::FromBrowserContext(manager->GetBrowserContext())));
diff --git a/chrome/browser/download/notification/download_notification_manager.cc b/chrome/browser/download/notification/download_notification_manager.cc index 62b739d..25479ae 100644 --- a/chrome/browser/download/notification/download_notification_manager.cc +++ b/chrome/browser/download/notification/download_notification_manager.cc
@@ -26,11 +26,6 @@ // DownloadNotificationManager implementation: /////////////////////////////////////////////////////////////////////////////// -bool DownloadNotificationManager::IsEnabled() { - return !base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kDisableDownloadNotification); -} - DownloadNotificationManager::DownloadNotificationManager(Profile* profile) : main_profile_(profile), items_deleter_(&manager_for_profile_) {
diff --git a/chrome/browser/download/notification/download_notification_manager.h b/chrome/browser/download/notification/download_notification_manager.h index 7490c1a..e164c08 100644 --- a/chrome/browser/download/notification/download_notification_manager.h +++ b/chrome/browser/download/notification/download_notification_manager.h
@@ -16,8 +16,6 @@ class DownloadNotificationManager : public DownloadUIController::Delegate { public: - static bool IsEnabled(); - explicit DownloadNotificationManager(Profile* profile); ~DownloadNotificationManager() override;
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_controller.cc b/chrome/browser/metrics/leak_detector/leak_detector_controller.cc index 898dd06..dbe2577 100644 --- a/chrome/browser/metrics/leak_detector/leak_detector_controller.cc +++ b/chrome/browser/metrics/leak_detector/leak_detector_controller.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include "base/logging.h" +#include "base/rand_util.h" #include "base/strings/string_number_conversions.h" #include "components/metrics/leak_detector/gnu_build_id_reader.h" #include "components/variations/variations_associated_data.h" @@ -16,12 +17,24 @@ namespace { -// Reads parameters for the field trial variation. Any parameters not present in -// the variation info or that cannot be parsed will be filled in with default -// values. Returns a MemoryLeakReportProto with the parameter fields filled in. -MemoryLeakReportProto::Params GetVariationParameters() { - // Variation parameter names. +using ParamsMap = std::map<std::string, std::string>; + +// Returns a mapping of param names to param values, obtained from the +// variations system. Both names and values are strings. +ParamsMap GetRawVariationParams() { const char kFieldTrialName[] = "RuntimeMemoryLeakDetector"; + ParamsMap result; + variations::GetVariationParams(kFieldTrialName, &result); + return result; +} + +// Reads the raw variation parameters and parses them to obtain values for the +// parameters used by the memory leak detector itself. Any parameters not +// present in the variation info or that cannot be parsed will be filled in with +// default values. Returns a MemoryLeakReportProto with the parameter fields +// filled in. +MemoryLeakReportProto::Params GetLeakDetectorParams() { + // Variation parameter names. const char kSamplingRateParam[] = "sampling_rate"; const char kMaxStackDepthParam[] = "max_stack_depth"; const char kAnalysisIntervalKbParam[] = "analysis_interval_kb"; @@ -42,9 +55,7 @@ uint32_t size_suspicion_threshold = 0; uint32_t call_stack_suspicion_threshold = 0; - // Get a mapping of param names to param values. - std::map<std::string, std::string> params; - variations::GetVariationParams(kFieldTrialName, ¶ms); + const ParamsMap params = GetRawVariationParams(); // Even if the variation param data does not exist and |params| ends up empty, // the below code will assign default values. @@ -87,19 +98,80 @@ return result; } +// Parses the parameters related to randomly enabling leak detector on different +// processes, from the raw parameter strings provided by the variations. +// Args: +// - browser_probability: probability that the leak detector will be enabled on +// browser process (spawned once per session). +// - renderer_probability: probability that the leak detector will be enabled on +// renderer process (spawned many times per session). +// - max_renderer_processes_enabled: The maximum number of renderer processes on +// which the leak detector can be enabled +// simultaneously. +// +// Probabilities are in the range [0, 1]. Anything higher or lower will not be +// clamped but it will not affect the outcome, since these probabilities are +// compared against the value of base::RandDouble() (aka the "dice roll"), which +// will be within this range. +void GetLeakDetectorEnableParams(double* browser_probability, + double* renderer_probability, + int* max_renderer_processes_enabled) { + const char kBrowserEnableProbabilityParam[] = + "browser_process_enable_probability"; + const char kRendererEnableProbabilityParam[] = + "renderer_process_enable_probability"; + const char kMaxRendererProcessesEnabledParam[] = + "max_renderer_processes_enabled"; + const double kDefaultProbability = 0.0; + const int kDefaultNumProcessesEnabled = 0; + + const ParamsMap params = GetRawVariationParams(); + auto iter = params.find(kBrowserEnableProbabilityParam); + if (iter == params.end() || + !base::StringToDouble(iter->second, browser_probability)) { + *browser_probability = kDefaultProbability; + } + iter = params.find(kRendererEnableProbabilityParam); + if (iter == params.end() || + !base::StringToDouble(iter->second, renderer_probability)) { + *renderer_probability = kDefaultProbability; + } + iter = params.find(kMaxRendererProcessesEnabledParam); + if (iter == params.end() || + !base::StringToInt(iter->second, max_renderer_processes_enabled)) { + *max_renderer_processes_enabled = kDefaultNumProcessesEnabled; + } +} + } // namespace LeakDetectorController::LeakDetectorController() - : params_(GetVariationParameters()) { + : params_(GetLeakDetectorParams()), + browser_process_enable_probability_(0), + renderer_process_enable_probability_(0), + max_renderer_processes_with_leak_detector_enabled_(0), + num_renderer_processes_with_leak_detector_enabled_(0) { // Read the build ID once and store it. leak_detector::gnu_build_id_reader::ReadBuildID(&build_id_); - LeakDetector* detector = LeakDetector::GetInstance(); - detector->AddObserver(this); + GetLeakDetectorEnableParams( + &browser_process_enable_probability_, + &renderer_process_enable_probability_, + &max_renderer_processes_with_leak_detector_enabled_); - // Leak detector parameters are stored in |params_|. - detector->Init(params_, content::BrowserThread::GetTaskRunnerForThread( - content::BrowserThread::UI)); + // Register the LeakDetectorController with the remote controller, so this + // class can send/receive data to/from remote processes. + LeakDetectorRemoteController::SetLocalControllerInstance(this); + + // Conditionally launch browser process based on probability. + if (base::RandDouble() < browser_process_enable_probability_) { + LeakDetector* detector = LeakDetector::GetInstance(); + detector->AddObserver(this); + + // Leak detector parameters are stored in |params_|. + detector->Init(params_, content::BrowserThread::GetTaskRunnerForThread( + content::BrowserThread::UI)); + } } LeakDetectorController::~LeakDetectorController() { @@ -119,8 +191,16 @@ StoreLeakReports(reports, MemoryLeakReportProto::BROWSER_PROCESS); } -MemoryLeakReportProto_Params LeakDetectorController::GetParams() const { - return params_; +MemoryLeakReportProto_Params +LeakDetectorController::GetParamsAndRecordRequest() { + if (ShouldRandomlyEnableLeakDetectorOnRendererProcess()) { + ++num_renderer_processes_with_leak_detector_enabled_; + return params_; + } + // If the leak detector is not to be enabled on the remote process, send an + // empty MemoryLeakReportProto_Params protobuf. The remote process will not + // initialize the leak detector since |sampling_rate| is 0. + return MemoryLeakReportProto_Params(); } void LeakDetectorController::SendLeakReports( @@ -129,7 +209,15 @@ } void LeakDetectorController::OnRemoteProcessShutdown() { - // TODO(sque): Handle remote process shutdown. + DCHECK_GT(num_renderer_processes_with_leak_detector_enabled_, 0); + --num_renderer_processes_with_leak_detector_enabled_; +} + +bool LeakDetectorController::ShouldRandomlyEnableLeakDetectorOnRendererProcess() + const { + return base::RandDouble() < renderer_process_enable_probability_ && + num_renderer_processes_with_leak_detector_enabled_ < + max_renderer_processes_with_leak_detector_enabled_; } void LeakDetectorController::StoreLeakReports(
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_controller.h b/chrome/browser/metrics/leak_detector/leak_detector_controller.h index 7fdeb93..6651bb7 100644 --- a/chrome/browser/metrics/leak_detector/leak_detector_controller.h +++ b/chrome/browser/metrics/leak_detector/leak_detector_controller.h
@@ -35,12 +35,20 @@ void OnLeaksFound(const std::vector<MemoryLeakReportProto>& reports) override; // LeakDetectorRemoteController::LocalController: - MemoryLeakReportProto::Params GetParams() const override; + MemoryLeakReportProto::Params GetParamsAndRecordRequest() override; void SendLeakReports( const std::vector<MemoryLeakReportProto>& reports) override; void OnRemoteProcessShutdown() override; private: + // Returns true to indicate that LeakDetector should be enabled on a renderer + // process. This is determined as follows: + // 1. If the number of processes running LeakDetector is not at max, returns + // true with a probability of |per_process_enable_probability_|. + // 2. If the number of processes running LeakDetector has reached the max, + // returns false. + bool ShouldRandomlyEnableLeakDetectorOnRendererProcess() const; + // Stores a given array of leak reports in |stored_reports_|. |process_type| // is the type of process that generated these reports. The reports must all // come from the same process type. @@ -58,6 +66,22 @@ // The build ID of the current Chrome binary. std::vector<uint8_t> build_id_; + // The probability that each process will have the leak detector enabled on + // it. For remote processes, this is determined by sending |params_| for + // initialization. If the remote process is not to have leak detector enabled, + // |params_.sampling_rate()| will be set to 0. Whether or not to enable for a + // particular process is independent of the decision for all other processes. + double browser_process_enable_probability_; + double renderer_process_enable_probability_; + + // The maximum allowed number of renderer processes with leak detector running + // simultaneously. + int max_renderer_processes_with_leak_detector_enabled_; + + // The number of renderer processes on which the leak detector has been + // enabled and is running. + int num_renderer_processes_with_leak_detector_enabled_; + // For thread safety. base::ThreadChecker thread_checker_;
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc b/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc index 45e2b5e..e02182b 100644 --- a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc +++ b/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc
@@ -32,7 +32,10 @@ // should not initialize anything if the params are empty. MemoryLeakReportProto_Params params; if (g_local_controller) { - params = g_local_controller->GetParams(); + params = g_local_controller->GetParamsAndRecordRequest(); + // A non-zero sampling rate tells the remote process to enable the leak + // detector. Otherwise, the remote process will not initialize it. + leak_detector_enabled_on_remote_process_ = params.sampling_rate() > 0; } mojo::StructPtr<mojom::LeakDetectorParams> mojo_params = @@ -58,9 +61,21 @@ g_local_controller->SendLeakReports(report_protos); } +void LeakDetectorRemoteController::OnRemoteProcessShutdown() { + if (leak_detector_enabled_on_remote_process_) { + DCHECK(g_local_controller); + g_local_controller->OnRemoteProcessShutdown(); + } +} + LeakDetectorRemoteController::LeakDetectorRemoteController( mojom::LeakDetectorRequest request) - : binding_(this, std::move(request)) {} + : binding_(this, std::move(request)), + leak_detector_enabled_on_remote_process_(false) { + binding_.set_connection_error_handler( + base::Bind(&LeakDetectorRemoteController::OnRemoteProcessShutdown, + base::Unretained(this))); +} // static void LeakDetectorRemoteController::SetLocalControllerInstance(
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h b/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h index bc511a46..f9e267c 100644 --- a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h +++ b/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h
@@ -27,8 +27,10 @@ virtual ~LocalController() {} // Returns a set of leak detection params to be used when initializing the - // leak detector on a remote process. - virtual MemoryLeakReportProto::Params GetParams() const = 0; + // leak detector on a remote process. The controller may vary the parameters + // between each call to this function, and to change its internal state. + // Hence this is function is not const. + virtual MemoryLeakReportProto::Params GetParamsAndRecordRequest() = 0; // Pass a vector of memory leak reports provided by a remote process to the // local controller class. @@ -56,8 +58,16 @@ private: explicit LeakDetectorRemoteController(mojom::LeakDetectorRequest request); + // Gets called when the remote process terminates and the Mojo connection gets + // closed as a result. + void OnRemoteProcessShutdown(); + mojo::StrongBinding<mojom::LeakDetector> binding_; + // Indicates whether remote process received MemoryLeakReportProto::Params + // with a non-zero sampling rate, i.e. enabled leak detector. + bool leak_detector_enabled_on_remote_process_; + DISALLOW_COPY_AND_ASSIGN(LeakDetectorRemoteController); };
diff --git a/chrome/browser/resources/chromeos/chromevox/chromevox/background/keymaps/next_keymap.json b/chrome/browser/resources/chromeos/chromevox/chromevox/background/keymaps/next_keymap.json index c3cbc7a..525ccfc 100644 --- a/chrome/browser/resources/chromeos/chromevox/chromevox/background/keymaps/next_keymap.json +++ b/chrome/browser/resources/chromeos/chromevox/chromevox/background/keymaps/next_keymap.json
@@ -183,6 +183,60 @@ } }, { + "command": "nextHeading1", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [49] + } + } + }, + { + "command": "nextHeading2", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [50] + } + } + }, + { + "command": "nextHeading3", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [51] + } + } + }, + { + "command": "nextHeading4", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [52] + } + } + }, + { + "command": "nextHeading5", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [53] + } + } + }, + { + "command": "nextHeading6", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [54] + } + } + }, + { "command": "previousHeading", "sequence": { "cvoxModifier": true, @@ -193,6 +247,66 @@ } }, { + "command": "previousHeading1", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [49], + "shiftKey": [true] + } + } + }, + { + "command": "previousHeading2", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [50], + "shiftKey": [true] + } + } + }, + { + "command": "previousHeading3", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [51], + "shiftKey": [true] + } + } + }, + { + "command": "previousHeading4", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [52], + "shiftKey": [true] + } + } + }, + { + "command": "previousHeading5", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [53], + "shiftKey": [true] + } + } + }, + { + "command": "previousHeading6", + "sequence": { + "cvoxModifier": true, + "keys": { + "keyCode": [54], + "shiftKey": [true] + } + } + }, + { "command": "nextLink", "sequence": { "cvoxModifier": true,
diff --git a/chrome/browser/resources/chromeos/chromevox/common/chrome_extension_externs.js b/chrome/browser/resources/chromeos/chromevox/common/chrome_extension_externs.js index 1c09ec63..a946fa8d 100644 --- a/chrome/browser/resources/chromeos/chromevox/common/chrome_extension_externs.js +++ b/chrome/browser/resources/chromeos/chromevox/common/chrome_extension_externs.js
@@ -629,6 +629,9 @@ /** @type {number} */ chrome.automation.AutomationNode.prototype.tableRowCount; +/** @type {number} */ +chrome.automation.AutomationNode.prototype.hierarchicalLevel; + /** * @extends {chrome.automation.AutomationNode} * @constructor
diff --git a/chrome/browser/resources/chromeos/chromevox/common/key_sequence.js b/chrome/browser/resources/chromeos/chromevox/common/key_sequence.js index 854114d..3b05c604 100644 --- a/chrome/browser/resources/chromeos/chromevox/common/key_sequence.js +++ b/chrome/browser/resources/chromeos/chromevox/common/key_sequence.js
@@ -41,13 +41,17 @@ * from key events when the cvox modifiers are set. Defaults to false. * @param {boolean=} opt_doubleTap Whether this is triggered via double tap. * @param {boolean=} opt_skipStripping Whether to strip cvox modifiers. + * @param {boolean=} opt_requireStickyMode Whether to require sticky mode. * @constructor */ cvox.KeySequence = function(originalEvent, opt_cvoxModifier, opt_doubleTap, - opt_skipStripping) { + opt_skipStripping, opt_requireStickyMode) { /** @type {boolean} */ this.doubleTap = !!opt_doubleTap; + /** @type {boolean} */ + this.requireStickyMode = !!opt_requireStickyMode; + /** @type {cvox.PlatformFilter} */ this.platformFilter; /** @type {boolean} */ @@ -168,6 +172,14 @@ } // So now we know the actual keys are the same. + + // If one key sequence requires sticky mode, return early the strict + // sticky mode state. + if (this.requireStickyMode || rhs.requireStickyMode) { + return (this.stickyMode || rhs.stickyMode) && + !this.cvoxModifier && !rhs.cvoxModifier; + } + // If they both have the ChromeVox modifier, or they both don't have the // ChromeVox modifier, then they are considered equal. if (this.cvoxModifier === rhs.cvoxModifier) { @@ -431,7 +443,6 @@ firstSequenceEvent['prefixKey'] = (sequenceObject.prefixKey == undefined) ? false : sequenceObject.prefixKey; - var secondKeyPressed = sequenceObject.keys.keyCode.length > 1; var secondSequenceEvent = {}; @@ -444,7 +455,10 @@ var skipStripping = sequenceObject.skipStripping !== undefined ? sequenceObject.skipStripping : true; var keySeq = new cvox.KeySequence(firstSequenceEvent, - sequenceObject.cvoxModifier, sequenceObject.doubleTap, skipStripping); + sequenceObject.cvoxModifier, + sequenceObject.doubleTap, + skipStripping, + sequenceObject.requireStickyMode); if (secondKeyPressed) { cvox.ChromeVox.sequenceSwitchKeyCodes.push( new cvox.KeySequence(firstSequenceEvent, sequenceObject.cvoxModifier));
diff --git a/chrome/browser/resources/chromeos/chromevox/common/key_sequence_test.unitjs b/chrome/browser/resources/chromeos/chromevox/common/key_sequence_test.unitjs index d0cbcd0..077ceeb 100644 --- a/chrome/browser/resources/chromeos/chromevox/common/key_sequence_test.unitjs +++ b/chrome/browser/resources/chromeos/chromevox/common/key_sequence_test.unitjs
@@ -486,3 +486,32 @@ assertFalse(stickySeq.keys.metaKey[0]); assertFalse(stickySeq.keys.searchKeyHeld[0]); }); + +TEST_F('CvoxKeySequenceUnitTest', 'RequireStickyMode', function() { + var oneFromMap = cvox.KeySequence.deserialize({requireStickyMode: true, + keys: {keyCode: [49]}}); + + assertFalse(oneFromMap.cvoxModifier); + assertTrue(oneFromMap.requireStickyMode); + assertFalse(oneFromMap.stickyMode); + + // Pressing one doesn't trigger the key because it requires sticky mode. + var oneFromEvt = cvox.KeySequence.deserialize({keys: {keyCode: [49]}}); + assertFalse(oneFromMap.equals(oneFromEvt)); + + // Even modified, it should not match. + var modOneFromEvt = cvox.KeySequence.deserialize({cvoxModifier: true, + keys: {keyCode: [49]}}); + assertFalse(oneFromMap.equals(modOneFromEvt)); + + // But, with sticky mode on in the event, it should match. + var stickyOneFromEvt = cvox.KeySequence.deserialize({stickyMode: true, + keys: {keyCode: [49]}}); + assertTrue(stickyOneFromEvt.equals(oneFromMap)); + + // Finally, with both modifier and sticky on, it doesn't match. + var stickyModOneFromEvt = cvox.KeySequence.deserialize({stickyMode: true, + cvoxModifier: true, + keys: {keyCode: [49]}}); + assertFalse(stickyModOneFromEvt.equals(oneFromMap)); +});
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js index e959ca34..e684ec3 100644 --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js
@@ -394,4 +394,16 @@ }; }; +/** + * Returns a predicate that will match against a heading with a specific + * hierarchical level. + * @param {number} level 1-6 + * @return {AutomationPredicate.Unary} + */ +AutomationPredicate.makeHeadingPredicate = function(level) { + return function(node) { + return node.role == RoleType.heading && node.hierarchicalLevel == level; + }; +}; + }); // goog.scope
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs index f277a97..66bad5b 100644 --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs
@@ -1113,3 +1113,22 @@ mockFeedback.expectSpeech('ok', 'Disabled', 'Button').replay(); }); }); + +TEST_F('BackgroundTest', 'HeadingLevels', function() { + var mockFeedback = this.createMockFeedback(); + this.runWithLoadedTree(function(root) {/*! + <h1>1</h1><h2>2</h2><h3>3</h3><h4>4</h4><h5>5</h5><h6>6</h6> + */}, function(root) { + var makeLevelAssertions = function(level) { + mockFeedback.call(doCmd('nextHeading' + level)) + .expectSpeech('Heading ' + level) + .call(doCmd('nextHeading' + level)) + .expectSpeech('No next level ' + level + ' heading.') + .call(doCmd('previousHeading' + level)) + .expectSpeech('No previous level ' + level + ' heading.'); + }; + for (var i = 1; i <= 6; i++) + makeLevelAssertions(i); + mockFeedback.replay(); + }); +});
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js index 6fe81a6..8bc806a 100644 --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/command_handler.js
@@ -278,11 +278,71 @@ pred = AutomationPredicate.heading; predErrorMsg = 'no_next_heading'; break; + case 'nextHeading1': + dir = Dir.FORWARD; + pred = AutomationPredicate.makeHeadingPredicate(1); + predErrorMsg = 'no_next_heading_1'; + break; + case 'nextHeading2': + dir = Dir.FORWARD; + pred = AutomationPredicate.makeHeadingPredicate(2); + predErrorMsg = 'no_next_heading_2'; + break; + case 'nextHeading3': + dir = Dir.FORWARD; + pred = AutomationPredicate.makeHeadingPredicate(3); + predErrorMsg = 'no_next_heading_3'; + break; + case 'nextHeading4': + dir = Dir.FORWARD; + pred = AutomationPredicate.makeHeadingPredicate(4); + predErrorMsg = 'no_next_heading_4'; + break; + case 'nextHeading5': + dir = Dir.FORWARD; + pred = AutomationPredicate.makeHeadingPredicate(5); + predErrorMsg = 'no_next_heading_5'; + break; + case 'nextHeading6': + dir = Dir.FORWARD; + pred = AutomationPredicate.makeHeadingPredicate(6); + predErrorMsg = 'no_next_heading_6'; + break; case 'previousHeading': dir = Dir.BACKWARD; pred = AutomationPredicate.heading; predErrorMsg = 'no_previous_heading'; break; + case 'previousHeading1': + dir = Dir.BACKWARD; + pred = AutomationPredicate.makeHeadingPredicate(1); + predErrorMsg = 'no_previous_heading_1'; + break; + case 'previousHeading2': + dir = Dir.BACKWARD; + pred = AutomationPredicate.makeHeadingPredicate(2); + predErrorMsg = 'no_previous_heading_2'; + break; + case 'previousHeading3': + dir = Dir.BACKWARD; + pred = AutomationPredicate.makeHeadingPredicate(3); + predErrorMsg = 'no_previous_heading_3'; + break; + case 'previousHeading4': + dir = Dir.BACKWARD; + pred = AutomationPredicate.makeHeadingPredicate(4); + predErrorMsg = 'no_previous_heading_4'; + break; + case 'previousHeading5': + dir = Dir.BACKWARD; + pred = AutomationPredicate.makeHeadingPredicate(5); + predErrorMsg = 'no_previous_heading_5'; + break; + case 'previousHeading6': + dir = Dir.BACKWARD; + pred = AutomationPredicate.makeHeadingPredicate(6); + predErrorMsg = 'no_previous_heading_6'; + break; case 'nextLink': dir = Dir.FORWARD; pred = AutomationPredicate.link;
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb index 20da10a..6ef805e 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_kn.xtb
@@ -72,7 +72,7 @@ <translation id="1727806147743597030">ftr</translation> <translation id="174268867904053074">ಮುಂದಿನ ಗ್ರಾಫಿಕ್</translation> <translation id="1781173782405573156">ಕೀ ಮೂಲಕ ಹಾದುಹೋಗುತ್ತವೆ</translation> -<translation id="1787176709638001873">ಪಾಸ್ವರ್ಡ್ ಸಂಪಾದನೆ ಪಠ್ಯ</translation> +<translation id="1787176709638001873">ಪಾಸ್ವರ್ಡ್ ಎಡಿಟ್ ಪಠ್ಯ</translation> <translation id="1802710350767629429">ಅಪ್ಡೇಟ್ ಟಿಪ್ಪಣಿಗಳನ್ನು ತೋರಿಸಿ</translation> <translation id="1810107444790159527">ಪಟ್ಟಿಯ ಬಾಕ್ಸ್</translation> <translation id="1828385960365606039">ಮೇ</translation> @@ -396,7 +396,7 @@ <translation id="4877261390094455813">ಹುಡುಕಾಟದ ಪ್ರಶ್ನೆಯನ್ನು ನಮೂದಿಸಿ.</translation> <translation id="4886524826165775965"><ph name="INDEX" />/<ph name="TOTAL" /></translation> <translation id="489907760999452556">ಆಂತರಿಕ ಲಿಂಕ್</translation> -<translation id="4953585991029886728">ಪಠ್ಯ ಸಂಪಾದಿಸಿ</translation> +<translation id="4953585991029886728">ಪಠ್ಯ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="4954534434583049121">ಹಿಂದಿನ ನಿರ್ಬಂಧನೆಯ ಖೋಟ್</translation> <translation id="4973717656530883744">ಗರಿಷ್ಟ <ph name="X" /></translation> <translation id="4973762002207131920"><ph name="KEY" /> ಗೆ ಬದಲಿಸಲಾಗಿದೆ.</translation> @@ -472,7 +472,7 @@ <translation id="5561345396546889625">ಮುಂದಿನ ಪಟ್ಟಿ</translation> <translation id="5562645715554321347">hdnggrp</translation> <translation id="5583640892426849032">Backspace</translation> -<translation id="5585044216466955529">ಪಠ್ಯ ಸಂಪಾದಿಸಿ, ಇಮೇಲ್ ನಮೂದಿಸಿ</translation> +<translation id="5585044216466955529">ಪಠ್ಯ ಎಡಿಟ್ ಮಾಡಿ, ಇಮೇಲ್ ನಮೂದಿಸಿ</translation> <translation id="5597170376237141345">ಮುಂದಿನ ಚೆಕ್ಬಾಕ್ಸ್</translation> <translation id="5597933780944041114">ಯಾವುದೇ ಮುಂದಿನ ಶಿರೋನಾಮೆಯಿಲ್ಲ.</translation> <translation id="5598905979683743333"><ph name="NAME" />, ರೇಡಿಯೊ ಬಟನ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗಲಿಲ್ಲ</translation> @@ -609,7 +609,7 @@ <translation id="7037042857287298941">ಹಿಂದಿನ ಪಟ್ಟಿ</translation> <translation id="7041173719775863268">ಆಯ್ಕೆಯನ್ನು ಕೊನೆಗೊಳಿಸಿ</translation> <translation id="7086377898680121060">ಪ್ರಖರತೆ ಹೆಚ್ಚು ಮಾಡಿ</translation> -<translation id="7095834689119144465">ಪಠ್ಯ ಸಂಖ್ಯೆ ಮಾತ್ರ ಸಂಪಾದಿಸಿ</translation> +<translation id="7095834689119144465">ಪಠ್ಯ ಸಂಖ್ಯೆ ಮಾತ್ರ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="7096001299300236431">ಹಿಂದಿನ ಮಾಧ್ಯಮ</translation> <translation id="7116595520562830928">multln</translation> <translation id="712735679809149106">ಪದ ಎಕೋ</translation> @@ -670,7 +670,7 @@ <translation id="7663318257180412551">ಶೀರ್ಷಿಕೆ 2</translation> <translation id="7674576868851035240">ಮುಂದಿನ ಲಿಂಕ್</translation> <translation id="7674768236845044097">ಗುರುತು</translation> -<translation id="7684431668231950609">ಪಠ್ಯ ಸಂಪಾದಿಸಿ, URL ನಮೂದಿಸಿ</translation> +<translation id="7684431668231950609">ಪಠ್ಯ ಎಡಿಟ್ ಮಾಡಿ, URL ನಮೂದಿಸಿ</translation> <translation id="7685589220304187312">tlbar</translation> <translation id="7693840228159394336">ಹಿಂದಿನ ರೇಡಿಯೊ ಬಟನ್</translation> <translation id="7701196182766842984">autolst</translation> @@ -697,7 +697,7 @@ <translation id="8009786657110126785">{COUNT,plural, =1{ಉದ್ದರಣ}one{# ಉದ್ದರಣ ಚಿಹ್ನೆಗಳು}other{# ಉದ್ದರಣ ಚಿಹ್ನೆಗಳು}}</translation> <translation id="8033827949643255796">ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ</translation> <translation id="8035962149453661158">ಗರಿಷ್ಟ:<ph name="X" /></translation> -<translation id="8042761080832772327">ಪಠ್ಯ ಸಂಪಾದಿಸಿ, ಹುಡುಕಾಟ ನಮೂದಿಸಿ</translation> +<translation id="8042761080832772327">ಪಠ್ಯ ಎಡಿಟ್ ಮಾಡಿ, ಹುಡುಕಾಟ ನಮೂದಿಸಿ</translation> <translation id="8049189770492311300">ಟೈಮರ್</translation> <translation id="8065607967589909823">ಆಯ್ಕೆಯು</translation> <translation id="8066678206530322333">ಬ್ಯಾನರ್</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb index 0452ce47..e90cb8d 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_mr.xtb
@@ -52,7 +52,7 @@ <translation id="1524531499102321782">ब्रेल पुढील रेखा</translation> <translation id="1546370775711804143">स्क्रोल बार</translation> <translation id="1559739829547075274">मागे नेव्हीगेट करा</translation> -<translation id="1571643229714746283">ChromeVox सज्ज</translation> +<translation id="1571643229714746283">ChromeVox तयार</translation> <translation id="158493514907962286">डिसेंबर</translation> <translation id="1594072653727561613">mnu</translation> <translation id="1610130962244179598">6 बिंदू ब्रेलवर स्विच करा</translation> @@ -326,7 +326,7 @@ <translation id="4147126331795725888">पुढील नियंत्रण नाही.</translation> <translation id="4148180433151187540">{COUNT,plural, =1{उजवा महिरपी कंस}one{# उजवे महिरपी कंस}other{# उजवे महिरपी कंस}}</translation> <translation id="4158704014418536539">केस संवेदनशील.</translation> -<translation id="4161663686871496107">ChromeVox बोललेला अभिप्राय सज्ज आहे</translation> +<translation id="4161663686871496107">ChromeVox बोललेला अभिप्राय तयार आहे</translation> <translation id="4173994908659439270">पुढील संपादन करण्यायोग्य मजकूर फील्ड नाही.</translation> <translation id="4176463684765177261">अक्षम</translation> <translation id="4188530942454211480">मागील वाक्य</translation>
diff --git a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb index ae484ff..5dde9c9 100644 --- a/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb +++ b/chrome/browser/resources/chromeos/chromevox/strings/chromevox_strings_ru.xtb
@@ -413,7 +413,7 @@ <translation id="5000760171916499057">Форм нет.</translation> <translation id="5005670136041063723">Похожих элементов больше нет.</translation> <translation id="501473567976723023">январь</translation> -<translation id="5040591161308540832">Таблица $1, $2 и $3</translation> +<translation id="5040591161308540832">Таблица $1, $2 на $3</translation> <translation id="5041394372352067729">Разместить дисплей Брайля вверху страницы</translation> <translation id="5042770794184672516">Увеличить громкость речи</translation> <translation id="5050015258024679800">Перейти к предыдущему заголовку четвертого уровня</translation>
diff --git a/chrome/browser/resources/md_downloads/crisper.js b/chrome/browser/resources/md_downloads/crisper.js index 0cb4d7d..2d17f3a 100644 --- a/chrome/browser/resources/md_downloads/crisper.js +++ b/chrome/browser/resources/md_downloads/crisper.js
@@ -1593,13 +1593,13 @@ * size or hidden state of their children) and "resizables" (elements that need to be * notified when they are resized or un-hidden by their parents in order to take * action on their new measurements). - * + * * Elements that perform measurement should add the `IronResizableBehavior` behavior to * their element definition and listen for the `iron-resize` event on themselves. * This event will be fired when they become showing after having been hidden, * when they are resized explicitly by another resizable, or when the window has been * resized. - * + * * Note, the `iron-resize` event is non-bubbling. * * @polymerBehavior Polymer.IronResizableBehavior @@ -2274,7 +2274,7 @@ * </x-element> * </div> *``` - * In this case, the `scrollTarget` will point to the outer div element. + * In this case, the `scrollTarget` will point to the outer div element. * * ### Document scrolling * @@ -2291,7 +2291,7 @@ *```js * appHeader.scrollTarget = document.querySelector('#scrollable-element'); *``` - * + * * @type {HTMLElement} */ scrollTarget: { @@ -8266,9 +8266,8 @@ this._backdropElement = null; // Enable document-wide tap recognizer. - Polymer.Gestures.add(document, 'tap', null); - // Need to have useCapture=true, Polymer.Gestures doesn't offer that. - document.addEventListener('tap', this._onCaptureClick.bind(this), true); + Polymer.Gestures.add(document, 'tap', this._onCaptureClick.bind(this)); + document.addEventListener('focus', this._onCaptureFocus.bind(this), true); document.addEventListener('keydown', this._onCaptureKeyDown.bind(this), true); }; @@ -8383,9 +8382,6 @@ } this._overlays.splice(insertionIndex, 0, overlay); - // Get focused node. - var element = this.deepActiveElement; - overlay.restoreFocusNode = this._overlayParent(element) ? null : element; this.trackBackdrop(); }, @@ -8399,12 +8395,6 @@ } this._overlays.splice(i, 1); - var node = overlay.restoreFocusOnClose ? overlay.restoreFocusNode : null; - overlay.restoreFocusNode = null; - // Focus back only if still contained in document.body - if (node && Polymer.dom(document.body).deepContains(node)) { - node.focus(); - } this.trackBackdrop(); }, @@ -8436,15 +8426,7 @@ focusOverlay: function() { var current = /** @type {?} */ (this.currentOverlay()); - // We have to be careful to focus the next overlay _after_ any current - // transitions are complete (due to the state being toggled prior to the - // transition). Otherwise, we risk infinite recursion when a transitioning - // (closed) overlay becomes the current overlay. - // - // NOTE: We make the assumption that any overlay that completes a transition - // will call into focusOverlay to kick the process back off. Currently: - // transitionend -> _applyFocus -> focusOverlay. - if (current && !current.transitioning) { + if (current) { current._applyFocus(); } }, @@ -8533,24 +8515,6 @@ }, /** - * Returns the overlay containing the provided node. If the node is an overlay, - * it returns the node. - * @param {Element=} node - * @return {Element|undefined} - * @private - */ - _overlayParent: function(node) { - while (node && node !== document.body) { - // Check if it is an overlay. - if (node._manager === this) { - return node; - } - // Use logical parentNode, or native ShadowRoot host. - node = Polymer.dom(node).parentNode || node.host; - } - }, - - /** * Returns the deepest overlay in the path. * @param {Array<Element>=} path * @return {Element|undefined} @@ -8851,17 +8815,17 @@ this.__shouldRemoveTabIndex = false; // Used for wrapping the focus on TAB / Shift+TAB. this.__firstFocusableNode = this.__lastFocusableNode = null; - // Used for requestAnimationFrame when opened changes. - this.__openChangedAsync = null; - // Used for requestAnimationFrame when iron-resize is fired. - this.__onIronResizeAsync = null; + // Used by __onNextAnimationFrame to cancel any previous callback. + this.__raf = null; + // Focused node before overlay gets opened. Can be restored on close. + this.__restoreFocusNode = null; this._ensureSetup(); }, attached: function() { // Call _openedChanged here so that position can be computed correctly. if (this.opened) { - this._openedChanged(); + this._openedChanged(this.opened); } this._observer = Polymer.dom(this).observeNodes(this._onNodesChange); }, @@ -8869,7 +8833,11 @@ detached: function() { Polymer.dom(this).unobserveNodes(this._observer); this._observer = null; - this.opened = false; + if (this.__raf) { + window.cancelAnimationFrame(this.__raf); + this.__raf = null; + } + this._manager.removeOverlay(this); }, /** @@ -8919,29 +8887,18 @@ this.style.display = 'none'; }, - _openedChanged: function() { - if (this.opened) { + /** + * Called when `opened` changes. + * @param {boolean=} opened + * @protected + */ + _openedChanged: function(opened) { + if (opened) { this.removeAttribute('aria-hidden'); } else { this.setAttribute('aria-hidden', 'true'); } - // wait to call after ready only if we're initially open - if (!this._overlaySetup) { - return; - } - - if (this.__openChangedAsync) { - window.cancelAnimationFrame(this.__openChangedAsync); - } - - // Synchronously remove the overlay. - // The adding is done asynchronously to go out of the scope of the event - // which might have generated the opening. - if (!this.opened) { - this._manager.removeOverlay(this); - } - // Defer any animation-related code on attached // (_openedChanged gets called again on attached). if (!this.isAttached) { @@ -8950,19 +8907,8 @@ this.__isAnimating = true; - // requestAnimationFrame for non-blocking rendering - this.__openChangedAsync = window.requestAnimationFrame(function() { - this.__openChangedAsync = null; - if (this.opened) { - this._manager.addOverlay(this); - this._prepareRenderOpened(); - this._renderOpened(); - } else { - // Move the focus before actually closing. - this._applyFocus(); - this._renderClosed(); - } - }.bind(this)); + // Use requestAnimationFrame for non-blocking rendering. + this.__onNextAnimationFrame(this.__openedChanged); }, _canceledChanged: function() { @@ -8989,6 +8935,8 @@ * @protected */ _prepareRenderOpened: function() { + // Store focused node. + this.__restoreFocusNode = this._manager.deepActiveElement; // Needed to calculate the size of the overlay so that transitions on its size // will have the correct starting points. @@ -8996,13 +8944,11 @@ this.refit(); this._finishPositioning(); - // Move the focus to the child node with [autofocus]. - this._applyFocus(); - - // Safari will apply the focus to the autofocus element when displayed for the first time, - // so we blur it. Later, _applyFocus will set the focus if necessary. + // Safari will apply the focus to the autofocus element when displayed + // for the first time, so we make sure to return the focus where it was. if (this.noAutoFocus && document.activeElement === this._focusNode) { this._focusNode.blur(); + this.__restoreFocusNode.focus(); } }, @@ -9027,7 +8973,6 @@ * @protected */ _finishRenderOpened: function() { - this.notifyResize(); this.__isAnimating = false; @@ -9044,11 +8989,10 @@ * @protected */ _finishRenderClosed: function() { - // Hide the overlay and remove the backdrop. + // Hide the overlay. this.style.display = 'none'; // Reset z-index only at the end of the animation. this.style.zIndex = ''; - this.notifyResize(); this.__isAnimating = false; this.fire('iron-overlay-closed', this.closingReason); @@ -9084,10 +9028,22 @@ if (!this.noAutoFocus) { this._focusNode.focus(); } - } else { + } + else { this._focusNode.blur(); this._focusedChild = null; - this._manager.focusOverlay(); + // Restore focus. + if (this.restoreFocusOnClose && this.__restoreFocusNode) { + this.__restoreFocusNode.focus(); + } + this.__restoreFocusNode = null; + // If many overlays get closed at the same time, one of them would still + // be the currentOverlay even if already closed, and would call _applyFocus + // infinitely, so we check for this not to be the current overlay. + var currentOverlay = this._manager.currentOverlay(); + if (currentOverlay && this !== currentOverlay) { + currentOverlay._applyFocus(); + } } }, @@ -9185,15 +9141,8 @@ * @protected */ _onIronResize: function() { - if (this.__onIronResizeAsync) { - window.cancelAnimationFrame(this.__onIronResizeAsync); - this.__onIronResizeAsync = null; - } if (this.opened && !this.__isAnimating) { - this.__onIronResizeAsync = window.requestAnimationFrame(function() { - this.__onIronResizeAsync = null; - this.refit(); - }.bind(this)); + this.__onNextAnimationFrame(this.refit); } }, @@ -9206,7 +9155,50 @@ if (this.opened && !this.__isAnimating) { this.notifyResize(); } + }, + + /** + * Tasks executed when opened changes: prepare for the opening, move the + * focus, update the manager, render opened/closed. + * @private + */ + __openedChanged: function() { + if (this.opened) { + // Make overlay visible, then add it to the manager. + this._prepareRenderOpened(); + this._manager.addOverlay(this); + // Move the focus to the child node with [autofocus]. + this._applyFocus(); + + this._renderOpened(); + } else { + // Remove overlay, then restore the focus before actually closing. + this._manager.removeOverlay(this); + this._applyFocus(); + + this._renderClosed(); + } + }, + + /** + * Executes a callback on the next animation frame, overriding any previous + * callback awaiting for the next animation frame. e.g. + * `__onNextAnimationFrame(callback1) && __onNextAnimationFrame(callback2)`; + * `callback1` will never be invoked. + * @param {!Function} callback Its `this` parameter is the overlay itself. + * @private + */ + __onNextAnimationFrame: function(callback) { + if (this.__raf) { + window.cancelAnimationFrame(this.__raf); + } + var self = this; + this.__raf = window.requestAnimationFrame(function nextAnimationFrame() { + self.__raf = null; + callback.call(self); + }); } + }; /** @polymerBehavior */ @@ -9693,11 +9685,6 @@ _unlockedElementCache: null, - _isScrollingKeypress: function(event) { - return Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys( - event, 'pageup pagedown home end up left down right'); - }, - _hasCachedLockedElement: function(element) { return this._lockedElementCache.indexOf(element) > -1; }, @@ -9766,8 +9753,6 @@ document.addEventListener('touchstart', this._boundScrollHandler, true); // Mobile devices can scroll on touch move: document.addEventListener('touchmove', this._boundScrollHandler, true); - // Capture keydown to prevent scrolling keys (pageup, pagedown etc.) - document.addEventListener('keydown', this._boundScrollHandler, true); }, _unlockScrollInteractions: function() { @@ -9776,7 +9761,6 @@ document.removeEventListener('DOMMouseScroll', this._boundScrollHandler, true); document.removeEventListener('touchstart', this._boundScrollHandler, true); document.removeEventListener('touchmove', this._boundScrollHandler, true); - document.removeEventListener('keydown', this._boundScrollHandler, true); }, /** @@ -9788,11 +9772,6 @@ * @private */ _shouldPreventScrolling: function(event) { - // Avoid expensive checks if the event is not one of the observed keys. - if (event.type === 'keydown') { - // Prevent event if it is one of the scrolling keys. - return this._isScrollingKeypress(event); - } // Update if root target changed. For touch events, ensure we don't // update during touchmove. @@ -10508,7 +10487,7 @@ }]; } }, - + /** * By default, the dropdown will constrain scrolling on the page * to itself when opened.
diff --git a/chrome/browser/resources/md_downloads/vulcanized.html b/chrome/browser/resources/md_downloads/vulcanized.html index 894990a9..97576539 100644 --- a/chrome/browser/resources/md_downloads/vulcanized.html +++ b/chrome/browser/resources/md_downloads/vulcanized.html
@@ -1073,7 +1073,12 @@ overflow: hidden; } + :host([hidden]) { + display: none !important; + } + #progressContainer { + @apply(--paper-progress-container); position: relative; } @@ -1141,8 +1146,8 @@ :host(:not([disabled])) #primaryProgress.indeterminate { -webkit-transform-origin: right center; transform-origin: right center; - -webkit-animation: indeterminate-bar 2s linear infinite; - animation: indeterminate-bar 2s linear infinite; + -webkit-animation: indeterminate-bar var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; + animation: indeterminate-bar var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; } :host(:not([disabled])) #primaryProgress.indeterminate::after { @@ -1150,8 +1155,8 @@ -webkit-transform-origin: center center; transform-origin: center center; - -webkit-animation: indeterminate-splitter 2s linear infinite; - animation: indeterminate-splitter 2s linear infinite; + -webkit-animation: indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; + animation: indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; } @-webkit-keyframes indeterminate-bar { @@ -2124,6 +2129,7 @@ <svg> <defs> + <g id="add"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></g> <g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g> <g id="cancel"><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"></path></g> <if expr="chromeos"> @@ -2783,4 +2789,4 @@ <command id="find-command" shortcut="Ctrl|f"></command> </if> <link rel="import" href="chrome://resources/html/polymer.html"> - <script src="crisper.js"></script></body></html> + <script src="crisper.js"></script></body></html> \ No newline at end of file
diff --git a/chrome/browser/resources/settings/a11y_page/a11y_page.html b/chrome/browser/resources/settings/a11y_page/a11y_page.html index 543fd0f..85bcf7f 100644 --- a/chrome/browser/resources/settings/a11y_page/a11y_page.html +++ b/chrome/browser/resources/settings/a11y_page/a11y_page.html
@@ -26,7 +26,7 @@ checked="{{prefs.settings.a11y.enable_menu.value}}"> </paper-toggle-button> </div> - <div class="settings-box"> + <div id="subpage-trigger" class="settings-box"> <paper-button class="primary-button" on-tap="onManageAccessibilityFeaturesTap_"> $i18n{manageAccessibilityFeatures} @@ -34,7 +34,9 @@ </div> </neon-animatable> <template is="dom-if" name="manage-a11y"> - <settings-subpage page-title="$i18n{manageAccessibilityFeatures}"> + <settings-subpage + associated-control="[[$$('#subpage-trigger')]]" + page-title="$i18n{manageAccessibilityFeatures}"> <settings-manage-a11y-page prefs="{{prefs}}"> </settings-manage-a11y-page> </settings-subpage>
diff --git a/chrome/browser/resources/settings/about_page/about_page.js b/chrome/browser/resources/settings/about_page/about_page.js index e7e8ca7..cdf419a 100644 --- a/chrome/browser/resources/settings/about_page/about_page.js +++ b/chrome/browser/resources/settings/about_page/about_page.js
@@ -9,7 +9,7 @@ Polymer({ is: 'settings-about-page', - behaviors: [WebUIListenerBehavior, RoutableBehavior, I18nBehavior], + behaviors: [WebUIListenerBehavior, MainPageBehavior, I18nBehavior], properties: { /** @private {?UpdateStatusChangedEvent} */
diff --git a/chrome/browser/resources/settings/advanced_page/advanced_page.js b/chrome/browser/resources/settings/advanced_page/advanced_page.js index 2770234..336b5f4 100644 --- a/chrome/browser/resources/settings/advanced_page/advanced_page.js +++ b/chrome/browser/resources/settings/advanced_page/advanced_page.js
@@ -10,12 +10,10 @@ Polymer({ is: 'settings-advanced-page', - behaviors: [SettingsPageVisibility, RoutableBehavior], + behaviors: [SettingsPageVisibility, MainPageBehavior], properties: { - /** - * Preferences state. - */ + /** Preferences state. */ prefs: { type: Object, notify: true,
diff --git a/chrome/browser/resources/settings/advanced_page/compiled_resources2.gyp b/chrome/browser/resources/settings/advanced_page/compiled_resources2.gyp index 85ad36c..36f8252 100644 --- a/chrome/browser/resources/settings/advanced_page/compiled_resources2.gyp +++ b/chrome/browser/resources/settings/advanced_page/compiled_resources2.gyp
@@ -9,7 +9,6 @@ '../compiled_resources2.gyp:route', '../settings_page/compiled_resources2.gyp:main_page_behavior', '../settings_page/compiled_resources2.gyp:settings_page_visibility', - '../settings_page/compiled_resources2.gyp:transition_behavior', '../system_page/compiled_resources2.gyp:system_page', ], 'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'],
diff --git a/chrome/browser/resources/settings/basic_page/basic_page.js b/chrome/browser/resources/settings/basic_page/basic_page.js index aa8a39b3..7facd9f 100644 --- a/chrome/browser/resources/settings/basic_page/basic_page.js +++ b/chrome/browser/resources/settings/basic_page/basic_page.js
@@ -9,12 +9,10 @@ Polymer({ is: 'settings-basic-page', - behaviors: [SettingsPageVisibility, RoutableBehavior], + behaviors: [SettingsPageVisibility, MainPageBehavior], properties: { - /** - * Preferences state. - */ + /** Preferences state. */ prefs: { type: Object, notify: true,
diff --git a/chrome/browser/resources/settings/basic_page/compiled_resources2.gyp b/chrome/browser/resources/settings/basic_page/compiled_resources2.gyp index 307f1b2..c5fc14019 100644 --- a/chrome/browser/resources/settings/basic_page/compiled_resources2.gyp +++ b/chrome/browser/resources/settings/basic_page/compiled_resources2.gyp
@@ -10,7 +10,6 @@ '../compiled_resources2.gyp:route', '../settings_page/compiled_resources2.gyp:main_page_behavior', '../settings_page/compiled_resources2.gyp:settings_page_visibility', - '../settings_page/compiled_resources2.gyp:transition_behavior', ], 'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'], },
diff --git a/chrome/browser/resources/settings/internet_page/internet_page.html b/chrome/browser/resources/settings/internet_page/internet_page.html index dfb7dfa..b83b36c 100644 --- a/chrome/browser/resources/settings/internet_page/internet_page.html +++ b/chrome/browser/resources/settings/internet_page/internet_page.html
@@ -51,9 +51,8 @@ </div> </template> </neon-animatable> - <template is="dom-if" name="network-detail"> - <settings-subpage no-associated-control - page-title="$i18n{internetDetailPageTitle}"> + <template is="dom-if" name="network-detail" no-search> + <settings-subpage page-title="$i18n{internetDetailPageTitle}"> <settings-internet-detail-page guid="[[detailGuid]]" default-network="[[defaultNetwork]]" @@ -61,9 +60,8 @@ </settings-internet-detail-page> </settings-subpage> </template> - <template is="dom-if" name="known-networks"> - <settings-subpage no-associated-control - page-title="$i18n{internetKnownNetworksPageTitle}"> + <template is="dom-if" name="known-networks" no-search> + <settings-subpage page-title="$i18n{internetKnownNetworksPageTitle}"> <settings-internet-known-networks-page network-type="[[knownNetworksType]]" on-show-detail="onShowDetail_"
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.html b/chrome/browser/resources/settings/languages_page/languages_page.html index 71f0a7b..040a5eb 100644 --- a/chrome/browser/resources/settings/languages_page/languages_page.html +++ b/chrome/browser/resources/settings/languages_page/languages_page.html
@@ -194,9 +194,8 @@ prefs="{{prefs}}"></settings-manage-languages-page> </settings-subpage> </template> - <template is="dom-if" name="language-detail"> - <settings-subpage no-associated-control - page-title="[[detailLanguage_.language.displayName]]"> + <template is="dom-if" name="language-detail" no-search> + <settings-subpage page-title="[[detailLanguage_.language.displayName]]"> <settings-language-detail-page id="languageDetailPage" prefs="{{prefs}}" detail="[[detailLanguage_]]"> </settings-language-detail-page>
diff --git a/chrome/browser/resources/settings/people_page/people_page.html b/chrome/browser/resources/settings/people_page/people_page.html index 9e853a1..ac843ff 100644 --- a/chrome/browser/resources/settings/people_page/people_page.html +++ b/chrome/browser/resources/settings/people_page/people_page.html
@@ -169,7 +169,7 @@ <!-- TODO(jdufault): Disable navigating to /quickUnlock/* if pin is disabled. --> <template is="dom-if" if=[[quickUnlockEnabled_]]> - <div id="quick-unlock-subpage-trigger" class="settings-box"> + <div class="settings-box"> <paper-button on-tap="onQuickUnlockTap_" class="primary-button"> $i18n{quickUnlockTitle} </paper-button> @@ -242,27 +242,23 @@ </settings-subpage> </template> <if expr="chromeos"> - <template is="dom-if" name="quick-unlock-authenticate"> - <settings-subpage - associated-control="[[$$('#quick-unlock-subpage-trigger')]]" - page-title="$i18n{quickUnlockTitle}"> + <template is="dom-if" name="quick-unlock-authenticate" no-search> + <settings-subpage page-title="$i18n{quickUnlockTitle}"> <settings-quick-unlock-authenticate set-modes="{{quickUnlockSetModes}}" profile-name="[[profileName_]]"> </settings-quick-unlock-authenticate> </settings-subpage> </template> - <template is="dom-if" name="quick-unlock-choose-method"> - <settings-subpage no-associated-control - page-title="$i18n{quickUnlockTitle}"> + <template is="dom-if" name="quick-unlock-choose-method" no-search> + <settings-subpage page-title="$i18n{quickUnlockTitle}"> <settings-quick-unlock-choose-method set-modes="[[quickUnlockSetModes]]" prefs="{{prefs}}"> </settings-quick-unlock-choose-method> </settings-subpage> </template> - <template is="dom-if" name="quick-unlock-setup-pin"> - <settings-subpage no-associated-control - page-title="$i18n{quickUnlockTitle}"> + <template is="dom-if" name="quick-unlock-setup-pin" no-search> + <settings-subpage page-title="$i18n{quickUnlockTitle}"> <settings-quick-unlock-setup-pin set-modes="[[quickUnlockSetModes]]"> </settings-quick-unlock-setup-pin> </settings-subpage>
diff --git a/chrome/browser/resources/settings/printing_page/printing_page.html b/chrome/browser/resources/settings/printing_page/printing_page.html index b529ae6..f54a418f 100644 --- a/chrome/browser/resources/settings/printing_page/printing_page.html +++ b/chrome/browser/resources/settings/printing_page/printing_page.html
@@ -42,9 +42,8 @@ </settings-cups-printers> </settings-subpage> </template> - <template is="dom-if" name="cups-printer-details-page" restamp> - <settings-subpage no-associated-control - page-title="$i18n{printerDetailsTitle}"> + <template is="dom-if" name="cups-printer-details-page" restamp no-search> + <settings-subpage page-title="$i18n{printerDetailsTitle}"> <settings-cups-printer-details-page printer="{{detailPrinter_}}"> </settings-cups-printer-details-page> </settings-subpage>
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html index de00468..c65111dd 100644 --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html
@@ -123,33 +123,31 @@ </settings-subpage> </template> - <template is="dom-if" name="all-sites"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryAllSites}"> + <template is="dom-if" name="all-sites" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryAllSites}"> <all-sites selected-site="{{selectedSite}}"></all-sites> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-automatic-downloads"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsAutomaticDownloads}"> + <template is="dom-if" name="site-settings-category-automatic-downloads" + no-search> + <settings-subpage page-title="$i18n{siteSettingsAutomaticDownloads}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.AUTOMATIC_DOWNLOADS}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-background-sync"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsBackgroundSync}"> + <template is="dom-if" name="site-settings-category-background-sync" + no-search> + <settings-subpage page-title="$i18n{siteSettingsBackgroundSync}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.BACKGROUND_SYNC}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-camera"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryCamera}"> + <template is="dom-if" name="site-settings-category-camera" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryCamera}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.CAMERA}}"> @@ -157,9 +155,8 @@ </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-cookies"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryCookies}"> + <template is="dom-if" name="site-settings-category-cookies" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryCookies}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.COOKIES}}"> @@ -174,51 +171,45 @@ </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-images"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryImages}"> + <template is="dom-if" name="site-settings-category-images" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryImages}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.IMAGES}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-location"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryLocation}"> + <template is="dom-if" name="site-settings-category-location" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryLocation}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.GEOLOCATION}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="protocol-handlers"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryHandlers}"> + <template is="dom-if" name="protocol-handlers" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryHandlers}"> <protocol-handlers></protocol-handlers> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-javascript"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryJavascript}"> + <template is="dom-if" name="site-settings-category-javascript" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryJavascript}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.JAVASCRIPT}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-keygen"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsKeygen}"> + <template is="dom-if" name="site-settings-category-keygen" no-search> + <settings-subpage page-title="$i18n{siteSettingsKeygen}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.KEYGEN}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-microphone"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryMicrophone}"> + <template is="dom-if" name="site-settings-category-microphone" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryMicrophone}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.MIC}}"> @@ -226,36 +217,34 @@ </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-notifications"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryNotifications}"> + <template is="dom-if" name="site-settings-category-notifications" + no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryNotifications}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.NOTIFICATIONS}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-plugins"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsPlugins}"> + <template is="dom-if" name="site-settings-category-plugins" no-search> + <settings-subpage page-title="$i18n{siteSettingsPlugins}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.PLUGINS}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-popups"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsCategoryPopups}"> + <template is="dom-if" name="site-settings-category-popups" no-search> + <settings-subpage page-title="$i18n{siteSettingsCategoryPopups}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.POPUPS}}"> </site-settings-category> </settings-subpage> </template> - <template is="dom-if" name="site-settings-category-unsandboxed-plugins"> - <settings-subpage no-associated-control - page-title="$i18n{siteSettingsUnsandboxedPlugins}"> + <template is="dom-if" name="site-settings-category-unsandboxed-plugins" + no-search> + <settings-subpage page-title="$i18n{siteSettingsUnsandboxedPlugins}"> <site-settings-category selected-site="{{selectedSite}}" category="{{ContentSettingsTypes.UNSANDBOXED_PLUGINS}}"> @@ -263,9 +252,8 @@ </settings-subpage> </template> - <template is="dom-if" name="site-details"> - <settings-subpage no-associated-control - page-title="[[selectedSite.originForDisplay]]"> + <template is="dom-if" name="site-details" no-search> + <settings-subpage page-title="[[selectedSite.originForDisplay]]"> <site-details site="[[selectedSite]]"></site-details> </settings-subpage> </template>
diff --git a/chrome/browser/resources/settings/search_settings.js b/chrome/browser/resources/settings/search_settings.js index bc09858f..8d65774 100644 --- a/chrome/browser/resources/settings/search_settings.js +++ b/chrome/browser/resources/settings/search_settings.js
@@ -13,6 +13,12 @@ var SEARCH_BUBBLE_CSS_CLASS = 'search-bubble'; /** + * A CSS attribute indicating that a node shoud be ignored during searching. + * @const {string} + */ + var SKIP_SEARCH_CSS_ATTRIBUTE = 'no-search'; + + /** * List of elements types that should not be searched at all. * The only DOM-MODULE node is in <body> which is not searched, therefore * DOM-MODULE is not needed in this set. @@ -116,14 +122,16 @@ var foundMatches = false; function doSearch(node) { if (node.nodeName == 'TEMPLATE' && node.hasAttribute('name') && - !node.if) { + !node.if && !node.hasAttribute(SKIP_SEARCH_CSS_ATTRIBUTE)) { getSearchManager().queue_.addRenderTask( new RenderTask(request, node)); return; } - if (IGNORED_ELEMENTS.has(node.nodeName)) + if (IGNORED_ELEMENTS.has(node.nodeName) || + (node.hasAttribute && node.hasAttribute(SKIP_SEARCH_CSS_ATTRIBUTE))) { return; + } if (node.nodeType == Node.TEXT_NODE) { var textContent = node.nodeValue.trim(); @@ -199,12 +207,10 @@ parent.host : parent.parentNode; if (parent.nodeName == 'SETTINGS-SUBPAGE') { // TODO(dpapad): Cast to SettingsSubpageElement here. - if (!parent.noAssociatedControl) { - associatedControl = assert( - parent.associatedControl, - 'An associated control was expected for SETTINGS-SUBPAGE ' + - parent.pageTitle + ', but was not found.'); - } + associatedControl = assert( + parent.associatedControl, + 'An associated control was expected for SETTINGS-SUBPAGE ' + + parent.pageTitle + ', but was not found.'); } } if (parent)
diff --git a/chrome/browser/resources/settings/settings_page/compiled_resources2.gyp b/chrome/browser/resources/settings/settings_page/compiled_resources2.gyp index 5fe9919..4e42a40 100644 --- a/chrome/browser/resources/settings/settings_page/compiled_resources2.gyp +++ b/chrome/browser/resources/settings/settings_page/compiled_resources2.gyp
@@ -9,7 +9,6 @@ '../compiled_resources2.gyp:route', 'settings_section', 'transition_behavior', - '<(EXTERNS_GYP):settings_private', '<(EXTERNS_GYP):web_animations', '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:util', ],
diff --git a/chrome/browser/resources/settings/settings_page/main_page_behavior.js b/chrome/browser/resources/settings/settings_page/main_page_behavior.js index ce711bf..5e408b2e 100644 --- a/chrome/browser/resources/settings/settings_page/main_page_behavior.js +++ b/chrome/browser/resources/settings/settings_page/main_page_behavior.js
@@ -20,10 +20,10 @@ } /** - * Provides animations to expand and collapse individual sections in a page. - * Expanded sections take up the full height of the container. At most one - * section should be expanded at any given time. - * @polymerBehavior Polymer.MainPageBehavior + * Responds to route changes by expanding, collapsing, or scrolling to sections + * on the page. Expanded sections take up the full height of the container. At + * most one section should be expanded at any given time. + * @polymerBehavior MainPageBehavior */ var MainPageBehaviorImpl = { /** @type {?HTMLElement} The scrolling container. */ @@ -38,23 +38,49 @@ }, /** - * Hides or unhides the sections not being expanded. - * @param {string} sectionName The section to keep visible. - * @param {boolean} hidden Whether the sections should be hidden. - * @private + * @param {!settings.Route} newRoute + * @param {!settings.Route} oldRoute */ - toggleOtherSectionsHidden_: function(sectionName, hidden) { - var sections = Polymer.dom(this.root).querySelectorAll( - 'settings-section'); - for (var section of sections) - section.hidden = hidden && (section.section != sectionName); + currentRouteChanged: function(newRoute, oldRoute) { + var newRouteIsSubpage = newRoute && newRoute.subpage.length; + var oldRouteIsSubpage = oldRoute && oldRoute.subpage.length; + + if (!oldRoute && newRouteIsSubpage) { + // Allow the page to load before expanding the section. TODO(michaelpg): + // Time this better when refactoring settings-animated-pages. + setTimeout(function() { + var section = this.getSection_(newRoute.section); + if (section) + this.expandSection_(section); + }.bind(this)); + return; + } + + if (newRouteIsSubpage) { + if (!oldRouteIsSubpage || newRoute.section != oldRoute.section) { + var section = this.getSection_(newRoute.section); + if (section) + this.expandSection_(section); + } + } else { + if (oldRouteIsSubpage) { + var section = this.getSection_(oldRoute.section); + if (section) + this.collapseSection_(section); + } + + // Scrolls to the section if this main page contains the route's section. + if (newRoute && newRoute.section && this.getSection_(newRoute.section)) + this.scrollToSection_(); + } }, /** * Animates the card in |section|, expanding it to fill the page. * @param {!SettingsSectionElement} section + * @private */ - expandSection: function(section) { + expandSection_: function(section) { // If another section's card is expanding, cancel that animation first. var expanding = this.$$('.expanding'); if (expanding) { @@ -71,7 +97,7 @@ // When it resolves, collapse that section's card before expanding // this one. setTimeout(function() { - this.collapseSection( + this.collapseSection_( /** @type {!SettingsSectionElement} */(expanding)); this.finishAnimation('section', function() { this.startExpandSection_(section); @@ -129,44 +155,6 @@ }, /** - * Animates the card in |section|, collapsing it back into its section. - * @param {!SettingsSectionElement} section - */ - collapseSection: function(section) { - // If the section's card is still expanding, cancel the expand animation. - if (section.classList.contains('expanding')) { - if (this.animations['section']) { - this.cancelAnimation('section'); - } else { - // The animation must have finished but its promise hasn't finished - // resolving; try again asynchronously. - this.async(function() { - this.collapseSection(section); - }); - } - return; - } - - if (!section.canAnimateCollapse()) - return; - - this.toggleOtherSectionsHidden_(section.section, false); - - var scrollerWidth = this.scroller.clientWidth; - this.scroller.style.overflow = 'hidden'; - // Adjust width to compensate for scroller. - var scrollbarWidth = this.scroller.clientWidth - scrollerWidth; - this.scroller.style.width = 'calc(100% - ' + scrollbarWidth + 'px)'; - - this.playCollapseSection_(section).then(function() { - section.setFrozen(false); - this.scroller.style.overflow = ''; - this.scroller.style.width = ''; - section.classList.remove('collapsing'); - }.bind(this)); - }, - - /** * Expands the card in |section| to fill the page. * @param {!SettingsSectionElement} section * @return {!Promise} @@ -200,6 +188,45 @@ }, /** + * Animates the card in |section|, collapsing it back into its section. + * @param {!SettingsSectionElement} section + * @private + */ + collapseSection_: function(section) { + // If the section's card is still expanding, cancel the expand animation. + if (section.classList.contains('expanding')) { + if (this.animations['section']) { + this.cancelAnimation('section'); + } else { + // The animation must have finished but its promise hasn't finished + // resolving; try again asynchronously. + this.async(function() { + this.collapseSection_(section); + }); + } + return; + } + + if (!section.canAnimateCollapse()) + return; + + this.toggleOtherSectionsHidden_(section.section, false); + + var scrollerWidth = this.scroller.clientWidth; + this.scroller.style.overflow = 'hidden'; + // Adjust width to compensate for scroller. + var scrollbarWidth = this.scroller.clientWidth - scrollerWidth; + this.scroller.style.width = 'calc(100% - ' + scrollbarWidth + 'px)'; + + this.playCollapseSection_(section).then(function() { + section.setFrozen(false); + this.scroller.style.overflow = ''; + this.scroller.style.width = ''; + section.classList.remove('collapsing'); + }.bind(this)); + }, + + /** * Collapses the card in |section| back to its normal position. * @param {!SettingsSectionElement} section * @return {!Promise} @@ -228,21 +255,7 @@ }); return promise; }, -}; - -/** @polymerBehavior */ -var MainPageBehavior = [ - TransitionBehavior, - MainPageBehaviorImpl -]; - - -/** - * TODO(michaelpg): integrate slide animations. - * @polymerBehavior RoutableBehavior - */ -var RoutableBehaviorImpl = { /** @private */ scrollToSection_: function() { doWhenReady( @@ -256,39 +269,17 @@ }.bind(this)); }, - /** @private */ - currentRouteChanged: function(newRoute, oldRoute) { - var newRouteIsSubpage = newRoute && newRoute.subpage.length; - var oldRouteIsSubpage = oldRoute && oldRoute.subpage.length; - - if (!oldRoute && newRouteIsSubpage) { - // Allow the page to load before expanding the section. TODO(michaelpg): - // Time this better when refactoring settings-animated-pages. - setTimeout(function() { - var section = this.getSection_(newRoute.section); - if (section) - this.expandSection(section); - }.bind(this)); - return; - } - - if (newRouteIsSubpage) { - if (!oldRouteIsSubpage || newRoute.section != oldRoute.section) { - var section = this.getSection_(newRoute.section); - if (section) - this.expandSection(section); - } - } else { - if (oldRouteIsSubpage) { - var section = this.getSection_(oldRoute.section); - if (section) - this.collapseSection(section); - } - - // Scrolls to the section if this main page contains the route's section. - if (newRoute && newRoute.section && this.getSection_(newRoute.section)) - this.scrollToSection_(); - } + /** + * Hides or unhides the sections not being expanded. + * @param {string} sectionName The section to keep visible. + * @param {boolean} hidden Whether the sections should be hidden. + * @private + */ + toggleOtherSectionsHidden_: function(sectionName, hidden) { + var sections = Polymer.dom(this.root).querySelectorAll( + 'settings-section'); + for (var section of sections) + section.hidden = hidden && (section.section != sectionName); }, /** @@ -303,10 +294,9 @@ }, }; - /** @polymerBehavior */ -var RoutableBehavior = [ - MainPageBehavior, +var MainPageBehavior = [ settings.RouteObserverBehavior, - RoutableBehaviorImpl + TransitionBehavior, + MainPageBehaviorImpl, ];
diff --git a/chrome/browser/resources/settings/settings_page/settings_animated_pages.js b/chrome/browser/resources/settings/settings_page/settings_animated_pages.js index 682ead2..937584b 100644 --- a/chrome/browser/resources/settings/settings_page/settings_animated_pages.js +++ b/chrome/browser/resources/settings/settings_page/settings_animated_pages.js
@@ -147,6 +147,11 @@ .querySelector('settings-subpage'); if (!subpage.id) subpage.id = id; + // Carry over the 'no-search' attribute from the template to the stamped + // instance, such that the stamped instance will also be ignored by the + // searching algorithm. + if (template.hasAttribute('no-search')) + subpage.setAttribute('no-search', ''); // Render synchronously so neon-animated-pages can select the subpage. template.if = true;
diff --git a/chrome/browser/resources/settings/settings_page/settings_subpage.js b/chrome/browser/resources/settings/settings_page/settings_subpage.js index 3715182..abb43dc 100644 --- a/chrome/browser/resources/settings/settings_page/settings_subpage.js +++ b/chrome/browser/resources/settings/settings_page/settings_subpage.js
@@ -30,21 +30,16 @@ value: '', }, - /** @type {?HTMLElement} */ + /** + * Indicates which element triggers this subpage. Used by the searching + * algorithm to show search bubbles. It is |null| for subpages that are + * skipped during searching. + * @type {?HTMLElement} + */ associatedControl: { type: Object, value: null, }, - - /** - * Indicates whether an associated control (an element that triggers the - * subpage) is not registered for this page. Used by the searching algorithm - * to show search bubbles. - */ - noAssociatedControl: { - type: Boolean, - value: false, - }, }, /** @private */
diff --git a/chrome/browser/safe_browsing/local_database_manager.cc b/chrome/browser/safe_browsing/local_database_manager.cc index abe950d7..9f48be6 100644 --- a/chrome/browser/safe_browsing/local_database_manager.cc +++ b/chrome/browser/safe_browsing/local_database_manager.cc
@@ -294,11 +294,8 @@ enable_csd_whitelist_ = !cmdline->HasSwitch(switches::kDisableClientSidePhishingDetection); - // TODO(noelutz): remove this boolean variable since it should always be true - // if SafeBrowsing is enabled. Unfortunately, we have no test data for this - // list right now. This means that we need to be able to disable this list - // for the SafeBrowsing test to pass. - enable_download_whitelist_ = enable_csd_whitelist_; + // We download the download-whitelist if download protection is enabled. + enable_download_whitelist_ = enable_download_protection_; // TODO(kalman): there really shouldn't be a flag for this. enable_extension_blacklist_ =
diff --git a/chrome/browser/ssl/ssl_browser_tests.cc b/chrome/browser/ssl/ssl_browser_tests.cc index 626301d4..757bae42 100644 --- a/chrome/browser/ssl/ssl_browser_tests.cc +++ b/chrome/browser/ssl/ssl_browser_tests.cc
@@ -92,6 +92,8 @@ #include "net/test/test_certificate_data.h" #include "net/test/test_data_directory.h" #include "net/url_request/url_request_context.h" +#include "net/url_request/url_request_filter.h" +#include "net/url_request/url_request_job.h" #if defined(USE_NSS_CERTS) #include "chrome/browser/net/nss_context.h" @@ -275,6 +277,33 @@ EXPECT_TRUE(one_without_cert_id.Equals(two_without_cert_id)); } +class HungJob : public net::URLRequestJob { + public: + HungJob(net::URLRequest* request, net::NetworkDelegate* network_delegate) + : net::URLRequestJob(request, network_delegate) {} + + void Start() override { + } +}; + +class FaviconFilter : public net::URLRequestInterceptor { + public: + FaviconFilter() {} + ~FaviconFilter() override {} + + // net::URLRequestInterceptor implementation + net::URLRequestJob* MaybeInterceptRequest( + net::URLRequest* request, + net::NetworkDelegate* network_delegate) const override { + if (request->url().path() == "/favicon.ico") + return new HungJob(request, network_delegate); + return nullptr; + } + + private: + DISALLOW_COPY_AND_ASSIGN(FaviconFilter); +}; + } // namespace class SSLUITest @@ -295,6 +324,16 @@ https_server_mismatched_.SetSSLConfig( net::EmbeddedTestServer::CERT_MISMATCHED_NAME); https_server_mismatched_.AddDefaultHandlers(base::FilePath(kDocRoot)); + + // TODO(estark): once http://crbug.com/634171 is fixed and certificate + // errors for subresources don't generate DISPLAYED_INSECURE_CONTENT remove + // these filters. + std::unique_ptr<net::URLRequestInterceptor> interceptor(new FaviconFilter); + net::URLRequestFilter::GetInstance()->AddHostnameInterceptor( + "https", "127.0.0.1", std::move(interceptor)); + interceptor.reset(new FaviconFilter); + net::URLRequestFilter::GetInstance()->AddHostnameInterceptor( + "https", "localhost", std::move(interceptor)); } void SetUpCommandLine(base::CommandLine* command_line) override { @@ -1828,14 +1867,6 @@ tab, net::CERT_STATUS_COMMON_NAME_INVALID, AuthState::NONE); } -#if defined(OS_CHROMEOS) -// This test seems to be flaky and hang on chromiumos. -// http://crbug.com/84419 -#define MAYBE_TestRefNavigation DISABLED_TestRefNavigation -#else -#define MAYBE_TestRefNavigation TestRefNavigation -#endif - // Test that navigating to a #ref does not change a bad security state. IN_PROC_BROWSER_TEST_F(SSLUITest, TestRefNavigation) { ASSERT_TRUE(https_server_expired_.Start()); @@ -2330,8 +2361,11 @@ EXPECT_TRUE(content::ExecuteScriptAndExtractBool( tab, "window.domAutomationController.send(IsFooSet());", &js_result)); EXPECT_TRUE(js_result); + // TODO(estark): once http://crbug.com/634171 is fixed and certificate errors + // for subresources don't generate DISPLAYED_INSECURE_CONTENT switch this back + // to AuthState::NONE. CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, - AuthState::NONE); + AuthState::DISPLAYED_INSECURE_CONTENT); } // Like the test above, but only displaying inactive content (an image).
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc index 7b5ef42b..9a4ef82 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc
@@ -11,11 +11,11 @@ #include "ash/common/shelf/shelf_button.h" #include "ash/common/shelf/shelf_constants.h" #include "ash/common/shelf/shelf_model.h" +#include "ash/common/shelf/shelf_view.h" #include "ash/common/wm/window_state.h" #include "ash/common/wm_shell.h" #include "ash/shelf/shelf.h" #include "ash/shelf/shelf_util.h" -#include "ash/shelf/shelf_view.h" #include "ash/shell.h" #include "ash/test/shelf_test_api.h" #include "ash/test/shelf_view_test_api.h"
diff --git a/chrome/browser/ui/cocoa/chooser_content_view_cocoa.h b/chrome/browser/ui/cocoa/chooser_content_view_cocoa.h index 3a430c9..42f09fb 100644 --- a/chrome/browser/ui/cocoa/chooser_content_view_cocoa.h +++ b/chrome/browser/ui/cocoa/chooser_content_view_cocoa.h
@@ -32,6 +32,34 @@ base::scoped_nsobject<NSButton> helpButton_; std::unique_ptr<ChooserController> chooserController_; std::unique_ptr<ChooserContentViewController> chooserContentViewController_; + + CGFloat titleHeight_; + CGFloat statusHeight_; + CGFloat rescanButtonHeight_; + CGFloat connectButtonWidth_; + CGFloat connectButtonHeight_; + CGFloat cancelButtonWidth_; + CGFloat cancelButtonHeight_; + CGFloat messageHeight_; + + struct FrameAndOrigin { + NSRect scroll_view_frame; + NSPoint connect_button_origin; + NSPoint cancel_button_origin; + }; + + // The cached |scrollView_| frame and |connectButton_| and |cancelButton_| + // origins for views layout: + // When |status_| is shown. + FrameAndOrigin statusShown_; + // When |rescanButton_| is shown. + FrameAndOrigin rescanButtonShown_; + // When neither |status_| nor |rescanButton_| is shown. + FrameAndOrigin noStatusOrRescanButtonShown_; + + // The cached |status_| and |rescanButton_| origins. + NSPoint statusOrigin_; + NSPoint rescanButtonOrigin_; } // Designated initializer. @@ -61,6 +89,24 @@ - (base::scoped_nsobject<NSButton>)createHyperlinkButtonWithText: (NSString*)text; +// Calculates the frame for the |scrollView_|. +- (NSRect)calculateScrollViewFrame:(CGFloat)buttonRowHeight; + +// Calculates the origin for the |status_| text. +- (NSPoint)calculateStatusOrigin:(CGFloat)buttonRowHeight; + +// Calculates the origin for the "Re-scan" button. +- (NSPoint)calculateRescanButtonOrigin:(CGFloat)buttonRowHeight; + +// Calculates the origin for the "Connect" button. +- (NSPoint)calculateConnectButtonOrigin:(CGFloat)buttonRowHeight; + +// Calculates the origin for the "Cancel" button. +- (NSPoint)calculateCancelButtonOrigin:(CGFloat)buttonRowHeight; + +// Updates the origin and size of the view. +- (void)updateView; + // Gets the table view for the chooser. - (NSTableView*)tableView;
diff --git a/chrome/browser/ui/cocoa/chooser_content_view_cocoa.mm b/chrome/browser/ui/cocoa/chooser_content_view_cocoa.mm index 4fd9b09b..bbb1111 100644 --- a/chrome/browser/ui/cocoa/chooser_content_view_cocoa.mm +++ b/chrome/browser/ui/cocoa/chooser_content_view_cocoa.mm
@@ -46,7 +46,8 @@ class ChooserContentViewController : public ChooserController::View { public: - ChooserContentViewController(ChooserController* chooser_controller, + ChooserContentViewController(ChooserContentViewCocoa* chooser_content_view, + ChooserController* chooser_controller, NSTableView* table_view, SpinnerView* spinner, NSTextField* status, @@ -63,6 +64,7 @@ void UpdateTableView(); private: + ChooserContentViewCocoa* chooser_content_view_; ChooserController* chooser_controller_; NSTableView* table_view_; SpinnerView* spinner_; @@ -73,12 +75,14 @@ }; ChooserContentViewController::ChooserContentViewController( + ChooserContentViewCocoa* chooser_content_view, ChooserController* chooser_controller, NSTableView* table_view, SpinnerView* spinner, NSTextField* status, NSButton* rescan_button) - : chooser_controller_(chooser_controller), + : chooser_content_view_(chooser_content_view), + chooser_controller_(chooser_controller), table_view_(table_view), spinner_(spinner), status_(status), @@ -136,6 +140,8 @@ [status_ setHidden:YES]; // When adapter is enabled, show |rescan_button_|; otherwise hide it. [rescan_button_ setHidden:enabled ? NO : YES]; + + [chooser_content_view_ updateView]; } void ChooserContentViewController::OnRefreshStateChanged(bool refreshing) { @@ -158,6 +164,8 @@ // When complete, show |rescan_button_| and hide |status_|. [status_ setHidden:refreshing ? NO : YES]; [rescan_button_ setHidden:refreshing ? YES : NO]; + + [chooser_content_view_ updateView]; } void ChooserContentViewController::UpdateTableView() { @@ -167,6 +175,10 @@ @implementation ChooserContentViewCocoa +// TODO(juncai): restructure this function to be some smaller methods to +// create the pieces for the view. By doing so, the methods that calculate +// the frame and origins can be moved into those methods, rather than as +// helper functions. - (instancetype)initWithChooserTitle:(NSString*)chooserTitle chooserController: (std::unique_ptr<ChooserController>)chooserController { @@ -196,25 +208,35 @@ // Create the views. // Title. titleView_ = [self createChooserTitle:chooserTitle]; - CGFloat titleHeight = NSHeight([titleView_ frame]); + titleHeight_ = NSHeight([titleView_ frame]); // Status. status_ = [self createTextField:l10n_util::GetNSString( IDS_BLUETOOTH_DEVICE_CHOOSER_SCANNING)]; + CGFloat statusWidth = kChooserWidth / 2 - kMarginX; + // The height is arbitrary as it will be adjusted later. + [status_ setFrameSize:NSMakeSize(statusWidth, 0.0f)]; + [GTMUILocalizerAndLayoutTweaker sizeToFitFixedWidthTextField:status_]; + statusHeight_ = NSHeight([status_ frame]); // Re-scan button. rescanButton_ = [self createHyperlinkButtonWithText: l10n_util::GetNSString(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN)]; + rescanButtonHeight_ = NSHeight([rescanButton_ frame]); // Connect button. connectButton_ = [self createConnectButton]; - CGFloat connectButtonWidth = NSWidth([connectButton_ frame]); - CGFloat connectButtonHeight = NSHeight([connectButton_ frame]); + connectButtonWidth_ = NSWidth([connectButton_ frame]); + connectButtonHeight_ = NSHeight([connectButton_ frame]); // Cancel button. cancelButton_ = [self createCancelButton]; - CGFloat cancelButtonWidth = NSWidth([cancelButton_ frame]); + cancelButtonWidth_ = NSWidth([cancelButton_ frame]); + cancelButtonHeight_ = NSHeight([cancelButton_ frame]); + + CGFloat buttonRowHeight = + std::max(connectButtonHeight_, cancelButtonHeight_); // Separator. separator_ = [self createSeparator]; @@ -224,7 +246,7 @@ IDS_DEVICE_CHOOSER_FOOTNOTE_TEXT, base::string16())]; CGFloat messageWidth = NSWidth([message_ frame]); - CGFloat messageHeight = NSHeight([message_ frame]); + messageHeight_ = NSHeight([message_ frame]); // Help button. helpButton_ = [self @@ -232,16 +254,10 @@ l10n_util::GetNSString(IDS_DEVICE_CHOOSER_GET_HELP_LINK_TEXT)]; // ScollView embedding with TableView. - CGFloat scrollViewWidth = kChooserWidth - 2 * kMarginX; - CGFloat scrollViewHeight = kChooserHeight - 2 * kMarginY - - 4 * kVerticalPadding - titleHeight - - connectButtonHeight - messageHeight; - CGFloat scrollViewOriginX = kMarginX; - CGFloat scrollViewOriginY = - kMarginY + messageHeight + 3 * kVerticalPadding + connectButtonHeight; - NSRect scrollFrame = NSMakeRect(scrollViewOriginX, scrollViewOriginY, - scrollViewWidth, scrollViewHeight); - scrollView_.reset([[NSScrollView alloc] initWithFrame:scrollFrame]); + noStatusOrRescanButtonShown_.scroll_view_frame = + [self calculateScrollViewFrame:buttonRowHeight]; + scrollView_.reset([[NSScrollView alloc] + initWithFrame:noStatusOrRescanButtonShown_.scroll_view_frame]); [scrollView_ setBorderType:NSBezelBorder]; [scrollView_ setHasVerticalScroller:YES]; [scrollView_ setHasHorizontalScroller:YES]; @@ -250,7 +266,9 @@ // TableView. tableView_.reset([[NSTableView alloc] initWithFrame:NSZeroRect]); tableColumn_.reset([[NSTableColumn alloc] initWithIdentifier:@""]); - [tableColumn_ setWidth:(scrollViewWidth - kMarginX)]; + [tableColumn_ + setWidth:(noStatusOrRescanButtonShown_.scroll_view_frame.size.width - + kMarginX)]; [tableView_ addTableColumn:tableColumn_]; // Make the column title invisible. [tableView_ setHeaderView:nil]; @@ -258,10 +276,18 @@ // Spinner. // Set the spinner in the center of the scroll view. + // When |status_| is shown, it may affect the frame origin and size of the + // |scrollView_|, and since the |spinner_| is shown with the |status_|, + // its frame origin needs to be calculated according to the frame origin + // of |scrollView_| with |status_| shown. + NSRect scrollViewFrameWithStatusText = [self + calculateScrollViewFrame:std::max(statusHeight_, buttonRowHeight)]; CGFloat spinnerOriginX = - scrollViewOriginX + (scrollViewWidth - kSpinnerSize) / 2; + scrollViewFrameWithStatusText.origin.x + + (scrollViewFrameWithStatusText.size.width - kSpinnerSize) / 2; CGFloat spinnerOriginY = - scrollViewOriginY + (scrollViewHeight - kSpinnerSize) / 2; + scrollViewFrameWithStatusText.origin.y + + (scrollViewFrameWithStatusText.size.height - kSpinnerSize) / 2; spinner_.reset([[SpinnerView alloc] initWithFrame:NSMakeRect(spinnerOriginX, spinnerOriginY, kSpinnerSize, kSpinnerSize)]); @@ -269,7 +295,7 @@ // Lay out the views. // Title. CGFloat titleOriginX = kMarginX; - CGFloat titleOriginY = kChooserHeight - kMarginY - titleHeight; + CGFloat titleOriginY = kChooserHeight - kMarginY - titleHeight_; [titleView_ setFrameOrigin:NSMakePoint(titleOriginX, titleOriginY)]; [self addSubview:titleView_]; @@ -279,41 +305,33 @@ [spinner_ setHidden:YES]; [self addSubview:spinner_]; - // Status text field and Re-scan button. Only one of them is shown. - CGFloat statusOriginX = kMarginX; - // Bottom-align with the text on the buttons. - CGFloat statusOriginY = kMarginY + messageHeight + 2 * kVerticalPadding + - (connectButtonHeight - [NSFont systemFontSize]) / 2; - [status_ setFrameOrigin:NSMakePoint(statusOriginX, statusOriginY)]; + // Status text field and Re-scan button. At most one of them is shown. [self addSubview:status_]; [status_ setHidden:YES]; - [rescanButton_ setFrameOrigin:NSMakePoint(statusOriginX, statusOriginY)]; + [rescanButton_ setTarget:self]; [rescanButton_ setAction:@selector(onRescan:)]; [self addSubview:rescanButton_]; [rescanButton_ setHidden:YES]; // Connect button. - CGFloat connectButtonOriginX = kChooserWidth - kMarginX - - kHorizontalPadding - connectButtonWidth - - cancelButtonWidth; - CGFloat connectButtonOriginY = - kMarginY + messageHeight + 2 * kVerticalPadding; + noStatusOrRescanButtonShown_.connect_button_origin = + [self calculateConnectButtonOrigin:buttonRowHeight]; [connectButton_ - setFrameOrigin:NSMakePoint(connectButtonOriginX, connectButtonOriginY)]; + setFrameOrigin:noStatusOrRescanButtonShown_.connect_button_origin]; [connectButton_ setEnabled:NO]; [self addSubview:connectButton_]; // Cancel button. - CGFloat cancelButtonOriginX = kChooserWidth - kMarginX - cancelButtonWidth; - CGFloat cancelButtonOriginY = connectButtonOriginY; + noStatusOrRescanButtonShown_.cancel_button_origin = + [self calculateCancelButtonOrigin:buttonRowHeight]; [cancelButton_ - setFrameOrigin:NSMakePoint(cancelButtonOriginX, cancelButtonOriginY)]; + setFrameOrigin:noStatusOrRescanButtonShown_.cancel_button_origin]; [self addSubview:cancelButton_]; // Separator. CGFloat separatorOriginX = 0.0f; - CGFloat separatorOriginY = kMarginY + messageHeight + kVerticalPadding; + CGFloat separatorOriginY = kMarginY + messageHeight_ + kVerticalPadding; [separator_ setFrameOrigin:NSMakePoint(separatorOriginX, separatorOriginY)]; [self addSubview:separator_]; @@ -333,8 +351,24 @@ [helpButton_ setAction:@selector(onHelpPressed:)]; [self addSubview:helpButton_]; + // Calculate and cache the frame and origins values. + buttonRowHeight = std::max( + statusHeight_, std::max(connectButtonHeight_, cancelButtonHeight_)); + statusShown_ = {[self calculateScrollViewFrame:buttonRowHeight], + [self calculateConnectButtonOrigin:buttonRowHeight], + [self calculateCancelButtonOrigin:buttonRowHeight]}; + statusOrigin_ = [self calculateStatusOrigin:buttonRowHeight]; + + buttonRowHeight = + std::max(rescanButtonHeight_, + std::max(connectButtonHeight_, cancelButtonHeight_)); + rescanButtonShown_ = {[self calculateScrollViewFrame:buttonRowHeight], + [self calculateConnectButtonOrigin:buttonRowHeight], + [self calculateCancelButtonOrigin:buttonRowHeight]}; + rescanButtonOrigin_ = [self calculateRescanButtonOrigin:buttonRowHeight]; + chooserContentViewController_.reset(new ChooserContentViewController( - chooserController_.get(), tableView_.get(), spinner_.get(), + self, chooserController_.get(), tableView_.get(), spinner_.get(), status_.get(), rescanButton_.get())); } @@ -410,6 +444,58 @@ return button; } +- (NSRect)calculateScrollViewFrame:(CGFloat)buttonRowHeight { + CGFloat originX = kMarginX; + CGFloat originY = + kMarginY + messageHeight_ + 3 * kVerticalPadding + buttonRowHeight; + CGFloat width = kChooserWidth - 2 * kMarginX; + CGFloat height = kChooserHeight - 2 * kMarginY - 4 * kVerticalPadding - + titleHeight_ - buttonRowHeight - messageHeight_; + return NSMakeRect(originX, originY, width, height); +} + +- (NSPoint)calculateStatusOrigin:(CGFloat)buttonRowHeight { + return NSMakePoint(kMarginX, kMarginY + messageHeight_ + + 2 * kVerticalPadding + + (buttonRowHeight - statusHeight_) / 2); +} + +- (NSPoint)calculateRescanButtonOrigin:(CGFloat)buttonRowHeight { + return NSMakePoint(kMarginX, kMarginY + messageHeight_ + + 2 * kVerticalPadding + + (buttonRowHeight - rescanButtonHeight_) / 2); +} + +- (NSPoint)calculateConnectButtonOrigin:(CGFloat)buttonRowHeight { + return NSMakePoint(kChooserWidth - kMarginX - kHorizontalPadding - + connectButtonWidth_ - cancelButtonWidth_, + kMarginY + messageHeight_ + 2 * kVerticalPadding + + (buttonRowHeight - connectButtonHeight_) / 2); +} + +- (NSPoint)calculateCancelButtonOrigin:(CGFloat)buttonRowHeight { + return NSMakePoint(kChooserWidth - kMarginX - cancelButtonWidth_, + kMarginY + messageHeight_ + 2 * kVerticalPadding + + (buttonRowHeight - cancelButtonHeight_) / 2); +} + +- (void)updateView { + FrameAndOrigin frameAndOrigin; + if (![status_ isHidden]) { + [status_ setFrameOrigin:statusOrigin_]; + frameAndOrigin = statusShown_; + } else if (![rescanButton_ isHidden]) { + [rescanButton_ setFrameOrigin:rescanButtonOrigin_]; + frameAndOrigin = rescanButtonShown_; + } else { + frameAndOrigin = noStatusOrRescanButtonShown_; + } + + [scrollView_ setFrame:frameAndOrigin.scroll_view_frame]; + [connectButton_ setFrameOrigin:frameAndOrigin.connect_button_origin]; + [cancelButton_ setFrameOrigin:frameAndOrigin.cancel_button_origin]; +} + - (NSTableView*)tableView { return tableView_.get(); }
diff --git a/chrome/browser/ui/cocoa/download/download_item_controller.h b/chrome/browser/ui/cocoa/download/download_item_controller.h index d6e8b75..e85315ba 100644 --- a/chrome/browser/ui/cocoa/download/download_item_controller.h +++ b/chrome/browser/ui/cocoa/download/download_item_controller.h
@@ -155,9 +155,6 @@ // Updates the tooltip with the download's path. - (void)updateToolTip; -// Updates |progressView_| by calling setNeedsDisplay:YES. -- (void)updateDownloadItemView; - // Handling of dangerous downloads - (void)clearDangerousMode; - (BOOL)isDangerousMode;
diff --git a/chrome/browser/ui/cocoa/download/download_item_controller.mm b/chrome/browser/ui/cocoa/download/download_item_controller.mm index 1f3bcdc..fd3a5f8 100644 --- a/chrome/browser/ui/cocoa/download/download_item_controller.mm +++ b/chrome/browser/ui/cocoa/download/download_item_controller.mm
@@ -284,10 +284,6 @@ [progressView_ setToolTip:base::SysUTF16ToNSString(tooltip_text)]; } -- (void)updateDownloadItemView { - [progressView_ setNeedsDisplay:YES]; -} - - (void)clearDangerousMode { [self setState:kNormal]; // The state change hide the dangerouse download view and is now showing the
diff --git a/chrome/browser/ui/cocoa/download/download_shelf_controller.mm b/chrome/browser/ui/cocoa/download/download_shelf_controller.mm index aef82b00..cc0cc76 100644 --- a/chrome/browser/ui/cocoa/download/download_shelf_controller.mm +++ b/chrome/browser/ui/cocoa/download/download_shelf_controller.mm
@@ -24,6 +24,7 @@ #include "content/public/browser/download_manager.h" #import "third_party/google_toolbox_for_mac/src/AppKit/GTMNSAnimation+Duration.h" #import "ui/base/cocoa/hover_button.h" +#import "ui/base/cocoa/nsview_additions.h" using content::DownloadItem; @@ -83,7 +84,6 @@ - (void)removeTrackingArea; - (void)willEnterFullscreen; - (void)didExitFullscreen; -- (void)updateDownloadItemView; - (void)updateCloseButton; @end @@ -482,12 +482,8 @@ - (void)didExitFullscreen { isFullscreen_ = NO; [self updateCloseButton]; - [self updateDownloadItemView]; -} - -- (void)updateDownloadItemView { for (DownloadItemController* controller in downloadItemControllers_.get()) - [controller updateDownloadItemView]; + [[controller view] cr_recursivelySetNeedsDisplay:YES]; } - (void)updateCloseButton {
diff --git a/chrome/browser/ui/cocoa/task_manager_mac.mm b/chrome/browser/ui/cocoa/task_manager_mac.mm index 99dabac..bb8342f 100644 --- a/chrome/browser/ui/cocoa/task_manager_mac.mm +++ b/chrome/browser/ui/cocoa/task_manager_mac.mm
@@ -150,11 +150,7 @@ // Sort. [self sortShuffleArray]; - // Clear the selection and reload the NSTableView. Note that it is important - // to clear the selection before reloading the data, and to reload the - // selection after reloading the data, because otherwise the table will adjust - // the selection in ways that are not desirable. - [tableView_ deselectAll:nil]; + // Reload the data. [tableView_ reloadData]; // Reload the selection.
diff --git a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc index e8e44241..d897d5d 100644 --- a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc +++ b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
@@ -9,6 +9,7 @@ #include "components/constrained_window/constrained_window_views.h" #if defined(USE_AURA) +#include "base/run_loop.h" #include "content/public/common/mojo_shell_connection.h" #include "services/shell/public/cpp/connector.h" #include "services/shell/runner/common/client_util.h" @@ -46,21 +47,24 @@ #endif } -void ChromeBrowserMainExtraPartsViews::PreProfileInit() { +void ChromeBrowserMainExtraPartsViews::MojoShellConnectionStarted( + content::MojoShellConnection* connection) { + DCHECK(connection); #if defined(USE_AURA) - content::MojoShellConnection* mojo_shell_connection = - content::MojoShellConnection::GetForProcess(); - if (mojo_shell_connection && shell::ShellIsRemote()) { + if (shell::ShellIsRemote()) { + // TODO(rockot): Remove the blocking wait for init. + // http://crbug.com/594852. + base::RunLoop wait_loop; + connection->SetInitializeHandler(wait_loop.QuitClosure()); + wait_loop.Run(); + input_device_client_.reset(new ui::InputDeviceClient()); ui::mojom::InputDeviceServerPtr server; - mojo_shell_connection->GetConnector()->ConnectToInterface("mojo:ui", - &server); + connection->GetConnector()->ConnectToInterface("mojo:ui", &server); input_device_client_->Connect(std::move(server)); window_manager_connection_ = views::WindowManagerConnection::Create( - mojo_shell_connection->GetConnector(), - mojo_shell_connection->GetIdentity()); + connection->GetConnector(), connection->GetIdentity()); } #endif // defined(USE_AURA) - ChromeBrowserMainExtraParts::PreProfileInit(); }
diff --git a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h index 11785f5b..d5f9895a 100644 --- a/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h +++ b/chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h
@@ -33,7 +33,8 @@ // Overridden from ChromeBrowserMainExtraParts: void ToolkitInitialized() override; void PreCreateThreads() override; - void PreProfileInit() override; + void MojoShellConnectionStarted( + content::MojoShellConnection* connection) override; private: std::unique_ptr<views::ViewsDelegate> views_delegate_;
diff --git a/chrome/browser/ui/webui/chromeos/first_run/first_run_ui.cc b/chrome/browser/ui/webui/chromeos/first_run/first_run_ui.cc index 03e50bc1..f7654dd 100644 --- a/chrome/browser/ui/webui/chromeos/first_run/first_run_ui.cc +++ b/chrome/browser/ui/webui/chromeos/first_run/first_run_ui.cc
@@ -61,9 +61,19 @@ "transitionsEnabled", base::CommandLine::ForCurrentProcess()->HasSwitch( chromeos::switches::kEnableFirstRunUITransitions)); - const std::string& shelf_alignment = - ash::Shelf::ForPrimaryDisplay()->SelectValueForShelfAlignment( - kShelfAlignmentBottom, kShelfAlignmentLeft, kShelfAlignmentRight); + std::string shelf_alignment; + switch (ash::Shelf::ForPrimaryDisplay()->alignment()) { + case ash::SHELF_ALIGNMENT_BOTTOM: + case ash::SHELF_ALIGNMENT_BOTTOM_LOCKED: + shelf_alignment = kShelfAlignmentBottom; + break; + case ash::SHELF_ALIGNMENT_LEFT: + shelf_alignment = kShelfAlignmentLeft; + break; + case ash::SHELF_ALIGNMENT_RIGHT: + shelf_alignment = kShelfAlignmentRight; + break; + } localized_strings->SetString("shelfAlignment", shelf_alignment); }
diff --git a/chrome/browser/ui/window_sizer/window_sizer_ash_uitest.cc b/chrome/browser/ui/window_sizer/window_sizer_ash_uitest.cc index b230bb2..862f602 100644 --- a/chrome/browser/ui/window_sizer/window_sizer_ash_uitest.cc +++ b/chrome/browser/ui/window_sizer/window_sizer_ash_uitest.cc
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "ash/common/shelf/shelf_view.h" #include "ash/shelf/shelf.h" -#include "ash/shelf/shelf_view.h" #include "ash/shell.h" #include "ash/test/shelf_test_api.h" #include "base/command_line.h"
diff --git a/chrome/browser/win/chrome_elf_init.cc b/chrome/browser/win/chrome_elf_init.cc index 5c091296..d954dbe4 100644 --- a/chrome/browser/win/chrome_elf_init.cc +++ b/chrome/browser/win/chrome_elf_init.cc
@@ -18,6 +18,7 @@ #include "chrome_elf/dll_hash/dll_hash.h" #include "components/variations/variations_associated_data.h" #include "content/public/browser/browser_thread.h" +#include "content/public/common/content_features.h" const char kBrowserBlacklistTrialName[] = "BrowserBlacklist"; const char kBrowserBlacklistTrialDisabledGroupName[] = "NoBlacklist"; @@ -109,6 +110,22 @@ FROM_HERE, base::Bind(&ReportSuccessfulBlocks), base::TimeDelta::FromSeconds(kBlacklistReportingDelaySec)); + + // Make sure the early finch emergency "off switch" for + // sandbox::MITIGATION_EXTENSION_POINT_DISABLE is set properly in reg. + // Note: the very existence of this key signals elf to not enable + // this mitigation on browser next start. + base::win::RegKey finch_security_registry_key( + HKEY_CURRENT_USER, elf_sec::kRegSecurityFinchPath, KEY_READ); + + if (base::FeatureList::IsEnabled(features::kWinSboxDisableExtensionPoints)) { + if (finch_security_registry_key.Valid()) + finch_security_registry_key.DeleteKey(L""); + } else { + if (!finch_security_registry_key.Valid()) + finch_security_registry_key.Create( + HKEY_CURRENT_USER, elf_sec::kRegSecurityFinchPath, KEY_WRITE); + } } void BrowserBlacklistBeaconSetup() {
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 87e8bd7a..fd2e766c 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi
@@ -1342,6 +1342,10 @@ 'test/chromedriver/chrome/network_conditions_override_manager.h', 'test/chromedriver/chrome/network_list.cc', 'test/chromedriver/chrome/network_list.h', + 'test/chromedriver/chrome/non_blocking_navigation_tracker.cc', + 'test/chromedriver/chrome/non_blocking_navigation_tracker.h', + 'test/chromedriver/chrome/page_load_strategy.cc', + 'test/chromedriver/chrome/page_load_strategy.h', 'test/chromedriver/chrome/status.cc', 'test/chromedriver/chrome/status.h', 'test/chromedriver/chrome/ui_events.cc',
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 5267c37..b422311 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc
@@ -218,9 +218,6 @@ // Disables Domain Reliability Monitoring. const char kDisableDomainReliability[] = "disable-domain-reliability"; -// Disable download notification. -const char kDisableDownloadNotification[] = "disable-download-notification"; - // Disable extensions. const char kDisableExtensions[] = "disable-extensions";
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index 06999e1..49aa1130 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h
@@ -73,7 +73,6 @@ extern const char kDisableDefaultApps[]; extern const char kDisableDeviceDiscoveryNotifications[]; extern const char kDisableDomainReliability[]; -extern const char kDisableDownloadNotification[]; extern const char kDisableExtensions[]; extern const char kDisableExtensionsFileAccessCheck[]; extern const char kDisableExtensionsHttpThrottling[];
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index 11fd9c5..38364ef 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -439,6 +439,11 @@ WebSecurityPolicy::addSchemeToBypassSecureContextWhitelist( WebString::fromUTF8(scheme)); } + +#if defined(OS_CHROMEOS) + leak_detector_remote_client_.reset(new LeakDetectorRemoteClient()); + thread->AddObserver(leak_detector_remote_client_.get()); +#endif } void ChromeContentRendererClient::RenderFrameCreated(
diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h index 56a5b241..4adf285d 100644 --- a/chrome/renderer/chrome_content_renderer_client.h +++ b/chrome/renderer/chrome_content_renderer_client.h
@@ -20,6 +20,10 @@ #include "ipc/ipc_channel_proxy.h" #include "v8/include/v8.h" +#if defined (OS_CHROMEOS) +#include "chrome/renderer/leak_detector/leak_detector_remote_client.h" +#endif + class ChromeRenderThreadObserver; #if defined(ENABLE_PRINT_PREVIEW) class ChromePDFPrintClient; @@ -228,6 +232,10 @@ std::set<std::string> allowed_camera_device_origins_; std::set<std::string> allowed_compositor_origins_; #endif + +#if defined(OS_CHROMEOS) + std::unique_ptr<LeakDetectorRemoteClient> leak_detector_remote_client_; +#endif }; #endif // CHROME_RENDERER_CHROME_CONTENT_RENDERER_CLIENT_H_
diff --git a/chrome/renderer/leak_detector/leak_detector_remote_client.cc b/chrome/renderer/leak_detector/leak_detector_remote_client.cc index f22f732..80e65ff8 100644 --- a/chrome/renderer/leak_detector/leak_detector_remote_client.cc +++ b/chrome/renderer/leak_detector/leak_detector_remote_client.cc
@@ -28,17 +28,6 @@ metrics::LeakDetector::GetInstance()->RemoveObserver(this); } -void LeakDetectorRemoteClient::OnParamsReceived( - mojo::StructPtr<metrics::mojom::LeakDetectorParams> result) { - metrics::MemoryLeakReportProto::Params params; - metrics::leak_detector::protobuf_to_mojo_converter::MojoToParams(*result, - ¶ms); - - metrics::LeakDetector* detector = metrics::LeakDetector::GetInstance(); - detector->AddObserver(this); - detector->Init(params, base::ThreadTaskRunnerHandle::Get()); -} - void LeakDetectorRemoteClient::OnLeaksFound( const std::vector<metrics::MemoryLeakReportProto>& reports) { std::vector<mojo::StructPtr<metrics::mojom::MemoryLeakReport>> result; @@ -53,3 +42,20 @@ remote_service_->SendLeakReports(std::move(result)); } + +void LeakDetectorRemoteClient::OnRenderProcessShutdown() { + remote_service_.reset(); +} + +void LeakDetectorRemoteClient::OnParamsReceived( + mojo::StructPtr<metrics::mojom::LeakDetectorParams> result) { + metrics::MemoryLeakReportProto::Params params; + metrics::leak_detector::protobuf_to_mojo_converter::MojoToParams(*result, + ¶ms); + + if (params.sampling_rate() > 0) { + metrics::LeakDetector* detector = metrics::LeakDetector::GetInstance(); + detector->AddObserver(this); + detector->Init(params, base::ThreadTaskRunnerHandle::Get()); + } +}
diff --git a/chrome/renderer/leak_detector/leak_detector_remote_client.h b/chrome/renderer/leak_detector/leak_detector_remote_client.h index 73c8dd0..5bcb5ad7 100644 --- a/chrome/renderer/leak_detector/leak_detector_remote_client.h +++ b/chrome/renderer/leak_detector/leak_detector_remote_client.h
@@ -8,8 +8,10 @@ #include "base/macros.h" #include "components/metrics/leak_detector/leak_detector.h" #include "components/metrics/leak_detector/leak_detector.mojom.h" +#include "content/public/renderer/render_thread_observer.h" -class LeakDetectorRemoteClient : public metrics::LeakDetector::Observer { +class LeakDetectorRemoteClient : public content::RenderThreadObserver, + public metrics::LeakDetector::Observer { public: LeakDetectorRemoteClient(); ~LeakDetectorRemoteClient() override; @@ -19,6 +21,9 @@ const std::vector<metrics::MemoryLeakReportProto>& reports) override; private: + // contents::RenderThreadObserver: + void OnRenderProcessShutdown() override; + // Callback for remote function LeakDetectorRemote::GetParams(). void OnParamsReceived( mojo::StructPtr<metrics::mojom::LeakDetectorParams> result);
diff --git a/chrome/renderer/loadtimes_extension_bindings.cc b/chrome/renderer/loadtimes_extension_bindings.cc index 61d54a9f..2b62595 100644 --- a/chrome/renderer/loadtimes_extension_bindings.cc +++ b/chrome/renderer/loadtimes_extension_bindings.cc
@@ -109,7 +109,10 @@ static void LoadtimesGetter( v8::Local<v8::Name> name, const v8::PropertyCallbackInfo<v8::Value>& info) { - // TODO(panicker): Add Usage counter. + if (WebLocalFrame* frame = WebLocalFrame::frameForCurrentContext()) { + frame->usageCountChromeLoadTimes(blink::WebString::fromUTF8( + *v8::String::Utf8Value(name))); + } info.GetReturnValue().Set(info.Data()); }
diff --git a/chrome/test/chromedriver/capabilities.cc b/chrome/test/chromedriver/capabilities.cc index 820cf7d4..5ad8a490 100644 --- a/chrome/test/chromedriver/capabilities.cc +++ b/chrome/test/chromedriver/capabilities.cc
@@ -20,6 +20,7 @@ #include "base/values.h" #include "build/build_config.h" #include "chrome/test/chromedriver/chrome/mobile_device.h" +#include "chrome/test/chromedriver/chrome/page_load_strategy.h" #include "chrome/test/chromedriver/chrome/status.h" #include "chrome/test/chromedriver/logging.h" @@ -179,6 +180,16 @@ return Status(kOk); } +Status ParsePageLoadStrategy(const base::Value& option, + Capabilities* capabilities) { + if (!option.GetAsString(&capabilities->page_load_strategy)) + return Status(kUnknownError, "must be a string"); + if (capabilities->page_load_strategy == PageLoadStrategy::kNormal || + capabilities->page_load_strategy == PageLoadStrategy::kNone) + return Status(kOk); + return Status(kUnknownError, "page load strategy unsupported"); +} + Status ParseSwitches(const base::Value& option, Capabilities* capabilities) { const base::ListValue* switches_list = NULL; @@ -587,6 +598,7 @@ : android_use_running_app(false), detach(false), force_devtools_screenshot(false), + page_load_strategy(PageLoadStrategy::kNormal), network_emulation_enabled(false) {} Capabilities::~Capabilities() {} @@ -604,6 +616,7 @@ parser_map["chromeOptions"] = base::Bind(&ParseChromeOptions); parser_map["loggingPrefs"] = base::Bind(&ParseLoggingPrefs); parser_map["proxy"] = base::Bind(&ParseProxy); + parser_map["pageLoadStrategy"] = base::Bind(&ParsePageLoadStrategy); // Network emulation requires device mode, which is only enabled when // mobile emulation is on. if (desired_caps.GetDictionary("chromeOptions.mobileEmulation", nullptr)) {
diff --git a/chrome/test/chromedriver/capabilities.h b/chrome/test/chromedriver/capabilities.h index c11bd4b..49a3a72 100644 --- a/chrome/test/chromedriver/capabilities.h +++ b/chrome/test/chromedriver/capabilities.h
@@ -142,6 +142,8 @@ // If set, enable minidump for chrome crashes and save to this directory. std::string minidump_path; + std::string page_load_strategy; + bool network_emulation_enabled; PerfLoggingPrefs perf_logging_prefs;
diff --git a/chrome/test/chromedriver/chrome/chrome.h b/chrome/test/chromedriver/chrome/chrome.h index a0957df..2dd3e83 100644 --- a/chrome/test/chromedriver/chrome/chrome.h +++ b/chrome/test/chromedriver/chrome/chrome.h
@@ -47,6 +47,10 @@ // actions can be performed on it. virtual bool HasTouchScreen() const = 0; + virtual std::string page_load_strategy() const = 0; + + virtual void set_page_load_strategy(std::string strategy) = 0; + // Quits Chrome. virtual Status Quit() = 0; };
diff --git a/chrome/test/chromedriver/chrome/chrome_desktop_impl.cc b/chrome/test/chromedriver/chrome/chrome_desktop_impl.cc index 65784da8..f59e7330 100644 --- a/chrome/test/chromedriver/chrome/chrome_desktop_impl.cc +++ b/chrome/test/chromedriver/chrome/chrome_desktop_impl.cc
@@ -147,7 +147,8 @@ } std::unique_ptr<WebView> web_view_tmp( new WebViewImpl(id, devtools_http_client_->browser_info(), - devtools_http_client_->CreateClient(id), device_metrics)); + devtools_http_client_->CreateClient(id), device_metrics, + page_load_strategy())); Status status = web_view_tmp->ConnectIfNecessary(); if (status.IsError()) return status;
diff --git a/chrome/test/chromedriver/chrome/chrome_impl.cc b/chrome/test/chromedriver/chrome/chrome_impl.cc index 28c7728..8c18185 100644 --- a/chrome/test/chromedriver/chrome/chrome_impl.cc +++ b/chrome/test/chromedriver/chrome/chrome_impl.cc
@@ -10,6 +10,7 @@ #include "chrome/test/chromedriver/chrome/devtools_client.h" #include "chrome/test/chromedriver/chrome/devtools_event_listener.h" #include "chrome/test/chromedriver/chrome/devtools_http_client.h" +#include "chrome/test/chromedriver/chrome/page_load_strategy.h" #include "chrome/test/chromedriver/chrome/status.h" #include "chrome/test/chromedriver/chrome/web_view_impl.h" #include "chrome/test/chromedriver/net/port_server.h" @@ -78,7 +79,7 @@ } web_views_.push_back(make_linked_ptr(new WebViewImpl( view.id, devtools_http_client_->browser_info(), std::move(client), - devtools_http_client_->device_metrics()))); + devtools_http_client_->device_metrics(), page_load_strategy_))); } } } @@ -129,6 +130,15 @@ return false; } +std::string ChromeImpl::page_load_strategy() const { + return page_load_strategy_; +} + +void ChromeImpl::set_page_load_strategy(std::string strategy) { + // Support for page load strategy already checked when capability is parsed. + page_load_strategy_ = strategy; +} + Status ChromeImpl::Quit() { Status status = QuitImpl(); if (status.IsOk()) @@ -144,6 +154,7 @@ : quit_(false), devtools_http_client_(std::move(http_client)), devtools_websocket_client_(std::move(websocket_client)), + page_load_strategy_(PageLoadStrategy::kNormal), port_reservation_(std::move(port_reservation)) { devtools_event_listeners_.swap(devtools_event_listeners); }
diff --git a/chrome/test/chromedriver/chrome/chrome_impl.h b/chrome/test/chromedriver/chrome/chrome_impl.h index fd4a20da..961eb892 100644 --- a/chrome/test/chromedriver/chrome/chrome_impl.h +++ b/chrome/test/chromedriver/chrome/chrome_impl.h
@@ -40,6 +40,8 @@ Status ActivateWebView(const std::string& id) override; bool IsMobileEmulationEnabled() const override; bool HasTouchScreen() const override; + std::string page_load_strategy() const override; + void set_page_load_strategy(std::string strategy) override; Status Quit() override; protected: @@ -55,6 +57,7 @@ std::unique_ptr<DevToolsClient> devtools_websocket_client_; private: + std::string page_load_strategy_; typedef std::list<linked_ptr<WebViewImpl> > WebViewList; // Web views in this list are in the same order as they are opened.
diff --git a/chrome/test/chromedriver/chrome/devtools_http_client.cc b/chrome/test/chromedriver/chrome/devtools_http_client.cc index 5174512..34023ae 100644 --- a/chrome/test/chromedriver/chrome/devtools_http_client.cc +++ b/chrome/test/chromedriver/chrome/devtools_http_client.cc
@@ -70,14 +70,16 @@ scoped_refptr<URLRequestContextGetter> context_getter, const SyncWebSocketFactory& socket_factory, std::unique_ptr<DeviceMetrics> device_metrics, - std::unique_ptr<std::set<WebViewInfo::Type>> window_types) + std::unique_ptr<std::set<WebViewInfo::Type>> window_types, + std::string page_load_strategy) : context_getter_(context_getter), socket_factory_(socket_factory), server_url_("http://" + address.ToString()), web_socket_url_prefix_(base::StringPrintf("ws://%s/devtools/page/", address.ToString().c_str())), device_metrics_(std::move(device_metrics)), - window_types_(std::move(window_types)) { + window_types_(std::move(window_types)), + page_load_strategy_(page_load_strategy) { window_types_->insert(WebViewInfo::kPage); window_types_->insert(WebViewInfo::kApp); } @@ -203,7 +205,8 @@ std::unique_ptr<DevToolsClient> client(new DevToolsClientImpl( socket_factory_, web_socket_url_prefix_ + *it, *it)); std::unique_ptr<WebViewImpl> web_view( - new WebViewImpl(*it, &browser_info_, std::move(client), NULL)); + new WebViewImpl(*it, &browser_info_, std::move(client), NULL, + page_load_strategy_)); status = web_view->ConnectIfNecessary(); // Ignore disconnected error, because the debugger might have closed when
diff --git a/chrome/test/chromedriver/chrome/devtools_http_client.h b/chrome/test/chromedriver/chrome/devtools_http_client.h index b009d9ef..93e55476 100644 --- a/chrome/test/chromedriver/chrome/devtools_http_client.h +++ b/chrome/test/chromedriver/chrome/devtools_http_client.h
@@ -75,7 +75,8 @@ scoped_refptr<URLRequestContextGetter> context_getter, const SyncWebSocketFactory& socket_factory, std::unique_ptr<DeviceMetrics> device_metrics, - std::unique_ptr<std::set<WebViewInfo::Type>> window_types); + std::unique_ptr<std::set<WebViewInfo::Type>> window_types, + std::string page_load_strategy); ~DevToolsHttpClient(); Status Init(const base::TimeDelta& timeout); @@ -105,6 +106,7 @@ BrowserInfo browser_info_; std::unique_ptr<DeviceMetrics> device_metrics_; std::unique_ptr<std::set<WebViewInfo::Type>> window_types_; + std::string page_load_strategy_; DISALLOW_COPY_AND_ASSIGN(DevToolsHttpClient); };
diff --git a/chrome/test/chromedriver/chrome/navigation_tracker.h b/chrome/test/chromedriver/chrome/navigation_tracker.h index 663a3cd..f6bac2c9 100644 --- a/chrome/test/chromedriver/chrome/navigation_tracker.h +++ b/chrome/test/chromedriver/chrome/navigation_tracker.h
@@ -12,6 +12,7 @@ #include "base/compiler_specific.h" #include "base/macros.h" #include "chrome/test/chromedriver/chrome/devtools_event_listener.h" +#include "chrome/test/chromedriver/chrome/page_load_strategy.h" #include "chrome/test/chromedriver/chrome/status.h" namespace base { @@ -25,14 +26,9 @@ class Timeout; // Tracks the navigation state of the page. -class NavigationTracker : public DevToolsEventListener { +class NavigationTracker : public DevToolsEventListener, + public PageLoadStrategy { public: - enum LoadingState { - kUnknown, - kLoading, - kNotLoading, - }; - NavigationTracker(DevToolsClient* client, const BrowserInfo* browser_info, const JavaScriptDialogManager* dialog_manager); @@ -44,16 +40,16 @@ ~NavigationTracker() override; + // Overriden from PageLoadStrategy: // Gets whether a navigation is pending for the specified frame. |frame_id| // may be empty to signify the main frame. Status IsPendingNavigation(const std::string& frame_id, const Timeout* timeout, - bool* is_pending); + bool* is_pending) override; + void set_timed_out(bool timed_out) override; Status CheckFunctionExists(const Timeout* timeout, bool* exists); - void set_timed_out(bool timed_out); - // Overridden from DevToolsEventListener: Status OnConnected(DevToolsClient* client) override; Status OnEvent(DevToolsClient* client,
diff --git a/chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.cc b/chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.cc new file mode 100644 index 0000000..9619c19 --- /dev/null +++ b/chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.cc
@@ -0,0 +1,17 @@ +// Copyright (c) 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.h" + +NonBlockingNavigationTracker::~NonBlockingNavigationTracker() {} + +Status NonBlockingNavigationTracker::IsPendingNavigation( + const std::string& frame_id, + const Timeout* timeout, + bool* is_pending) { + *is_pending = false; + return Status(kOk); +} + +void NonBlockingNavigationTracker::set_timed_out(bool timed_out) {}
diff --git a/chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.h b/chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.h new file mode 100644 index 0000000..87c8c201 --- /dev/null +++ b/chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.h
@@ -0,0 +1,26 @@ +// Copyright (c) 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_TEST_CHROMEDRIVER_CHROME_NON_BLOCKING_NAVIGATION_TRACKER_H_ +#define CHROME_TEST_CHROMEDRIVER_CHROME_NON_BLOCKING_NAVIGATION_TRACKER_H_ + +#include "chrome/test/chromedriver/chrome/page_load_strategy.h" + +class Timeout; +class Status; + +class NonBlockingNavigationTracker : public PageLoadStrategy { +public: + NonBlockingNavigationTracker() {} + + ~NonBlockingNavigationTracker() override; + + // Overriden from PageLoadStrategy: + Status IsPendingNavigation(const std::string& frame_id, + const Timeout* timeout, + bool* is_pending) override; + void set_timed_out(bool timed_out) override; +}; + +#endif // CHROME_TEST_CHROMEDRIVER_CHROME_NON_BLOCKING_NAVIGATION_TRACKER_H_
diff --git a/chrome/test/chromedriver/chrome/page_load_strategy.cc b/chrome/test/chromedriver/chrome/page_load_strategy.cc new file mode 100644 index 0000000..081e410b --- /dev/null +++ b/chrome/test/chromedriver/chrome/page_load_strategy.cc
@@ -0,0 +1,28 @@ +// Copyright (c) 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/test/chromedriver/chrome/page_load_strategy.h" + +#include "base/logging.h" +#include "chrome/test/chromedriver/chrome/navigation_tracker.h" +#include "chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.h" + +const char PageLoadStrategy::kNormal[] = "normal"; +const char PageLoadStrategy::kNone[] = "none"; +const char PageLoadStrategy::kEager[] = "eager"; + +PageLoadStrategy* PageLoadStrategy::Create( + std::string strategy, + DevToolsClient* client, + const BrowserInfo* browser_info, + const JavaScriptDialogManager* dialog_manager) { + if (strategy == kNone) { + return new NonBlockingNavigationTracker(); + } else if (strategy == kNormal) { + return new NavigationTracker(client, browser_info, dialog_manager); + } else { + NOTREACHED() << "invalid strategy '" << strategy << "'"; + return nullptr; + } +}
diff --git a/chrome/test/chromedriver/chrome/page_load_strategy.h b/chrome/test/chromedriver/chrome/page_load_strategy.h new file mode 100644 index 0000000..03e29f7 --- /dev/null +++ b/chrome/test/chromedriver/chrome/page_load_strategy.h
@@ -0,0 +1,45 @@ +// Copyright (c) 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_TEST_CHROMEDRIVER_CHROME_PAGE_LOAD_STRATEGY_H_ +#define CHROME_TEST_CHROMEDRIVER_CHROME_PAGE_LOAD_STRATEGY_H_ + +#include "chrome/test/chromedriver/chrome/status.h" + +struct BrowserInfo; +class DevToolsClient; +class JavaScriptDialogManager; +class Status; +class Timeout; + +class PageLoadStrategy { + +public: + enum LoadingState { + kUnknown, + kLoading, + kNotLoading, + }; + + virtual ~PageLoadStrategy() {} + + static PageLoadStrategy* Create( + std::string strategy, + DevToolsClient* client, + const BrowserInfo* browser_info, + const JavaScriptDialogManager* dialog_manager); + + virtual Status IsPendingNavigation(const std::string& frame_id, + const Timeout* timeout, + bool* is_pending) = 0; + + virtual void set_timed_out(bool timed_out) = 0; + + // Types of page load strategies. + static const char kNormal[]; + static const char kNone[]; + static const char kEager[]; +}; + +#endif // CHROME_TEST_CHROMEDRIVER_CHROME_PAGE_LOAD_STRATEGY_H_
diff --git a/chrome/test/chromedriver/chrome/stub_chrome.cc b/chrome/test/chromedriver/chrome/stub_chrome.cc index 513044a1..b08e7e2b 100644 --- a/chrome/test/chromedriver/chrome/stub_chrome.cc +++ b/chrome/test/chromedriver/chrome/stub_chrome.cc
@@ -50,6 +50,12 @@ return false; } +std::string StubChrome::page_load_strategy() const { + return std::string(); +} + +void StubChrome::set_page_load_strategy(std::string strategy) {} + Status StubChrome::Quit() { return Status(kOk); }
diff --git a/chrome/test/chromedriver/chrome/stub_chrome.h b/chrome/test/chromedriver/chrome/stub_chrome.h index bef77d8..7a4ffad 100644 --- a/chrome/test/chromedriver/chrome/stub_chrome.h +++ b/chrome/test/chromedriver/chrome/stub_chrome.h
@@ -31,6 +31,8 @@ std::string GetOperatingSystemName() override; bool IsMobileEmulationEnabled() const override; bool HasTouchScreen() const override; + std::string page_load_strategy() const override; + void set_page_load_strategy(std::string strategy) override; Status Quit() override; private:
diff --git a/chrome/test/chromedriver/chrome/web_view_impl.cc b/chrome/test/chromedriver/chrome/web_view_impl.cc index 709e0ff7..27ad54f0 100644 --- a/chrome/test/chromedriver/chrome/web_view_impl.cc +++ b/chrome/test/chromedriver/chrome/web_view_impl.cc
@@ -28,6 +28,8 @@ #include "chrome/test/chromedriver/chrome/mobile_emulation_override_manager.h" #include "chrome/test/chromedriver/chrome/navigation_tracker.h" #include "chrome/test/chromedriver/chrome/network_conditions_override_manager.h" +#include "chrome/test/chromedriver/chrome/non_blocking_navigation_tracker.h" +#include "chrome/test/chromedriver/chrome/page_load_strategy.h" #include "chrome/test/chromedriver/chrome/status.h" #include "chrome/test/chromedriver/chrome/ui_events.h" #include "chrome/test/chromedriver/net/timeout.h" @@ -123,15 +125,16 @@ WebViewImpl::WebViewImpl(const std::string& id, const BrowserInfo* browser_info, std::unique_ptr<DevToolsClient> client, - const DeviceMetrics* device_metrics) + const DeviceMetrics* device_metrics, + std::string page_load_strategy) : id_(id), browser_info_(browser_info), dom_tracker_(new DomTracker(client.get())), frame_tracker_(new FrameTracker(client.get())), dialog_manager_(new JavaScriptDialogManager(client.get())), - navigation_tracker_(new NavigationTracker(client.get(), - browser_info, - dialog_manager_.get())), + navigation_tracker_(PageLoadStrategy::Create( + page_load_strategy, client.get(), + browser_info, dialog_manager_.get())), mobile_emulation_override_manager_( new MobileEmulationOverrideManager(client.get(), device_metrics)), geolocation_override_manager_( @@ -278,8 +281,7 @@ std::unique_ptr<base::Value> temp_result; Status status = EvaluateScript(frame, expression, &temp_result); if (status.IsError()) - return status; - + return status; return internal::ParseCallFunctionResult(*temp_result, result); }
diff --git a/chrome/test/chromedriver/chrome/web_view_impl.h b/chrome/test/chromedriver/chrome/web_view_impl.h index 4bb821d..b326c46 100644 --- a/chrome/test/chromedriver/chrome/web_view_impl.h +++ b/chrome/test/chromedriver/chrome/web_view_impl.h
@@ -32,6 +32,8 @@ struct KeyEvent; struct MouseEvent; class NavigationTracker; +class NonBlockingNavigationTracker; +class PageLoadStrategy; class Status; class WebViewImpl : public WebView { @@ -42,7 +44,8 @@ WebViewImpl(const std::string& id, const BrowserInfo* browser_info, std::unique_ptr<DevToolsClient> client, - const DeviceMetrics* device_metrics); + const DeviceMetrics* device_metrics, + std::string page_load_strategy); ~WebViewImpl() override; // Overridden from WebView: @@ -129,7 +132,7 @@ std::unique_ptr<DomTracker> dom_tracker_; std::unique_ptr<FrameTracker> frame_tracker_; std::unique_ptr<JavaScriptDialogManager> dialog_manager_; - std::unique_ptr<NavigationTracker> navigation_tracker_; + std::unique_ptr<PageLoadStrategy> navigation_tracker_; std::unique_ptr<MobileEmulationOverrideManager> mobile_emulation_override_manager_; std::unique_ptr<GeolocationOverrideManager> geolocation_override_manager_;
diff --git a/chrome/test/chromedriver/chrome_launcher.cc b/chrome/test/chromedriver/chrome_launcher.cc index 1a74e442..0e257d0 100644 --- a/chrome/test/chromedriver/chrome_launcher.cc +++ b/chrome/test/chromedriver/chrome_launcher.cc
@@ -197,7 +197,7 @@ std::unique_ptr<DevToolsHttpClient> client(new DevToolsHttpClient( address, context_getter, socket_factory, std::move(device_metrics), - std::move(window_types))); + std::move(window_types), capabilities->page_load_strategy)); base::TimeTicks deadline = base::TimeTicks::Now() + base::TimeDelta::FromSeconds(60); Status status = client->Init(deadline - base::TimeTicks::Now()); @@ -289,7 +289,7 @@ std::unique_ptr<DevToolsHttpClient> devtools_http_client; status = WaitForDevToolsAndCheckVersion( capabilities.debugger_address, context_getter, socket_factory, - NULL, &devtools_http_client); + &capabilities, &devtools_http_client); if (status.IsError()) { return Status(kUnknownError, "cannot connect to chrome at " + capabilities.debugger_address.ToString(),
diff --git a/chrome/test/chromedriver/client/chromedriver.py b/chrome/test/chromedriver/client/chromedriver.py index baa09ff..44b9216 100644 --- a/chrome/test/chromedriver/client/chromedriver.py +++ b/chrome/test/chromedriver/client/chromedriver.py
@@ -72,7 +72,8 @@ chrome_extensions=None, chrome_log_path=None, debugger_address=None, logging_prefs=None, mobile_emulation=None, experimental_options=None, - download_dir=None, network_connection=None): + download_dir=None, page_load_strategy=None, + network_connection=None): self._executor = command_executor.CommandExecutor(server_url) options = {} @@ -144,6 +145,10 @@ } } + if page_load_strategy: + assert type(page_load_strategy) is str + params['desiredCapabilities']['pageLoadStrategy'] = page_load_strategy + if network_connection: params['desiredCapabilities']['networkConnectionEnabled'] = ( network_connection)
diff --git a/chrome/test/chromedriver/session_commands.cc b/chrome/test/chromedriver/session_commands.cc index 55b7d6c..096ad75 100644 --- a/chrome/test/chromedriver/session_commands.cc +++ b/chrome/test/chromedriver/session_commands.cc
@@ -97,6 +97,7 @@ caps->SetString("version", chrome->GetBrowserInfo()->browser_version); caps->SetString("chrome.chromedriverVersion", kChromeDriverVersion); caps->SetString("platform", chrome->GetOperatingSystemName()); + caps->SetString("pageLoadStrategy", chrome->page_load_strategy()); caps->SetBoolean("javascriptEnabled", true); caps->SetBoolean("takesScreenshot", true); caps->SetBoolean("takesHeapSnapshot", true); @@ -199,6 +200,8 @@ if (status.IsError()) return status; + session->chrome->set_page_load_strategy(capabilities.page_load_strategy); + std::list<std::string> web_view_ids; status = session->chrome->GetWebViewIds(&web_view_ids); if (status.IsError() || web_view_ids.empty()) {
diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py index a7a9827..c2ddc68 100755 --- a/chrome/test/chromedriver/test/run_py_tests.py +++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -72,6 +72,8 @@ 'ChromeDriverTest.testConsoleLogSources', # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1447 'ChromeDriverTest.testPendingConsoleLog', + # https://bugs.chromium.org/p/chromedriver/issues/detail?id=1450 + 'PerfTest.testColdExecuteScript', ] _OS_SPECIFIC_FILTER = {} @@ -555,6 +557,10 @@ alert_button.Click() self.assertTrue(self._driver.IsAlertOpen()) + def testPageLoadStrategyIsNormalByDefault(self): + self.assertEquals('normal', + self._driver.capabilities['pageLoadStrategy']) + def testClearElement(self): self._driver.Load(self.GetHttpUrlForFile('/chromedriver/empty.html')) text = self._driver.ExecuteScript( @@ -1730,6 +1736,35 @@ self.assertIn('hasTouchScreen', driver.capabilities) self.assertTrue(driver.capabilities['hasTouchScreen']) + def testDoesntWaitWhenPageLoadStrategyIsNone(self): + class HandleRequest(object): + def __init__(self): + self.sent_hello = threading.Event() + + def slowPage(self, request): + self.sent_hello.wait(2) + return {}, """ + <html> + <body>hello</body> + </html>""" + + handler = HandleRequest() + self._http_server.SetCallbackForPath('/slow', handler.slowPage) + + driver = self.CreateDriver(page_load_strategy='none') + self.assertEquals('none', driver.capabilities['pageLoadStrategy']) + + driver.Load(self._http_server.GetUrl() + '/chromedriver/empty.html') + driver.Load(self._http_server.GetUrl() + '/slow') + self.assertFalse('hello' in driver.GetPageSource()) + handler.sent_hello.set() + self.WaitForCondition(lambda: 'hello' in driver.GetPageSource()) + self.assertTrue('hello' in driver.GetPageSource()) + + def testUnsupportedPageLoadStrategyRaisesException(self): + self.assertRaises(chromedriver.UnknownError, + self.CreateDriver, page_load_strategy="unsupported") + def testNetworkConnectionDisabledByDefault(self): driver = self.CreateDriver() self.assertFalse(driver.capabilities['networkConnectionEnabled'])
diff --git a/chromecast/base/BUILD.gn b/chromecast/base/BUILD.gn index ab77bca..bbc9bdd9 100644 --- a/chromecast/base/BUILD.gn +++ b/chromecast/base/BUILD.gn
@@ -41,6 +41,8 @@ "device_capabilities_impl.h", "error_codes.cc", "error_codes.h", + "file_utils.cc", + "file_utils.h", "init_command_line_shlib.cc", "init_command_line_shlib.h", "path_utils.cc",
diff --git a/chromecast/base/chromecast_switches.cc b/chromecast/base/chromecast_switches.cc index 8c1c586..d63c1c1 100644 --- a/chromecast/base/chromecast_switches.cc +++ b/chromecast/base/chromecast_switches.cc
@@ -17,9 +17,6 @@ // Enable the CMA media pipeline. const char kEnableCmaMediaPipeline[] = "enable-cma-media-pipeline"; -// The bitmask of codecs (media_caps.h) supported by the current HDMI sink. -const char kHdmiSinkSupportedCodecs[] = "hdmi-sink-supported-codecs"; - // Enable file accesses. It should not be enabled for most Cast devices. const char kEnableLocalFileAccesses[] = "enable-local-file-accesses";
diff --git a/chromecast/base/chromecast_switches.h b/chromecast/base/chromecast_switches.h index 8f44bc1..7fa69df 100644 --- a/chromecast/base/chromecast_switches.h +++ b/chromecast/base/chromecast_switches.h
@@ -17,7 +17,6 @@ // Media switches extern const char kEnableCmaMediaPipeline[]; -extern const char kHdmiSinkSupportedCodecs[]; // Content-implementation switches extern const char kEnableLocalFileAccesses[];
diff --git a/chromecast/base/file_utils.cc b/chromecast/base/file_utils.cc new file mode 100644 index 0000000..bd3ee2e --- /dev/null +++ b/chromecast/base/file_utils.cc
@@ -0,0 +1,47 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromecast/base/file_utils.h" + +#include <errno.h> +#include <fcntl.h> +#include <sys/file.h> + +namespace { + +// Calls flock on valid file descriptor |fd| with flag |flag|. Returns true +// on success, false on failure. +bool CallFlockOnFileWithFlag(const int fd, int flag) { + int ret = -1; + if ((ret = TEMP_FAILURE_RETRY(flock(fd, flag))) < 0) + PLOG(ERROR) << "Error locking " << fd; + + return !ret; +} + +} // namespace + +namespace chromecast { + +int OpenAndLockFile(const base::FilePath& path, bool write) { + int fd = -1; + const char* file = path.value().c_str(); + + if ((fd = open(file, write ? O_RDWR : O_RDONLY)) < 0) { + PLOG(ERROR) << "Error opening " << file; + } else if (!CallFlockOnFileWithFlag(fd, LOCK_EX)) { + close(fd); + fd = -1; + } + + return fd; +} + +bool UnlockAndCloseFile(const int fd) { + if (!CallFlockOnFileWithFlag(fd, LOCK_UN)) + return false; + return !close(fd); +} + +} // namespace chromecast
diff --git a/chromecast/base/file_utils.h b/chromecast/base/file_utils.h new file mode 100644 index 0000000..69fe23d --- /dev/null +++ b/chromecast/base/file_utils.h
@@ -0,0 +1,24 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_BASE_FILE_UTILS_H_ +#define CHROMECAST_BASE_FILE_UTILS_H_ + +#include "base/files/file_path.h" + +namespace chromecast { + +// Lock a file (blocking request) with filepath |path|. Returns the file +// descriptor on success, an invalid file descriptor (-1) on failure. Failure +// indicates that |path| does not exist, or the locking procedure failed. +// A true |write| value opens the file in RW mode, false opens in R-only. +int OpenAndLockFile(const base::FilePath& path, bool write); + +// Unlock a file (blocking request) denoted by file descriptor |fd|. Returns +// true on success, false on failure. +bool UnlockAndCloseFile(const int fd); + +} // namespace chromecast + +#endif // CHROMECAST_BASE_FILE_UTILS_H_ \ No newline at end of file
diff --git a/chromecast/browser/DEPS b/chromecast/browser/DEPS index 1d07025..f8b1264 100644 --- a/chromecast/browser/DEPS +++ b/chromecast/browser/DEPS
@@ -21,6 +21,7 @@ "+media/audio", "+media/base", "+media/mojo", + "+mojo/public", "+net", "+services/shell/public", "+ui/aura",
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc index 2849dfd..77fd003 100644 --- a/chromecast/browser/cast_browser_main_parts.cc +++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -33,6 +33,7 @@ #include "chromecast/browser/cast_net_log.h" #include "chromecast/browser/devtools/remote_debugging_server.h" #include "chromecast/browser/geolocation/cast_access_token_store.h" +#include "chromecast/browser/media/media_caps_impl.h" #include "chromecast/browser/metrics/cast_metrics_prefs.h" #include "chromecast/browser/metrics/cast_metrics_service_client.h" #include "chromecast/browser/pref_service_helper.h" @@ -266,7 +267,8 @@ cast_browser_process_(new CastBrowserProcess()), parameters_(parameters), url_request_context_factory_(url_request_context_factory), - net_log_(new CastNetLog()) { + net_log_(new CastNetLog()), + media_caps_(new media::MediaCapsImpl()) { base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); AddDefaultCommandLineSwitches(command_line); @@ -302,7 +304,9 @@ #else if (!media_thread_) { media_thread_.reset(new base::Thread("CastMediaThread")); - CHECK(media_thread_->Start()); + base::Thread::Options options; + options.priority = base::ThreadPriority::REALTIME_AUDIO; + CHECK(media_thread_->StartWithOptions(options)); } return media_thread_->task_runner(); #endif @@ -327,6 +331,10 @@ } #endif +media::MediaCapsImpl* CastBrowserMainParts::media_caps() { + return media_caps_.get(); +} + void CastBrowserMainParts::PreMainMessageLoopStart() { // GroupedHistograms needs to be initialized before any threads are created // to prevent race conditions between calls to Preregister and those threads
diff --git a/chromecast/browser/cast_browser_main_parts.h b/chromecast/browser/cast_browser_main_parts.h index 869c76bf..d6096047 100644 --- a/chromecast/browser/cast_browser_main_parts.h +++ b/chromecast/browser/cast_browser_main_parts.h
@@ -25,6 +25,7 @@ class CastMemoryPressureMonitor; namespace media { +class MediaCapsImpl; class MediaPipelineBackendManager; class MediaResourceTracker; class VideoPlaneController; @@ -47,6 +48,7 @@ media::MediaResourceTracker* media_resource_tracker(); media::MediaPipelineBackendManager* media_pipeline_backend_manager(); #endif + media::MediaCapsImpl* media_caps(); // content::BrowserMainParts implementation: void PreMainMessageLoopStart() override; @@ -64,6 +66,7 @@ URLRequestContextFactory* const url_request_context_factory_; std::unique_ptr<net::NetLog> net_log_; std::unique_ptr<media::VideoPlaneController> video_plane_controller_; + std::unique_ptr<media::MediaCapsImpl> media_caps_; #if !defined(OS_ANDROID) // CMA thread used by AudioManager, MojoRenderer, and MediaPipelineBackend.
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc index c221d09..699f550c 100644 --- a/chromecast/browser/cast_content_browser_client.cc +++ b/chromecast/browser/cast_content_browser_client.cc
@@ -18,6 +18,7 @@ #include "base/path_service.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" +#include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" #include "chromecast/base/cast_constants.h" #include "chromecast/base/cast_paths.h" @@ -29,6 +30,7 @@ #include "chromecast/browser/cast_quota_permission_context.h" #include "chromecast/browser/cast_resource_dispatcher_host_delegate.h" #include "chromecast/browser/media/cma_message_filter_host.h" +#include "chromecast/browser/media/media_caps_impl.h" #include "chromecast/browser/service/cast_service_simple.h" #include "chromecast/browser/url_request_context_factory.h" #include "chromecast/common/global_descriptors.h" @@ -50,6 +52,7 @@ #include "content/public/common/web_preferences.h" #include "net/ssl/ssl_cert_request_info.h" #include "net/url_request/url_request_context_getter.h" +#include "services/shell/public/cpp/interface_registry.h" #include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/gl/gl_switches.h" @@ -406,6 +409,15 @@ return false; } +void CastContentBrowserClient::ExposeInterfacesToRenderer( + ::shell::InterfaceRegistry* registry, + content::RenderProcessHost* render_process_host) { + registry->AddInterface( + base::Bind(&media::MediaCapsImpl::AddBinding, + base::Unretained(cast_browser_main_parts_->media_caps())), + base::ThreadTaskRunnerHandle::Get()); +} + void CastContentBrowserClient::RegisterInProcessMojoApplications( StaticMojoApplicationMap* apps) { #if defined(ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS)
diff --git a/chromecast/browser/cast_content_browser_client.h b/chromecast/browser/cast_content_browser_client.h index 8debbd2..4c2930f 100644 --- a/chromecast/browser/cast_content_browser_client.h +++ b/chromecast/browser/cast_content_browser_client.h
@@ -28,6 +28,10 @@ class MetricsService; } +namespace shell { +class InterfaceRegistry; +} + namespace chromecast { class CastService; @@ -137,6 +141,9 @@ int opener_render_view_id, int opener_render_frame_id, bool* no_javascript_access) override; + void ExposeInterfacesToRenderer( + ::shell::InterfaceRegistry* registry, + content::RenderProcessHost* render_process_host) override; void RegisterInProcessMojoApplications( StaticMojoApplicationMap* apps) override; #if defined(OS_ANDROID)
diff --git a/chromecast/browser/media/BUILD.gn b/chromecast/browser/media/BUILD.gn index 20a42da..94911c6 100644 --- a/chromecast/browser/media/BUILD.gn +++ b/chromecast/browser/media/BUILD.gn
@@ -8,6 +8,8 @@ sources = [ "cast_browser_cdm_factory.cc", "cast_browser_cdm_factory.h", + "media_caps_impl.cc", + "media_caps_impl.h", "media_pipeline_backend_factory.h", "media_pipeline_host.cc", "media_pipeline_host.h", @@ -34,6 +36,7 @@ "//base", "//chromecast/base", "//chromecast/common/media", + "//chromecast/common/media:interfaces", "//chromecast/media", "//content/public/browser", "//media",
diff --git a/chromecast/browser/media/media_caps_impl.cc b/chromecast/browser/media/media_caps_impl.cc new file mode 100644 index 0000000..ca4403a --- /dev/null +++ b/chromecast/browser/media/media_caps_impl.cc
@@ -0,0 +1,36 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromecast/browser/media/media_caps_impl.h" + +#include "chromecast/media/base/media_caps.h" + +namespace chromecast { +namespace media { + +MediaCapsImpl::MediaCapsImpl() : supported_codecs_bitmask_(0) {} + +MediaCapsImpl::~MediaCapsImpl() = default; + +void MediaCapsImpl::AddBinding(mojom::MediaCapsRequest request) { + bindings_.AddBinding(this, std::move(request)); +} + +void MediaCapsImpl::SetSupportedHdmiSinkCodecs( + unsigned int supported_codecs_bitmask) { + supported_codecs_bitmask_ = supported_codecs_bitmask; + + observers_.ForAllPtrs( + [supported_codecs_bitmask](mojom::MediaCapsObserver* observer) { + observer->SupportedHdmiSinkCodecsChanged(supported_codecs_bitmask); + }); +} + +void MediaCapsImpl::AddObserver(mojom::MediaCapsObserverPtr observer) { + observer->SupportedHdmiSinkCodecsChanged(supported_codecs_bitmask_); + observers_.AddPtr(std::move(observer)); +} + +} // namespace media +} // namespace chromecast
diff --git a/chromecast/browser/media/media_caps_impl.h b/chromecast/browser/media/media_caps_impl.h new file mode 100644 index 0000000..9e97969b --- /dev/null +++ b/chromecast/browser/media/media_caps_impl.h
@@ -0,0 +1,39 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_BROWSER_MEDIA_MEDIA_CAPS_IMPL_H_ +#define CHROMECAST_BROWSER_MEDIA_MEDIA_CAPS_IMPL_H_ + +#include "base/macros.h" +#include "chromecast/common/media/media_caps.mojom.h" +#include "mojo/public/cpp/bindings/binding_set.h" +#include "mojo/public/cpp/bindings/interface_ptr_set.h" + +namespace chromecast { +namespace media { + +class MediaCapsImpl : public mojom::MediaCaps { + public: + MediaCapsImpl(); + ~MediaCapsImpl() override; + + void AddBinding(mojom::MediaCapsRequest request); + + void SetSupportedHdmiSinkCodecs(unsigned int supported_codecs_bitmask); + + private: + // chromecast::mojom::MediaCaps implementation. + void AddObserver(mojom::MediaCapsObserverPtr observer) override; + + unsigned int supported_codecs_bitmask_; + mojo::InterfacePtrSet<mojom::MediaCapsObserver> observers_; + mojo::BindingSet<mojom::MediaCaps> bindings_; + + DISALLOW_COPY_AND_ASSIGN(MediaCapsImpl); +}; + +} // namespace media +} // namespace chromecast + +#endif // CHROMECAST_BROWSER_MEDIA_MEDIA_CAPS_IMPL_H_
diff --git a/chromecast/common/media/BUILD.gn b/chromecast/common/media/BUILD.gn index 8c296570..1f1938c 100644 --- a/chromecast/common/media/BUILD.gn +++ b/chromecast/common/media/BUILD.gn
@@ -3,6 +3,7 @@ # found in the LICENSE file. import("//chromecast/chromecast.gni") +import("//mojo/public/tools/bindings/mojom.gni") # CMA is not used on Android; exclude CMA-specific targets. enable_cma = !is_android @@ -24,12 +25,10 @@ "//media", ] - public_deps = [ - ":cast_messages", - ] - if (enable_cma) { - public_deps += [ ":cma_messages" ] + public_deps = [ + ":cma_messages", + ] } if (is_android) { @@ -49,15 +48,9 @@ } } -# GYP target: chromecast.gyp:cast_shell_common -source_set("cast_messages") { +mojom("interfaces") { sources = [ - "cast_message_generator.cc", - "cast_message_generator.h", - "cast_messages.h", - ] - deps = [ - "//ipc", + "media_caps.mojom", ] }
diff --git a/chromecast/common/media/DEPS b/chromecast/common/media/DEPS index 3b7e7cf..3064ab45 100644 --- a/chromecast/common/media/DEPS +++ b/chromecast/common/media/DEPS
@@ -2,4 +2,5 @@ "+chromecast/media", "+components/cdm/common", "+media/base", + "+mojo/public", ]
diff --git a/chromecast/common/media/OWNERS b/chromecast/common/media/OWNERS index cbf806a..71eafca 100644 --- a/chromecast/common/media/OWNERS +++ b/chromecast/common/media/OWNERS
@@ -3,3 +3,6 @@ per-file *_messages.cc=set noparent per-file *_messages.cc=file://ipc/SECURITY_OWNERS + +per-file *.mojom=set noparent +per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chromecast/common/media/cast_message_generator.cc b/chromecast/common/media/cast_message_generator.cc deleted file mode 100644 index ee6c73e2..0000000 --- a/chromecast/common/media/cast_message_generator.cc +++ /dev/null
@@ -1,15 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Get basic type definitions. -#define IPC_MESSAGE_IMPL -#include "chromecast/common/media/cast_message_generator.h" - -// Generate constructors. -#include "ipc/struct_constructor_macros.h" -#include "chromecast/common/media/cast_message_generator.h" - -// Generate destructors. -#include "ipc/struct_destructor_macros.h" -#include "chromecast/common/media/cast_message_generator.h"
diff --git a/chromecast/common/media/cast_message_generator.h b/chromecast/common/media/cast_message_generator.h deleted file mode 100644 index ac6c0041..0000000 --- a/chromecast/common/media/cast_message_generator.h +++ /dev/null
@@ -1,8 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Multiply-included file, hence no include guard. - -#include "chromecast/common/media/cast_messages.h" -
diff --git a/chromecast/common/media/cast_messages.h b/chromecast/common/media/cast_messages.h deleted file mode 100644 index 3d9cc2a8..0000000 --- a/chromecast/common/media/cast_messages.h +++ /dev/null
@@ -1,17 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// IPC messages related to media on Chromecast. -// Multiply-included message file, hence no include guard. - -#include "ipc/ipc_message_macros.h" - -#undef IPC_MESSAGE_EXPORT -#define IPC_MESSAGE_EXPORT -#define IPC_MESSAGE_START CastMediaMsgStart - -// Messages sent from the browser to the renderer process. - -IPC_MESSAGE_CONTROL1(CmaMsg_UpdateSupportedHdmiSinkCodecs, - int /* Codec support, bitmask of media_caps.h values */)
diff --git a/chromecast/common/media/media_caps.mojom b/chromecast/common/media/media_caps.mojom new file mode 100644 index 0000000..0d41e7b --- /dev/null +++ b/chromecast/common/media/media_caps.mojom
@@ -0,0 +1,14 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module chromecast.media.mojom; + +interface MediaCaps { + AddObserver(MediaCapsObserver observer); +}; + +interface MediaCapsObserver { + // Bitmask values defined in enum HdmiSinkCodec + SupportedHdmiSinkCodecsChanged(uint32 supported_codec_bitmask); +};
diff --git a/chromecast/crash/linux/crash_testing_utils.cc b/chromecast/crash/linux/crash_testing_utils.cc index 19aed151..5dfdab2 100644 --- a/chromecast/crash/linux/crash_testing_utils.cc +++ b/chromecast/crash/linux/crash_testing_utils.cc
@@ -143,7 +143,8 @@ return WriteLockFile(lockfile_path, contents.get()) == 0; } -bool SetRatelimitPeriodStart(const std::string& metadata_path, time_t start) { +bool SetRatelimitPeriodStart(const std::string& metadata_path, + const base::Time& start) { std::unique_ptr<base::Value> contents = ParseMetadataFile(metadata_path); base::DictionaryValue* dict; @@ -153,10 +154,7 @@ return false; } - std::string period_start_str = - base::StringPrintf("%lld", static_cast<long long>(start)); - ratelimit_params->SetString(kRatelimitPeriodStartKey, period_start_str); - + ratelimit_params->SetDouble(kRatelimitPeriodStartKey, start.ToDoubleT()); return WriteMetadataFile(metadata_path, contents.get()) == 0; }
diff --git a/chromecast/crash/linux/crash_testing_utils.h b/chromecast/crash/linux/crash_testing_utils.h index 6a2d5ded..fba70bc 100644 --- a/chromecast/crash/linux/crash_testing_utils.h +++ b/chromecast/crash/linux/crash_testing_utils.h
@@ -8,6 +8,7 @@ #include <memory> #include "base/memory/scoped_vector.h" +#include "base/time/time.h" namespace chromecast { @@ -42,7 +43,8 @@ // Set the ratelimit period start in the metadata file at |metadata_path| to // |start|. Returns true on success, false on error. -bool SetRatelimitPeriodStart(const std::string& metadata_path, time_t start); +bool SetRatelimitPeriodStart(const std::string& metadata_path, + const base::Time& start); } // namespace chromecast
diff --git a/chromecast/crash/linux/crash_util.cc b/chromecast/crash/linux/crash_util.cc index 396fd84..01b29202 100644 --- a/chromecast/crash/linux/crash_util.cc +++ b/chromecast/crash/linux/crash_util.cc
@@ -67,7 +67,6 @@ new MinidumpWriter(&minidump_generator, filename.value(), params)); } bool success = false; - writer->set_non_blocking(false); success = (0 == writer->Write()); // error already logged. // In case the file is still in $TEMP, remove it. Note that DeleteFile() will
diff --git a/chromecast/crash/linux/dump_info.cc b/chromecast/crash/linux/dump_info.cc index cf3dd57..4c523f6 100644 --- a/chromecast/crash/linux/dump_info.cc +++ b/chromecast/crash/linux/dump_info.cc
@@ -9,14 +9,15 @@ #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/strings/stringprintf.h" #include "base/values.h" namespace chromecast { namespace { -const char kDumpTimeFormat[] = "%Y-%m-%d %H:%M:%S"; -const unsigned kDumpTimeMaxLen = 255; +// "%Y-%m-%d %H:%M:%S"; +const char kDumpTimeFormat[] = "%04d-%02d-%02d %02d:%02d:%02d"; const int kNumRequiredParams = 5; @@ -40,25 +41,13 @@ DumpInfo::DumpInfo(const std::string& crashed_process_dump, const std::string& logfile, - const time_t& dump_time, + const base::Time& dump_time, const MinidumpParams& params) : crashed_process_dump_(crashed_process_dump), logfile_(logfile), dump_time_(dump_time), params_(params), - valid_(false) { - - // Validate the time passed in. - struct tm* tm = gmtime(&dump_time); - char buf[kDumpTimeMaxLen]; - int n = strftime(buf, kDumpTimeMaxLen, kDumpTimeFormat, tm); - if (n <= 0) { - LOG(INFO) << "strftime failed"; - return; - } - - valid_ = true; -} + valid_(true) {} DumpInfo::~DumpInfo() { } @@ -70,11 +59,11 @@ result->GetAsDictionary(&entry); entry->SetString(kNameKey, params_.process_name); - struct tm* tm = gmtime(&dump_time_); - char buf[kDumpTimeMaxLen]; - int n = strftime(buf, kDumpTimeMaxLen, kDumpTimeFormat, tm); - DCHECK_GT(n, 0); - std::string dump_time(buf); + base::Time::Exploded ex; + dump_time_.LocalExplode(&ex); + std::string dump_time = + base::StringPrintf(kDumpTimeFormat, ex.year, ex.month, ex.day_of_month, + ex.hour, ex.minute, ex.second); entry->SetString(kDumpTimeKey, dump_time); entry->SetString(kDumpKey, crashed_process_dump_); @@ -152,13 +141,14 @@ } bool DumpInfo::SetDumpTimeFromString(const std::string& timestr) { - struct tm tm = {0}; - char* text = strptime(timestr.c_str(), kDumpTimeFormat, &tm); - dump_time_ = mktime(&tm); - if (!text || dump_time_ < 0) { + base::Time::Exploded ex = {0}; + if (sscanf(timestr.c_str(), kDumpTimeFormat, &ex.year, &ex.month, + &ex.day_of_month, &ex.hour, &ex.minute, &ex.second) < 6) { LOG(INFO) << "Failed to convert dump time invalid"; return false; } + + dump_time_ = base::Time::FromLocalExploded(ex); return true; }
diff --git a/chromecast/crash/linux/dump_info.h b/chromecast/crash/linux/dump_info.h index f1572cd..1be6676 100644 --- a/chromecast/crash/linux/dump_info.h +++ b/chromecast/crash/linux/dump_info.h
@@ -5,11 +5,11 @@ #ifndef CHROMECAST_CRASH_LINUX_DUMP_INFO_H_ #define CHROMECAST_CRASH_LINUX_DUMP_INFO_H_ -#include <ctime> #include <memory> #include <string> #include "base/macros.h" +#include "base/time/time.h" #include "chromecast/crash/linux/minidump_params.h" namespace base { @@ -34,7 +34,7 @@ // -params: a structure containing other useful crash information DumpInfo(const std::string& crashed_process_dump, const std::string& crashed_process_logfile, - const time_t& dump_time, + const base::Time& dump_time, const MinidumpParams& params); ~DumpInfo(); @@ -43,7 +43,7 @@ return crashed_process_dump_; } const std::string& logfile() const { return logfile_; } - const time_t& dump_time() const { return dump_time_; } + const base::Time& dump_time() const { return dump_time_; } // Return a deep copy of the entry's JSON representation. // The format is: @@ -73,7 +73,7 @@ std::string crashed_process_dump_; std::string logfile_; - time_t dump_time_; + base::Time dump_time_; MinidumpParams params_; bool valid_;
diff --git a/chromecast/crash/linux/dump_info_unittest.cc b/chromecast/crash/linux/dump_info_unittest.cc index 03c46e1..1e4d381 100644 --- a/chromecast/crash/linux/dump_info_unittest.cc +++ b/chromecast/crash/linux/dump_info_unittest.cc
@@ -47,15 +47,14 @@ "\"uptime\": \"123456789\"," "\"logfile\": \"logfile.log\"" "}")); - struct tm tm = {0}; - tm.tm_isdst = 0; - tm.tm_sec = 1; - tm.tm_min = 31; - tm.tm_hour = 18; - tm.tm_mday = 12; - tm.tm_mon = 10; - tm.tm_year = 101; - time_t dump_time = mktime(&tm); + base::Time::Exploded ex = {0}; + ex.second = 1; + ex.minute = 31; + ex.hour = 18; + ex.day_of_month = 12; + ex.month = 11; + ex.year = 2001; + base::Time dump_time = base::Time::FromLocalExploded(ex); ASSERT_TRUE(info->valid()); ASSERT_EQ("name", info->params().process_name); @@ -86,15 +85,14 @@ "\"uptime\": \"\"," "\"logfile\": \"\"" "}")); - struct tm tm = {0}; - tm.tm_isdst = 0; - tm.tm_sec = 1; - tm.tm_min = 31; - tm.tm_hour = 18; - tm.tm_mday = 12; - tm.tm_mon = 10; - tm.tm_year = 101; - time_t dump_time = mktime(&tm); + base::Time::Exploded ex = {0}; + ex.second = 1; + ex.minute = 31; + ex.hour = 18; + ex.day_of_month = 12; + ex.month = 11; + ex.year = 2001; + base::Time dump_time = base::Time::FromLocalExploded(ex); ASSERT_TRUE(info->valid()); ASSERT_EQ("name", info->params().process_name); @@ -120,15 +118,14 @@ "\"build_number\": \"BUILD_NUMBER\"," "\"reason\": \"foo\"" "}")); - struct tm tm = {0}; - tm.tm_isdst = 0; - tm.tm_sec = 1; - tm.tm_min = 31; - tm.tm_hour = 18; - tm.tm_mday = 12; - tm.tm_mon = 10; - tm.tm_year = 101; - time_t dump_time = mktime(&tm); + base::Time::Exploded ex = {0}; + ex.second = 1; + ex.minute = 31; + ex.hour = 18; + ex.day_of_month = 12; + ex.month = 11; + ex.year = 2001; + base::Time dump_time = base::Time::FromLocalExploded(ex); ASSERT_TRUE(info->valid()); ASSERT_EQ("name", info->params().process_name); @@ -155,15 +152,14 @@ "\"suffix\": \"suffix\"," "\"prev_app_name\": \"previous_app\"" "}")); - struct tm tm = {0}; - tm.tm_isdst = 0; - tm.tm_sec = 1; - tm.tm_min = 31; - tm.tm_hour = 18; - tm.tm_mday = 12; - tm.tm_mon = 10; - tm.tm_year = 101; - time_t dump_time = mktime(&tm); + base::Time::Exploded ex = {0}; + ex.second = 1; + ex.minute = 31; + ex.hour = 18; + ex.day_of_month = 12; + ex.month = 11; + ex.year = 2001; + base::Time dump_time = base::Time::FromLocalExploded(ex); ASSERT_TRUE(info->valid()); ASSERT_EQ("name", info->params().process_name);
diff --git a/chromecast/crash/linux/minidump_writer.cc b/chromecast/crash/linux/minidump_writer.cc index cb79147..bd9e56f3 100644 --- a/chromecast/crash/linux/minidump_writer.cc +++ b/chromecast/crash/linux/minidump_writer.cc
@@ -61,7 +61,7 @@ MinidumpWriter::~MinidumpWriter() { } -int MinidumpWriter::DoWork() { +bool MinidumpWriter::DoWork() { // If path is not absolute, append it to |dump_path_|. if (!minidump_path_.value().empty() && minidump_path_.value()[0] != '/') minidump_path_ = dump_path_.Append(minidump_path_); @@ -70,33 +70,32 @@ if (dump_path_ != minidump_path_.DirName()) { LOG(INFO) << "The absolute path: " << minidump_path_.value() << " is not" << "in the correct directory: " << dump_path_.value(); - return -1; + return false; } // Generate a minidump at the specified |minidump_path_|. if (!minidump_generator_->Generate(minidump_path_.value())) { LOG(ERROR) << "Generate minidump failed " << minidump_path_.value(); - return -1; + return false; } // Run the dumpstate callback. DCHECK(!dump_state_cb_.is_null()); if (dump_state_cb_.Run(minidump_path_.value()) < 0) { LOG(ERROR) << "DumpState callback failed."; - return -1; + return false; } // Add this entry to the lockfile. const DumpInfo info(minidump_path_.value(), minidump_path_.value() + kDumpStateSuffix, - time(nullptr), - params_); - if (AddEntryToLockFile(info) < 0) { + base::Time::Now(), params_); + if (!AddEntryToLockFile(info)) { LOG(ERROR) << "lockfile logging failed"; - return -1; + return false; } - return 0; + return true; } } // namespace crash_manager
diff --git a/chromecast/crash/linux/minidump_writer.h b/chromecast/crash/linux/minidump_writer.h index e37dbaff..c2381f6 100644 --- a/chromecast/crash/linux/minidump_writer.h +++ b/chromecast/crash/linux/minidump_writer.h
@@ -46,11 +46,11 @@ // Acquires exclusive access to the minidumps directory and generates a // minidump and a log to be uploaded later. Returns 0 if successful, -1 // otherwise. - int Write() { return AcquireLockAndDoWork(); } + int Write() { return AcquireLockAndDoWork() ? 0 : -1; } protected: // MinidumpManager implementation: - int DoWork() override; + bool DoWork() override; private: MinidumpGenerator* const minidump_generator_;
diff --git a/chromecast/crash/linux/synchronized_minidump_manager.cc b/chromecast/crash/linux/synchronized_minidump_manager.cc index 523916d3..8fa73d7 100644 --- a/chromecast/crash/linux/synchronized_minidump_manager.cc +++ b/chromecast/crash/linux/synchronized_minidump_manager.cc
@@ -4,17 +4,8 @@ #include "chromecast/crash/linux/synchronized_minidump_manager.h" -#include <dirent.h> -#include <errno.h> -#include <fcntl.h> -#include <stddef.h> #include <stdint.h> #include <string.h> -#include <sys/file.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <time.h> -#include <unistd.h> #include <utility> @@ -22,8 +13,10 @@ #include "base/files/file_util.h" #include "base/logging.h" #include "base/memory/ptr_util.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/strings/stringprintf.h" +#include "chromecast/base/file_utils.h" #include "chromecast/base/path_utils.h" #include "chromecast/base/serializers.h" #include "chromecast/crash/linux/dump_info.h" @@ -40,8 +33,6 @@ namespace { -const mode_t kDirMode = 0770; -const mode_t kFileMode = 0660; const char kLockfileName[] = "lockfile"; const char kMetadataName[] = "metadata"; const char kMinidumpsDir[] = "minidumps"; @@ -49,7 +40,7 @@ const char kLockfileRatelimitKey[] = "ratelimit"; const char kLockfileRatelimitPeriodStartKey[] = "period_start"; const char kLockfileRatelimitPeriodDumpsKey[] = "period_dumps"; -const std::size_t kLockfileNumRatelimitParams = 2; +const uint64_t kLockfileNumRatelimitParams = 2; // Gets the ratelimit parameter dictionary given a deserialized |metadata|. // Returns nullptr if invalid. @@ -65,39 +56,32 @@ } // Returns the time of the current ratelimit period's start in |metadata|. -// Returns (time_t)-1 if an error occurs. -time_t GetRatelimitPeriodStart(base::Value* metadata) { - time_t result = static_cast<time_t>(-1); +// Returns base::Time() if an error occurs. +base::Time GetRatelimitPeriodStart(base::Value* metadata) { base::DictionaryValue* ratelimit_params = GetRatelimitParams(metadata); - RCHECK(ratelimit_params, result); + RCHECK(ratelimit_params, base::Time()); - std::string period_start_str; - RCHECK(ratelimit_params->GetString(kLockfileRatelimitPeriodStartKey, - &period_start_str), - result); + double seconds = 0.0; + RCHECK( + ratelimit_params->GetDouble(kLockfileRatelimitPeriodStartKey, &seconds), + base::Time()); - errno = 0; - result = static_cast<time_t>(strtoll(period_start_str.c_str(), nullptr, 0)); - if (errno != 0) { - return static_cast<time_t>(-1); - } - - return result; + // Return value of 0 indicates "not initialized", so we need to explicitly + // check for it and return time_t = 0 equivalent. + return seconds ? base::Time::FromDoubleT(seconds) : base::Time::UnixEpoch(); } // Sets the time of the current ratelimit period's start in |metadata| to -// |period_start|. Returns 0 on success, < 0 on error. -int SetRatelimitPeriodStart(base::Value* metadata, time_t period_start) { - DCHECK_GE(period_start, 0); +// |period_start|. Returns true on success, false on error. +bool SetRatelimitPeriodStart(base::Value* metadata, base::Time period_start) { + DCHECK(!period_start.is_null()); base::DictionaryValue* ratelimit_params = GetRatelimitParams(metadata); - RCHECK(ratelimit_params, -1); + RCHECK(ratelimit_params, false); - std::string period_start_str = - base::StringPrintf("%lld", static_cast<long long>(period_start)); - ratelimit_params->SetString(kLockfileRatelimitPeriodStartKey, - period_start_str); - return 0; + ratelimit_params->SetDouble(kLockfileRatelimitPeriodStartKey, + period_start.ToDoubleT()); + return true; } // Gets the number of dumps added to |metadata| in the current ratelimit @@ -116,16 +100,16 @@ } // Sets the current ratelimit period's number of dumps in |metadata| to -// |period_dumps|. Returns 0 on success, < 0 on error. -int SetRatelimitPeriodDumps(base::Value* metadata, int period_dumps) { +// |period_dumps|. Returns true on success, false on error. +bool SetRatelimitPeriodDumps(base::Value* metadata, int period_dumps) { DCHECK_GE(period_dumps, 0); base::DictionaryValue* ratelimit_params = GetRatelimitParams(metadata); - RCHECK(ratelimit_params, -1); + RCHECK(ratelimit_params, false); ratelimit_params->SetInteger(kLockfileRatelimitPeriodDumpsKey, period_dumps); - return 0; + return true; } // Returns true if |metadata| contains valid metadata, false otherwise. @@ -137,7 +121,7 @@ return ratelimit_params && ratelimit_params->size() == kLockfileNumRatelimitParams && - GetRatelimitPeriodStart(metadata) >= 0 && + !GetRatelimitPeriodStart(metadata).is_null() && GetRatelimitPeriodDumps(metadata) >= 0; } @@ -148,12 +132,10 @@ const int SynchronizedMinidumpManager::kRatelimitPeriodMaxDumps = 100; SynchronizedMinidumpManager::SynchronizedMinidumpManager() - : non_blocking_(false), - dump_path_(GetHomePathASCII(kMinidumpsDir)), + : dump_path_(GetHomePathASCII(kMinidumpsDir)), lockfile_path_(dump_path_.Append(kLockfileName).value()), metadata_path_(dump_path_.Append(kMetadataName).value()), - lockfile_fd_(-1) { -} + lockfile_fd_(-1) {} SynchronizedMinidumpManager::~SynchronizedMinidumpManager() { // Release the lock if held. @@ -162,87 +144,79 @@ // TODO(slan): Move some of this pruning logic to ReleaseLockFile? int SynchronizedMinidumpManager::GetNumDumps(bool delete_all_dumps) { - DIR* dirp; - struct dirent* dptr; int num_dumps = 0; - // folder does not exist - dirp = opendir(dump_path_.value().c_str()); - if (dirp == NULL) { + base::DirReaderPosix reader(dump_path_.value().c_str()); + if (!reader.IsValid()) { LOG(ERROR) << "Unable to open directory " << dump_path_.value(); return 0; } - while ((dptr = readdir(dirp)) != NULL) { - struct stat buf; - const std::string file_fullname = dump_path_.value() + "/" + dptr->d_name; - if (lstat(file_fullname.c_str(), &buf) == -1 || !S_ISREG(buf.st_mode)) { - // if we cannot lstat this file, it is probably bad, so skip - // if the file is not regular, skip + while (reader.Next()) { + if (strcmp(reader.name(), ".") == 0 || strcmp(reader.name(), "..") == 0) continue; - } - // 'lockfile' and 'metadata' is not counted - if (lockfile_path_ != file_fullname && metadata_path_ != file_fullname) { + const base::FilePath dump_file(dump_path_.Append(reader.name())); + // If file cannot be found, skip. + if (!base::PathExists(dump_file)) + continue; + + // Do not count |lockfile_path_| and |metadata_path_|. + if (lockfile_path_ != dump_file && metadata_path_ != dump_file) { ++num_dumps; if (delete_all_dumps) { - LOG(INFO) << "Removing " << dptr->d_name + LOG(INFO) << "Removing " << reader.name() << "which was not in the lockfile"; - if (remove(file_fullname.c_str()) < 0) { - LOG(INFO) << "remove failed. error " << strerror(errno); - } + if (!base::DeleteFile(dump_file, false)) + PLOG(INFO) << "Removing " << dump_file.value() << " failed"; } } } - closedir(dirp); return num_dumps; } -int SynchronizedMinidumpManager::AcquireLockAndDoWork() { - int success = -1; - if (AcquireLockFile() >= 0) { +bool SynchronizedMinidumpManager::AcquireLockAndDoWork() { + bool success = false; + if (AcquireLockFile()) { success = DoWork(); ReleaseLockFile(); } return success; } -int SynchronizedMinidumpManager::AcquireLockFile() { +bool SynchronizedMinidumpManager::AcquireLockFile() { DCHECK_LT(lockfile_fd_, 0); // Make the directory for the minidumps if it does not exist. - if (mkdir(dump_path_.value().c_str(), kDirMode) < 0 && errno != EEXIST) { - LOG(ERROR) << "mkdir for " << dump_path_.value().c_str() - << " failed. error = " << strerror(errno); - return -1; + base::File::Error error; + if (!CreateDirectoryAndGetError(dump_path_, &error)) { + LOG(ERROR) << "Failed to create directory " << dump_path_.value() + << ". error = " << error; + return false; } // Open the lockfile. Create it if it does not exist. - lockfile_fd_ = open(lockfile_path_.c_str(), O_RDWR | O_CREAT, kFileMode); + base::File lockfile(lockfile_path_, base::File::FLAG_OPEN_ALWAYS); // If opening or creating the lockfile failed, we don't want to proceed // with dump writing for fear of exhausting up system resources. - if (lockfile_fd_ < 0) { - LOG(ERROR) << "open lockfile failed " << lockfile_path_; - return -1; + if (!lockfile.IsValid()) { + LOG(ERROR) << "open lockfile failed " << lockfile_path_.value(); + return false; } - // Acquire the lock on the file. Whether or not we are in non-blocking mode, - // flock failure means that we did not acquire it and this method should fail. - int operation_mode = non_blocking_ ? (LOCK_EX | LOCK_NB) : LOCK_EX; - if (flock(lockfile_fd_, operation_mode) < 0) { + if ((lockfile_fd_ = OpenAndLockFile(lockfile_path_, false)) < 0) { ReleaseLockFile(); - LOG(INFO) << "flock lockfile failed, error = " << strerror(errno); - return -1; + return false; } // The lockfile is open and locked. Parse it to provide subclasses with a // record of all the current dumps. - if (ParseFiles() < 0) { + if (!ParseFiles()) { LOG(ERROR) << "Lockfile did not parse correctly. "; - if (InitializeFiles() < 0 || ParseFiles() < 0) { + if (!InitializeFiles() || !ParseFiles()) { LOG(ERROR) << "Failed to create a new lock file!"; - return -1; + return false; } } @@ -250,16 +224,16 @@ DCHECK(metadata_); // We successfully have acquired the lock. - return 0; + return true; } -int SynchronizedMinidumpManager::ParseFiles() { +bool SynchronizedMinidumpManager::ParseFiles() { DCHECK_GE(lockfile_fd_, 0); DCHECK(!dumps_); DCHECK(!metadata_); std::string lockfile; - RCHECK(ReadFileToString(base::FilePath(lockfile_path_), &lockfile), -1); + RCHECK(ReadFileToString(lockfile_path_, &lockfile), false); std::vector<std::string> lines = base::SplitString( lockfile, "\n", base::KEEP_WHITESPACE, base::SPLIT_WANT_NONEMPTY); @@ -273,49 +247,46 @@ continue; std::unique_ptr<base::Value> dump_info = DeserializeFromJson(line); DumpInfo info(dump_info.get()); - RCHECK(info.valid(), -1); + RCHECK(info.valid(), false); dumps->Append(std::move(dump_info)); } std::unique_ptr<base::Value> metadata = - DeserializeJsonFromFile(base::FilePath(metadata_path_)); - RCHECK(ValidateMetadata(metadata.get()), -1); + DeserializeJsonFromFile(metadata_path_); + RCHECK(ValidateMetadata(metadata.get()), false); dumps_ = std::move(dumps); metadata_ = std::move(metadata); - return 0; + return true; } -int SynchronizedMinidumpManager::WriteFiles(const base::ListValue* dumps, - const base::Value* metadata) { +bool SynchronizedMinidumpManager::WriteFiles(const base::ListValue* dumps, + const base::Value* metadata) { DCHECK(dumps); DCHECK(metadata); std::string lockfile; for (const auto& elem : *dumps) { std::unique_ptr<std::string> dump_info = SerializeToJson(*elem); - RCHECK(dump_info, -1); + RCHECK(dump_info, false); lockfile += *dump_info; lockfile += "\n"; // Add line seperatators } - if (WriteFile(base::FilePath(lockfile_path_), - lockfile.c_str(), - lockfile.size()) < 0) { - return -1; + if (WriteFile(lockfile_path_, lockfile.c_str(), lockfile.size()) < 0) { + return false; } - return SerializeJsonToFile(base::FilePath(metadata_path_), *metadata) ? 0 - : -1; + return SerializeJsonToFile(metadata_path_, *metadata); } -int SynchronizedMinidumpManager::InitializeFiles() { +bool SynchronizedMinidumpManager::InitializeFiles() { std::unique_ptr<base::DictionaryValue> metadata = base::WrapUnique(new base::DictionaryValue()); base::DictionaryValue* ratelimit_fields = new base::DictionaryValue(); metadata->Set(kLockfileRatelimitKey, base::WrapUnique(ratelimit_fields)); - ratelimit_fields->SetString(kLockfileRatelimitPeriodStartKey, "0"); + ratelimit_fields->SetDouble(kLockfileRatelimitPeriodStartKey, 0.0); ratelimit_fields->SetInteger(kLockfileRatelimitPeriodDumpsKey, 0); std::unique_ptr<base::ListValue> dumps = @@ -324,23 +295,23 @@ return WriteFiles(dumps.get(), metadata.get()); } -int SynchronizedMinidumpManager::AddEntryToLockFile(const DumpInfo& dump_info) { - DCHECK_LE(0, lockfile_fd_); +bool SynchronizedMinidumpManager::AddEntryToLockFile( + const DumpInfo& dump_info) { + DCHECK_GE(lockfile_fd_, 0); DCHECK(dumps_); // Make sure dump_info is valid. if (!dump_info.valid()) { LOG(ERROR) << "Entry to be added is invalid"; - return -1; + return false; } dumps_->Append(dump_info.GetAsValue()); - - return 0; + return true; } -int SynchronizedMinidumpManager::RemoveEntryFromLockFile(int index) { - return dumps_->Remove(static_cast<size_t>(index), nullptr) ? 0 : -1; +bool SynchronizedMinidumpManager::RemoveEntryFromLockFile(int index) { + return dumps_->Remove(static_cast<uint64_t>(index), nullptr); } void SynchronizedMinidumpManager::ReleaseLockFile() { @@ -350,10 +321,7 @@ if (dumps_) WriteFiles(dumps_.get(), metadata_.get()); - flock(lockfile_fd_, LOCK_UN); - close(lockfile_fd_); - - // We may use this object again, so we should reset this. + UnlockAndCloseFile(lockfile_fd_); lockfile_fd_ = -1; } @@ -371,27 +339,27 @@ return dumps; } -int SynchronizedMinidumpManager::SetCurrentDumps( +bool SynchronizedMinidumpManager::SetCurrentDumps( const ScopedVector<DumpInfo>& dumps) { dumps_->Clear(); for (DumpInfo* dump : dumps) dumps_->Append(dump->GetAsValue()); - return 0; + return true; } -int SynchronizedMinidumpManager::IncrementNumDumpsInCurrentPeriod() { +bool SynchronizedMinidumpManager::IncrementNumDumpsInCurrentPeriod() { DCHECK(metadata_); int last_dumps = GetRatelimitPeriodDumps(metadata_.get()); - RCHECK(last_dumps >= 0, -1); + RCHECK(last_dumps >= 0, false); return SetRatelimitPeriodDumps(metadata_.get(), last_dumps + 1); } bool SynchronizedMinidumpManager::CanUploadDump() { - time_t cur_time = time(nullptr); - time_t period_start = GetRatelimitPeriodStart(metadata_.get()); + base::Time cur_time = base::Time::Now(); + base::Time period_start = GetRatelimitPeriodStart(metadata_.get()); int period_dumps_count = GetRatelimitPeriodDumps(metadata_.get()); // If we're in invalid state, or we passed the period, reset the ratelimit. @@ -400,8 +368,9 @@ // |period_start| invalid when |cur_time| is less if |cur_time| is not very // close to 0. if (period_dumps_count < 0 || - (cur_time < period_start && cur_time > kRatelimitPeriodSeconds) || - difftime(cur_time, period_start) >= kRatelimitPeriodSeconds) { + (cur_time < period_start && + cur_time.ToDoubleT() > kRatelimitPeriodSeconds) || + (cur_time - period_start).InSeconds() >= kRatelimitPeriodSeconds) { period_start = cur_time; period_dumps_count = 0; SetRatelimitPeriodStart(metadata_.get(), period_start); @@ -414,7 +383,7 @@ bool SynchronizedMinidumpManager::HasDumps() { // Check if lockfile has entries. int64_t size = 0; - if (GetFileSize(base::FilePath(lockfile_path_), &size) && size > 0) + if (base::GetFileSize(lockfile_path_, &size) && size > 0) return true; // Check if any files are in minidump directory @@ -428,7 +397,7 @@ if (strcmp(reader.name(), ".") == 0 || strcmp(reader.name(), "..") == 0) continue; - const std::string file_path = dump_path_.Append(reader.name()).value(); + const base::FilePath file_path = dump_path_.Append(reader.name()); if (file_path != lockfile_path_ && file_path != metadata_path_) return true; }
diff --git a/chromecast/crash/linux/synchronized_minidump_manager.h b/chromecast/crash/linux/synchronized_minidump_manager.h index ce4d9eb..9bd09a0 100644 --- a/chromecast/crash/linux/synchronized_minidump_manager.h +++ b/chromecast/crash/linux/synchronized_minidump_manager.h
@@ -5,10 +5,6 @@ #ifndef CHROMECAST_CRASH_LINUX_SYNCHRONIZED_MINIDUMP_MANAGER_H_ #define CHROMECAST_CRASH_LINUX_SYNCHRONIZED_MINIDUMP_MANAGER_H_ -#include <time.h> - -#include <string> - #include "base/files/file_path.h" #include "base/macros.h" #include "base/memory/scoped_vector.h" @@ -54,43 +50,37 @@ virtual ~SynchronizedMinidumpManager(); - // Returns whether this object's file locking method is nonblocking or not. - bool non_blocking() { return non_blocking_; } - - // Sets the file locking mechansim to be nonblocking or not. - void set_non_blocking(bool non_blocking) { non_blocking_ = non_blocking; } - protected: SynchronizedMinidumpManager(); // Acquires the lock, calls DoWork(), then releases the lock when DoWork() // returns. Derived classes should expose a method which calls this. Returns - // the status of DoWork(), or -1 if the lock was not successfully acquired. - int AcquireLockAndDoWork(); + // the status of DoWork(), or false if the lock was not successfully acquired. + bool AcquireLockAndDoWork(); // Derived classes must implement this method. It will be called from // DoWorkLocked after the lock has been successfully acquired. The lockfile // shall be accessed and mutated only through the methods below. All other // files shall be managed as needed by the derived class. - virtual int DoWork() = 0; + virtual bool DoWork() = 0; // Get the current dumps in the lockfile. ScopedVector<DumpInfo> GetDumps(); // Set |dumps| as the dumps in |lockfile_|, replacing current list of dumps. - int SetCurrentDumps(const ScopedVector<DumpInfo>& dumps); + bool SetCurrentDumps(const ScopedVector<DumpInfo>& dumps); // Serialize |dump_info| and append it to the lockfile. Note that the child // class must only call this inside DoWork(). This should be the only method // used to write to the lockfile. Only call this if the minidump has been - // generated in the minidumps directory successfully. Returns 0 on success, - // -1 otherwise. - int AddEntryToLockFile(const DumpInfo& dump_info); + // generated in the minidumps directory successfully. Returns true on success, + // false otherwise. + bool AddEntryToLockFile(const DumpInfo& dump_info); // Remove the lockfile entry at |index| in the current in memory - // representation of the lockfile. If the index is invalid returns -1. - // Otherwise returns 0. - int RemoveEntryFromLockFile(int index); + // representation of the lockfile. If the index is invalid returns false, + // otherwise returns true. + bool RemoveEntryFromLockFile(int index); // Get the number of un-uploaded dumps in the dump_path directory. // If delete_all_dumps is true, also delete all these files, this is used to @@ -98,8 +88,8 @@ int GetNumDumps(bool delete_all_dumps); // Increment the number of dumps in the current ratelimit period. - // Returns 0 on success, < 0 on error. - int IncrementNumDumpsInCurrentPeriod(); + // Returns true on success, false on error. + bool IncrementNumDumpsInCurrentPeriod(); // Returns true when dumps uploaded in current rate limit period is less than // |kRatelimitPeriodMaxDumps|. Resets rate limit period if period time has @@ -111,35 +101,33 @@ // Used to avoid unnecessary file locks in consumers. bool HasDumps(); - // If true, the flock on the lockfile will be nonblocking. - bool non_blocking_; - // Cached path for the minidumps directory. const base::FilePath dump_path_; private: // Acquire the lock file. Blocks if another process holds it, or if called - // a second time by the same process. Returns the fd of the lockfile if - // successful, or -1 if failed. - int AcquireLockFile(); + // a second time by the same process. Returns true if successful, or false + // otherwise. + bool AcquireLockFile(); // Parse the lockfile and metadata file, populating |dumps_| and |metadata_| - // for modifier functions to use. Return -1 if an error occurred. Otherwise, - // return 0. This must not be called unless |this| has acquired the lock. - int ParseFiles(); + // for modifier functions to use. Returns false if an error occurred, + // otherwise returns true. This must not be called unless |this| has acquired + // the lock. + bool ParseFiles(); // Write deserialized |dumps| to |lockfile_path_| and the deserialized // |metadata| to |metadata_path_|. - int WriteFiles(const base::ListValue* dumps, const base::Value* metadata); + bool WriteFiles(const base::ListValue* dumps, const base::Value* metadata); // Creates an empty lock file and an initialized metadata file. - int InitializeFiles(); + bool InitializeFiles(); // Release the lock file with the associated *fd*. void ReleaseLockFile(); - const std::string lockfile_path_; - const std::string metadata_path_; + const base::FilePath lockfile_path_; + const base::FilePath metadata_path_; int lockfile_fd_; std::unique_ptr<base::Value> metadata_; std::unique_ptr<base::ListValue> dumps_;
diff --git a/chromecast/crash/linux/synchronized_minidump_manager_unittest.cc b/chromecast/crash/linux/synchronized_minidump_manager_unittest.cc index 5fa5a79..fa3e22c 100644 --- a/chromecast/crash/linux/synchronized_minidump_manager_unittest.cc +++ b/chromecast/crash/linux/synchronized_minidump_manager_unittest.cc
@@ -48,7 +48,7 @@ SynchronizedMinidumpManagerSimple() : SynchronizedMinidumpManager(), work_done_(false), - add_entry_return_code_(-1), + add_entry_return_code_(false), lockfile_path_(dump_path_.Append(kLockfileName).value()) {} ~SynchronizedMinidumpManagerSimple() override {} @@ -56,14 +56,14 @@ dump_info_ = std::move(dump_info); } - int DoWorkLocked() { return AcquireLockAndDoWork(); } + bool DoWorkLocked() { return AcquireLockAndDoWork(); } // SynchronizedMinidumpManager implementation: - int DoWork() override { + bool DoWork() override { if (dump_info_) add_entry_return_code_ = AddEntryToLockFile(*dump_info_); work_done_ = true; - return 0; + return true; } // Accessors for testing. @@ -71,11 +71,11 @@ const std::string& dump_path() { return dump_path_.value(); } const std::string& lockfile_path() { return lockfile_path_; } bool work_done() { return work_done_; } - int add_entry_return_code() { return add_entry_return_code_; } + bool add_entry_return_code() { return add_entry_return_code_; } private: bool work_done_; - int add_entry_return_code_; + bool add_entry_return_code_; std::string lockfile_path_; std::unique_ptr<DumpInfo> dump_info_; }; @@ -92,19 +92,19 @@ : SynchronizedMinidumpManager(), can_upload_return_val_(false) {} ~FakeSynchronizedMinidumpUploader() override {} - int DoWorkLocked() { return AcquireLockAndDoWork(); } + bool DoWorkLocked() { return AcquireLockAndDoWork(); } // SynchronizedMinidumpManager implementation: - int DoWork() override { + bool DoWork() override { can_upload_return_val_ = CanUploadDump(); - if (RemoveEntryFromLockFile(0) < 0) - return -1; + if (!RemoveEntryFromLockFile(0)) + return false; - if (IncrementNumDumpsInCurrentPeriod() < 0) - return -1; + if (!IncrementNumDumpsInCurrentPeriod()) + return false; - return 0; + return true; } // Accessors for testing. @@ -124,7 +124,7 @@ ~SleepySynchronizedMinidumpManagerSimple() override {} // SynchronizedMinidumpManager implementation: - int DoWork() override { + bool DoWork() override { // The lock has been acquired. Fall asleep for |kSleepDurationMs|, then // write the file. base::PlatformThread::Sleep( @@ -174,8 +174,8 @@ // Have |producer| generate |num_dumps| while checking there are no errors. void produce_dumps(SynchronizedMinidumpManagerSimple& producer, int num_dumps) { for (int i = 0; i < num_dumps; ++i) { - ASSERT_EQ(0, producer.DoWorkLocked()); - ASSERT_EQ(0, producer.add_entry_return_code()); + ASSERT_TRUE(producer.DoWorkLocked()); + ASSERT_TRUE(producer.add_entry_return_code()); } } @@ -183,7 +183,7 @@ // errors. void consume_dumps(FakeSynchronizedMinidumpUploader& consumer, int num_dumps) { for (int i = 0; i < num_dumps; ++i) { - ASSERT_EQ(0, consumer.DoWorkLocked()); + ASSERT_TRUE(consumer.DoWorkLocked()); ASSERT_TRUE(consumer.can_upload_return_val()); } } @@ -204,7 +204,7 @@ ASSERT_FALSE(base::PathExists(minidump_dir_)); SynchronizedMinidumpManagerSimple manager; - ASSERT_EQ(0, manager.DoWorkLocked()); + ASSERT_TRUE(manager.DoWorkLocked()); ASSERT_TRUE(manager.work_done()); // Verify the directory and the lockfile both exist. @@ -218,7 +218,7 @@ ASSERT_FALSE(base::PathExists(lockfile_)); SynchronizedMinidumpManagerSimple manager; - ASSERT_EQ(0, manager.DoWorkLocked()); + ASSERT_TRUE(manager.DoWorkLocked()); ASSERT_TRUE(manager.work_done()); // Verify the directory and the lockfile both exist. @@ -229,7 +229,7 @@ TEST_F(SynchronizedMinidumpManagerTest, AcquireLockOnExistingDirectoryWithLockfile) { SynchronizedMinidumpManagerSimple manager; - ASSERT_EQ(0, manager.DoWorkLocked()); + ASSERT_TRUE(manager.DoWorkLocked()); ASSERT_TRUE(manager.work_done()); // Verify the directory and the lockfile both exist. @@ -245,8 +245,8 @@ // Test that the manager tried to log the entry and failed. SynchronizedMinidumpManagerSimple manager; manager.SetDumpInfoToWrite(base::WrapUnique(new DumpInfo(&val))); - ASSERT_EQ(0, manager.DoWorkLocked()); - ASSERT_EQ(-1, manager.add_entry_return_code()); + ASSERT_TRUE(manager.DoWorkLocked()); + ASSERT_FALSE(manager.add_entry_return_code()); // Verify the lockfile is untouched. ScopedVector<DumpInfo> dumps; @@ -257,7 +257,7 @@ TEST_F(SynchronizedMinidumpManagerTest, AddEntryToLockFile_SucceedsWithValidEntries) { // Sample parameters. - time_t now = time(0); + base::Time now = base::Time::Now(); MinidumpParams params; params.process_name = "process"; @@ -265,8 +265,8 @@ SynchronizedMinidumpManagerSimple manager; manager.SetDumpInfoToWrite( base::WrapUnique(new DumpInfo("dump1", "log1", now, params))); - ASSERT_EQ(0, manager.DoWorkLocked()); - ASSERT_EQ(0, manager.add_entry_return_code()); + ASSERT_TRUE(manager.DoWorkLocked()); + ASSERT_TRUE(manager.add_entry_return_code()); // Test that the manager was successful in logging the entry. ScopedVector<DumpInfo> dumps; @@ -276,39 +276,17 @@ // Write the second entry. manager.SetDumpInfoToWrite( base::WrapUnique(new DumpInfo("dump2", "log2", now, params))); - ASSERT_EQ(0, manager.DoWorkLocked()); - ASSERT_EQ(0, manager.add_entry_return_code()); + ASSERT_TRUE(manager.DoWorkLocked()); + ASSERT_TRUE(manager.add_entry_return_code()); // Test that the second entry is also valid. ASSERT_TRUE(FetchDumps(lockfile_.value(), &dumps)); ASSERT_EQ(2u, dumps.size()); } -TEST_F(SynchronizedMinidumpManagerTest, - AcquireLockFile_FailsWhenNonBlockingAndFileLocked) { - ASSERT_TRUE(CreateFiles(lockfile_.value(), metadata_.value())); - // Lock the lockfile here. Note that the Chromium base::File tools permit - // multiple locks on the same process to succeed, so we must use POSIX system - // calls to accomplish this. - int fd = open(lockfile_.value().c_str(), O_RDWR | O_CREAT, 0660); - ASSERT_GE(fd, 0); - ASSERT_EQ(0, flock(fd, LOCK_EX)); - - SynchronizedMinidumpManagerSimple manager; - manager.set_non_blocking(true); - ASSERT_EQ(-1, manager.DoWorkLocked()); - ASSERT_FALSE(manager.work_done()); - - // Test that the manager was not able to log the crash dump. - ScopedVector<DumpInfo> dumps; - ASSERT_TRUE(FetchDumps(lockfile_.value(), &dumps)); - ASSERT_EQ(0u, dumps.size()); -} - -TEST_F(SynchronizedMinidumpManagerTest, - AcquireLockFile_WaitsForOtherThreadWhenBlocking) { +TEST_F(SynchronizedMinidumpManagerTest, AcquireLockFile_WaitsForOtherThread) { // Create some parameters for a minidump. - time_t now = time(0); + base::Time now = base::Time::Now(); MinidumpParams params; params.process_name = "process"; @@ -337,14 +315,13 @@ SynchronizedMinidumpManagerSimple manager; manager.SetDumpInfoToWrite( base::WrapUnique(new DumpInfo("dump", "log", now, params))); - manager.set_non_blocking(false); - EXPECT_EQ(0, manager.DoWorkLocked()); - EXPECT_EQ(0, manager.add_entry_return_code()); + EXPECT_TRUE(manager.DoWorkLocked()); + EXPECT_TRUE(manager.add_entry_return_code()); EXPECT_TRUE(manager.work_done()); // Check that the other manager was also successful. - EXPECT_EQ(0, sleepy_manager.add_entry_return_code()); + EXPECT_TRUE(sleepy_manager.add_entry_return_code()); EXPECT_TRUE(sleepy_manager.work_done()); // Test that both entries were logged. @@ -357,41 +334,9 @@ // of all tests in this thread. Figure out how to lock the file more cleanly // from another process. TEST_F(SynchronizedMinidumpManagerTest, - DISABLED_AcquireLockFile_FailsWhenNonBlockingAndLockedFromOtherProcess) { - // Fork the process. - pid_t pid = base::ForkWithFlags(0u, nullptr, nullptr); - if (pid != 0) { - // The child process should instantiate a manager which immediately grabs - // the lock, and falls aleep for some period of time, then writes a dump, - // and finally releases the lock. - SleepySynchronizedMinidumpManagerSimple sleepy_manager(100); - ASSERT_EQ(0, sleepy_manager.DoWorkLocked()); - ASSERT_TRUE(sleepy_manager.work_done()); - return; - } - - // Meanwhile, this process should wait brielfy to allow the other thread to - // grab the lock. - base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(50)); - - SynchronizedMinidumpManagerSimple manager; - manager.set_non_blocking(true); - ASSERT_EQ(-1, manager.DoWorkLocked()); - ASSERT_FALSE(manager.work_done()); - - // Test that the manager was not able to log the crash dump. - ScopedVector<DumpInfo> dumps; - ASSERT_TRUE(FetchDumps(lockfile_.value(), &dumps)); - ASSERT_EQ(0u, dumps.size()); -} - -// TODO(slan): These tests are passing but forking them is creating duplicates -// of all tests in this thread. Figure out how to lock the file more cleanly -// from another process. -TEST_F(SynchronizedMinidumpManagerTest, - DISABLED_AcquireLockFile_WaitsForOtherProcessWhenBlocking) { + DISABLED_AcquireLockFile_WaitsForOtherProcess) { // Create some parameters for a minidump. - time_t now = time(0); + base::Time now = base::Time::Now(); MinidumpParams params; params.process_name = "process"; @@ -404,7 +349,7 @@ SleepySynchronizedMinidumpManagerSimple sleepy_manager(100); sleepy_manager.SetDumpInfoToWrite( base::WrapUnique(new DumpInfo("dump", "log", now, params))); - ASSERT_EQ(0, sleepy_manager.DoWorkLocked()); + ASSERT_TRUE(sleepy_manager.DoWorkLocked()); ASSERT_TRUE(sleepy_manager.work_done()); return; } @@ -421,10 +366,9 @@ SynchronizedMinidumpManagerSimple manager; manager.SetDumpInfoToWrite( base::WrapUnique(new DumpInfo("dump", "log", now, params))); - manager.set_non_blocking(false); - EXPECT_EQ(0, manager.DoWorkLocked()); - EXPECT_EQ(0, manager.add_entry_return_code()); + EXPECT_TRUE(manager.DoWorkLocked()); + EXPECT_TRUE(manager.add_entry_return_code()); EXPECT_TRUE(manager.work_done()); // Test that both entries were logged. @@ -436,7 +380,7 @@ TEST_F(SynchronizedMinidumpManagerTest, Upload_SucceedsWhenDumpLimitsNotExceeded) { // Sample parameters. - time_t now = time(0); + base::Time now = base::Time::Now(); MinidumpParams params; params.process_name = "process"; @@ -452,7 +396,7 @@ TEST_F(SynchronizedMinidumpManagerTest, Upload_FailsWhenTooManyRecentDumps) { // Sample parameters. - time_t now = time(0); + base::Time now = base::Time::Now(); MinidumpParams params; params.process_name = "process"; @@ -466,13 +410,13 @@ consume_dumps(uploader, max_dumps); // Should fail with too many dumps - ASSERT_EQ(0, uploader.DoWorkLocked()); + ASSERT_TRUE(uploader.DoWorkLocked()); ASSERT_FALSE(uploader.can_upload_return_val()); } TEST_F(SynchronizedMinidumpManagerTest, UploadSucceedsAfterRateLimitPeriodEnd) { // Sample parameters. - time_t now = time(0); + base::Time now = base::Time::Now(); MinidumpParams params; params.process_name = "process"; @@ -489,15 +433,17 @@ consume_dumps(uploader, max_dumps); // Should fail with too many dumps - ASSERT_EQ(0, uploader.DoWorkLocked()); + ASSERT_TRUE(uploader.DoWorkLocked()); ASSERT_FALSE(uploader.can_upload_return_val()); - int64_t period = SynchronizedMinidumpManager::kRatelimitPeriodSeconds; + base::TimeDelta period = base::TimeDelta::FromSeconds( + SynchronizedMinidumpManager::kRatelimitPeriodSeconds); + base::Time now = base::Time::Now(); // Half period shouldn't trigger reset produce_dumps(producer, 1); SetRatelimitPeriodStart(metadata_.value(), now - period / 2); - ASSERT_EQ(0, uploader.DoWorkLocked()); + ASSERT_TRUE(uploader.DoWorkLocked()); ASSERT_FALSE(uploader.can_upload_return_val()); // Set period starting time to trigger a reset @@ -515,7 +461,7 @@ TEST_F(SynchronizedMinidumpManagerTest, HasDumpsWithDumps) { // Sample parameters. - time_t now = time(0); + base::Time now = base::Time::Now(); MinidumpParams params; params.process_name = "process";
diff --git a/chromecast/media/base/media_caps.cc b/chromecast/media/base/media_caps.cc index 2924882..6d568d4 100644 --- a/chromecast/media/base/media_caps.cc +++ b/chromecast/media/base/media_caps.cc
@@ -7,10 +7,10 @@ namespace media { namespace { -int g_hdmi_codecs = 0; +unsigned int g_hdmi_codecs = 0; } // namespace -void SetHdmiSinkCodecs(int codecs_mask) { +void SetHdmiSinkCodecs(unsigned int codecs_mask) { g_hdmi_codecs = codecs_mask; } @@ -35,4 +35,3 @@ } } // namespace media -
diff --git a/chromecast/media/base/media_caps.h b/chromecast/media/base/media_caps.h index 8ae2c7b..1a24ffe0 100644 --- a/chromecast/media/base/media_caps.h +++ b/chromecast/media/base/media_caps.h
@@ -17,7 +17,7 @@ // Records the known supported codecs for the current HDMI sink, as a bit mask // of HdmiSinkCodec values. -void SetHdmiSinkCodecs(int codecs_mask); +void SetHdmiSinkCodecs(unsigned int codecs_mask); bool HdmiSinkSupportsAC3(); bool HdmiSinkSupportsDTS();
diff --git a/chromecast/renderer/BUILD.gn b/chromecast/renderer/BUILD.gn index 1d20da3..0bd8199 100644 --- a/chromecast/renderer/BUILD.gn +++ b/chromecast/renderer/BUILD.gn
@@ -41,6 +41,7 @@ "//crypto", "//ipc", "//media", + "//services/shell/public/cpp", "//third_party/widevine/cdm:version_h", ] }
diff --git a/chromecast/renderer/DEPS b/chromecast/renderer/DEPS index 3bf6945..4aa8b30 100644 --- a/chromecast/renderer/DEPS +++ b/chromecast/renderer/DEPS
@@ -9,6 +9,7 @@ "+media/base", "+media/media_features.h", "+media/renderers", + "+services/shell/public", "+third_party/WebKit/public/platform", "+third_party/WebKit/public/web", ]
diff --git a/chromecast/renderer/cast_content_renderer_client.cc b/chromecast/renderer/cast_content_renderer_client.cc index d8f655b..47d9581 100644 --- a/chromecast/renderer/cast_content_renderer_client.cc +++ b/chromecast/renderer/cast_content_renderer_client.cc
@@ -13,16 +13,18 @@ #include "chromecast/base/chromecast_switches.h" #include "chromecast/common/media/cast_media_client.h" #include "chromecast/crash/cast_crash_keys.h" -#include "chromecast/media/base/media_caps.h" #include "chromecast/renderer/cast_media_load_deferrer.h" #include "chromecast/renderer/cast_render_thread_observer.h" #include "chromecast/renderer/key_systems_cast.h" #include "chromecast/renderer/media/chromecast_media_renderer_factory.h" +#include "chromecast/renderer/media/media_caps_observer_impl.h" #include "components/network_hints/renderer/prescient_networking_dispatcher.h" #include "content/public/common/content_switches.h" #include "content/public/renderer/render_frame.h" +#include "content/public/renderer/render_thread.h" #include "content/public/renderer/render_view.h" #include "media/base/media.h" +#include "services/shell/public/cpp/interface_provider.h" #include "third_party/WebKit/public/platform/WebColor.h" #include "third_party/WebKit/public/web/WebFrameWidget.h" #include "third_party/WebKit/public/web/WebSettings.h" @@ -64,15 +66,13 @@ void CastContentRendererClient::RenderThreadStarted() { base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); - // Set the initial known codecs mask. - if (command_line->HasSwitch(switches::kHdmiSinkSupportedCodecs)) { - int hdmi_codecs_mask; - if (base::StringToInt(command_line->GetSwitchValueASCII( - switches::kHdmiSinkSupportedCodecs), - &hdmi_codecs_mask)) { - ::media::SetHdmiSinkCodecs(hdmi_codecs_mask); - } - } + // Register as observer for media capabilities + content::RenderThread* thread = content::RenderThread::Get(); + media::mojom::MediaCapsPtr media_caps; + thread->GetRemoteInterfaces()->GetInterface(&media_caps); + media::mojom::MediaCapsObserverPtr proxy; + media_caps_observer_.reset(new media::MediaCapsObserverImpl(&proxy)); + media_caps->AddObserver(std::move(proxy)); chromecast::media::CastMediaClient::Initialize();
diff --git a/chromecast/renderer/cast_content_renderer_client.h b/chromecast/renderer/cast_content_renderer_client.h index b0bd2e4..801474f 100644 --- a/chromecast/renderer/cast_content_renderer_client.h +++ b/chromecast/renderer/cast_content_renderer_client.h
@@ -20,6 +20,10 @@ } // namespace network_hints namespace chromecast { +namespace media { +class MediaCapsObserverImpl; +} + namespace shell { class CastRenderThreadObserver; @@ -55,6 +59,7 @@ std::unique_ptr<network_hints::PrescientNetworkingDispatcher> prescient_networking_dispatcher_; std::unique_ptr<CastRenderThreadObserver> cast_observer_; + std::unique_ptr<media::MediaCapsObserverImpl> media_caps_observer_; const bool allow_hidden_media_playback_; DISALLOW_COPY_AND_ASSIGN(CastContentRendererClient);
diff --git a/chromecast/renderer/cast_render_thread_observer.cc b/chromecast/renderer/cast_render_thread_observer.cc index 79ba5b6..b874aea 100644 --- a/chromecast/renderer/cast_render_thread_observer.cc +++ b/chromecast/renderer/cast_render_thread_observer.cc
@@ -5,7 +5,6 @@ #include "chromecast/renderer/cast_render_thread_observer.h" #include "build/build_config.h" -#include "chromecast/renderer/media/capabilities_message_filter.h" #include "chromecast/renderer/media/cma_message_filter_proxy.h" #include "content/public/renderer/render_thread.h" @@ -24,28 +23,22 @@ } void CastRenderThreadObserver::CreateCustomFilters() { - content::RenderThread* thread = content::RenderThread::Get(); #if !defined(OS_ANDROID) + content::RenderThread* thread = content::RenderThread::Get(); cma_message_filter_proxy_ = new media::CmaMessageFilterProxy(thread->GetIOTaskRunner()); thread->AddFilter(cma_message_filter_proxy_.get()); #endif // !defined(OS_ANDROID) - capabilities_message_filter_ = new CapabilitiesMessageFilter; - thread->AddFilter(capabilities_message_filter_.get()); } void CastRenderThreadObserver::OnRenderProcessShutdown() { - content::RenderThread* thread = content::RenderThread::Get(); #if !defined(OS_ANDROID) + content::RenderThread* thread = content::RenderThread::Get(); if (cma_message_filter_proxy_.get()) { thread->RemoveFilter(cma_message_filter_proxy_.get()); cma_message_filter_proxy_ = nullptr; } #endif // !defined(OS_ANDROID) - if (capabilities_message_filter_.get()) { - thread->RemoveFilter(capabilities_message_filter_.get()); - capabilities_message_filter_ = nullptr; - } } } // namespace shell
diff --git a/chromecast/renderer/cast_render_thread_observer.h b/chromecast/renderer/cast_render_thread_observer.h index 297c3f2..2a53f6d 100644 --- a/chromecast/renderer/cast_render_thread_observer.h +++ b/chromecast/renderer/cast_render_thread_observer.h
@@ -13,7 +13,6 @@ #include "content/public/renderer/render_thread_observer.h" namespace chromecast { -class CapabilitiesMessageFilter; namespace media { class CmaMessageFilterProxy; } @@ -34,7 +33,6 @@ #if !defined(OS_ANDROID) scoped_refptr<media::CmaMessageFilterProxy> cma_message_filter_proxy_; #endif // !defined(OS_ANDROID) - scoped_refptr<CapabilitiesMessageFilter> capabilities_message_filter_; DISALLOW_COPY_AND_ASSIGN(CastRenderThreadObserver); };
diff --git a/chromecast/renderer/media/BUILD.gn b/chromecast/renderer/media/BUILD.gn index 81ccc0a..031628f 100644 --- a/chromecast/renderer/media/BUILD.gn +++ b/chromecast/renderer/media/BUILD.gn
@@ -8,15 +8,13 @@ source_set("media") { sources = [ - "capabilities_message_filter.cc", - "capabilities_message_filter.h", + "media_caps_observer_impl.cc", + "media_caps_observer_impl.h", ] deps = [ - "//base", - "//chromecast/common/media", + "//chromecast/common/media:interfaces", "//chromecast/media/base", - "//ipc", ] if (enable_cma) { @@ -38,10 +36,12 @@ ] deps += [ + "//chromecast/common/media", "//chromecast/media", "//content/public/renderer", "//gpu/command_buffer/client:gles2_interface", "//gpu/command_buffer/common", + "//ipc", "//media", "//ui/gfx/geometry", ]
diff --git a/chromecast/renderer/media/DEPS b/chromecast/renderer/media/DEPS index 194be1c..3ad6543 100644 --- a/chromecast/renderer/media/DEPS +++ b/chromecast/renderer/media/DEPS
@@ -1,3 +1,4 @@ include_rules = [ + "+mojo/public", "+ui/gfx/geometry", ]
diff --git a/chromecast/renderer/media/capabilities_message_filter.cc b/chromecast/renderer/media/capabilities_message_filter.cc deleted file mode 100644 index fb109721..0000000 --- a/chromecast/renderer/media/capabilities_message_filter.cc +++ /dev/null
@@ -1,32 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chromecast/renderer/media/capabilities_message_filter.h" - -#include "chromecast/common/media/cast_messages.h" -#include "chromecast/media/base/media_caps.h" - -namespace chromecast { - -CapabilitiesMessageFilter::CapabilitiesMessageFilter() { -} - -CapabilitiesMessageFilter::~CapabilitiesMessageFilter() { -} - -bool CapabilitiesMessageFilter::OnMessageReceived(const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(CapabilitiesMessageFilter, message) - IPC_MESSAGE_HANDLER(CmaMsg_UpdateSupportedHdmiSinkCodecs, - OnUpdateSupportedHdmiSinkCodecs) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void CapabilitiesMessageFilter::OnUpdateSupportedHdmiSinkCodecs(int codecs) { - ::media::SetHdmiSinkCodecs(codecs); -} - -} // namespace chromecast
diff --git a/chromecast/renderer/media/capabilities_message_filter.h b/chromecast/renderer/media/capabilities_message_filter.h deleted file mode 100644 index 1489579..0000000 --- a/chromecast/renderer/media/capabilities_message_filter.h +++ /dev/null
@@ -1,30 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROMECAST_RENDERER_MEDIA_CAPABILITIES_MESSAGE_FILTER_H_ -#define CHROMECAST_RENDERER_MEDIA_CAPABILITIES_MESSAGE_FILTER_H_ - -#include "base/macros.h" -#include "ipc/message_filter.h" - -namespace chromecast { - -class CapabilitiesMessageFilter : public IPC::MessageFilter { - public: - CapabilitiesMessageFilter(); - - // IPC::ChannelProxy::MessageFilter implementation: - bool OnMessageReceived(const IPC::Message& message) override; - - private: - ~CapabilitiesMessageFilter() override; - - void OnUpdateSupportedHdmiSinkCodecs(int codecs); - - DISALLOW_COPY_AND_ASSIGN(CapabilitiesMessageFilter); -}; - -} // namespace chromecast - -#endif // CHROMECAST_RENDERER_MEDIA_CAPABILITIES_MESSAGE_FILTER_H_
diff --git a/chromecast/renderer/media/media_caps_observer_impl.cc b/chromecast/renderer/media/media_caps_observer_impl.cc new file mode 100644 index 0000000..d6b776f --- /dev/null +++ b/chromecast/renderer/media/media_caps_observer_impl.cc
@@ -0,0 +1,23 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromecast/renderer/media/media_caps_observer_impl.h" + +#include "chromecast/media/base/media_caps.h" + +namespace chromecast { +namespace media { + +MediaCapsObserverImpl::MediaCapsObserverImpl(mojom::MediaCapsObserverPtr* proxy) + : binding_(this, proxy) {} + +MediaCapsObserverImpl::~MediaCapsObserverImpl() = default; + +void MediaCapsObserverImpl::SupportedHdmiSinkCodecsChanged( + uint32_t codec_support_bitmask) { + ::media::SetHdmiSinkCodecs(codec_support_bitmask); +} + +} // namespace media +} // namespace chromecast
diff --git a/chromecast/renderer/media/media_caps_observer_impl.h b/chromecast/renderer/media/media_caps_observer_impl.h new file mode 100644 index 0000000..ba3bd00b --- /dev/null +++ b/chromecast/renderer/media/media_caps_observer_impl.h
@@ -0,0 +1,32 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_RENDERER_MEDIA_MEDIA_CAPS_OBSERVER_IMPL_H_ +#define CHROMECAST_RENDERER_MEDIA_MEDIA_CAPS_OBSERVER_IMPL_H_ + +#include "base/macros.h" +#include "chromecast/common/media/media_caps.mojom.h" +#include "mojo/public/cpp/bindings/binding.h" + +namespace chromecast { +namespace media { + +class MediaCapsObserverImpl : public mojom::MediaCapsObserver { + public: + explicit MediaCapsObserverImpl(mojom::MediaCapsObserverPtr* proxy); + ~MediaCapsObserverImpl() override; + + private: + void SupportedHdmiSinkCodecsChanged( + uint32_t supported_codec_bitmask) override; + + mojo::Binding<mojom::MediaCapsObserver> binding_; + + DISALLOW_COPY_AND_ASSIGN(MediaCapsObserverImpl); +}; + +} // namespace media +} // namespace chromecast + +#endif // CHROMECAST_RENDERER_MEDIA_MEDIA_CAPS_OBSERVER_IMPL_H_
diff --git a/chromeos/accelerometer/accelerometer_reader.cc b/chromeos/accelerometer/accelerometer_reader.cc index e07eb53e..8e46534 100644 --- a/chromeos/accelerometer/accelerometer_reader.cc +++ b/chromeos/accelerometer/accelerometer_reader.cc
@@ -32,13 +32,18 @@ namespace { // Paths to access necessary data from the accelerometer device. -const base::FilePath::CharType kAccelerometerTriggerPath[] = - FILE_PATH_LITERAL("/sys/bus/iio/devices/trigger0/trigger_now"); const base::FilePath::CharType kAccelerometerDevicePath[] = FILE_PATH_LITERAL("/dev/cros-ec-accel"); const base::FilePath::CharType kAccelerometerIioBasePath[] = FILE_PATH_LITERAL("/sys/bus/iio/devices/"); +// Trigger created by accelerometer-init.sh to query the sensors. +const char kTriggerPrefix[] = "trigger"; +const char kTriggerName[] = "sysfstrig0\n"; + +// Sysfs entry to trigger readings. +const base::FilePath::CharType kTriggerNow[] = "trigger_now"; + // This is the per source scale file in use on kernels older than 3.18. We // should remove this when all devices having accelerometers are on kernel 3.18 // or later or have been patched to use new format: http://crbug.com/510831 @@ -165,6 +170,9 @@ // Number of accelerometers on device. size_t count; + // sysfs entry to trigger readings. + base::FilePath trigger_now; + // Which accelerometers are present on device. bool has[ACCELEROMETER_SOURCE_COUNT]; @@ -240,10 +248,39 @@ } return; } - if (!base::PathExists(base::FilePath(kAccelerometerTriggerPath))) { + + // Find trigger to use: + base::FileEnumerator trigger_dir(base::FilePath(kAccelerometerIioBasePath), + false, base::FileEnumerator::DIRECTORIES); + std::string prefix = kTriggerPrefix; + for (base::FilePath name = trigger_dir.Next(); !name.empty(); + name = trigger_dir.Next()) { + if (name.BaseName().value().substr(0, prefix.size()) != prefix) + continue; + std::string trigger_name; + if (!base::ReadFileToString(name.Append("name"), &trigger_name)) { + if (base::SysInfo::IsRunningOnChromeOS()) { + LOG(WARNING) << "Unable to read the trigger name at " << name.value(); + } + continue; + } + if (trigger_name == kTriggerName) { + base::FilePath trigger_now = name.Append(kTriggerNow); + if (!base::PathExists(trigger_now)) { + if (base::SysInfo::IsRunningOnChromeOS()) { + LOG(ERROR) << "Accelerometer trigger does not exist at " + << trigger_now.value(); + } + return; + } else { + configuration_.trigger_now = trigger_now; + break; + } + } + } + if (configuration_.trigger_now.empty()) { if (base::SysInfo::IsRunningOnChromeOS()) { - LOG(ERROR) << "Accelerometer trigger does not exist at" - << kAccelerometerTriggerPath; + LOG(ERROR) << "Accelerometer trigger not found"; } return; } @@ -426,8 +463,7 @@ DCHECK(initialization_successful_); // Initiate the trigger to read accelerometers simultaneously - int bytes_written = base::WriteFile( - base::FilePath(kAccelerometerTriggerPath), "1\n", 2); + int bytes_written = base::WriteFile(configuration_.trigger_now, "1\n", 2); if (bytes_written < 2) { PLOG(ERROR) << "Accelerometer trigger failure: " << bytes_written; return;
diff --git a/components/arc/common/arc_bridge.mojom b/components/arc/common/arc_bridge.mojom index de0c9d42..17b1c3b 100644 --- a/components/arc/common/arc_bridge.mojom +++ b/components/arc/common/arc_bridge.mojom
@@ -26,7 +26,7 @@ import "tts.mojom"; import "video.mojom"; -// Next MinVersion: 17 +// Next MinVersion: 18 // Deprecated method IDs: 101, 105 // Next method ID: 124 interface ArcBridgeHost { @@ -96,7 +96,7 @@ [MinVersion=12] OnStorageManagerInstanceReady@118(StorageManagerInstance instance_ptr); // Notifies Chrome that the TtsInstance interface is ready. - [MinVersion=16] OnTtsInstanceReady@123(TtsInstance instance_ptr); + [MinVersion=17] OnTtsInstanceReady@123(TtsInstance instance_ptr); // Notifies Chrome that the VideoInstance interface is ready. [MinVersion=6] OnVideoInstanceReady@107(VideoInstance instance_ptr);
diff --git a/components/arc/common/notifications.mojom b/components/arc/common/notifications.mojom index da6a74a..22ebb8fc 100644 --- a/components/arc/common/notifications.mojom +++ b/components/arc/common/notifications.mojom
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // -// Next MinVersion: 6 +// Next MinVersion: 7 module arc.mojom; @@ -75,6 +75,8 @@ // on notification update is ignored. [MinVersion=5] bool use_custom_notification; + [MinVersion=6] + ArcBitmap? small_icon; }; [MinVersion=2]
diff --git a/components/nacl/broker/BUILD.gn b/components/nacl/broker/BUILD.gn index c7d36f6..82b9bcc 100644 --- a/components/nacl/broker/BUILD.gn +++ b/components/nacl/broker/BUILD.gn
@@ -108,6 +108,7 @@ "//chrome:nacl64_exe_version", "//components/crash/content/app:app_breakpad_mac_win_to_be_deleted", "//components/nacl/loader:nacl_helper_win_64", + "//content/public/common:static_features", "//content/public/common:static_switches", "//ppapi/proxy:ipc", "//sandbox",
diff --git a/components/policy/resources/policy_templates_am.xtb b/components/policy/resources/policy_templates_am.xtb index 58d3357..00946eb 100644 --- a/components/policy/resources/policy_templates_am.xtb +++ b/components/policy/resources/policy_templates_am.xtb
@@ -242,6 +242,13 @@ ይህ መመሪያ ወደ እውነት ከተቀናበረ <ph name="PRODUCT_OS_NAME" /> የራስ-ዝማኔዎችን በHTTP በኩል ለማውረድ ይሞክራል። መመሪያው ወደ ሐሰት ወይም እንዳልተቀናበረ ከተተወ HTTPS የሚላኩ ራስ-ዝማኔዎችን ለማውረድ ስራ ላይ ይውላል።</translation> <translation id="2006530844219044261">የኃይል አስተዳደር</translation> <translation id="201557587962247231">የመሣሪያ ሁኔታ ሪፓርት ሰቀላዎች ድግግሞሽ</translation> +<translation id="2018836497795982119">የመሣሪያው አስተዳደር አገልግሎት ለተጠቃሚ መመሪያ መረጃ የተጠየቀበትን ክፍለ-ጊዜ በሚሊሰክንዶች ያስቀምጣል። + + ይህን መመሪያ ማዋቀር ነባሪውን የ3 ሰዓቶች እሴት ይሽራል። ለዚህ መመሪያ የሚሆኑ የሚሠሩ እሴቶች ከ1800000 (30 ደቂቃዎች) እስከ 86400000 (1 ቀን) ባለው ክልል ውስጥ ናቸው። በዚህ ክልል ውስጥ ያልሆኑ ማንኛቸውም እሴቶች ወደ የሚመለከተው ድንበር እንዲጠጋጉ ይደረጋሉ። የመሣሪያ ስርዓቱ የመመሪያ ማሳወቂያዎችን የሚደግፍ ከሆነ፣ የማደሻ መዘግየት ጊዜው ወደ 24 ሰዓታት ይዋቀራል፤ ይህም የሆነበት ምክንያት የመመሪያ ማሳወቂያዎች መመሪያ በተለወጠ ቁጥር በራስ-ሰር ማደስን እንደሚያስገድዱ ስለሚጠበቅ ነው። + + ይህን መመሪያ እንዳልተዋቀረ መተው <ph name="PRODUCT_NAME" /> ነባሪውን የ3 ሰዓቶች እሴት እንዲጠቀም ያደርገዋል። + + የመሣሪያ ስርዓቱ የመመሪያ ማሳወቂያዎችን የሚደግፍ ከሆነ የማደሻ መዘግየት ጊዜው (ሁሉንም ነባሪዎች እና የዚህን መመሪያ እሴት ችላ ተብለው) ወደ 24 ሰዓታት እንደሚዋቀር ልብ ይበሉ፤ ይህም የሆነበት ምክንያት የመመሪያ ማሳወቂያዎች መመሪያ በተለወጠ ቁጥር በራስ-ሰር ማደስን እንደሚያስገድድ ስለሚጠበቅ ነው፣ በዚህም ተደጋጋሚ ማደሶች አላስፈላጊ ይሆናሉ።</translation> <translation id="2024476116966025075">ለርቀት መዳረሻ ደንበኛዎች የተፈለገውን የጎራ ስም ያዋቅሩ</translation> <translation id="2030905906517501646">ነባሪ የፍለጋ አቅራቢ ቁልፍ ቃል</translation> <translation id="206623763829450685">የትኛዎቹ የኤችቲቲፒ ማረጋገጫ መርሐግብሮች በ<ph name="PRODUCT_NAME" /> የሚደገፉ መሆናቸውን ይገልጻል። @@ -1084,11 +1091,6 @@ መመሪያው ራሱ ከላይ ባሉ የመሣሪያ ስርዓቶች ላይ የሚደገፍ ሲሆን እያነቃው ያለው ባህሪ ባነሱ የመሣሪያ ስርዓቶች ላይ ሊገኝ ይችላል። ሁሉም የተቋረጡ የድር የመሣሪያ ስርዓት ባህሪያት አይደሉም ዳግም ሊነቁ የሚችሉት። ከታች በግልፅ የተጠቀሱት ብቻ ናቸው ለተወሰነ ጊዜ ብቻ ሊነቁ የሚችሉት፣ ይህም ደግሞ እንደየ ባህሪው ይለያያል። የሕብረቁምፊው መለያ አጠቃላይ ቅርፀት [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] ይሆናል። እንደ ማጣቀሻ፣ ከድር የመሣሪያ ስርዓት ባህሪ ለውጦች በስተጀርባ ያለውን ዓላማ https://bit.ly/blinkintents ላይ ማግኘት ይችላሉ። </translation> <translation id="4442582539341804154">መሣሪያው ስራ ሲፈታ ወይም ሲቋረጥ ቁልፍን አንቃ</translation> -<translation id="4445684791305970001">የገንቢ መሣሪያዎቹን እና የJavaScript መሥሪያውን ያሰናክላል። - - ይህን ቅንብር ካነቁ የገንቢ መሣሪያዎች ሊደረሰባቸው አይችልም፣ እና የድር ጣቢያ ክፍሎች ከአሁን በኋላ ሊመረመሩ አይችሉም። የየገንቢ መሣሪያውን ወይም የJavaScript መሥሪያውን የሚከፍቱ ማንኛውም የቁልፍ ሰሌዳ አቋረጮች እና ምናሌ ወይም የአግባበ ምናሌ ግቤቶች ይሰናከላሉ። - - ይህን አማራጭ እንዲሰናከል ማዋቀር ወይም እንዳልተዋቀረ መተው የገንቢ መሣሪያዎች እና የJavaScript መሥሪያው እንዲሰራባቸው ይፈቅድላቸዋል።</translation> <translation id="4449545651113180484">ማያ ገጹን በሰዓት አቅጣጫ 270 ዲግሪ አሽከርክር</translation> <translation id="4467952432486360968">የሶስተኛ ወገን ኩኪዎችን ያግዱ</translation> <translation id="4474167089968829729">የይለፍ ቃሎችን ወደ የይለፍ ቃል አስተዳዳሪ ማስቀመጥን ያንቁ</translation> @@ -1353,6 +1355,13 @@ ይህ መመሪያ ከተዋቀረ የመግቢያ ገጹ ላይ ያለተጠቃሚ መስተጋብር የተወሰነ ጊዜ ካለፈ በኋላ የተገለጸው ክፍለ-ጊዜ በራስ-ሰር ይገባል። ይፋዊ ክፍለ-ጊዜው አስቀድሞ መዋቀር አለበት (|DeviceLocalAccounts| ይመልከቱ)። ይህ መመሪያ ካልተዋቀረ ምንም ራስ-መግባት አይኖርም።</translation> +<translation id="5529037166721644841">የመሣሪያው አስተዳደር አገልግሎት ለመሣሪያ መመሪያ መረጃ የተጠየቀበትን ክፍለ-ጊዜ በሚሊሰክንዶች ያስቀምጣል። + + ይህን መመሪያ ማዋቀር ነባሪውን የ3 ሰዓቶች እሴት ይሽራል። ለዚህ መመሪያ የሚሆኑ የሚሠሩ እሴቶች ከ1800000 (30 ደቂቃዎች) እስከ 86400000 (1 ቀን) ባለው ክልል ውስጥ ናቸው። በዚህ ክልል ውስጥ ያልሆኑ ማንኛቸውም እሴቶች ወደ የሚመለከተው ድንበር እንዲጠጋጉ ይደረጋሉ። + + ይህን መመሪያ እንዳልተዋቀረ መተው <ph name="PRODUCT_OS_NAME" /> ነባሪውን የ3 ሰዓቶች እሴት እንዲጠቀም ያደርገዋል። + + የመሣሪያ ስርዓቱ የመመሪያ ማሳወቂያዎችን የሚደግፍ ከሆነ የማደሻ መዘግየት ጊዜው (ሁሉንም ነባሪዎች እና የዚህን መመሪያ እሴት ችላ ተብለው) ወደ 24 ሰዓታት እንደሚዋቀር ልብ ይበሉ፤ ይህም የሆነበት ምክንያት የመመሪያ ማሳወቂያዎች መመሪያ በተለወጠ ቁጥር በራስ-ሰር ማደስን እንደሚያስገድድ ስለሚጠበቅ ነው፣ በዚህም ተደጋጋሚ ማደሶች አላስፈላጊ ይሆናሉ።</translation> <translation id="5535957389335373033">የአውታረ መረብ መከታተያ ጥቅሎች በምን ያህል ተደጋጋሚነት እንደሚላኩ፣ በሚሊሰከንዶች። ይህ መመሪያ እንዳልተዋቀረ ከተተወ ነባሪው ድግግሞሽ 3 ደቂቃዎች ነው። ዝቅተኛው @@ -1917,6 +1926,9 @@ ይህ መመሪያ የሚከበረው የ«DefaultSearchProviderEnabled» መመሪያ ከነቃ ብቻ ነው።</translation> <translation id="7302043767260300182">በሶኬት ኃይል ላይ ሲሆን የማያ ገጽ መቆለፍ መዘግየት</translation> +<translation id="7311458740754205918">ይህ ወደ እውነት ከተዋቀረ ወይም ሳይዋቀር ከቀረ የአዲስ ትር ገጹ በተጠቃሚው የአሰሳ ታሪክ፣ ዝንባሌዎች ወይም አካባቢ ላይ ተመስርቶ የይዘት አስተያየት ጥቆማዎችን ሊያሳይ ይችላል። + + ይህ ወደ ሐሰት ከተዋቀረ በአዲሱ የትር ገጽ ላይ በራስ-ሰር የፈለቁ የይዘት አስተያየት ጥቆማዎች እንዲታዩ አይደረጉም።</translation> <translation id="7323896582714668701">የ<ph name="PRODUCT_NAME" /> ተጨማሪ የትዕዛዝ መስመር ግቤቶች</translation> <translation id="7329842439428490522">በባትሪ ኃይል ላይ ሲሆን ከሞላ በኋላ ማያ ገጹ የሚጠፋበት የተጠቃሚ ግብዓት ሳይኖር የሚቆይበት ጊዜ ይገልጻል። @@ -2059,6 +2071,7 @@ <translation id="7763479091692861127"> ለስርዓተ ክወና ዝማኔዎች የሚፈቀዱ የግንኙነት አይነቶች። የስርዓተ ክወና ዝማኔዎች በመጠናቸው ምክንያት ግንኙነቱ ላይ ከባድ ጫና ሊያሳድሩ ይችላሉ፣ እንዲሁም ተጨማሪ ወጪ ሊያስከትሉም ይችላሉ። ስለዚህ በነባሪት ውድ ተብለው ለሚወሰዱ የግንኙነት አይነቶች በነባሪነት አልነቁም፣ ለጊዜው WiMax፣ ብሉቱዝ እና የተንቀሳቃሽ ስልክን ጨምሮ። የሚታወቁት የግንኙነት አይነት ለዪዎች «ኤተርኔት»፣ «wifi»፣ «wimax»፣ «ብሉቱዝ» እና «ተንቀሳቃሽ ስልክ» ናቸው።</translation> +<translation id="7763614521440615342">በአዲስ የትር ገጹ ላይ የይዘት አስተያየት ጥቆማዎች አሳይ</translation> <translation id="7766336524667238790">እንደ የመተግበሪያ መታወቂያ እና ስሪት ያሉ ስለገቢር የኪዮስክ ክፍለ-ጊዜ መረጃን ሪፓርት ያድርጉ።
diff --git a/components/policy/resources/policy_templates_ar.xtb b/components/policy/resources/policy_templates_ar.xtb index 818ee720..1242781 100644 --- a/components/policy/resources/policy_templates_ar.xtb +++ b/components/policy/resources/policy_templates_ar.xtb
@@ -232,6 +232,13 @@ عند تعيين هذه السياسة على "صحيح"، سيحاول <ph name="PRODUCT_OS_NAME" /> تنزيل أحمال التحديث التلقائي عبر HTTP. وعند تعيين السياسة على "خطأ" أو عدم تعيينها، سيتم استخدام HTTPS لتنزيل أحمال التحديث التلقائي.</translation> <translation id="2006530844219044261">إدارة الطاقة</translation> <translation id="201557587962247231">فترة تكرار تحميلات الإبلاغ عن حالة الجهاز</translation> +<translation id="2018836497795982119">تحدد الفترة بالمللي ثانية والتي تطلب بعدها خدمة إدارة الجهاز معلومات بشأن سياسة المستخدم. + + يؤدي تعيين هذه السياسة إلى إلغاء القيمة الافتراضية التي تبلغ 3 ساعات. تتراوح القيم الصالحة لهذه السياسة في النطاق من 1800000 (30 دقيقة) إلى 86400000 (يوم واحد). وسيتم تثبيت أي قيمة ليست داخل هذا النطاق على الحد النسبي. وفي حالة دعم النظام الأساسي لإشعارات السياسة، سيتم تعيين تأخير التحديث إلى 24 ساعة لأنه من المتوقع أن إشعارات السياسة ستفرض تحديثًا تلقائيًا في الوقت الذي يتم فيه تغيير السياسة. + + يؤدي ترك هذه السياسة بدون تعيينها إلى جعل <ph name="PRODUCT_NAME" /> يستخدم القيمة الافتراضية التي تبلغ 3 ساعات. + +لاحظ أنه في حالة دعم النظام الأساسي لإشعارات السياسة، سيتم تعيين تأخير التحديث إلى 24 ساعة (مع تجاهل جميع الإعدادات الافتراضية وقيمة هذه السياسة) لأنه من المتوقع أن إشعارات السياسة ستفرض تحديثًا تلقائيًا في الوقت الذي يتم فيه تغيير السياسة، مما يجعل المزيد من عمليات التحديث المتكررة غير لازمة.</translation> <translation id="2024476116966025075">تهيئة اسم النطاق المطلوب لعملاء الدخول عن بُعد</translation> <translation id="2030905906517501646">الكلمة الرئيسية لمزود البحث الافتراضي</translation> <translation id="206623763829450685">تحدد أنظمة مصادقة HTTP التي يتم دعمها من خلال <ph name="PRODUCT_NAME" />. @@ -1012,7 +1019,6 @@ بينما يتم دعم هذه السياسة ذاتها في الأنظمة الأساسية المذكورة أعلاه، قد تتوفر الميزة التي تمكنّها هذه السياسة في عدد أقل من الأنظمة الأساسية. لا يمكن إعادة تمكين جميع ميزات الأنظمة الأساسية للويب المتوقفة. فلا يمكن سوى إعادة تمكين الميزات المذكورة صراحةً أدناه لوقت محدد، يختلف حسب كل ميزة. وسيصبح التنسيق العام لعلامة string هو [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. وكمرجع، يمكنك العثور على الهدف من التغييرات الطارئة على ميزات النظام الأساسي للويب على https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">تمكين القفل عندما يصبح الجهاز في وضع الخمول أو التعليق</translation> -<translation id="4445684791305970001">لتعطيل أدوات مطوّري البرامج ووحدة تحكم جافا سكريبت. إذا تم تمكين هذا الإعداد، فلا يمكن الدخول إلى أدوات مطوّري البرامج كما لا يمكن فحص عناصر موقع الويب. سيتم تعطيل أي من اختصارات لوحة المفاتيح وإدخالات القائمة وإدخالات قائمة السياقات التي تفتح أدوات مطوّري البرامج أو وحدة تحكم جافا سكريبت. سيؤدي تعيين هذا الخيار على "تعطيل" أو تركه بدون تعيين إلى السماح للمستخدم باستخدام أدوات مطوّري البرامج ووحدة تحكم جافا سكريبت.</translation> <translation id="4449545651113180484">تدوير الشاشة في اتجاه عقارب الساعة بمقدار 270 درجة</translation> <translation id="4467952432486360968">حظر ملفات تعريف الارتباط للأطراف الثالثة</translation> <translation id="4474167089968829729">تمكين مدير كلمات المرور من حفظ كلمات المرور</translation> @@ -1223,6 +1229,13 @@ في حالة تعيين هذه السياسة، سيتم تسجيل الدخول تلقائيًا إلى الجلسة المحددة بعد مرور فترة زمنية في شاشة تسجيل الدخول بدون أي إجراء من المستخدم. يجب أن تتم تهيئة الجلسة مسبقًا (اطلع على |DeviceLocalAccounts|). في حالة عدم تعيين هذه السياسة، لن يكون هناك تسجيل دخول تلقائي.</translation> +<translation id="5529037166721644841">تحدد الفترة بالمللي ثانية والتي تطلب بعدها خدمة إدارة الجهاز معلومات بشأن سياسة الجهاز. + + يؤدي تعيين هذه السياسة إلى إلغاء القيمة الافتراضية التي تبلغ 3 ساعات. تتراوح القيم الصالحة لهذه السياسة في النطاق من 1800000 (30 دقيقة) إلى 86400000 (يوم واحد). وسيتم تثبيت أي قيمة ليست داخل هذا النطاق على الحد النسبي. + + يؤدي ترك هذه السياسة بدون تعيينها إلى جعل <ph name="PRODUCT_OS_NAME" /> يستخدم القيمة الافتراضية التي تبلغ 3 ساعات. + +لاحظ أنه في حالة دعم النظام الأساسي لإشعارات السياسة، سيتم تعيين تأخير التحديث إلى 24 ساعة (مع تجاهل جميع الإعدادات الافتراضية وقيمة هذه السياسة) لأنه من المتوقع أن إشعارات السياسة ستفرض تحديثًا تلقائيًا في الوقت الذي يتم فيه تغيير السياسة، مما يجعل المزيد من عمليات التحديث المتكررة غير لازمة.</translation> <translation id="5535957389335373033">معدل تكرار إرسال مراقبة حزم الشبكة بالملي ثانية. إذا لم يتم تعيين هذه السياسة، فستستغرق فترة التكرار الافتراضي ثلاث دقائق. ويكون الحد الأدنى @@ -1741,6 +1754,9 @@ يتم الالتزام بهذه السياسة فقط في حالة تمكين سياسة 'DefaultSearchProviderEnabled'.</translation> <translation id="7302043767260300182">مهلة قفل الشاشة عند استخدام طاقة التيار المتردد</translation> +<translation id="7311458740754205918">إذا تم تعيين هذه السياسة على "true" أو لم يتم تعيينها، فقد تُظهر صفحة "علامة التبويب الجديدة" اقتراحات المحتوى بناءً على سجل تصفح المستخدم، أو اهتماماته، أو موقعه. + + وإذا تم تعيين هذه السياسة على "false"، فلن تظهر اقتراحات المحتوى التي تم إنشاؤها تلقائيًا في صفحة "علامة التبويب الجديدة".</translation> <translation id="7323896582714668701">معلمات سطر أوامر إضافية لـ <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">لتحديد المدة الزمنية التي تنقضي بدون تعامل المستخدم مع الجهاز، والتي بعد انقضائها يتم إيقاف تشغيل الشاشة عند استخدام طاقة البطارية. @@ -1875,6 +1891,7 @@ <translation id="7763479091692861127"> أنواع الاتصالات التي يسمح باستخدامها لتحديثات نظام التشغيل. ربما يكون لتحديثات نظام التشغيل ضغطًا كبيرًا على الاتصال نظرًا لحجمها وقد تتحمل تكلفة إضافية. ولهذا لا يتم تمكينها لأنواع الاتصالات التي تُعد مكلفة، والتي تتضمن اتصالات WiMax وبلوتوث والشبكة الخلوية في الوقت الحالي. إن معرّفات أنواع الاتصالات المعتمدة هي "ethernet" و"wifi" و"wimax" و"bluetooth" و"cellular".</translation> +<translation id="7763614521440615342">إظهار اقتراحات المحتوى على صفحة "علامة التبويب الجديدة"</translation> <translation id="7766336524667238790">إبلاغ المعلومات عن جلسة الكشك النشطة مثل رقم تعريف التطبيق وإصداره.
diff --git a/components/policy/resources/policy_templates_bg.xtb b/components/policy/resources/policy_templates_bg.xtb index 35c52ec1..ffa691a 100644 --- a/components/policy/resources/policy_templates_bg.xtb +++ b/components/policy/resources/policy_templates_bg.xtb
@@ -225,6 +225,13 @@ Ако за правилото е зададено true, <ph name="PRODUCT_OS_NAME" /> ще опитва да изтегля автоматичните актуализации чрез HTTP. В случай че е false или не е зададено, за целта ще се използва HTTPS.</translation> <translation id="2006530844219044261">Управление на захранването</translation> <translation id="201557587962247231">Честота на качване на информация за състоянието на устройството</translation> +<translation id="2018836497795982119">Посочва периода в милисекунди, на който услугата за управление на устройството се запитва за информация относно потребителските правила. + +Задаването на това правило отменя стандартната стойност от 3 часа. Валидните стойности са между 1 800 000 (30 минути) и 86 400 000 (1 ден). Всичко извън този диапазон ще бъде променено към съответната граница. Ако платформата поддържа известия за правилата, опресняването ще се извършва на 24 часа, тъй като се очаква, че тези известия автоматично ще го задействат при промяна в правилата. + +Ако правилото не е зададено, <ph name="PRODUCT_NAME" /> ще използва стойността по подразбиране от 3 часа. + +Обърнете внимание, че ако платформата поддържа известия за правилата, опресняването ще се извършва на 24 часа (пренебрегвайки всички стандартни настройки и стойността за това правило), тъй като се очаква, че тези известия ще го задействат принудително при промяна в правилата, при което не е нужно по-често опресняване.</translation> <translation id="2024476116966025075">Конфигуриране на името на задължителния домейн за клиентските програми за отдалечен достъп</translation> <translation id="2030905906517501646">Ключова дума за търсещата машина по подразбиране</translation> <translation id="206623763829450685">Посочва кои схеми за HTTP удостоверяване се поддържат от <ph name="PRODUCT_NAME" />. @@ -1025,7 +1032,6 @@ Въпреки че самото правило се поддържа на горепосочените платформи, функцията, която то активира, може да не е налице за всяка от тях. Не всички оттеглени функции на уеб платформата могат да се активират отново. Само изрично посочените по-долу могат да бъдат включени за ограничен период от време, който е различен за отделните функции. Общият формат на низовия маркер е [ИмеНаОттегленатаФункция]_EffectiveUntil[ггггммдд]. За справка можете да намерите причините зад промените във функциите на уеб платформата на адрес https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Активиране на заключването, когато устройството премине в неактивно или спряно състояние</translation> -<translation id="4445684791305970001">Деактивира инструментите за програмисти и конзолата на JavaScript. Ако активирате тази настройка, няма да имате достъп до съответните инструменти и елементите на уебсайтовете вече няма да могат да бъдат инспектирани. Всички клавишни комбинации и записи в менюта или в контекстни менюта за отваряне на инструментите за програмисти или на конзолата на JavaScript ще бъдат деактивирани. Деактивирането на тази опция или оставянето й незададена ще позволи използването на съответните инструменти и конзола.</translation> <translation id="4449545651113180484">Завъртане на екрана на 270 градуса по часовниковата стрелка</translation> <translation id="4467952432486360968">Блокиране на „бисквитките“ на трети страни</translation> <translation id="4474167089968829729">Активиране на запазването на пароли в диспечера на паролите</translation> @@ -1249,6 +1255,13 @@ Ако това правило е зададено, посочената сесия ще започне автоматично, след като на екрана за вход не е имало потребителско взаимодействие за даден период от време. Обществената сесия трябва вече да е конфигурирана (вижте |DeviceLocalAccounts|). В случай че правилото не е зададено, няма да се осъществи автоматично влизане.</translation> +<translation id="5529037166721644841">Посочва периода в милисекунди, на който услугата за управление на устройството се запитва за информация относно потребителските правила. + +Задаването на това правило отменя стандартната стойност от 3 часа. Валидните стойности са между 1 800 000 (30 минути) и 86 400 000 (1 ден). Всичко извън този диапазон ще бъде променено към съответната граница. + +Ако правилото не е зададено, <ph name="PRODUCT_OS_NAME" /> ще използва стойността по подразбиране от 3 часа. + +Обърнете внимание, че ако платформата поддържа известия за правилата, опресняването ще се извършва през 24 часа (пренебрегвайки всички стандартни настройки и стойността за това правило), тъй като се очаква, че тези известия ще го задействат принудително при промяна в правилата, при което не е нужно по-често опресняване.</translation> <translation id="5535957389335373033">Честота на изпращане на мрежови пакети за наблюдение (в милисекунди). Ако това правило не е зададено, стандартната честота е 3 минути, @@ -1773,6 +1786,9 @@ То се спазва само в случай че правилото „DefaultSearchProviderEnabled“ е активирано.</translation> <translation id="7302043767260300182">Забавяне преди заключване на екрана при работа на променлив ток</translation> +<translation id="7311458740754205918">Ако това правило е true или не е зададено, в новия раздел в браузъра може да се показват предложения за съдържание въз основа на историята на сърфиране, интересите или местоположението на потребителите. + +В случай че е false, в новия раздел в браузъра няма да се показват такива автоматично генерирани предложения.</translation> <translation id="7323896582714668701">Допълнителни параметри в командния ред за <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Посочва периода от време без потребителска активност, след който при работа на батерия екранът се изключва. @@ -1905,6 +1921,7 @@ <translation id="7763479091692861127"> Типовете връзки, които е разрешено да се използват за актуализации на операционната система. Съответните актуализации потенциално упражняват голямо натоварване върху връзката поради размера си и е възможно да доведат до допълнителни разходи. Затова те не са активирани по подразбиране за типове връзки, за които се смята, че са скъпи, включително понастоящем WiMax, Bluetooth и мобилни мрежи. Разпознатите идентификатори за типове връзки са „ethernet“, „wifi“, „wimax“, „bluetooth“ и „cellular“.</translation> +<translation id="7763614521440615342">Показване на предложения за съдържание в новия раздел в браузъра</translation> <translation id="7766336524667238790">Изпращане на информация за активната сесия в павилионен режим, например идентификационния номер и версията на приложението.
diff --git a/components/policy/resources/policy_templates_bn.xtb b/components/policy/resources/policy_templates_bn.xtb index f97491e0..265957c 100644 --- a/components/policy/resources/policy_templates_bn.xtb +++ b/components/policy/resources/policy_templates_bn.xtb
@@ -234,6 +234,14 @@ যদি এই নীতি সত্য হিসাবে সেট করা থাকে, তবে <ph name="PRODUCT_OS_NAME" /> স্বতঃ-আপডেট প্লেলোডগুলিকে HTTP এর মাধ্যমে ডাউনলোড করার চেষ্টা করবে৷ যদি এই নীতি অসত্য হিসাবে সেট করা থাকে বা সেট করা না থাকে, তবে স্বতঃ-আপডেট প্লেলোডগুলি ডাউনলোড করার জন্য HTTPS ব্যবহার করা হবে৷</translation> <translation id="2006530844219044261">পাওয়ার ম্যানেজমেন্ট</translation> <translation id="201557587962247231">ডিভাইসের স্থিতির প্রতিবেদন আপলোডগুলির পুনরাবৃত্তির হার</translation> +<translation id="2018836497795982119">ডিভাইস নীতি তথ্যের জন্য ডিভাইস পরিচালনার পরিষেবা সম্বন্ধে জানতে চাওয়ার সময়টি মিলিসেকেন্ডে নির্ধারণ করে। + + এই নীতিটি সেট করা হলে ৩ ঘন্টার ডিফল্ট মান অগ্রাহ্য করা হয়। এই নীতির জন্য বৈধ মান ৮৬৪০০০০০ (১ দিন) থেকে ১৮০০০০০ (৩০ মিনিট) এর মধ্যে হতে হয়। এই সীমার মধ্যে না থাকা যেকোনো মানকে নিজ নিজ সীমানাতে স্থির করা হবে। প্ল্যাটফর্মটি যদি নীতির বিজ্ঞপ্তিগুলি সমর্থন করে, তাহলে রিফ্রেশ হওয়ার বিলম্ব ২৪ ঘন্টায় সেট করা হবে কারণ এটি আশা করা হয় যে নীতির পরিবর্তন ঘটলেই নীতির বিজ্ঞপ্তিগুলি স্বয়ংক্রিয়ভাবে একবার রিফ্রেশ হতে বাধ্য করবে। + + এই নীতিটি সেট না করে ছেড়ে যাওয়া হলে <ph name="PRODUCT_NAME" /> ৩ ঘন্টার ডিফল্ট মান ব্যবহার করবে। + + + মনে রাখবেন যে, প্ল্যাটফর্মটি যদি নীতির বিজ্ঞপ্তিগুলি সমর্থন করে, তাহলে রিফ্রেশ হওয়ার বিলম্ব ২৪ ঘন্টায় (সব ডিফল্ট এবং এই নীতির মান উপেক্ষা করে) সেট করা হবে কারণ এটি আশা করা হয় যে নীতির পরিবর্তন ঘটলেই নীতির বিজ্ঞপ্তিগুলি স্বয়ংক্রিয়ভাবে একবার রিফ্রেশ হতে বাধ্য করবে, যার ফলে আরো ঘন ঘন রিফ্রেশ হওয়াকে অপ্রয়োজনীয় করে দেয়।</translation> <translation id="2024476116966025075">দূরবর্তী অ্যাক্সেস ক্লায়েন্টের জন্য আবশ্যক ডোমেন নাম কনফিগার করুন</translation> <translation id="2030905906517501646">ডিফল্ট অনুসন্ধান প্রদানকারী কিওয়ার্ড</translation> <translation id="206623763829450685">কোন HTTP প্রমাণীকরণের স্কিমগুলি <ph name="PRODUCT_NAME" /> সমর্থিত তা নির্দিষ্ট করে৷ @@ -1059,11 +1067,6 @@ যখন নীতিটি নিজেই উপরের প্ল্যাটফর্মগুলির উপর সমর্থিত হয় তখন এটি যে বৈশিষ্ট্য সক্ষম করে তা কয়েকটি প্ল্যাটফর্মে উপলব্ধ হতে পারে। সমস্ত থামিয়ে দেওয়া ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্যগুলি আবার সক্ষম করা যাবে না। স্পষ্টভাবে নীচের তালিকায় রয়েছে শুধুমাত্র এমন বৈশিষ্ট্যই স্বল্প সময়ের জন্য আবার সক্ষম করা যাবে, যা প্রতি বৈশিষ্ট্য অনুযায়ী ভিন্ন হয়। স্ট্রিং ট্যাগের সাধারণ ফর্ম্যাট হবে [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]। সূত্র দেখার জন্য, https://bit.ly/blinkintents এ গিয়ে আপনি ওয়েব প্ল্যাটফর্ম বৈশিষ্ট্য পরিবর্তনের আসল উদ্দেশ্য খুঁজে পাবেন। </translation> <translation id="4442582539341804154">যখন ডিভাইস নিস্ক্রিয় অথবা স্থগিত হয়ে যায় তখন লক সক্ষম করুন</translation> -<translation id="4445684791305970001">বিকাশকারী সরঞ্জাম ও JavaScript কনসোলকে অক্ষম করে৷ - -আপনি এই সেটিং সক্ষম করলে, বিকাশকারী সরঞ্জামে অ্যাক্সেস করা যাবে না এবং ওয়েব-সাইট উপাদানে আর পরিদর্শন করা যাবে না৷ বিকাশকারী সরঞ্জাম বা JavaScript কনসোল খোলার জন্য যেকোন কীবোর্ড শর্টকাট ও যেকোন মেনু বা প্রসঙ্গ মেনু প্রবেশকার্য অক্ষম হবে৷ - -এই বিকল্পটি অক্ষম করা অথবা সেট করা ছাড়া ছেড়ে দেওয়া হলে ব্যবহারকারী বিকাশকারী টুল এবং JavaScript কনসোল ব্যবহার করতে পারবে৷</translation> <translation id="4449545651113180484">স্ক্রীনকে ঘড়ির কাঁটার দিকে ২৭০ ডিগ্রী দ্বারা ঘোরান</translation> <translation id="4467952432486360968">তৃতীয় পক্ষের কুকিজ অবরোধ করুন</translation> <translation id="4474167089968829729">পাসওয়ার্ড পরিচালকে পাসওয়ার্ড সংরক্ষণ করা সক্ষম করুন</translation> @@ -1324,6 +1327,13 @@ যদি এই নীতিটি সেট থাকে, তাহলে নির্দিষ্ট সেশনটি ব্যবহারকারীর কোনো ভূমিকা ছাড়াই লগইন স্ক্রিনে একটি অতিবাহিত সময়ের পর স্বয়ংক্রিয়ভাবে লগইন হবে৷ সর্বজনীন সেশনটিকে অবশ্যই ইতিমধ্যেই কনফিগার করা হতে হবে (|DeviceLocalAccounts| দেখুন)৷ যদি এই নীতিটি সেট করা না থাকে, তখন কোনো স্বয়ংক্রিয়-লগইন হবে না৷</translation> +<translation id="5529037166721644841">ডিভাইস নীতি তথ্যের জন্য ডিভাইস পরিচালনার পরিষেবা সম্বন্ধে জানতে চাওয়ার সময়টি মিলিসেকেন্ডে নির্ধারণ করে। + + এই নীতিটি সেট করা হলে ৩ ঘন্টার ডিফল্ট মান অগ্রাহ্য করা হয়। এই নীতির জন্য বৈধ মান ৮৬৪০০০০০ (১ দিন) থেকে ১৮০০০০০ (৩০ মিনিট) এর মধ্যে হতে হয়। এই সীমার মধ্যে না থাকা যেকোনো মানকে নিজ নিজ সীমানাতে স্থির করা হবে। + + এই নীতিটি সেট না করে ছেড়ে যাওয়া হলে <ph name="PRODUCT_OS_NAME" /> ৩ ঘন্টার ডিফল্ট মান ব্যবহার করবে। + + মনে রাখবেন যে, প্ল্যাটফর্মটি যদি নীতির বিজ্ঞপ্তিগুলি সমর্থন করে, তাহলে রিফ্রেশ হওয়ার বিলম্ব ২৪ ঘন্টায় (সব ডিফল্ট এবং এই নীতির মান উপেক্ষা করে) সেট করা হবে কারণ এটি আশা করা হয় যে নীতির পরিবর্তন ঘটলেই নীতির বিজ্ঞপ্তিগুলি স্বয়ংক্রিয়ভাবে একবার রিফ্রেশ হতে বাধ্য করবে, যার ফলে আরো ঘন ঘন রিফ্রেশ হওয়াকে অপ্রয়োজনীয় করে দেয়।</translation> <translation id="5535957389335373033">মনিটরিং নেটওয়ার্ক প্যাকেট কত ঘন ঘন পাঠানো হয়, মিলিসেকেন্ডের হিসেবে। যদি এই নীতি সেট না করে রাখা হয়, তাহলে পুনঃপুন সংঘটনের ডিফল্ট হার ৩ মিনিট। @@ -1881,6 +1891,9 @@ এই নীতিটি 'ডিফল্ট অনুসন্ধান প্রদানকারী সক্ষমিত' নীতিটি সক্ষম করা থাকলেই শুধুমাত্র বিবেচিত হবে৷</translation> <translation id="7302043767260300182">AC পাওয়ার চলাকালীন স্ক্রীন লকে বিলম্ব</translation> +<translation id="7311458740754205918">এটি মিথ্যাতে সেট করা হলে বা সেট না করা হলে, ব্যবহারকারীর ব্রাউজিং ইতিহাস, আগ্রহ বা অবস্থানের ভিত্তিতে নতুন ট্যাব পৃষ্ঠাটি সামগ্রী প্রস্তাবনা দেখাতে পারে। + + এটি মিথ্যাতে সেট করা হলে, নতুন ট্যাব পৃষ্ঠায় স্বয়ংক্রিয়ভাবে তৈরি হওয়া সামগ্রী প্রস্তাবনা দেখানো হয় না।</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" />এর জন্য অতিরিক্ত কমান্ড লাইন প্যারামিটার</translation> <translation id="7329842439428490522">ব্যবহারকারীর ইনপুট ছাড়াই সময়কাল নির্দিষ্ট করে, তারপর ব্যাটারি শক্তি চলতে থাকলেও স্ক্রীনটি বন্ধ হয়ে যায়৷ @@ -2019,6 +2032,7 @@ <translation id="7763479091692861127"> বিভিন্ন প্রকারের সংযোগ যা OS আপডেটের জন্য ব্যবহার করতে মঞ্জুরিপ্রাপ্ত৷ OS আপডেটগুলি তাদের আকারের কারণে সংযোগের উপর সম্ভাব্যরূপে অত্যধিক চাপ সৃষ্টি করে এবং এর জন্য অতিরিক্ত মূল্যও লাগতে পারে৷ তাই, এগুলি ডিফল্টভাবে সেইসব সংযোগ প্রকারের জন্য সক্ষমিত থাকে না যেগুলিকে ব্যয়বহুল বিবেচনা করা হয়, এই মুহূর্তে এর মধ্যে রয়েছে WiMax, ব্লুটুথ এবং Cellular৷ স্বীকৃত সংযোগ প্রকার শনাক্তকারীগুলি হল "ethernet", "wifi", "wimax", "bluetooth" এবং "cellular"৷</translation> +<translation id="7763614521440615342">নতুন ট্যাব পৃষ্ঠার জন্য সামগ্রী প্রস্তাবনা দেখান</translation> <translation id="7766336524667238790">সক্রিয় কিয়স্ক অধিবেশন সম্পর্কে তথ্য, যেমন আবেদন আইডি এবং সংস্করণ প্রতিবেদন করুন।
diff --git a/components/policy/resources/policy_templates_ca.xtb b/components/policy/resources/policy_templates_ca.xtb index f077893f..d552f476 100644 --- a/components/policy/resources/policy_templates_ca.xtb +++ b/components/policy/resources/policy_templates_ca.xtb
@@ -229,6 +229,13 @@ Si aquesta política es configura com a "true", <ph name="PRODUCT_OS_NAME" /> provarà de baixar les càrregues útils d'actualització automàtica mitjançant HTTP. Si la política es configura com a "false" o si no es configura, s'utilitzarà HTTPS per baixar les càrregues útils d'actualització automàtica.</translation> <translation id="2006530844219044261">Gestió de l'alimentació</translation> <translation id="201557587962247231">Freqüència amb què s'envien càrregues per informar sobre l'estat del dispositiu</translation> +<translation id="2018836497795982119">Especifica la freqüència en mil·lisegons amb què se sol·licita informació sobre la política del dispositiu al servei de gestió de dispositius. + + Si aquesta política s'estableix, el valor predeterminat de tres hores se substituirà per un dels valors vàlids, que es troben en un interval d'1.800.000 (30 minuts) a 86.400.000 mil·lisegons (un dia). Els valors que no es trobin dins d'aquest interval s'ajustaran al límit respectiu. Si la plataforma admet notificacions de la política, el retard d'actualització s'establirà en 24 hores, ja que es preveu que les notificacions de la política obliguin a fer una actualització automàtica cada vegada que canviï la política. + + Si aquesta política no s'estableix, <ph name="PRODUCT_NAME" /> utilitzarà el valor predeterminat de tres hores. + + Tingues en compte que, si la plataforma admet les notificacions de la política, el retard d'actualització s'establirà en 24 hores (i s'ignoraran tots els valors predeterminats i el valor d'aquesta política), ja que es preveu que les notificacions de la política obliguin a fer una actualització automàtica cada vegada que canviï la política. Per tant, serà innecessari fer actualitzacions més freqüents.</translation> <translation id="2024476116966025075">Configura el nom de domini requerit per a clients d'accés remot</translation> <translation id="2030905906517501646">Paraula clau del proveïdor de cerca predeterminat</translation> <translation id="206623763829450685">Especifica quins esquemes d'autenticació HTTP són compatibles amb <ph name="PRODUCT_NAME" />. @@ -881,9 +888,9 @@ Si aquesta política està activada, el protocol SPDY no estarà disponible a <ph name="PRODUCT_NAME" />. - Si estableixes aquesta política com a desactivada, es permetrà l'ús d'SPDY. + Si desactives aquesta política, es permetrà l'ús d'SPDY. - Si la deixes sense establir, SPDY estarà disponible.</translation> + Si no hi dus a terme cap acció, SPDY estarà disponible.</translation> <translation id="3891357445869647828">Activa JavaScript</translation> <translation id="3898060089412156345">Permet o denega la captura d'àudio. @@ -1022,7 +1029,6 @@ Tot i que la política s'admet en les plataformes anteriors, pot ser que la funció que activi no estigui disponible en totes les plataformes. No totes les funcions obsoletes de la plataforma web es poden tornar a activar; només les que s'indiquin explícitament a continuació durant un període de temps limitat, que varia segons la funció. El format general de l'etiqueta de cadena és el següent: [FuncióObsoleta]_EffectiveUntil[aaaammdd]. Com a referència, podeu consultar la finalitat dels canvis de la funció de la plataforma web a la pàgina https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Activació del bloqueig quan el dispositiu està inactiu o se suspèn</translation> -<translation id="4445684791305970001">Desactiva les eines per a desenvolupador i la consola de JavaScript. Si activeu aquest paràmetre, no es podrà accedir a les eines per a desenvolupadors i no es podran inspeccionar més els elements del lloc web. Les tecles de drecera i les entrades dels menús o dels menús contextuals per obrir les eines per a desenvolupadors es desactivaran. Si es desactiva o no es defineix aquesta opció, es podran utilitzar les eines per a desenvolupadors i la consola de JavaScript.</translation> <translation id="4449545651113180484">Gira la pantalla 270 graus en el sentit de les agulles del rellotge</translation> <translation id="4467952432486360968">Bloqueja les galetes de tercers</translation> <translation id="4474167089968829729">Permet que el gestor de contrasenyes desi contrasenyes</translation> @@ -1167,11 +1173,11 @@ Activa la predicció de xarxa a <ph name="PRODUCT_NAME" /> i impedeix que els usuaris canviïn aquesta opció de configuració. - No només controla la baixada prèvia de DNS, sinó també la connexió i la renderització prèvies de TCP i SSL de les pàgines web. El nom de la política fa referència a la baixada prèvia de DNS per qüestions relacionades amb l'historial. + No només controla la baixada prèvia de DNS, sinó també la connexió prèvia de TCP i SSL i la renderització prèvia de pàgines web. El nom de la política fa referència a la baixada prèvia de DNS per qüestions històriques. Si actives o desactives aquesta opció de configuració, els usuaris no la podran canviar ni substituir a <ph name="PRODUCT_NAME" />. - Si aquesta política es deixa sense establir, l'opció s'activarà però l'usuari podrà canviar-la.</translation> + Si no hi dus a terme cap acció, l'opció s'activarà però l'usuari podrà canviar-la.</translation> <translation id="5208240613060747912">Us permet definir una llista de patrons d'URL que especifiquen els llocs en què no està permès mostrar notificacions. Si no es defineix aquesta política, s'utilitzarà el valor global predeterminat per a tots els llocs tant de la política "DefaultNotificationsSetting", si es defineix, com d'un altre tipus de configuració personal de l'usuari.</translation> <translation id="5226033722357981948">Indica si s'ha de desactivar el cercador de connectors</translation> <translation id="523505283826916779">Configuració d'accessibilitat</translation> @@ -1242,6 +1248,13 @@ Si aquesta política es defineix, s'iniciarà automàticament la sessió especificada després d'un període de temps a la pantalla d'inici de sessió sense interacció de l'usuari. La sessió pública ja ha d'estar configurada (consulteu |DeviceLocalAccounts|). Si aquesta política no es defineix, no hi haurà cap inici de sessió automàtic.</translation> +<translation id="5529037166721644841">Especifica la freqüència en mil·lisegons amb què se sol·licita informació sobre la política del dispositiu al servei de gestió de dispositius. + + Si aquesta política s'estableix, el valor predeterminat de tres hores se substituirà per un dels valors vàlids, que es troben en un interval d'1.800.000 (30 minuts) a 86.400.000 mil·lisegons (un dia). Els valors que no es trobin dins d'aquest interval s'ajustaran al límit respectiu. + + Si aquesta política no s'estableix, <ph name="PRODUCT_OS_NAME" /> utilitzarà el valor predeterminat de tres hores. + + Tingues en compte que, si la plataforma admet les notificacions de la política, el retard d'actualització s'establirà en 24 hores (i s'ignoraran tots els valors predeterminats i el valor d'aquesta política), ja que es preveu que les notificacions de la política obliguin a fer una actualització automàtica cada vegada que canviï la política. Per tant, serà innecessari fer actualitzacions més freqüents.</translation> <translation id="5535957389335373033">La freqüència, en mil·lisegons, amb què s'envien paquets de xarxa de supervisió. Si aquesta política no s'estableix, s'envien cada 3 minuts de manera predeterminada. La freqüència màxima és de 30 segons i la mínima de 24 hores. Tots els valors que no es trobin dins d'aquest interval es restringiran igualment al límit de l'interval.</translation> @@ -1769,6 +1782,9 @@ Aquesta política només es respecta si la política "DefaultSearchProviderEnabled" està activada.</translation> <translation id="7302043767260300182">Retard del bloqueig de pantalla quan s'utilitza alimentació</translation> +<translation id="7311458740754205918">Si s'estableix en "true" o no s'estableix, és possible que a la pàgina Pestanya nova es mostrin suggeriments de contingut basats en l'historial de navegació, en els interessos o en la ubicació de l'usuari. + + Si s'estableix en "false", a la pàgina Pestanya nova no es mostraran suggeriments de contingut generats automàticament.</translation> <translation id="7323896582714668701">Paràmetres de línia d'ordres de <ph name="PRODUCT_NAME" /> addicionals</translation> <translation id="7329842439428490522">Indica el temps sense activitat per part de l'usuari després del qual la pantalla es desactiva quan el dispositiu funciona amb bateria. @@ -1901,6 +1917,7 @@ <translation id="7763479091692861127"> Tipus de connexions que es poden utilitzar per a les actualitzacions del sistema operatiu (SO). Les actualitzacions del SO poden saturar la connexió a causa de la seva mida i poden comportar costos addicionals. Per tant, no estan activades de manera predeterminada en tipus de connexió que es consideren cares, entre les quals hi ha, en aquests moments, WiMax, Bluetooth i connexió mòbil. Els identificadors de tipus de connexió reconeguts són "ethernet", "wifi", "wimax", "bluetooth" i "xarxes mòbils".</translation> +<translation id="7763614521440615342">Mostra suggeriments de contingut a la pàgina Pestanya nova</translation> <translation id="7766336524667238790">Ofereix informació de la sessió de quiosc activa, com ara l'identificador i la versió de l'aplicació.
diff --git a/components/policy/resources/policy_templates_cs.xtb b/components/policy/resources/policy_templates_cs.xtb index 840af7a..22cfc4c 100644 --- a/components/policy/resources/policy_templates_cs.xtb +++ b/components/policy/resources/policy_templates_cs.xtb
@@ -223,6 +223,13 @@ Pokud tuto zásadu nastavíte na hodnotu true, systém <ph name="PRODUCT_OS_NAME" /> se bude pokoušet stahovat datové části automatických aktualizací prostřednictvím protokolu HTTP. Pokud tuto zásadu nastavíte na hodnotu false nebo ji nenastavíte, ke stahování datových částí automatických aktualizací se bude používat protokol HTTPS.</translation> <translation id="2006530844219044261">Správa možností napájení</translation> <translation id="201557587962247231">Frekvence nahrávání hlášení o stavu zařízení</translation> +<translation id="2018836497795982119">Určuje interval (v ms), ve kterém budou službě správy zařízení zasílány požadavky na informace o zásadách pro uživatele. + + Nastavení této zásady přepíše výchozí hodnotu 3 hodiny. Platné hodnoty pro tuto zásadu jsou v rozsahu od 1800000 (30 minut) do 86400000 (1 den). Místo hodnot mimo tento rozsah bude použita příslušná mezní hodnota. Pokud platforma podporuje oznámení o zásadách, bude interval aktualizací nastaven na 24 hodin, protože se očekává, že při změně zásad bude aktualizace vynucena automaticky prostřednictvím oznámení. + + Pokud tuto zásadu nenastavíte, použije <ph name="PRODUCT_NAME" /> výchozí hodnotu, což jsou 3 hodiny. + + Upozorňujeme, že pokud platforma podporuje oznámení o zásadách, budou všechna výchozí nastavení i hodnota této zásady ignorovány a interval aktualizací bude nastaven na 24 hodin. Očekává se totiž, že při změně zásad bude aktualizace vynucena automaticky prostřednictvím oznámení.</translation> <translation id="2024476116966025075">Konfigurace povinného názvu domény pro klienty vzdáleného přístupu</translation> <translation id="2030905906517501646">Klíčové slovo výchozího poskytovatele vyhledávání</translation> <translation id="206623763829450685">Určuje, která schémata ověření v protokolu HTTP bude prohlížeč <ph name="PRODUCT_NAME" /> podporovat. @@ -1036,11 +1043,6 @@ Samotná zásada je na výše uvedených platformách podporována. Funkce, které zásada podporuje, však mohou být k dispozici na méně platformách. Některé zastaralé funkce platformy Web Platform nelze znovu povolit. Po různě dlouhou omezenou dobu lze povolit pouze ty, které jsou výslovně uvedeny níže. Obecný formát řetězcové značky je [NázevZastaraléFunkce]_EffectiveUntil[RRRRMMDD]. Důvody změny funkcí platformy Web Platform a informace naleznete zde: https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Aktivovat zámek, pokud jsou zařízení nečinná nebo pozastavená</translation> -<translation id="4445684791305970001">Deaktivuje nástroje pro vývojáře a konzoli JavaScriptu. - - Pokud toto nastavení aktivujete, nebude možné přistupovat k nástrojům pro vývojáře ani kontrolovat prvky webových stránek. Deaktivovány budou také veškeré klávesové zkratky a položky klasických či kontextových nabídek, pomocí kterých lze nástroje pro vývojáře nebo konzoli JavaScriptu otevřít. - - Pokud tuto možnost deaktivujete nebo nenastavíte, umožníte uživatelům používat nástroje pro vývojáře nebo konzoli JavaScript.</translation> <translation id="4449545651113180484">Otočit obrazovku ve směru hodinových ručiček o 270 stupňů</translation> <translation id="4467952432486360968">Blokovat soubory cookie třetích stran</translation> <translation id="4474167089968829729">Povolit ukládání hesel do správce hesel</translation> @@ -1303,6 +1305,13 @@ Pokud je zásada nastavena, zařízení se po uplynutí určité doby nečinnosti uživatele na přihlašovací obrazovce automaticky přihlásí do určené relace. Veřejná relace již musí být nakonfigurována (viz |DeviceLocalAccounts|). Pokud zásada nastavena není, k automatickému přihlášení nedojde.</translation> +<translation id="5529037166721644841">Určuje interval (v ms), ve kterém budou službě správy zařízení zasílány požadavky na informace o zásadách pro zařízení. + + Nastavení této zásady přepíše výchozí hodnotu 3 hodiny. Platné hodnoty pro tuto zásadu jsou v rozsahu od 1800000 (30 minut) do 86400000 (1 den). Místo hodnot mimo tento rozsah bude použita příslušná mezní hodnota. + + Pokud tato zásada nebude nastavena, použije systém <ph name="PRODUCT_OS_NAME" /> výchozí hodnotu, což jsou 3 hodiny. + + Upozorňujeme, že pokud platforma podporuje oznámení o zásadách, budou všechna výchozí nastavení i hodnota této zásady ignorovány a interval aktualizací bude nastaven na 24 hodin. Očekává se totiž, že při změně zásad bude aktualizace vynucena automaticky prostřednictvím oznámení.</translation> <translation id="5535957389335373033">Frekvence odesílání sledovacích síťových paketů (v ms). Je-li tato zásada ponechána nenastavená, výchozí frekvence je tři minuty. Minimální frekvence je 30 sekund a maximální 24 hodin – hodnoty mimo tento rozsah budou přizpůsobeny příslušné hranici.</translation> @@ -1856,6 +1865,9 @@ Tato zásada platí pouze v případě, že je aktivována zásada DefaultSearchProviderEnabled.</translation> <translation id="7302043767260300182">Prodleva uzamčení obrazovky při napájení ze sítě</translation> +<translation id="7311458740754205918">Pokud je tato zásada nastavena na hodnotu True nebo je ponechána nenastavená, na stránce Nová karta se mohou zobrazovat návrhy obsahu na základě historie procházení, zájmů nebo polohy uživatele. + + Pokud je tato zásada nastavena na hodnotu False, automaticky generované návrhy obsahu se na stránce Nová karta nezobrazují.</translation> <translation id="7323896582714668701">Dodatečné parametry příkazového řádku pro <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Udává dobu nečinnosti uživatele, po které bude obrazovka při napájení z baterie vypnuta. @@ -1997,6 +2009,7 @@ Pokud tuto zásadu nenastavíte, bude použita zásada AllowImages a uživatelé ji budou moci změnit.</translation> <translation id="7763479091692861127"> Typy připojení, které lze používat pro aktualizaci operačního systému. Aktualizace operačního systému může vzhledem k objemu dat velmi zatěžovat připojení a může mít za následek dodatečné poplatky. Z tohoto důvodu jsou ve výchozím nastavení zakázány pro typy připojení, které jsou považovány za nákladné, což je v současnosti mimo jiné připojení WiMax, Bluetooth nebo mobilní připojení. Podporované identifikátory typu připojení jsou „ethernet“, „wifi“, „wimax“, „bluetooth“ a „cellular“.</translation> +<translation id="7763614521440615342">Zobrazovat na stránce Nová karta návrhy obsahu</translation> <translation id="7766336524667238790">Hlášení informací o aktivní relaci veřejného terminálu, např. ID a verze aplikace. Pokud je tato zásada nastavena na hodnotu False, informace o relaci se hlásit nebudou. Pokud je nastavena na hodnotu True nebo nastavena není, informace o relaci se hlásit budou.</translation>
diff --git a/components/policy/resources/policy_templates_da.xtb b/components/policy/resources/policy_templates_da.xtb index 6fc8bdc..0f1b028 100644 --- a/components/policy/resources/policy_templates_da.xtb +++ b/components/policy/resources/policy_templates_da.xtb
@@ -233,6 +233,13 @@ Hvis denne politik er angivet til Sand, vil <ph name="PRODUCT_OS_NAME" /> forsøge at downloade automatisk opdaterede nyttedata via HTTP. Hvis politikken er angivet til Falsk eller ikke er angivet, anvendes HTTPS til at downloade automatisk opdaterede nyttedata.</translation> <translation id="2006530844219044261">Strømstyring</translation> <translation id="201557587962247231">Hyppighed for upload af rapporter om enhedsstatus</translation> +<translation id="2018836497795982119">Angiver den periode i millisekunder, hvor enhedsadministrationstjenesten anmodes om brugerpolitikoplysninger. + + Angivelse af denne politik tilsidesætter standardværdien på tre timer. Gyldige værdier for denne politik ligger i intervallet fra 1800000 (30 minutter) til 86400000 (ét døgn). Alle værdier, der ikke ligger inden for dette interval, fastgøres til den respektive grænse. Hvis platformen understøtter underretninger vedrørende politik, angives forsinkelsen af opdateringen til 24 timer, da det forventes, at underretninger vedrørende politik automatisk gennemtvinger en opdatering, når politikken ændres. + + Hvis denne politik ikke angives, bruger <ph name="PRODUCT_NAME" /> standardværdien på tre timer. + + Bemærk! Hvis platformen understøtter underretninger vedrørende politik, angives forsinkelsen af opdateringen til 24 timer (der ses bort fra alle standardindstillingerne og værdierne for denne politik), da det forventes, at underretninger vedrørende politik automatisk gennemtvinger en opdatering, når politikken ændres. Dermed er hyppige opdateringer ikke nødvendige.</translation> <translation id="2024476116966025075">Konfigurer det påkrævede domænenavn for klienter med fjernadgang</translation> <translation id="2030905906517501646">Søgeord til standardsøgemaskine</translation> <translation id="206623763829450685">Angiver, hvilke skemaer for HTTP-godkendelse der understøttes af <ph name="PRODUCT_NAME" />. @@ -1033,7 +1040,6 @@ Mens selve politikken understøttes på ovenstående platforme, kan den funktion, som politikken aktiverer, være tilgængelig på færre platforme. Det er ikke alle funktioner på webplatforme, der kan genaktiveres. Det er kun de funktioner, der er angivet på listen nedenfor, som kan genaktiveres i en begrænset periode, hvis længde afhænger af funktionen. Det overordnede format for strengtagget er [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Du kan se hensigten med ændringerne af funktionen Webplatform på https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Aktivér låsen, hvis enheden bliver inaktiv eller suspenderes</translation> -<translation id="4445684791305970001">Deaktiverer udviklerværktøjerne og JavaScript-konsollen. Hvis du aktiverer denne indstilling, kan man ikke få adgang til udviklerværktøjerne, og webstedselementer kan ikke inspiceres. Alle tastaturgenveje og menuer eller genvejsmenuer, der åbner udviklerværktøjerne eller JavaScript-konsollen, vil blive deaktiveret. Hvis du deaktiverer denne indstilling eller ikke angiver den, tillades brugen af udviklerværktøjer og JavaScript-konsollen.</translation> <translation id="4449545651113180484">Roter skærmen 270 grader med uret</translation> <translation id="4467952432486360968">Bloker cookies fra tredjeparter</translation> <translation id="4474167089968829729">Aktivér lagring af adgangskoder i adgangskodeadministratoren</translation> @@ -1261,6 +1267,13 @@ Hvis denne politik er angivet, logges den angivne session automatisk ind efter et stykke tid ved loginskærmen uden brugerinteraktion. Den offentlige session skal i forvejen være konfigureret (se |DeviceLocalAccounts|). Hvis denne politik ikke er angivet, aktiveres automatisk login ikke.</translation> +<translation id="5529037166721644841">Angiver den periode i millisekunder, hvor enhedsadministrationstjenesten anmodes om brugerpolitikoplysninger. + + Angivelse af denne politik tilsidesætter standardværdien på tre timer. Gyldige værdier for denne politik ligger i intervallet fra 1800000 (30 minutter) til 86400000 (ét døgn). Alle værdier, der ikke ligger inden for dette interval, fastgøres til den respektive grænse. + + Hvis denne politik ikke angives, bruger <ph name="PRODUCT_OS_NAME" /> standardværdien på tre timer. + + Bemærk! Hvis platformen understøtter underretninger vedrørende politik, angives forsinkelsen af opdateringen til 24 timer (der ses bort fra alle standardindstillingerne og værdierne for denne politik), da det forventes, at underretninger vedrørende politik automatisk gennemtvinger en opdatering, når politikken ændres. Dermed er hyppige opdateringer ikke nødvendige.</translation> <translation id="5535957389335373033">Hvor ofte netværkspakker til overvågning sendes (angivet i millisekunder). Hvis denne politik ikke er indstillet, er standardfrekvensen 3 minutter. Minimumsfrekvensen er 30 sekunder, og maksimumsfrekvensen er 24 timer. Alle værdier uden for dette interval justeres automatisk, så de ligger inden for dette interval.</translation> @@ -1783,6 +1796,9 @@ Denne politik respekteres kun, hvis politikken "DefaultSearchProviderEnabled" er aktiveret.</translation> <translation id="7302043767260300182">Skærmlåsforsinkelse, når strømforsyning er tilsluttet</translation> +<translation id="7311458740754205918">Hvis denne politik er angivet som Sand eller ikke er angivet, viser siden Ny fane muligvis forslag til indhold baseret på brugerens browserhistorik, interesser eller placering. + + Hvis politikken er angivet som Falsk, vises automatisk genererede forslag til indhold ikke på siden Ny fane.</translation> <translation id="7323896582714668701">Yderligere kommandolinjeparametre for <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Angiver den tid uden brugerinput, der udløser skærmsluk, når batteriet bruges. @@ -1919,6 +1935,7 @@ <translation id="7763479091692861127"> De forbindelsestyper, der er tilladt at bruge ved OS-opdateringer. OS-opdateringer kan lægge et stort pres på forbindelsen, fordi de fylder meget, og kan forårsage yderligere omkostninger. Derfor er de som standard ikke aktiveret for forbindelsestyper, der betragtes som dyre, hvilket i øjeblikket er WiMax, Bluetooth og mobil. De genkendte forbindelsestype-id'er er "ethernet", "wifi", "wimax", "bluetooth" og "mobil".</translation> +<translation id="7763614521440615342">Vis forslag til indhold på siden Ny fane</translation> <translation id="7766336524667238790">Rapportér oplysninger om aktive terminalsessioner, f.eks. applikations-id og -version. @@ -1942,7 +1959,7 @@ Hvis denne indstilling konfigureres, kan brugerne ikke selv ændre den. - Hvis denne indstilling ikke konfigureres, kan brugerne selv slå Android-tjenesten til sikkerhedskopiering til eller fra i appen Android Indstillinger.</translation> + Hvis denne indstilling ikke konfigureres, kan brugerne selv slå Android Backup Service til eller fra i appen Android Indstillinger.</translation> <translation id="7818131573217430250">Indstil standardtilstanden for høj kontrast på loginskærmen</translation> <translation id="7831595031698917016">Specificerer den maksimale forsinkelse i millisekunder mellem modtagelse af en ugyldiggørelse af en politik og hentningen af den nye politik fra tjenesten til enhedshåndtering.
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb index dbd9bb8..a4bcfd5 100644 --- a/components/policy/resources/policy_templates_de.xtb +++ b/components/policy/resources/policy_templates_de.xtb
@@ -230,6 +230,13 @@ Ist diese Richtlinie auf "true" gesetzt, versucht <ph name="PRODUCT_OS_NAME" />, die Nutzdaten automatischer Updates über HTTP herunterzuladen. Ist die Richtlinie auf "false" gesetzt oder nicht festgelegt, wird für solche Downloads HTTPS verwendet.</translation> <translation id="2006530844219044261">Energieverwaltung</translation> <translation id="201557587962247231">Häufigkeit von Uploads mit Berichten zum Gerätestatus</translation> +<translation id="2018836497795982119">Gibt den Zeitraum in Millisekunden an, in dem Nutzerrichtlinieninformationen vom Geräteverwaltungsdienst abgefragt werden. + + Durch das Festlegen dieser Richtlinie wird der Standardwert von 3 Stunden außer Kraft gesetzt. Gültige Werte für diese Richtlinie liegen im Bereich zwischen 1.800.000 (30 Minuten) und 86.400.000 (1 Tag). Alle Werte, die nicht in diesem Bereich liegen, werden auf den jeweiligen Grenzwert gesetzt. Wenn die Plattform Richtlinienbenachrichtigungen unterstützt, wird für die Verzögerung der Aktualisierung 24 Stunden festgelegt, da davon ausgegangen wird, dass diese Benachrichtigungen bei jeglichen Richtlinienänderungen automatisch eine Aktualisierung erzwingen. + + Wenn diese Richtlinie nicht konfiguriert ist, gilt in <ph name="PRODUCT_NAME" /> der Standardwert von 3 Stunden. + + Hinweis: Wenn die Plattform Richtlinienbenachrichtigungen unterstützt, wird für die Verzögerung der Aktualisierung 24 Stunden festgelegt und alle Standardwerte der Richtlinie werden ignoriert, da davon ausgegangen wird, dass diese Benachrichtigungen bei jeglichen Richtlinienänderungen automatisch eine Aktualisierung erzwingen. Daher ist ein kürzeres Intervall zwischen den Aktualisierungen nicht erforderlich.</translation> <translation id="2024476116966025075">Erforderlichen Domainnamen für Remotezugriff-Clients konfigurieren</translation> <translation id="2030905906517501646">Suchbegriff der Standardsuchmaschine</translation> <translation id="206623763829450685">Gibt an, welche HTTP-Authentifizierungsschemas von <ph name="PRODUCT_NAME" /> unterstützt werden. @@ -1024,7 +1031,6 @@ Die Richtlinie selbst wird zwar auf den genannten Plattformen unterstützt, die damit aktivierten Funktionen sind aber möglicherweise nicht auf allen Plattformen verfügbar. Nicht alle eingestellten Webplattformfunktionen können wieder aktiviert werden. Nur die nachfolgend ausdrücklich aufgeführten Funktionen können für einen begrenzten Zeitraum wieder aktiviert werden. Der Zeitraum variiert je nach Funktion. Das allgemeine Format des String-Tags lautet [Name der veralteten Funktion]_EffectiveUntil[jjjjmmtt]. Weitere Informationen zu Änderungen an den Webplattformfunktionen erhalten Sie unter http://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Sperre aktivieren, wenn das Gerät inaktiv ist oder angehalten wird</translation> -<translation id="4445684791305970001">Deaktiviert die Entwickler-Tools und die JavaScript-Konsole. Wenn Sie diese Einstellung aktivieren, besteht kein Zugriff mehr auf die Entwickler-Tools, sodass Website-Elemente nicht mehr überprüft werden können. Jegliche Tastenkombinationen und Menü- und Kontextmenüeinträge zum Öffnen der Entwickler-Tools oder der JavaScript-Konsole werden deaktiviert. Ist diese Option deaktiviert oder nicht konfiguriert, so können die Entwickler-Tools und die JavaScript-Konsole verwendet werden.</translation> <translation id="4449545651113180484">Bildschirm um 270 Grad im Uhrzeigersinn drehen</translation> <translation id="4467952432486360968">Drittanbieter-Cookies blockieren</translation> <translation id="4474167089968829729">Aktiviert das Speichern von Passwörtern im Passwortmanager</translation> @@ -1244,6 +1250,13 @@ Ist diese Richtlinie festgelegt, wird der Nutzer nach Ablauf einer bestimmten Zeitspanne der Inaktivität beim Anmeldebildschirm automatisch in der angegebenen Sitzung angemeldet. Die öffentliche Sitzung muss vorher konfiguriert werden, siehe |DeviceLocalAccounts|. Ist die Richtlinie nicht festgelegt, wird der Nutzer nicht automatisch angemeldet.</translation> +<translation id="5529037166721644841">Gibt den Zeitraum in Millisekunden an, in dem Geräterichtlinieninformationen vom Geräteverwaltungsdienst abgefragt werden. + + Durch das Festlegen dieser Richtlinie wird der Standardwert von 3 Stunden außer Kraft gesetzt. Gültige Werte für diese Richtlinie liegen im Bereich zwischen 1.800.000 (30 Minuten) und 86.400.000 (1 Tag). Alle Werte, die nicht in diesem Bereich liegen, werden auf den jeweiligen Grenzwert gesetzt. + + Wenn diese Richtlinie nicht konfiguriert ist, gilt in <ph name="PRODUCT_OS_NAME" /> der Standardwert von 3 Stunden. + + Hinweis: Wenn die Plattform Richtlinienbenachrichtigungen unterstützt, wird für die Verzögerung der Aktualisierung 24 Stunden festgelegt und alle Standardwerte der Richtlinie werden ignoriert, da davon ausgegangen wird, dass diese Benachrichtigungen bei jeglichen Richtlinienänderungen automatisch eine Aktualisierung erzwingen. Daher ist ein kürzeres Intervall zwischen den Aktualisierungen nicht erforderlich.</translation> <translation id="5535957389335373033">Durch diese Richtlinie wird festgelegt, wie oft Kontrollnetzwerkpakete gesendet werden (in Millisekunden). Wenn die Richtlinie nicht konfiguriert ist, beträgt die standardmäßige @@ -1766,6 +1779,9 @@ Diese Richtlinie wird nur befolgt, wenn die Richtlinie "DefaultSearchProviderEnabled" aktiviert ist.</translation> <translation id="7302043767260300182">Verzögerung für die Bildschirmsperre im Netzbetrieb</translation> +<translation id="7311458740754205918">Wenn für diese Richtlinie "true" festgelegt wird oder wenn sie nicht konfiguriert wird, werden auf der "Neuer Tab"-Seite unter Umständen Inhaltsvorschläge auf Basis des Browserverlaufs, der Interessen oder des Standorts des Nutzers angezeigt. + + Wenn für diese Richtlinie "false" festgelegt wird, werden auf der "Neuer Tab"-Seite keine automatisch generierten Inhaltsvorschläge angezeigt.</translation> <translation id="7323896582714668701">Zusätzliche Befehlszeilenparameter für <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Hiermit wird angegeben, nach welchem Zeitraum ohne Nutzereingabe der Bildschirm im Akkubetrieb abgeschaltet wird. @@ -1898,6 +1914,7 @@ <translation id="7763479091692861127"> Die Verbindungstypen, die für Betriebssystemaktualisierungen zulässig sind. Betriebssystemaktualisierungen beanspruchen die Verbindung aufgrund ihrer Größe potenziell stark und können zusätzliche Kosten verursachen. Deshalb sind sie für als kostenintensiv geltende Verbindungstypen standardmäßig nicht aktiviert. Dazu gehören derzeit beispielsweise WiMax, Bluetooth und Mobilfunkverbindungen. Zu den erkannten Verbindungstypkennungen gehören "ethernet", "wifi", "wimax", "bluetooth" und "cellular".</translation> +<translation id="7763614521440615342">Inhaltsvorschläge auf der "Neuer Tab"-Seite anzeigen</translation> <translation id="7766336524667238790">Durch diese Richtlinie werden Informationen zur aktiven Kiosksitzung gesendet, etwa Anwendungs-ID und -version.
diff --git a/components/policy/resources/policy_templates_el.xtb b/components/policy/resources/policy_templates_el.xtb index 03cc294..1502320c 100644 --- a/components/policy/resources/policy_templates_el.xtb +++ b/components/policy/resources/policy_templates_el.xtb
@@ -241,6 +241,13 @@ Εάν η τιμή αυτής της πολιτικής έχει οριστεί ως αληθής, το <ph name="PRODUCT_OS_NAME" /> θα προσπαθήσει να πραγματοποιήσει λήψη των φορτίων δεδομένων αυτόματης ενημέρωσης μέσω HTTP. Εάν η τιμή της πολιτικής έχει οριστεί ως ψευδής ή δεν έχει οριστεί, η λήψη των φορτίων δεδομένων αυτόματης ενημέρωσης θα γίνει μέσω HTTPS.</translation> <translation id="2006530844219044261">Διαχείριση ενέργειας</translation> <translation id="201557587962247231">Συχνότητα των μεταφορτώσεων αναφορών κατάστασης συσκευής</translation> +<translation id="2018836497795982119">Καθορίζει το χρονικό διάστημα σε χιλιοστά του δευτερολέπτου κατά το οποίο υποβάλλονται ερωτήματα στην υπηρεσία διαχείρισης της συσκευής σχετικά με τις πληροφορίες πολιτικής χρήστη. + + Η ρύθμιση αυτής της πολιτικής παρακάμπτει την προεπιλεγμένη τιμή των 3 ωρών. Οι έγκυρες τιμές γι' αυτήν την πολιτική κυμαίνονται εντός του εύρους από 1800000 (30 λεπτά) έως 86400000 (1 ημέρα). Οποιεσδήποτε τιμές δεν ανήκουν σε αυτό το εύρος θα περιοριστούν στο αντίστοιχο όριο. Αν η πλατφόρμα υποστηρίζει ειδοποιήσεις πολιτικής, η καθυστέρηση ανανέωσης θα οριστεί σε 24 ώρες, επειδή αναμένεται ότι οι ειδοποιήσεις πολιτικής θα επιβάλλουν αυτόματη ανανέωση κάθε φορά που αλλάζει η πολιτική. + + Αν αυτή η πολιτική δεν οριστεί, το προϊόν <ph name="PRODUCT_NAME" /> θα χρησιμοποιεί την προεπιλεγμένη τιμή των 3 ωρών. + + Λάβετε υπόψη ότι αν η πλατφόρμα υποστηρίζει ειδοποιήσεις πολιτικής, η καθυστέρηση ανανέωσης θα οριστεί σε 24 ώρες (αγνοώντας όλες τις προεπιλογές και την τιμή αυτής της πολιτικής), επειδή αναμένεται ότι οι ειδοποιήσεις πολιτικής θα επιβάλλουν αυτόματη ανανέωση κάθε φορά που αλλάζει η πολιτική, καθιστώντας περιττές τις πιο συχνές ανανεώσεις.</translation> <translation id="2024476116966025075">Διαμόρφωση του απαιτούμενου ονόματος τομέα για εφαρμογές πελάτες απομακρυσμένης πρόσβασης</translation> <translation id="2030905906517501646">Προεπιλεγμένη λέξη-κλειδί παροχέα αναζήτησης</translation> <translation id="206623763829450685">Καθορίζει ποια πρωτόκολλα ελέγχου ταυτότητας HTTP υποστηρίζονται από το <ph name="PRODUCT_NAME" />. @@ -1076,11 +1083,6 @@ Παρόλο που η ίδια η πολιτική υποστηρίζεται στις παραπάνω πλατφόρμες, η λειτουργία που ενεργοποιεί μπορεί να είναι διαθέσιμη σε λιγότερες πλατφόρμες. Δεν είναι δυνατή η εκ νέου ενεργοποίηση όλων των καταργημένων λειτουργιών πλατφόρμας ιστού. Μόνο εκείνες που αναφέρονται ρητά παρακάτω μπορούν να ενεργοποιηθούν για περιορισμένο χρονικό διάστημα, το οποίο διαφέρει ανά λειτουργία. Η γενική μορφή της ετικέτας συμβολοσειράς θα είναι [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Για λόγους αναφοράς, μπορείτε να βρείτε την αιτία για τις αλλαγές της λειτουργίας πλατφόρμας ιστού στη διεύθυνση https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Ενεργοποίηση κλειδώματος όταν η συσκευή τίθεται σε κατάσταση αδράνειας ή αναστολής</translation> -<translation id="4445684791305970001">Απενεργοποιεί τα Εργαλεία προγραμματιστή και την κονσόλα JavaScript. - - Αν ενεργοποιήσετε αυτήν τη ρύθμιση, δεν θα μπορείτε να έχετε πρόσβαση στα Εργαλεία προγραμματιστή και δεν θα μπορείτε πλέον να ελέγξετε τα στοιχεία του ιστότοπου. Οποιεσδήποτε συντομεύσεις πληκτρολογίου και οποιοδήποτε μενού ή καταχωρίσεις μενού περιβάλλοντος που ανοίγουν τα Εργαλεία προγραμματιστή ή την κονσόλα JavaScript θα απενεργοποιηθούν. - - Αν απενεργοποιήσετε αυτήν την επιλογή ή αν δεν την ορίσετε, ο χρήστης θα μπορεί να χρησιμοποιήσει τα εργαλεία προγραμματιστή και την κονσόλα JavaScript.</translation> <translation id="4449545651113180484">Περιστροφή της οθόνης δεξιόστροφα κατά 270 μοίρες</translation> <translation id="4467952432486360968">Αποκλεισμός cookie τρίτων μερών</translation> <translation id="4474167089968829729">Ενεργοποίηση αποθήκευσης κωδικών πρόσβασης στο διαχειριστή κωδικών πρόσβασης</translation> @@ -1341,6 +1343,13 @@ Αν οριστεί αυτή η πολιτική, η καθορισμένη περίοδος σύνδεσης θα συνδέεται αυτόματα μετά την παρέλευση ενός χρονικού διαστήματος στην οθόνη σύνδεσης χωρίς κάποια αλληλεπίδραση από το χρήστη. Η δημόσια περίοδος σύνδεσης θα πρέπει να έχει διαμορφωθεί ήδη (συμβουλευτείτε την ενότητα |DeviceLocalAccounts|). Εάν δεν οριστεί αυτή η πολιτική, δεν θα πραγματοποιείται αυτόματη σύνδεση.</translation> +<translation id="5529037166721644841">Καθορίζει το χρονικό διάστημα σε χιλιοστά του δευτερολέπτου κατά το οποίο υποβάλλονται ερωτήματα στην υπηρεσία διαχείρισης της συσκευής σχετικά με τις πληροφορίες πολιτικής χρήστη. + + Η ρύθμιση αυτής της πολιτικής παρακάμπτει την προεπιλεγμένη τιμή των 3 ωρών. Οι έγκυρες τιμές γι' αυτήν την πολιτική κυμαίνονται εντός του εύρους από 1800000 (30 λεπτά) έως 86400000 (1 ημέρα). Οποιεσδήποτε τιμές δεν ανήκουν σε αυτό το εύρος θα περιοριστούν στο αντίστοιχο όριο. + + Αν αυτή η πολιτική δεν οριστεί, το προϊόν <ph name="PRODUCT_OS_NAME" /> θα χρησιμοποιεί την προεπιλεγμένη τιμή των 3 ωρών. + + Λάβετε υπόψη ότι αν η πλατφόρμα υποστηρίζει ειδοποιήσεις πολιτικής, η καθυστέρηση ανανέωσης θα οριστεί σε 24 ώρες (αγνοώντας όλες τις προεπιλογές και την τιμή αυτής της πολιτικής), επειδή αναμένεται ότι οι ειδοποιήσεις πολιτικής θα επιβάλλουν αυτόματη ανανέωση κάθε φορά που αλλάζει η πολιτική, καθιστώντας περιττές τις πιο συχνές ανανεώσεις.</translation> <translation id="5535957389335373033">Συχνότητα αποστολής πακέτων δικτύου παρακολούθησης, σε χιλιοστά του δευτερολέπτου. Αν αυτή η πολιτική δεν οριστεί, η προεπιλεγμένη συχνότητα είναι 3 λεπτά. Η ελάχιστη @@ -1901,6 +1910,9 @@ Αυτή η πολιτική τηρείται μόνο αν είναι ενεργοποιημένη η πολιτική "DefaultSearchProviderEnabled".</translation> <translation id="7302043767260300182">Καθυστέρηση κλειδώματος οθόνης κατά τη λειτουργία με εναλλασσόμενο ρεύμα</translation> +<translation id="7311458740754205918">Εάν αυτή η πολιτική οριστεί αληθής ή δεν οριστεί, η Σελίδα σε νέα καρτέλα ενδέχεται να εμφανίζει προτάσεις περιεχομένου που βασίζονται στο ιστορικό περιήγησης, τα ενδιαφέροντα ή την τοποθεσία του χρήστη. + + Εάν αυτή η πολιτική οριστεί μη αληθής, δεν εμφανίζονται στη Σελίδα σε νέα καρτέλα προτάσεις περιεχομένου που δημιουργούνται αυτόματα.</translation> <translation id="7323896582714668701">Πρόσθετες παράμετροι γραμμής εντολών για το <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Καθορίζει τη χρονική διάρκεια χωρίς εισαγωγή από το χρήστη, μετά από την οποία η οθόνη απενεργοποιείται κατά τη λειτουργία με μπαταρία. @@ -2043,6 +2055,7 @@ <translation id="7763479091692861127"> Οι τύποι των συνδέσεων που επιτρέπεται να χρησιμοποιηθούν για ενημερώσεις OS. Οι ενημερώσεις OS ενδεχομένως επιβαρύνουν τη σύνδεση εξαιτίας του μεγέθους τους και ενδεχομένως να επιφέρουν πρόσθετο κόστος. Συνεπώς, από προεπιλογή δεν είναι ενεργοποιημένες για τύπους συνδέσεων που θεωρούνται ακριβές, μεταξύ των οποίων οι συνδέσεις WiMax, Bluetooth και δικτύου κινητής τηλεφωνίας επί του παρόντος. Τα αναγνωριστικά τύπου σύνδεσης είναι "ethernet", "wifi", "wimax", "bluetooth" και "cellular".</translation> +<translation id="7763614521440615342">Εμφάνιση προτάσεων περιεχομένου στη Σελίδα σε νέα καρτέλα</translation> <translation id="7766336524667238790">Αναφορά πληροφοριών σχετικά με την ενεργή περίοδο σύνδεσης kiosk, όπως είναι η έκδοση και το αναγνωριστικό εφαρμογής.
diff --git a/components/policy/resources/policy_templates_en-GB.xtb b/components/policy/resources/policy_templates_en-GB.xtb index 22c85996..91ca587 100644 --- a/components/policy/resources/policy_templates_en-GB.xtb +++ b/components/policy/resources/policy_templates_en-GB.xtb
@@ -241,6 +241,13 @@ If this policy is set to true, <ph name="PRODUCT_OS_NAME" /> will attempt to download auto-update payloads via HTTP. If the policy is set to false or not set, HTTPS will be used for downloading auto-update payloads.</translation> <translation id="2006530844219044261">Power management</translation> <translation id="201557587962247231">Frequency of device status report uploads</translation> +<translation id="2018836497795982119">Specifies the period in milliseconds at which the device management service is queried for user policy information. + + Setting this policy overrides the default value of 3 hours. Valid values for this policy are in the range from 1,800,000 (30 minutes) to 86,400,000 (1 day). Any values not in this range will be clamped to the respective boundary. If the platform supports policy notifications, the refresh delay will be set to 24 hours because it is expected that policy notifications will force a refresh automatically whenever policy changes. + + Leaving this policy not set will make <ph name="PRODUCT_NAME" /> use the default value of 3 hours. + + Note that if the platform supports policy notifications, the refresh delay will be set to 24 hours (ignoring all defaults and the value of this policy) because it is expected that policy notifications will force a refresh automatically whenever policy changes, making more frequent refreshes unnecessary.</translation> <translation id="2024476116966025075">Configure the required domain name for remote access clients</translation> <translation id="2030905906517501646">Default search provider keyword</translation> <translation id="206623763829450685">Specifies which HTTP authentication schemes are supported by <ph name="PRODUCT_NAME" />. @@ -1082,11 +1089,6 @@ While the policy itself is supported on the above platforms, the feature that it is enabling may be available on fewer platforms. Not all deprecated Web Platform features can be re-enabled. Only the ones explicitly listed below can be for a limited period of time, which is different per feature. The general format of the string tag will be [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. As reference, you can find the intent behind the Web Platform feature changes at https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Enable lock when the device become idle or suspended</translation> -<translation id="4445684791305970001">Disables the Developer Tools and the JavaScript console. - - If you enable this setting, the Developer Tools cannot be accessed and website elements cannot be inspected any more. Any keyboard shortcuts and any menu or context menu entries to open the Developer Tools or the JavaScript Console will be disabled. - - Setting this option to disabled or leaving it unset will allow the user to use the Developer Tools and the JavaScript console.</translation> <translation id="4449545651113180484">Rotate screen clockwise by 270 degrees</translation> <translation id="4467952432486360968">Block third-party cookies</translation> <translation id="4474167089968829729">Enable saving passwords to the password manager</translation> @@ -1352,6 +1354,13 @@ If this policy is set, the specified session will be automatically logged in after a period of time has elapsed at the login screen without user interaction. The public session must already be configured (see |DeviceLocalAccounts|). If this policy is unset, there will be no auto-login.</translation> +<translation id="5529037166721644841">Specifies the period in milliseconds at which the device management service is queried for device policy information. + + Setting this policy overrides the default value of 3 hours. Valid values for this policy are in the range from 1,800,000 (30 minutes) to 86,400,000 (1 day). Any values not in this range will be clamped to the respective boundary. + + Leaving this policy not set will make <ph name="PRODUCT_OS_NAME" /> use the default value of 3 hours. + + Note that if the platform supports policy notifications, the refresh delay will be set to 24 hours (ignoring all defaults and the value of this policy) because it is expected that policy notifications will force a refresh automatically whenever policy changes, making more frequent refreshes unnecessary.</translation> <translation id="5535957389335373033">How frequently monitoring network packets are sent, in milliseconds. If this policy is unset, the default frequency is 3 minutes. The minimum @@ -1915,6 +1924,9 @@ This policy is only respected if the 'DefaultSearchProviderEnabled' policy is enabled.</translation> <translation id="7302043767260300182">Screen lock delay when running on AC power</translation> +<translation id="7311458740754205918">If this is set to true or not set, the New Tab page may show content suggestions based on the user's browsing history, interests or location. + + If this is set to false, automatically-generated content suggestions are not shown on the New Tab page.</translation> <translation id="7323896582714668701">Additional command line parameters for <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Specifies the length of time without user input after which the screen is turned off when running on battery power. @@ -2057,6 +2069,7 @@ <translation id="7763479091692861127"> The types of connections that are allowed to use for OS updates. OS updates potentially put heavy strain on the connection due to their size and may incur additional cost. Therefore, they are by default not enabled for connection types that are considered expensive, which include WiMax, Bluetooth and Cellular at the moment. The recognised connection type identifiers are "ethernet", "wifi", "wimax", "bluetooth" and "cellular".</translation> +<translation id="7763614521440615342">Show content suggestions on the New Tab page</translation> <translation id="7766336524667238790">Report information about the active kiosk session, such as application ID and version.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index 1aeb8d58..4849080 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -228,6 +228,13 @@ Si esta política está establecida en True, <ph name="PRODUCT_OS_NAME" /> intentará descargar cargas de actualizaciones automáticas a través de HTTP. Si está establecida en False o no está configurada, se utilizará HTTPS para descargar cargas de actualizaciones automáticas.</translation> <translation id="2006530844219044261">Administración de energía</translation> <translation id="201557587962247231">Frecuencia de cargas del informe de estado del dispositivo</translation> +<translation id="2018836497795982119">Especifica el período en milisegundos en el que se consultará el servicio de administración del dispositivo para obtener la información de política del usuario. + + Si estableces esta política, se anula el valor predeterminado de tres horas. Los valores válidos para esta política van de 1800000 (30 minutos) a 86400000 (1 día). Cualquier valor que esté fuera de este rango se ajustará al límite más cercano. Si la plataforma es compatible con notificaciones de política, el retraso de actualización se establecerá en 24 horas ya que se espera que las notificaciones de política fuercen una actualización de forma automática cada vez que la política cambie. + + Si no estableces esta política, <ph name="PRODUCT_NAME" /> usará el valor predeterminado de 3 horas. + + Ten en cuenta que, si la plataforma es compatible con las notificaciones de política, el retraso de actualización se establecerá en 24 horas (se ignoran todos los valores predeterminados y el valor de esta política) ya que se espera que las notificaciones de política fuercen una actualización de forma automática cada vez que la política cambie. Esto hace que las actualizaciones frecuentes no sean necesarias.</translation> <translation id="2024476116966025075">Configurar el nombre de dominio requerido para los clientes de acceso remoto</translation> <translation id="2030905906517501646">Palabra clave del proveedor de búsqueda predeterminado</translation> <translation id="206623763829450685">Especifica qué esquemas de autenticación de HTTP son compatibles con <ph name="PRODUCT_NAME" />. @@ -865,7 +872,7 @@ Elabora una lista de las extensiones que se instalan automáticamente para el usuario de demostración, para los dispositivos en modo de venta. Estas extensiones se guardan en el dispositivo y se pueden instalar sin conexión, después de la instalación. Cada entrada de la lista contiene un diccionario que debe incluir el ID de extensión en el campo "extension-id" y su URL de actualización en el campo "update-url".</translation> -<translation id="388237772682176890">Esta política ya no está disponible en M53 y se quitó en M54, porque se quitó la compatibilidad con SPDY/3.1. +<translation id="388237772682176890">Esta política ya no está disponible en M53 y se quitó en M54 porque se quitó la compatibilidad con SPDY/3.1. Inhabilita el uso del protocolo SPDY en <ph name="PRODUCT_NAME" />. @@ -1017,7 +1024,6 @@ Si bien la política se admite en plataformas posteriores, es posible que la función que habilita no esté disponible en todas ellas. No todas las funciones de Web Platform que dejaron de estar disponibles se pueden volver a habilitar; solo las que se indican explícitamente a continuación y durante un período limitado que varía según cada función. El formato general de la etiqueta de cadena será [NombreDeFunciónNoDisponible]_EffectiveUntil[aaaammdd]. Como referencia, se puede encontrar el propósito de los cambios de la función de Web Platform en https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Habilitar el bloqueo cuando el dispositivo esté inactivo o suspendido</translation> -<translation id="4445684791305970001">Inhabilita las herramientas del programador y la consola de JavaScript. Si se habilita esta configuración, no se podrá acceder a las herramientas del programador y los elementos del sitio web ya no se podrán inspeccionar. Se inhabilitarán todos los accesos directos del teclado y todas las entradas de menú o de menú contextual para abrir las herramientas del programador o la consola de JavaScript. Si se inhabilita o no se configura esta opción, el usuario podrá usar las herramientas del programador y la consola de JavaScript.</translation> <translation id="4449545651113180484">Rotar la pantalla hacia la derecha 270 grados</translation> <translation id="4467952432486360968">Bloquear cookies de terceros</translation> <translation id="4474167089968829729">Habilitar el guardado de contraseñas en el administrador de contraseñas</translation> @@ -1166,7 +1172,7 @@ Si habilitas o inhabilitas esta configuración, los usuarios no pueden cambiarla ni anularla en <ph name="PRODUCT_NAME" />. - Si esta política se deja sin configurar, esta se habilitará pero el usuario podrá cambiarla.</translation> + Si esta política se deja sin configurar, esta se habilitará, pero el usuario podrá cambiarla.</translation> <translation id="5208240613060747912">Te permite configurar una lista de patrones de URL que especifican los sitios que no están autorizados a mostrar notificaciones. Si esta política no se configura, se usará el valor global predeterminado para todos los sitios ya sea de la política "DefaultNotificationsSetting", si está configurada, o de otro tipo de configuración personal del usuario.</translation> <translation id="5226033722357981948">Indicar si el buscador de complemento se debe inhabilitar.</translation> <translation id="523505283826916779">Configuración de accesibilidad</translation> @@ -1233,6 +1239,13 @@ Si se establece esta política, se accederá automáticamente a la sesión especificada después de que haya transcurrido un período en la pantalla de acceso sin la interacción del usuario. La sesión pública ya debe estar configurada (ver |DeviceLocalAccounts|). Si no se establece esta política, no habrá acceso automático.</translation> +<translation id="5529037166721644841">Especifica el período en milisegundos en el que se consultará el servicio de administración del dispositivo para obtener la información de política del usuario. + + Si estableces esta política, se anula el valor predeterminado de tres horas. Los valores válidos para esta política van de 1800000 (30 minutos) a 86400000 (1 día). Cualquier valor que esté fuera de este rango se ajustará al límite más cercano. + + Si no estableces esta política, <ph name="PRODUCT_OS_NAME" /> usará el valor predeterminado de 3 horas. + + Ten en cuenta que, si la plataforma es compatible con las notificaciones de política, el retraso de actualización se establecerá en 24 horas (se ignoran todos los valores predeterminados y el valor de esta política) ya que se espera que las notificaciones de política fuercen una actualización de forma automática cada vez que la política cambie. Esto hace que las actualizaciones frecuentes no sean necesarias.</translation> <translation id="5535957389335373033">La frecuencia de envío de paquetes de red de control, en milisegundos. Si esta política no se configura, la frecuencia predeterminada es 3 minutos. @@ -1756,6 +1769,9 @@ Esta política solo se respeta si la política "DefaultSearchProviderEnabled" está habilitada.</translation> <translation id="7302043767260300182">Demora de bloqueo de pantalla con alimentación de CA</translation> +<translation id="7311458740754205918">Si esta política se establece como verdadera o no se establece, la página Nueva pestaña mostrará sugerencias de contenido basadas en la ubicación, los intereses o el historial de navegación del usuario. + + Si se establece como falsa, la página Nueva pestaña no mostrará sugerencias de contenido generadas de forma automática.</translation> <translation id="7323896582714668701">Parámetros de línea de comandos adicionales para <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Especifica el período de tiempo sin intervención del usuario luego del cual se apaga la pantalla si se usa alimentación de la batería. @@ -1888,6 +1904,7 @@ <translation id="7763479091692861127"> Los tipos de conexiones que se pueden utilizar para las actualizaciones del SO. Estas actualizaciones pueden constituir una carga para la conexión debido a su tamaño y podrían implicar costos adicionales. Por lo tanto, están inhabilitadas de forma predeterminada para los tipos de conexión que se consideran caros, que por el momento incluyen WiMax, Bluetooth y Celular. Los identificadores de tipos de conexión reconocidos son "ethernet", "wifi", "wimax", "bluetooth" y "celular".</translation> +<translation id="7763614521440615342">Mostrar sugerencias de contenido en la página Nueva pestaña</translation> <translation id="7766336524667238790">Informa datos sobre la sesión de kiosco activa, como el ID de aplicación y la versión. Si la política se establece en false, no se informarán los datos de la sesión. Si se establece en true o no se establece, se informarán los datos de la sesión.</translation>
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb index e82551a..2f9597b1 100644 --- a/components/policy/resources/policy_templates_es.xtb +++ b/components/policy/resources/policy_templates_es.xtb
@@ -240,6 +240,13 @@ Si esta política se establece en True, <ph name="PRODUCT_OS_NAME" /> intentará descargar cargas útiles de actualizaciones automáticas a través de HTTP. Si la política se establece en False o no se configura, se utilizará HTTPS para descargar cargas útiles de actualizaciones automáticas.</translation> <translation id="2006530844219044261">Administración de energía</translation> <translation id="201557587962247231">Frecuencia de subida de informes de estado del dispositivo</translation> +<translation id="2018836497795982119">Permite especificar el período en milisegundos en el que se solicita información sobre políticas del usuario al servicio de administración de dispositivos. + + Al establecer esta política, se anula el valor predeterminado de tres horas. Los valores válidos están comprendidos entre 1.800.000 (30 minutos) y 86.400.000 (un día). Si el valor no está incluido en este intervalo, se redondeará al límite correspondiente. Si la plataforma admite notificaciones sobre políticas, el tiempo de actualización se establecerá en 24 horas, ya que se espera que estas notificaciones fuercen una actualización automática en cuanto se produzca algún cambio en una política. + + Si no se establece esta política, <ph name="PRODUCT_NAME" /> usará el valor predeterminado de tres horas. + + Ten en cuenta que si la plataforma admite notificaciones sobre políticas, el tiempo de actualización se establecerá en 24 horas (ignorando todos los valores predeterminados y el valor de esta política), ya que se espera que estas notificaciones fuercen una actualización automática en cuanto se produzca algún cambio en una política. De esta forma, no será necesario realizar actualizaciones con mayor frecuencia.</translation> <translation id="2024476116966025075">Configurar el nombre de dominio requerido para los clientes de acceso remoto</translation> <translation id="2030905906517501646">Palabra clave de proveedor de búsquedas predeterminadas</translation> <translation id="206623763829450685">Especifica los esquemas de autenticación HTTP admitidos por <ph name="PRODUCT_NAME" />. @@ -1077,11 +1084,6 @@ Aunque la política en sí es compatible con las plataformas anteriores, es posible que la función que habilita no esté disponible en todas ellas. No todas las funciones de Web Platform obsoletas se pueden volver a habilitar. Solo es posible hacerlo con las indicadas específicamente y durante un período de tiempo limitado diferente para cada función. El formato general de la etiqueta de cadena será:[NombreDeFunciónObsoleta]_EffectiveUntil[aaaammdd]. Como referencia, puedes consultar los intentos detrás de los cambios de la función Web Platform en la página https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Habilitar el bloqueo cuando el dispositivo esté inactivo o suspendido</translation> -<translation id="4445684791305970001">Permite inhabilitar las Herramientas para desarrolladores y la Consola JavaScript. - - Si habilitas esta opción, no se podrá acceder a las Herramientas para desarrolladores ni se podrán inspeccionar los elementos de los sitios web. También se inhabilitarán las combinaciones de teclas y las entradas de menús o de menús contextuales que permiten abrir las Herramientas para desarrolladores o la Consola JavaScript. - - Si se inhabilita esta opción o si no se establece, se podrán usar las Herramientas para desarrolladores y la Consola JavaScript.</translation> <translation id="4449545651113180484">Girar la pantalla 270 grados hacia la derecha</translation> <translation id="4467952432486360968">Bloquear cookies de terceros</translation> <translation id="4474167089968829729">Habilitar el almacenamiento de contraseñas en el administrador de contraseñas</translation> @@ -1264,7 +1266,7 @@ Si habilitas o inhabilitas esta opción, los usuarios no pueden cambiarla ni anularla en <ph name="PRODUCT_NAME" />. - Si esta política no se configura, la predicción de red se habilitará pero los usuarios podrán cambiarla.</translation> + Si esta política no se configura, la predicción de red se habilitará, pero los usuarios podrán cambiarla.</translation> <translation id="5208240613060747912">Permite establecer una lista de patrones de URL para especificar los sitios que no pueden mostrar notificaciones. Si no se establece esta política, se usará para todos los sitios el valor general predeterminado que se indique en la política DefaultNotificationsSetting (si se ha establecido) o el valor personalizado que haya definido el usuario (en caso contrario).</translation> @@ -1346,6 +1348,13 @@ Si se establece esta política, se iniciará automáticamente la sesión especificada una vez que haya transcurrido un tiempo sin que el usuario haya realizado ninguna acción en la pantalla de inicio de sesión. La sesión pública tendrá que estar configurada previamente (ver | DeviceLocalAccounts|). Si no se establece esta política, no se realiza el inicio de sesión automático.</translation> +<translation id="5529037166721644841">Permite especificar el período en milisegundos en el que se solicita información sobre políticas de dispositivos al servicio de administración de dispositivos. + + Al establecer esta política, se anula el valor predeterminado de tres horas. Los valores válidos están comprendidos entre 1.800.000 (30 minutos) y 86.400.000 (un día). Si el valor no está incluido en este intervalo, se redondeará al límite correspondiente. + + Si no se establece esta política, <ph name="PRODUCT_OS_NAME" /> usará el valor predeterminado de tres horas. + + Ten en cuenta que si la plataforma admite notificaciones sobre políticas, el tiempo de actualización se establecerá en 24 horas (ignorando todos los valores predeterminados y el valor de esta política), ya que se espera que estas notificaciones fuercen una actualización automática en cuanto se produzca algún cambio en una política. De esta forma, no será necesario realizar actualizaciones con mayor frecuencia.</translation> <translation id="5535957389335373033">Frecuencia con la que se envían paquetes de red de supervisión (en milisegundos). Si esta política no se configura, la frecuencia predeterminada es de tres minutos. La frecuencia mínima es de 30 segundos y la máxima de 24 horas (los valores que no se encuentren en este intervalo se redondearán a este).</translation> @@ -1902,6 +1911,9 @@ Esta política solo se respeta si la política "DefaultSearchProviderEnabled" está habilitada.</translation> <translation id="7302043767260300182">Retraso de bloqueo de pantalla cuando el dispositivo está conectado a la red</translation> +<translation id="7311458740754205918">Si se asigna True o si no se establece ningún valor, la página Nueva pestaña puede mostrar sugerencias de contenido basadas en la ubicación, los intereses o el historial de navegación del usuario. + + Si se asigna el valor False, no se mostrarán las sugerencias de contenido generadas automáticamente en la página Nueva pestaña.</translation> <translation id="7323896582714668701">Parámetros de línea de comandos adicionales para <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Permite especificar el tiempo transcurrido hasta la desconexión de la pantalla (sin que el usuario realice ninguna acción) cuando el dispositivo funciona con la batería. @@ -2044,6 +2056,7 @@ <translation id="7763479091692861127"> Indica los tipos de conexiones que se pueden utilizar para actualizar el sistema operativo. Estas actualizaciones pueden constituir un lastre para la conexión por su tamaño y pueden suponer costes adicionales. Por tanto, están inhabilitadas de forma predeterminada en los tipos de conexiones que se consideran más costosos, entre los que se incluyen WiMAX, Bluetooth y redes móviles. Los identificadores de tipos de conexiones reconocidos son Ethernet, Wi-Fi, WiMAX, Bluetooth y redes móviles.</translation> +<translation id="7763614521440615342">Mostrar sugerencias de contenido en la página Nueva pestaña</translation> <translation id="7766336524667238790">Proporciona información sobre la sesión del kiosco activa, como el ID de la aplicación y la versión. Si se asigna el valor false a la política, no se proporcionará información sobre la sesión. Si se asigna el valor true o si la política no se configura, sí se proporcionará información sobre la sesión.</translation>
diff --git a/components/policy/resources/policy_templates_et.xtb b/components/policy/resources/policy_templates_et.xtb index 110c139..e7e75aa8 100644 --- a/components/policy/resources/policy_templates_et.xtb +++ b/components/policy/resources/policy_templates_et.xtb
@@ -241,6 +241,13 @@ Kui reegel on seatud väärtusele Tõene, proovib <ph name="PRODUCT_OS_NAME" /> automaatsete värskenduste laste alla laadida HTTP kaudu. Kui reegel on seatud väärtusele Väär või on määramata, kasutatakse automaatsete värskenduste lastide allalaadimiseks HTTPS-i.</translation> <translation id="2006530844219044261">Toitehaldus</translation> <translation id="201557587962247231">Seadme oleku aruannete üleslaadimise sagedus</translation> +<translation id="2018836497795982119">Määrab perioodi millisekundites, mille jooksul seadme haldusteenusele esitatakse päring kasutajareegli teabe hankimiseks. + + Selle reegli määramisel alistatakse vaikeväärtus 3 tundi. Selle reegli kehtivad väärtused jäävad vahemikku 1 800 000 (30 minutit) kuni 86 400 000 (1 päev). Sellest vahemikust välja jäävad väärtused surutakse vastavatesse piiridesse. Kui platvorm toetab reeglite märguandeid, määratakse värskendamise viiteks 24 tundi, kuna eeldatakse, et reegli märguanded jõustavad värskendamise reegli muutmisel automaatselt. + + Kui see reegel jäetakse määramata, kasutab teenus <ph name="PRODUCT_NAME" /> vaikeväärtust 3 tundi. + + Pange tähele, et kui platvorm toetab reeglite märguandeid, määratakse värskendamise viiteks 24 tundi (eirates kõiki vaikeväärtusi ja selle reegli väärtust), kuna eeldatakse, et reegli märguanded jõustavad reegli muutmisel automaatse värskendamise, mis muudab sagedasemad värskendused ebavajalikuks.</translation> <translation id="2024476116966025075">Vajaliku domeeninime seadistamine kaugjuurdepääsuga klientidele</translation> <translation id="2030905906517501646">Vaikeotsingupakkuja märksõna</translation> <translation id="206623763829450685">Määrab, milliseid HTTP autentimisskeeme rakendus <ph name="PRODUCT_NAME" /> toetab. @@ -1068,11 +1075,6 @@ Reegel on küll toetatud ülalnimetatud platvormidel, kuid lubatud funktsioon ei pruugi olla saadaval kõikidel platvormidel. Kõiki katkestatud toega veebiplatvormi funktsioone ei saa uuesti lubada. Piiratud ajaks saab lubada ainult allnimetatud funktsioone ja iga funktsiooni ajalimiit on erinev. Stringimärgendi üldine vorming on [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Veebiplatvormi funktsiooni muudatuste eesmärgi kohta leiate lisateavet aadressilt https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Luba lukustamine, kui seade on ootel või peatatud</translation> -<translation id="4445684791305970001">Keelab arendaja tööriistad ja JavaScripti konsooli. - - Seade lubamisel ei saa arendaja tööriistu kasutada ega veebisaitide elemente uurida. Kõik klaviatuuri otseteed ning arendaja tööriistade ja JavaScripti konsooli avamise käsud menüüdes ja kontekstimenüüdes keelatakse. - - Kui keelate valiku või jätate selle määramata, siis saab arendaja tööriistu ja JavaScripti konsooli kasutada.</translation> <translation id="4449545651113180484">Ekraani pööramine 270 kraadi päripäeva</translation> <translation id="4467952432486360968">Blokeeri kolmanda osapoole küpsised</translation> <translation id="4474167089968829729">Luba paroolide salvestamine paroolihaldurisse</translation> @@ -1333,6 +1335,13 @@ Kui selle reegli määrate, logitakse määratud seanssi automaatselt sisse pärast teatud perioodi möödumist sisselogimisekraanil ilma kasutaja interaktsioonita. Avalik seanss peab olema juba seadistatud (vt |DeviceLocalAccounts|). Kui te seda reeglit ei määra, siis automaatset sisselogimist ei toimu.</translation> +<translation id="5529037166721644841">Määrab perioodi millisekundites, mille jooksul seadme haldusteenusele esitatakse päring kasutajareegli teabe hankimiseks. + + Selle reegli määramisel alistatakse vaikeväärtus 3 tundi. Selle reegli kehtivad väärtused jäävad vahemikku 1 800 000 (30 minutit) kuni 86 400 000 (1 päev). Sellest vahemikust välja jäävad väärtused surutakse vastavatesse piiridesse. + + Kui see reegel jäetakse määramata, kasutab teenus <ph name="PRODUCT_OS_NAME" /> vaikeväärtust 3 tundi. + + Pange tähele, et kui platvorm toetab reeglite märguandeid, määratakse värskendamise viiteks 24 tundi (eirates kõiki vaikeväärtusi ja selle reegli väärtust), kuna eeldatakse, et reegli märguanded jõustavad reegli muutmisel automaatse värskendamise, mis muudab sagedasemad värskendused ebavajalikuks.</translation> <translation id="5535957389335373033">Jälgitavate võrgupakettide saatmise sagedus (millisekundites). Kui see reegel on määramata, on vaikesageduseks kolm minutit. Minimaalne @@ -1902,6 +1911,9 @@ See reegel kehtib vaid siis, kui reegel „DefaultSearchProviderEnabled” on lubatud.</translation> <translation id="7302043767260300182">Ekraani lukustamise viiteaeg võrgutoite kasutamisel</translation> +<translation id="7311458740754205918">Kui selle väärtuseks määratakse Tõene või seda ei määrata, võidakse uuel vahelehel näidata sisu soovitusi kasutaja sirvimisajaloo, huvide või asukoha põhjal. + + Kui selle väärtuseks määratakse Väär, ei näidata uuel vahelehel automaatselt loodud sisu soovitusi.</translation> <translation id="7323896582714668701">Rakenduse <ph name="PRODUCT_NAME" /> täiendavad käsureaparameetrid</translation> <translation id="7329842439428490522">Määrab aja, pärast mida ekraan akutoitega töötamisel välja lülitatakse, kui kasutaja pole midagi sisestanud. @@ -2043,6 +2055,7 @@ <translation id="7763479091692861127"> Ühendustüübid, mis on lubatud kasutamiseks OS-i värskendamiseks. OS-i värskendused võivad oma mahu tõttu panna ühendusele suure koormuse ja sellega võib kaasneda ka lisakulu. Seepärast pole need vaikimisi lubatud ühendustüüpidele, mida peetakse kalliteks ja mille hulka praegu kuuluvad WiMax, Bluetooth ja Cellular. Tunnustatud ühendustüübi identifikaatorid on „ethernet”, „wifi”, „wimax”, „bluetooth” ja „cellular”.</translation> +<translation id="7763614521440615342">Kuva uuel vahelehel sisu soovitused</translation> <translation id="7766336524667238790">Saadab teavet kioski aktiivse seansi kohta (nt rakenduse ID ja versioon).
diff --git a/components/policy/resources/policy_templates_fa.xtb b/components/policy/resources/policy_templates_fa.xtb index 27c17e19..4bc2ec80 100644 --- a/components/policy/resources/policy_templates_fa.xtb +++ b/components/policy/resources/policy_templates_fa.xtb
@@ -229,6 +229,13 @@ اگر این خطمشی روی درست تنظیم شود، <ph name="PRODUCT_OS_NAME" /> تلاش میکند بهروزرسانی خودکار دادههای اصلی را از طریق HTTP دانلود کند. اگر این خطمشی روی غلط تنظیم شود یا پیکربندی نشود، HTTPS برای بارگیری بهروزرسانی خودکار دادههای اصلی استفاده میشود.</translation> <translation id="2006530844219044261">مدیریت نیرو</translation> <translation id="201557587962247231">تواتر آپلود گزارش وضعیت دستگاه</translation> +<translation id="2018836497795982119">دوره زمانی (بر حسب میلیثانیه) را که سرویس مدیریت دستگاه برای اطلاعات خطمشی کاربر جستجو میشود مشخص میکند. + + تنظیم این خطمشی مقدار پیشفرض ۳ ساعت را لغو میکند. مقادیر معتبر برای این خطمشی در محدوده ۱۸۰۰۰۰۰ میلیثانیه (۳۰ دقیقه) تا ۸۶۴۰۰۰۰۰ میلیثانیه (۱ روز) است. هر مقداری خارج از این محدوده، به مقداری در داخل آن تبدیل میشود. اگر پلتفورم از اعلانهای خطمشی پشتیبانی کند، تأخیر زمانی بازخوانی روی ۲۴ ساعت تنظیم میشود، زیرا انتظار میرود هر زمان که خطمشی تغییر کند، اعلانهای خطمشی، بازخوانی خودکاری را به وجود آورند. + + تنظیم نکردن این خطمشی باعث میشود <ph name="PRODUCT_NAME" /> از مقدار پیشفرض ۳ ساعت استفاده کند. + + توجه داشته باشید اگر پلتفورم از اعلانهای خطمشی پشتیبانی کند، تأخیر زمانی بازخوانی روی ۲۴ ساعت تنظیم میشود (همه مقادیر و پیشفرضهای این خطمشی نادیده گرفته میشوند) زیرا انتظار میرود هر زمان که خطمشی تغییر کند، اعلانهای خطمشی، بازخوانی خودکاری را به وجود آورند و در نتیجه بازخوانیهای مکرر لازم نباشد.</translation> <translation id="2024476116966025075">پیکربندی نام دامنه ضروری برای کلاینتهای دسترسی از راه دور</translation> <translation id="2030905906517501646">کلید میانبر ارائه دهنده جستجوی پیشفرض</translation> <translation id="206623763829450685">تعیین میکند که کدام روشهای احراز هویت HTTP توسط <ph name="PRODUCT_NAME" /> پشتیبانی میشوند. @@ -1008,7 +1015,6 @@ با اینکه خود این خط مشی در پلتفورمهای بالا پشتیبانی میشود، اما ویژگیهایی که فعال میکند ممکن است در پلتفورمهای کمتری پشتیبانی شده باشند. تمام ویژگیهای منسوخ شده پلتفورم وب قابل فعال کردن مجدد نیستند. فقط آنهایی را میتوان فعال کرد که در زیر فهرست شده باشند و فقط برای مدتی محدود که برای هر ویژگی متفاوت است، فعال میشوند. قالب عمومی برچسب رشتهای باید [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] باشد. به عنوان مرجع میتوانید هدف تغییر ویژگیهای پلتفورم وب را در https://bit.ly/blinkintents بخوانید. </translation> <translation id="4442582539341804154">وقتی دستگاه غیرفعال یا معلق میشود، قفل فعال شود</translation> -<translation id="4445684791305970001">ابزارهای برنامهنویسان و کنسول جاوا اسکریپت را غیرفعال میکند. اگر این گزینه را فعال کنید، ابزارهای برنامهنویس قابل دسترس نخواهند بود و عناصر وب سایتها دیگر نمیتوانند بازرسی شوند. همه میانبرهای صفحهکلید، منو یا منوی درون نوشتاری که ابزارهای برنامهنویس یا کنسول جاوا اسکریپت را باز میکنند، غیرفعال میشوند. تنظیم این گزینه بر روی غیرفعال یا تنظیم نکردن آن به کاربر اجازه میدهد تا از ابزارهای برنامهنویس و کنسول جاوا اسکریپت استفاده کند.</translation> <translation id="4449545651113180484">چرخش ۲۷۰ درجهای صفحهنمایش در جهت عقربههای ساعت</translation> <translation id="4467952432486360968">مسدود کردن کوکیهای شخص ثالث</translation> <translation id="4474167089968829729">فعال کردن ذخیره گذرواژهها در مدیر گذرواژه</translation> @@ -1226,6 +1232,13 @@ اگر این خطمشی تنظیم شود، ورود به جلسه مشخص شده پس از گذشت یک دوره زمانی در صفحه ورود به سیستم بدون تعامل کاربر بهطور خودکار انجام خواهد شد. جلسه عمومی باید از قبل پیکربندی شده باشد (به |DeviceLocalAccounts| مراجعه کنید) اگر این خطمشی تنظیم نشود، ورود به سیستم خودکاری وجود نخواهد داشت.</translation> +<translation id="5529037166721644841">دوره زمانی را (بر حسب میلیثانیه) که سرویس مدیریت دستگاه برای اطلاعات خطمشی دستگاه جستجو میشود مشخص میکند. + + تنظیم این خطمشی مقدار پیشفرض ۳ ساعت را لغو میکند. مقادیر معتبر برای این خطمشی در محدوده ۱۸۰۰۰۰۰ میلیثانیه (۳۰ دقیقه) تا ۸۶۴۰۰۰۰۰ میلیثانیه (۱ روز) است. هر مقداری خارج از این محدوده، به مقداری در داخل آن تبدیل میشود. + + تنظیم نکردن این خطمشی باعث میشود <ph name="PRODUCT_OS_NAME" /> از مقدار پیشفرض ۳ ساعت استفاده کند. + + توجه داشته باشید اگر پلتفورم از اعلانهای خطمشی پشتیبانی کند، تأخیر زمانی بازخوانی روی ۲۴ ساعت تنظیم میشود (همه مقادیر و پیشفرضهای این خطمشی نادیده گرفته میشوند) زیرا انتظار میرود هر زمان که خطمشی تغییر میکند، اعلانهای خطمشی، بازخوانی خودکاری را به وجود آورند و در نتیجه بازخوانیهای مکرر لازم نباشد.</translation> <translation id="5535957389335373033">دوره زمانی ارسال بستههای نظارتی شبکه به میلیثانیه. اگر این خطمشی تنظیم نشود، دوره زمانی پیشفرض روی ۳ دقیقه تنظیم میشود. حداقل دوره زمانی میتواند ۳۰ ثانیه و حداکثر ۲۴ ساعت باشد. @@ -1750,6 +1763,9 @@ این قانون تنها درصورتیکه قانون "DefaultSearchProviderEnabled" فعال باشد مورد استفاده قرار میگیرد.</translation> <translation id="7302043767260300182">تأخیر قفل صفحه هنگام کار با برق</translation> +<translation id="7311458740754205918">اگر این خطمشی روی درست تنظیم شود یا تنظیم نشود، صفحه «برگه جدید» میتواند براساس سابقه مرور، علایق یا مکان کاربر، پیشنهادهای محتوا نشان دهد. + + اگر روی نادرست تنظیم شود، پیشنهادهای محتوایی که بهطور خودکار ایجاد میشوند، در صفحه «برگه جدید» نشان داده نمیشود.</translation> <translation id="7323896582714668701">پارامترهای خط فرمان اضافی برای <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">مدت زمانی را مشخص میکند که بدون ورودی کاربر پس از آن هنگام کار با باتری صفحه تار میشود. @@ -1882,6 +1898,7 @@ <translation id="7763479091692861127"> انواع اتصالاتی که مجاز به استفاده از بهروزرسانیهای سیستم عامل هستند. بهروزرسانیهای سیستم عامل بار سنگینی را روی اتصال ایجاد میکنند چون اندازه آنها بزرگ است و ممکن است هزینه بیشتری داشته باشند. بنابراین بهطور خودکار برای انواع اتصالی که گران باشد و در حال حاضر شامل WiMax، بلوتوث و تلفن همراه باشند، فعال نمیشوند. شناسههای نوع اتصال شناسایی شده "اترنت"، "wifi"، "wimax، "بلوتوث" و "تلفن همراه" هستند.</translation> +<translation id="7763614521440615342">نمایش پیشنهادهای محتوا در صفحه «برگه جدید»</translation> <translation id="7766336524667238790">گزارش اطلاعاتی درباره جلسه کیوسک فعال مانند شناسه و نسخه برنامه
diff --git a/components/policy/resources/policy_templates_fi.xtb b/components/policy/resources/policy_templates_fi.xtb index f63d5fd..c5434ce1 100644 --- a/components/policy/resources/policy_templates_fi.xtb +++ b/components/policy/resources/policy_templates_fi.xtb
@@ -229,6 +229,13 @@ Jos tämän käytännön arvoksi on asetettu tosi, <ph name="PRODUCT_OS_NAME" /> yrittää ladata automaattisesti päivittyvät tietosisällöt HTTP:n kautta. Jos käytännön arvoksi on asetettu epätosi tai sitä ei ole asetettu, HTTPS:ää käytetään automaattisesti päivittyvien tietosisältöjen lataamiseen.</translation> <translation id="2006530844219044261">Virran hallinta</translation> <translation id="201557587962247231">Laitteen tilatietojen lähetystiheys</translation> +<translation id="2018836497795982119">Määrittää millisekunteina ajan, jonka jälkeen laitteen hallintapalvelulta pyydetään tietoja käyttäjäkäytännöistä. + + Jos määrität tämän käytännön, 3 tunnin oletusarvo ohitetaan. Kelvollisia arvoja ovat ajat 1 800 000 millisekunnista (30 minuuttia) 86 400 000 millisekuntiin (1 päivä). Jos annettu aika on tämän välin ulkopuolella, käytetään lähintä kelvollista arvoa. Jos ympäristö tukee käytäntöilmoituksia, päivitysviiveeksi määritetään 24 tuntia, sillä todennäköisesti käytäntöilmoitus pakottaa sovelluksen suorittamaan päivityksen käytännön muuttuessa. + + Jos tätä käytäntöä ei määritetä, <ph name="PRODUCT_NAME" /> käyttää 3 tunnin oletusarvoa. + + Huom. Jos ympäristö tukee käytäntöilmoituksia, päivitysviiveeksi määritetään 24 tuntia (tämän käytännön oletus- ja muut arvot ohitetaan), sillä todennäköisesti käytäntöilmoitus pakottaa sovelluksen suorittamaan päivityksen käytännön muuttuessa. Tästä syystä päivityksiä ei tarvitse suorittaa useammin.</translation> <translation id="2024476116966025075">Määritä pakollinen verkkotunnuksen nimi etäkäytön asiakassovelluksia varten.</translation> <translation id="2030905906517501646">Oletushakupalvelun avainsana</translation> <translation id="206623763829450685">Määrittää, mitä HTTP-todennustapoja <ph name="PRODUCT_NAME" /> tukee. @@ -873,7 +880,7 @@ Luettelee laajennukset, jotka asennetaan automaattisesti esittelykäyttäjälle myyntitilassa olevilla laitteilla. Tällaiset laajennukset on tallennettu laitteelle, ja niitä on mahdollista asentaa offline-tilassa. Luettelon jokainen merkintä sisältää sanakirjan, jonka tulee sisältää laajennuksen tunnus (extension-id-kenttä) sekä sen päivitysosoite (update-url-kenttä).</translation> -<translation id="388237772682176890">Tämä käytäntö poistetaan käytöstä M53:ssä ja poistetaan kokonaan M54:ssä, koska SPDY/3.1-tuki poistuu. +<translation id="388237772682176890">Tämä käytäntö poistetaan käytöstä M53:ssa ja poistetaan kokonaan M54:ssä, koska SPDY/3.1-tuki poistuu. Poistaa käytöstä SPDY-protokollan tuotteessa <ph name="PRODUCT_NAME" />. @@ -1021,7 +1028,6 @@ Vaikka itse käytäntöä tuetaan yllä mainituilla alustoilla, kaikilla alustoilla ei välttämättä ole käytettävissä kaikkia ominaisuuksia, jotka käytännön avulla voidaan palauttaa käyttöön. Kaikkia vanhentuneita Web Platform -ominaisuuksia ei voi palauttaa käyttöön. Vain alla mainitut ominaisuudet voidaan palauttaa käyttöön rajoitetuksi ajaksi, joka vaihtelee ominaisuuskohtaisesti. Merkkijonotagin yleinen muoto on [VanhentuneenOminaisuudenNimi]_EffectiveUntil[vvvvkkpp]. Lisätietoja Web Platform -ominaisuuksien muutoksista saat osoitteesta https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Ota lukitus käyttöön, kun laite on käyttämättömänä tai virransäästötilassa</translation> -<translation id="4445684791305970001">Poistaa käytöstä kehittäjän työkalut sekä JavaScript-konsolin. Jos otat asetuksen käyttöön, kehittäjän työkaluja ei voi käyttää eikä verkkosivustojen elementtejä enää voi tarkastaa. Kehittäjän työkalut tai JavaScript-konsolin avaavat pikanäppäimet ja valikkokohteet poistetaan käytöstä. Jos poistat asetuksen käytöstä tai et määritä sitä, kehittäjän työkaluja ja JavaScript-konsolia voi käyttää.</translation> <translation id="4449545651113180484">Kierrä näyttöä 270 astetta myötäpäivään.</translation> <translation id="4467952432486360968">Estä kolmannen osapuolen evästeet</translation> <translation id="4474167089968829729">Ota käyttöön salasanojen tallentaminen salasanojen hallintaohjelmaan</translation> @@ -1241,6 +1247,13 @@ Jos käytäntö asetetaan, määritettyyn istuntoon kirjaudutaan automaattisesti, kun kirjautumisruudulla ei ole havaittu käyttäjän toimia tietyn ajan kuluessa. Julkinen istunto täytyy määrittää ensin (katso |DeviceLocalAccounts|). Jos käytäntöä ei aseteta, automaattista kirjautumista ei suoriteta.</translation> +<translation id="5529037166721644841">Määrittää millisekunteina ajan, jonka jälkeen laitteen hallintapalvelulta pyydetään tietoja käyttäjäkäytännöistä. + + Jos määrität tämän käytännön, 3 tunnin oletusarvo ohitetaan. Kelvollisia arvoja ovat ajat 1 800 000 millisekunnista (30 minuuttia) 86 400 000 millisekuntiin (1 päivä). Jos annettu aika on tämän välin ulkopuolella, käytetään lähintä kelvollista arvoa. + + Jos tätä käytäntöä ei määritetä, <ph name="PRODUCT_OS_NAME" /> käyttää 3 tunnin oletusarvoa. + + Huom. Jos ympäristö tukee käytäntöilmoituksia, päivitysviiveeksi määritetään 24 tuntia (tämän käytännön oletus- ja muut arvot ohitetaan), sillä todennäköisesti käytäntöilmoitus pakottaa sovelluksen suorittamaan päivityksen käytännön muuttuessa. Tästä syystä päivityksiä ei tarvitse suorittaa useammin.</translation> <translation id="5535957389335373033">Valvontapakettien lähetystiheys millisekunteina. Jos tätä käytäntöä ei ole määritetty, käytetään oletustiheyttä 3 minuuttia. Pienin sallittu @@ -1768,6 +1781,9 @@ Tätä käytäntöä noudatetaan vain, jos DefaultSearchProviderEnabled-käytäntö on käytössä.</translation> <translation id="7302043767260300182">Ruudun lukituksen viive käytettäessä laitetta verkkovirralla</translation> +<translation id="7311458740754205918">Jos tämän käytännön arvo on tosi tai sitä ei ole määritetty, Uusi välilehti ‑sivulla voidaan näyttää sisältöehdotuksia käyttäjän historian, kiinnostuksen kohteiden tai sijainnin perusteella. + + Jos tämän käytännön arvo on epätosi, Uusi välilehti ‑sivulla ei näytetä automaattisesti luotuja sisältöehdotuksia.</translation> <translation id="7323896582714668701">Muut tuotteen <ph name="PRODUCT_NAME" /> komentoriviparametrit</translation> <translation id="7329842439428490522">Määrittää käyttämättömyysajan, jonka kuluttua ruutu sammutetaan, kun laitetta käytetään akkuvirralla. @@ -1900,6 +1916,7 @@ <translation id="7763479091692861127"> Yhteystyypit, joilla voidaan suorittaa käyttöjärjestelmäpäivityksiä. Käyttöjärjestelmäpäivitykset saattavat kuormittaa yhteyttä niiden koon vuoksi, ja tiedonsiirrosta voidaan periä lisämaksuja. Järjestelmäpäivityksiä ei voi tällä hetkellä oletuksena suorittaa kalliilla yhteystyypeillä, kuten WiMax, Bluetooth ja Cellular. Tunnistettuja yhteystyypin tunnuksia ovat ethernet, wifi, wimax, bluetooth ja cellular.</translation> +<translation id="7763614521440615342">Näytä sisältöehdotuksia Uusi välilehti ‑sivulla</translation> <translation id="7766336524667238790">Raportoi aktiivisen kioskikäyttökerran tietoja, kuten sovellustunnuksen ja -version.
diff --git a/components/policy/resources/policy_templates_fil.xtb b/components/policy/resources/policy_templates_fil.xtb index f59edfc6..2109995 100644 --- a/components/policy/resources/policy_templates_fil.xtb +++ b/components/policy/resources/policy_templates_fil.xtb
@@ -239,6 +239,13 @@ Kung itinakda sa true ang patakarang ito, susubukang i-download ng <ph name="PRODUCT_OS_NAME" /> ang mga auto-update payload sa pamamagitan ng HTTP. Kung itinakda sa false ang patakarang ito o hindi nakatakda, gagamitin ang HTTPS sa pagda-download ng mga auto-update payload.</translation> <translation id="2006530844219044261">Pamamahala ng power</translation> <translation id="201557587962247231">Dalas ng pag-upload ng mga ulat ng status ng device</translation> +<translation id="2018836497795982119">Tinutukoy ang tagal sa mga millisecond kung gaano katagal na-query ang serbisyo ng pamamahala sa device para sa impormasyon ng patakaran ng user. + + Kapag itinakda ang patakarang ito, mao-override ang default na value na 3 oras. Ang mga wastong value para sa patakarang ito ay nasa saklaw mula 1800000 (30 minuto) hanggang 86400000 (1 araw). Maka-clamp sa kaukulang hangganan ang anumang mga value na wala sa saklaw na ito. Kung sinusuportahan ng platform ang mga notification ng patakaran, itatakda ang pagkaantala ng pag-refresh sa 24 na oras dahil inaasahan na ang mga notification ng patakaran ay magpipilit ng awtomatikong pag-refresh sa tuwing magbabago ang patakaran. + + Kapag hindi itinakda ang patakarang ito, gagamitin ng <ph name="PRODUCT_NAME" /> ang default na value na 3 oras. + + Tandaan na kung sinusuportahan ng platform ang mga notification ng patakaran, itatakda ang pagkaantala ng pag-refresh sa 24 na oras (nang hindi pinapansin ang lahat ng default at ang value ng patakarang ito) dahil inaasahan na ang mga notification ng patakaran ay magpipilit ng awtomatikong pag-refresh sa tuwing magbabago ang patakaran, kaya hindi na kailangang madalas na mag-refresh.</translation> <translation id="2024476116966025075">I-configure ang kinakailangang domain name para sa mga client ng malayuang pag-access</translation> <translation id="2030905906517501646">Default na keyword ng provider ng paghahanap</translation> <translation id="206623763829450685">Tinutukoy kung aling mga scheme ng pagpapatotoo ng HTTP ang sinusuportahan ng <ph name="PRODUCT_NAME" />. @@ -1072,11 +1079,6 @@ Kahit ang mismong patakaran ay sinusuportahan sa mga platform sa itaas, maaaring available sa mas kaunting platform ang ine-enable nitong feature. Hindi lahat ng mga hindi na ginagamit na feature ng Web Platform ay maaaring i-enable muli. Sa mga feature lang na nakikitang nakalista sa ibaba ang maaaring maging sa limitadong yugto ng panahon, na magkakaiba para sa bawat feature. Ang pangkalahatang format ng string tag ay magiging [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Bilang sanggunian, makikita mo ang layunin sa likod ng mga pagbabago ng feature ng Web Platform sa https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Paganahin ang lock kapag naging idle o nasuspinde ang device.</translation> -<translation id="4445684791305970001">Hindi pinapagana ang Mga Tool ng Developer at ang console ng JavaScript. - - Kung pinagana mo ang setting na ito, hindi maa-access ang Mga Tool ng Developer at hindi na maaaring siyasatin ang mga elemento ng web-site. Hindi papaganahin ang anumang mga keyboard shortcut at anumang mga entry ng menu o menu ng konteksto upang buksan ang Mga Tool ng Developer o ang Console ng JavaScript. - - Bibigyang-daan ng pagtatakda sa pagpipiliang ito na hindi pinagana o pag-iwan ditong hindi nakatakda ang user na gamitin ang Mga Tool ng Developer at ang console ng JavaScript.</translation> <translation id="4449545651113180484">I-rotate ang screen pakanan nang 270 degrees</translation> <translation id="4467952432486360968">I-block ang cookies ng third party</translation> <translation id="4474167089968829729">I-enable ang pagse-save ng mga password sa password manager</translation> @@ -1338,6 +1340,13 @@ Kung nakatakda ang patakarang ito, ang tinukoy na session ay awtomatikong mala-log in kapag lumipas na ang isang takdang panahon sa screen sa pag-log in nang walang pakikipag-ugnayan ng user. Dapat ay naka-configure na ang pampublikong session (tingnan ang |DeviceLocalAccounts|). Kung hindi nakatakda ang patakarang ito, walang magaganap na awtomatikong pag-log in.</translation> +<translation id="5529037166721644841">Tinutukoy ang tagal sa mga millisecond kung gaano katagal na-query ang serbisyo ng pamamahala sa device para sa impormasyon ng patakaran ng device. + + Kapag itinakda ang patakarang ito, mao-override ang default na value na 3 oras. Ang mga wastong value para sa patakarang ito ay nasa saklaw mula 1800000 (30 minuto) hanggang 86400000 (1 araw). Maka-clamp sa kaukulang hangganan ang anumang mga value na wala sa saklaw na ito. + + Kapag hindi itinakda ang patakarang ito, gagamitin ng <ph name="PRODUCT_OS_NAME" /> ang default na value na 3 oras. + + Tandaan na kung sinusuportahan ng platform ang mga notification ng patakaran, itatakda ang pagkaantala ng pag-refresh sa 24 na oras (nang hindi pinapansin ang lahat ng default at value ng patakarang ito) dahil inaasahan na ang mga notification ng patakaran ay magpipilit ng awtomatikong pag-refresh sa tuwing magbabago ang patakaran, kaya hindi na kailangang madalas na mag-refresh.</translation> <translation id="5535957389335373033">Gaano kadalas ipinapadala ang mga sinusubaybayang network packet, sa mga millisecond. Kung hindi nakatakda ang patakarang ito, ang default na dalas ay 3 minuto. Ang minimum @@ -1905,6 +1914,9 @@ Sinusunod lang ang patakarang ito kung pinagana ang patakarang 'DefaultSearchProviderEnabled'.</translation> <translation id="7302043767260300182">Delay ng screen lock kapag tumatakbo habang nakasaksak sa kuryente</translation> +<translation id="7311458740754205918">Kung itinakda ito sa true o hindi ito itinakda, ang page ng Bagong Tab ay maaaring magpakita ng mga suhestyon sa content batay sa history ng pagba-browse, mga interes o lokasyon ng user. + + Kung itinakda ito sa false, hindi makikita ang awtomatikong ginawang suhestyon sa content sa page ng Bagong Tab.</translation> <translation id="7323896582714668701">Mga karagdagang command line na parameter para sa <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Tinutukoy ang tagal ng oras na walang input ng user na kapag lumipas ay i-o-off ang screen kapag tumatakbo gamit ang power ng baterya. @@ -2048,6 +2060,7 @@ <translation id="7763479091692861127"> Ang mga uri ng koneksyon na pinapayagang gamitin para sa mga pag-update sa OS. Potensyal na nakakapagpabagal ng koneksyon ang mga pag-update sa OS dahil sa laki ng mga ito at maaari itong makaipon ng karagdagang gastusin. Samakatuwid, hindi naka-enable ang mga ito bilang default para sa mga uri ng koneksyon na itinuturing na mahal, na kinabibilangan ng WiMax, Bluetooth at Cellular sa ngayon. Ang mga kilalang identifier ng uri ng koneksyon ay "ethernet," "wifi," "wimax," "bluetooth" at "cellular."</translation> +<translation id="7763614521440615342">Ipakita ang mga suhestyon sa content sa page ng Bagong Tab</translation> <translation id="7766336524667238790">Nag-uulat ng impormasyon tungkol sa aktibong session sa kiosk, gaya ng application ID at bersyon.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb index bf2dcd4c..87e3410 100644 --- a/components/policy/resources/policy_templates_fr.xtb +++ b/components/policy/resources/policy_templates_fr.xtb
@@ -243,6 +243,13 @@ Si cette règle est définie sur "True", le téléchargement des charges utiles de mise à jour automatique est effectué par <ph name="PRODUCT_OS_NAME" /> via HTTP. Si cette règle est définie sur "False", ou si elle n'est pas configurée, HTTPS est utilisé pour le téléchargement des charges utiles de mise à jour automatique.</translation> <translation id="2006530844219044261">Gestion de l'alimentation</translation> <translation id="201557587962247231">Fréquence d'importation des rapports sur l'état de l'appareil</translation> +<translation id="2018836497795982119">Indique la fréquence en millisecondes à laquelle le service de gestion des appareils est interrogé sur les informations concernant les règles utilisateur. + + La définition de cette règle remplace la valeur par défaut de 3 heures. Les valeurs valides pour cette règle sont comprises entre 1 800 000 (30 minutes) et 86,4 millions (1 jour). Toutes les valeurs non comprises dans cette plage seront nivelées à la limite respective. Si la plate-forme est compatible avec les notifications relatives aux règles, le délai d'actualisation est défini par défaut sur 24 heures. De plus, la règle est actualisée automatiquement chaque fois qu'elle est modifiée. + + Si cette règle n'est pas définie, la valeur par défaut de 3 heures est appliquée dans <ph name="PRODUCT_NAME" />. + + Notez que si la plate-forme est compatible avec les notifications relatives aux règles, le délai d'actualisation sera défini sur 24 heures (ignorant ainsi toutes les valeurs par défaut et celle de cette règle). En effet, les notifications relatives aux règles forceront une actualisation automatique chaque fois qu'une règle est modifiée, ce qui rend inutile toute actualisation supplémentaire.</translation> <translation id="2024476116966025075">Configurer le nom de domaine requis pour les clients d'accès à distance</translation> <translation id="2030905906517501646">Mot clé du moteur de recherche par défaut</translation> <translation id="206623763829450685">Indique les modèles d'authentification HTTP compatibles avec <ph name="PRODUCT_NAME" />. @@ -931,7 +938,7 @@ Elle répertorie les extensions qui sont automatiquement installées pour l'utilisateur de la démonstration sur les appareils en mode "point de vente". Celles-ci sont enregistrées dans l'appareil. Elles peuvent être installées hors connexion, une fois l'installation terminée. Chaque entrée de la liste contient un dictionnaire qui doit inclure l'identifiant d'extension dans le champ "extension-id", ainsi que son adresse URL dans le champ "update-url".</translation> -<translation id="388237772682176890">Cette règle a été abandonnée dans la version M53 et supprimée dans la version M54, car le protocole SPDY 3.1 n'est plus disponible. +<translation id="388237772682176890">Cette règle a été abandonnée dans la version M53 et supprimée dans la version M54, car le protocole SPDY 3.1 n'est plus pris en charge. Elle désactive l'utilisation du protocole SPDY dans <ph name="PRODUCT_NAME" />. @@ -1089,11 +1096,6 @@ Bien que la règle elle-même soit compatible avec les plates-formes citées, la fonctionnalité qu'elle active peut n'être disponible que sur un nombre plus restreint de plates-formes. Les fonctionnalités abandonnées de la plate-forme en ligne ne peuvent pas toutes être réactivées. Seules celles qui sont énumérées ci-dessous peuvent l'être pendant une durée limitée, qui varie selon la fonctionnalité. Le format général de la balise de chaîne est [FonctionnalitéAbandonnée]_EffectiveUntil[aaaammjj]. Pour information, vous pouvez découvrir les raisons pour lesquelles des motivations ont été apportées aux fonctionnalités des plates-formes en ligne en consultant la page https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Activer le verrouillage lorsque l'appareil est inactif ou en veille</translation> -<translation id="4445684791305970001">Désactive les outils de développement et la console JavaScript. - -Si vous activez ce paramètre, les outils de développement ne sont plus accessibles et les éléments du site Web ne peuvent plus être inspectés. Tous les raccourcis clavier et toutes les entrées de menu ou de menu contextuel permettant d'ouvrir les outils de développement ou la console JavaScript sont désactivés. - -Si vous désactivez cette option ou si vous ne la configurez pas, l'utilisateur peut utiliser les outils de développement et la console JavaScript.</translation> <translation id="4449545651113180484">Faire pivoter l'écran vers la droite de 270 degrés</translation> <translation id="4467952432486360968">Bloquer les cookies tiers</translation> <translation id="4474167089968829729">Activer l'enregistrement des mots de passe dans le gestionnaire de mots de passe</translation> @@ -1274,7 +1276,7 @@ Elle active la prédiction réseau dans <ph name="PRODUCT_NAME" /> et empêche les utilisateurs de modifier ce paramètre. - Cela permet non seulement de contrôler la prélecture DNS, mais également la préconnexion TCP et SSL, et le préchargement des pages Web. Le nom de la règle fait référence à la prélecture DNS pour des raisons historiques. + Cela permet non seulement de contrôler la prélecture DNS, mais également la préconnexion TCP et SSL et le préchargement des pages Web. Le nom de la règle, qui fait référence à la prélecture DNS, est hérité des anciennes versions. Que vous activiez ou désactiviez ce paramètre, les utilisateurs ne peuvent pas le modifier ni le remplacer dans <ph name="PRODUCT_NAME" />. @@ -1361,6 +1363,13 @@ Si cette règle est définie, le système se connecte automatiquement à la session spécifiée après expiration du délai d'inactivité. La session publique doit être configurée au préalable (voir |DeviceLocalAccounts|). Si cette règle n'est pas définie, aucune connexion automatique n'a lieu.</translation> +<translation id="5529037166721644841">Indique la fréquence en millisecondes à laquelle le service de gestion des appareils est interrogé sur les informations concernant les règles relatives aux appareils. + + La définition de cette règle remplace la valeur par défaut de 3 heures. Les valeurs valides pour cette règle sont comprises entre 1 800 000 (30 minutes) et 86,4 millions (1 jour). Les valeurs situées en dehors de cette plage sont remplacées par la valeur limite la plus proche. + + Si cette règle n'est pas définie, la valeur par défaut de 3 heures est appliquée dans <ph name="PRODUCT_OS_NAME" />. + + Notez que si la plate-forme est compatible avec les notifications relatives aux règles, le délai d'actualisation sera défini sur 24 heures (ignorant ainsi toutes les valeurs par défaut et celle de cette règle). En effet, les notifications relatives aux règles forceront une actualisation automatique chaque fois qu'une règle est modifiée, ce qui rend inutile toute actualisation supplémentaire.</translation> <translation id="5535957389335373033">Indiquer la fréquence d'envoi de paquets réseau de contrôle, en millisecondes Si cette règle n'est pas définie, le délai par défaut entre deux paquets est de 3 minutes. @@ -1925,6 +1934,9 @@ Cette règle n'est respectée que si la règle "DefaultSearchProviderEnabled" est activée.</translation> <translation id="7302043767260300182">Délai de verrouillage de l'écran (secteur)</translation> +<translation id="7311458740754205918">Si cette règle est définie sur "True" ou n'est pas définie, la page "Nouvel onglet" peut proposer des recommandations de contenus en fonction de l'historique de navigation, des centres d'intérêt ou de la position de l'utilisateur. + + Si cette règle est définie sur "False", aucune recommandation de contenus générée automatiquement ne s'affiche sur la page "Nouvel onglet".</translation> <translation id="7323896582714668701">Paramètres de ligne de commande supplémentaires pour <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Indiquer le délai d'inactivité au terme duquel l'écran s'éteint en cas d'utilisation de la batterie @@ -2068,6 +2080,7 @@ <translation id="7763479091692861127"> Types de connexions autorisés pour les mises à jour du système d'exploitation. En raison de leur taille, les mises à jour du système d'exploitation peuvent considérablement ralentir la connexion et impliquent parfois des frais supplémentaires. C'est pourquoi elles ne sont pas activées par défaut pour les types de connexion jugés onéreux, tels que WiMax, Bluetooth et Cellulaire. Les identifiants des types de connexion reconnus sont "ethernet", "wifi", "wimax", "bluetooth" et "cellular".</translation> +<translation id="7763614521440615342">Afficher des recommandations de contenus sur la page "Nouvel onglet"</translation> <translation id="7766336524667238790">Transmettre des informations sur la session kiosque active, telles que l'ID et la version de l'application. @@ -2093,7 +2106,7 @@ Si ce paramètre est configuré, les utilisateurs ne peuvent pas le modifier eux-mêmes. - Si ce paramètre n'est pas configuré, les utilisateurs ne peuvent pas activer ni désactiver Android Backup Service dans l'application Paramètres de leur appareil Android.</translation> + Si ce paramètre n'est pas configuré, les utilisateurs peuvent activer et désactiver Android Backup Service dans l'application Paramètres de leur appareil Android.</translation> <translation id="7818131573217430250">Définir l'état par défaut du mode Contraste élevé sur l'écran de connexion</translation> <translation id="7831595031698917016">Spécifie le délai maximal en millisecondes entre la réception du rejet d'une règle et la récupération de la nouvelle règle auprès du service de gestion de l'appareil.
diff --git a/components/policy/resources/policy_templates_gu.xtb b/components/policy/resources/policy_templates_gu.xtb index f973278..0be3162 100644 --- a/components/policy/resources/policy_templates_gu.xtb +++ b/components/policy/resources/policy_templates_gu.xtb
@@ -235,6 +235,13 @@ જો આ નીતિ ટ્રુ પર સેટ કરી છે, તો <ph name="PRODUCT_OS_NAME" />, HTTP મારફતે સ્વતઃઅપડેટ પેલોડ્સને ડાઉનલોડ કરવાનો પ્રયાસ કરશે. જો નીતિ ફોલ્સ પર સેટ કરી છે અથવા સેટ કરી નથી, તો સ્વતઃ-અપડેટ પેલોડ્સને ડાઉનલોડ કરવા માટે HTTPS નો ઉપયોગ કરવામાં આવશે.</translation> <translation id="2006530844219044261">પાવર સંચાલન</translation> <translation id="201557587962247231">ઉપકરણ સ્થિતિ રિપોર્ટ અપલોડ્સની તીવ્રતા</translation> +<translation id="2018836497795982119">અવધિનો ઉલ્લેખ મિલિસેકંડમાં કરે છે કે જેના પર ઉપકરણ સંચાલન સેવાને ઉપકરણ નીતિ માહિતી માટે ક્વેરી કરવામાં આવે છે. + + આ નીતિને સેટ કરવું 3 કલાકના ડિફૉલ્ટ મૂલ્યને ઓવરરાઇડ કરે છે. આ નીતિ માટેના માન્ય મૂલ્યો 1800000 (30 મિનિટ) થી 86400000 (1 દિવસ) સુધીની શ્રેણીમાં છે. આ શ્રેણીમાં ન હોય તેવા કોઈપણ મૂલ્ય તેની અનુક્રમે આવતી સીમાથી જોડાઈ જશે. જો પ્લેટફોર્મ નીતિ સૂચનાઓનું સમર્થન કરે છે, તો તાજું કરવા માટેનો વિલંબ 24 કલાક પર સેટ કરવામાં આવશે કારણ કે એ અપેક્ષા કરવામાં આવે છે કે જ્યારે પણ નીતિ બદલાય છે ત્યારે નીતિ સૂચનાઓ આપમેળે તાજું કરવાની ફરજ પાડશે. + + આ નીતિને સેટ કર્યા વિના છોડી દેવાથી <ph name="PRODUCT_NAME" /> 3 કલાકના ડિફૉલ્ટ મૂલ્યનો ઉપયોગ કરશે. + + નોંધ લો કે જો પ્લેટફોર્મ નીતિ સૂચનાઓનું સમર્થન કરે છે, તો તાજું કરવા માટેનો વિલંબ (આ નીતિના તમામ ડિફૉલ્ટ્સ અને મૂલ્યને અવગણીને) 24 કલાક પર સેટ કરવામાં આવશે કારણ કે એ અપેક્ષા કરવામાં આવે છે કે જ્યારે પણ નીતિ બદલાય છે ત્યારે નીતિ સૂચનાઓ આપમેળે તાજું કરવાની ફરજ પાડશે, જે વારંવાર કરવામાં આવતી તાજું કરવાની ક્રિયાને રોકે છે.</translation> <translation id="2024476116966025075">રીમોટ ઍક્સેસ ક્લાઇન્ટ્સ માટે આવશ્યક ડોમેન નામ ગોઠવે છે</translation> <translation id="2030905906517501646">ડિફૉલ્ટ શોધ પ્રદાતા કીવર્ડ</translation> <translation id="206623763829450685"><ph name="PRODUCT_NAME" /> દ્વારા કઈ HTTP પ્રમાણીકરણ યોજનાઓ સમર્થિત છે તેનો ઉલ્લેખ કરે છે. @@ -917,7 +924,7 @@ રીટેલ મોડમાં ઉપકરણો માટે, ડેમો વપરાશકર્તા માટે આપમેળે ઇન્સ્ટોલ કરેલા હોય તેવા એક્સ્ટેન્શંસની સૂચિ બનાવે છે. ઇન્સ્ટોલેશન પછી, આ એક્સ્ટેન્શંસ ઉપકરણમાં સાચવવામાં આવે છે અને ઑફલાઇન હોવા પર ઇન્સ્ટોલ થઈ શકે છે. દરેક સૂચિ એન્ટ્રીમાં એક શબ્દકોશ છે જેમાં 'એક્સ્ટેન્શન-id' ફીલ્ડમાં એક્સ્ટેન્શન ID અને 'અપડેટ-url' ફીલ્ડમાં તેનો અપડેટ URL શામેલ હોવો જોઈએ.</translation> -<translation id="388237772682176890">આ નીતિ M53 માં ટાળવાવામાં આવી અને M54 માં દૂર કરવામાં આવી છે, કારણ કે SPDY/3.1 સમર્થન દૂર કરવામાં આવ્યું છે. +<translation id="388237772682176890">આ નીતિ M53 માં ટાળવામાં આવી અને M54 માં દૂર કરવામાં આવી છે, કારણ કે SPDY/3.1 સમર્થન દૂર કરવામાં આવ્યું છે. <ph name="PRODUCT_NAME" /> માં SPDY પ્રોટોકોલના ઉપયોગને અક્ષમ કરે છે. @@ -1073,11 +1080,6 @@ જ્યારે નીતિ પોતે ઉપરના પ્લેટફોર્મ્સ પર સમર્થિત હોય, ત્યારે તેને સક્ષમ કરનાર સુવિધા ખૂબ ઓછા પ્લેટફોર્મ્સ પર ઉપલબ્ધ હોઈ શકે છે. બધી જ ટાળેલ વેબ પ્લેટફોર્મ સુવિધાઓ ફરીથી સક્ષમ કરી શકાતી નથી, માત્ર નીચે સ્પષ્ટપણે સૂચિબદ્ધ જ મર્યાદિત સમય માટે ફરીથી સક્ષમ થઈ શકે છે, જે પ્રતિ સુવિધા અલગ હોય છે. સ્ટ્રિંગ ટેગનું સામાન્ય ફોર્મેટ [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] હશે. સંદર્ભ તરીકે, તમે http://bit.ly/blinkintents પર વેબ પ્લેટફોર્મ સુવિધા ફેરફારોની પાછળ રહેલા હેતુને જાણી શકો છો. </translation> <translation id="4442582539341804154">ઉપકરણ નિષ્ક્રિય અથવા નિલંબિત થાય ત્યારે લૉક સક્ષમ કરો</translation> -<translation id="4445684791305970001">વિકાસકર્તા સાધનો અને JavaScript કન્સોલને અક્ષમ કરે છે. - - જો તમે આ સેટિંગ સક્ષમ કરો છો, તો વિકાસકર્તા સાધનો ઍક્સેસ કરી શકાશે નહીં અને આગળથી વેબ-સાઇટ ઘટકો નિરિક્ષિત થશે નહીં. વિકાસકર્તા સાધનો અથવા JavaScript કન્સોલને ખોલવા માટેના કોઈપણ કીબોર્ડ શૉર્ટકટ્સ અને કોઈપણ મેનૂ અથવા સંદર્ભ મેનૂ એન્ટ્રીઝ અક્ષમ થશે. - - આ વિકલ્પને અક્ષમ પર સેટ કરવાથી અથવા તેને સેટ કર્યા વગર છોડવાથી વપરાશકર્તાને વિકાસકર્તા સાધનો અને JavaScript કન્સોલનો ઉપયોગ કરવાની મંજૂરી આપે છે.</translation> <translation id="4449545651113180484">સ્ક્રીનને ઘડિયાળની દિશામાં 270 ડિગ્રીએ ફેરવો</translation> <translation id="4467952432486360968">તૃતીય પક્ષની કૂકીઝને અવરોધિત કરે છે</translation> <translation id="4474167089968829729">પાસવર્ડ સંચાલક પર પાસવર્ડ્સ સાચવવાનું સક્ષમ કરો</translation> @@ -1342,6 +1344,13 @@ જો આ નીતિ સેટ કરેલી હોય, તો ઉલ્લેખિત સત્ર વપરાશકર્તાના હસ્તક્ષેપ વિના લોગિન સ્ક્રીન પર સમયની અવધિ વીતી ગયા પછી આપમેળે લોગિન કરશે. સાર્વજનિક સત્ર પહેલેથી ગોઠવેલું હોવું જોઈએ (|DeviceLocalAccounts| જુઓ). જો આ નીતિ સેટ કરેલી નથી, તો સ્વતઃ-લોગિન કરવામાં આવશે.</translation> +<translation id="5529037166721644841">અવધિનો ઉલ્લેખ મિલિસેકંડમાં કરે છે કે જેના પર ઉપકરણ સંચાલન સેવાને ઉપકરણ નીતિ માહિતી માટે ક્વેરી કરવામાં આવે છે. + + આ નીતિને સેટ કરવું 3 કલાકના ડિફૉલ્ટ મૂલ્યને ઓવરરાઇડ કરે છે. આ નીતિ માટેના માન્ય મૂલ્યો 1800000 (30 મિનિટ) થી 86400000 (1 દિવસ) સુધીની શ્રેણીમાં છે. આ શ્રેણીમાં ન હોય તેવા કોઈપણ મૂલ્ય તેની અનુક્રમે આવતી સીમાથી જોડાઈ જશે. + + આ નીતિને સેટ કર્યા વિના છોડી દેવાથી <ph name="PRODUCT_OS_NAME" /> 3 કલાકના ડિફૉલ્ટ મૂલ્યનો ઉપયોગ કરશે. + + નોંધ લો કે જો પ્લેટફોર્મ નીતિ સૂચનાઓનું સમર્થન કરે છે, તો તાજું કરવા માટેનો વિલંબ (આ નીતિના તમામ ડિફૉલ્ટ્સ અને મૂલ્યને અવગણીને) 24 કલાક પર સેટ કરવામાં આવશે કારણ કે એ અપેક્ષિત છે કે જ્યારે પણ નીતિ બદલાય છે ત્યારે નીતિ સૂચનાઓ આપમેળે તાજું કરવાની ફરજ પાડશે, જે વધુ વખતની બિનજરૂરી તાજું કરવાની ક્રિયાને રોકે છે.</translation> <translation id="5535957389335373033">નિરીક્ષણ નેટવર્ક પૅકેટ્સને, મિલિસેકંડમાં, કેટલીવાર મોકલવામાં આવે છે. જો નીતિને સેટ ન કરી હોય, તો ડિફૉલ્ટ તીવ્રતા 3 મિનિટ હોય છે. લઘુત્તમ @@ -1901,6 +1910,9 @@ આ નીતિ ફક્ત ત્યારે જ ધ્યાનમાં લેવાય છે જયારે 'DefaultSearchProviderEnabled' નીતિ સક્ષમ હોય.</translation> <translation id="7302043767260300182">AC પાવર પર ચાલી રહ્યું હોય ત્યારે સ્ક્રીન લૉક વિલંબ</translation> +<translation id="7311458740754205918">જો આ true પર સેટ કરેલ હોય અથવા સેટ કરેલ ન હોય, તો નવું ટૅબ પૃષ્ઠ વપરાશકર્તાના બાઉઝિંગ ઇતિહાસ, રુચિઓ અથવા સ્થાનના આધારે સામગ્રી સૂચનો બતાવી શકે છે. + + જો આ false પર સેટ કરેલ હોય, તો નવું ટૅબ પૃષ્ઠ પર સ્વચલિત-બનાવેલ સામગ્રી સૂચનો બતાવવામાં આવતાં નથી.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> માટે વધારાના કમાન્ડ લાઇન પેરામીટર્સ</translation> <translation id="7329842439428490522">બેટરી પાવર પર ચાલી રહ્યું હોય ત્યારે સ્ક્રીન બંધ થઈ જાય તે પછીની સમયની લંબાઈને વપરાશકર્તા ઇનપુટ વગર નિર્દિષ્ટ કરે છે. @@ -2040,6 +2052,7 @@ <translation id="7763479091692861127"> કનેક્શન્સના પ્રકારો કે જેની OS અપડેટ્સ માટે ઉપયોગ કરવાની મંજૂરી આપેલી છે. OS અપડેટ્સ સંભવિત રૂપે તેમના કદનાં લીધે કનેક્શન પર ભારે દબાણ આપે છે અને તે અતિરિક્ત શુલ્ક વસૂલી શકે છે. એટલા માટે, તેને ખર્ચાળ માનવામાં આવતા કનેક્શન પ્રકારો માટે ડિફોલ્ટ રૂપે સક્ષમ કરવામાં આવતા નથી, જેમાં આ પળે WiMax, Bluetooth અને Cellular શામેલ છે. ઓળખાયેલ કનેક્શન પ્રકાર ઓળખકર્તાઓ "ઇથરનેટ", "wifi", "wimax", "bluetooth" અને "cellular" છે.</translation> +<translation id="7763614521440615342">નવું ટૅબ પૃષ્ઠ પર સામગ્રી સૂચનો બતાવો</translation> <translation id="7766336524667238790">ઍપ્લિકેશન ID અને સંસ્કરણ જેવા સક્રિય કિઓસ્ક સત્ર વિશે માહિતીની જાણ કરો. જો નીતિ false પર સેટ કરવામાં આવી હોય, તો સત્ર માહિતીની જાણ કરવામાં આવશે
diff --git a/components/policy/resources/policy_templates_hi.xtb b/components/policy/resources/policy_templates_hi.xtb index cc92473..54365d9 100644 --- a/components/policy/resources/policy_templates_hi.xtb +++ b/components/policy/resources/policy_templates_hi.xtb
@@ -240,6 +240,13 @@ यदि यह नीति सही पर सेट है, तो <ph name="PRODUCT_OS_NAME" /> HTTP के द्वारा स्वत: अपडेट डाउनलोड करने का प्रयास करेगा. यदि नीति को गलत पर सेट है या सेट नहीं है, तो स्वत: अपडेट पेलोड को डाउनलोड करने के लिए HTTPS का उपयोग किया जाएगा.</translation> <translation id="2006530844219044261">पावर प्रबंधन</translation> <translation id="201557587962247231">डिवाइस स्थिति रिपोर्ट अपलोड की आवृत्ति</translation> +<translation id="2018836497795982119">उपयोगकर्ता नीति की जानकारी के लिए क्वेरी की गई डिवाइस प्रबंधन सेवा की अवधि को मिलीसेकंड में निर्दिष्ट करती है. + + यह नीति सेट करने से 3 घंटो का डिफ़ॉल्ट मान ओवरराइड हो जाता है. इस नीति के मान्य मान 1800000 (30 मिनट) से 86400000 (1 दिन) तक हैं. इस सीमा में नहीं आने वाले सभी मानों को संबंधित सीमा से संबद्ध कर दिया जाएगा. यदि प्लेटफ़ॉर्म, नीति नोटिफ़िकेशन का समर्थन करता है, तो रीफ्रेश विलंब को 24 घंटों पर सेट कर दिया जाएगा क्योंकि यह अपेक्षा की जाती है कि नीति में बदलाव होने पर नीति नोटिफ़िकेशन अपने आप एक रीफ्रेश लागू करेंगे. + + नीति को सेट किए बिना छोड़ने से <ph name="PRODUCT_NAME" /> 3 घंटों के डिफ़ॉल्ट मान का उपयोग करेगा. + + नोट करें कि यदि प्लेटफ़ॉर्म, नीति नोटिफ़िकेशन का समर्थन करता है, तो रीफ्रेश विलंब को 24 घंटों (सभी डिफ़ॉल्ट और इस नीति के मान को अनदेखा करते हुए) पर सेट कर दिया जाएगा क्योंकि यह अपेक्षा की जाती है कि नीति में बदलाव होने पर नीति नोटिफ़िकेशन अपने आप एक रीफ्रेश लागू करेंगे, जिनसे अधिक बार रीफ्रेश करने की आवश्यकता नहीं रह जाएगी.</translation> <translation id="2024476116966025075">दूरस्थ पहुंच क्लाइंट के लिए आवश्यक डोमेन नाम को कॉन्फ़िगर करें</translation> <translation id="2030905906517501646">डिफ़ॉल्ट खोज प्रदाता कीवर्ड</translation> <translation id="206623763829450685">यह निर्दिष्ट करती है कि कौन सी HTTP प्रमाणीकरण योजना <ph name="PRODUCT_NAME" /> द्वारा समर्थित है. @@ -1060,7 +1067,6 @@ यद्यपि उपरोक्त प्लैटफ़ॉर्म पर नीति स्वयं समर्थित है, लेकिन वह जिस सुविधा को सक्षम कर रही है वह संभवत: कुछ ही प्लैटफ़ॉर्म पर उपलब्ध होगी. सभी बहिष्कृत वेब प्लैटफ़ॉर्म सुविधाओं को पुन: सक्षम नहीं किया जा सकता है. केवल नीचे स्पष्ट रूप से सूचीबद्ध सुविधाओं को ही सीमित समय के लिए पुन: सक्षम किया जा सकता है, जो कि हर सुविधा के लिए भिन्न है. स्ट्रिंग टैग का सामान्य प्रारूप [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] होगा. संदर्भ के रूप में, आपको वेब प्लैटफ़ॉर्म सुविधा में होने वाले बदलावों का उद्देश्य https://bit.ly/blinkintents पर मिल जाएगा. </translation> <translation id="4442582539341804154">डिवाइस के निष्क्रिय या निलंबित होने पर लॉक सक्षम करें</translation> -<translation id="4445684791305970001">डेवलपर टूल और JavaScript पैनल अक्षम करती है. यदि आप इस सेटिंग को सक्षम करते हैं, तो डेवलपर टूल पर पहुंचा नहीं जा सकता और वेब साइट तत्वों का अब निरीक्षण नहीं किया जा सकता. डेवलपर टूल या JavaScript पैनल खोलने के लिए कीबोर्ड शॉर्टकट और मेनू या संदर्भ प्रविष्टियां अक्षम हो जाएंगी. इस विकल्प को अक्षम करने या सेट किए बिना छोड़ देने से उपयोगकर्ता डेवलपर टूल और JavaScript पैनल का उपयोग कर सकेंगे.</translation> <translation id="4449545651113180484">स्क्रीन को घड़ी की दिशा में 270 डिग्री घुमाएं</translation> <translation id="4467952432486360968">तृतीय पक्ष कुकी अवरुद्ध करें</translation> <translation id="4474167089968829729">पासवर्ड प्रबंधक में पासवर्ड सहेजना सक्षम करें</translation> @@ -1307,6 +1313,13 @@ यदि यह नीति सेट होती है, तो प्रवेश स्क्रीन पर एक समयावधि निकल जाने के बाद निर्दिष्ट सत्र, उपयोगकर्ता की सहभागिता के बिना ही स्वचालित रूप से प्रवेश हो जाएगा. सार्वजनिक सत्र को पहले से कॉन्फ़िगर किया हुआ होना चाहिए (|DeviceLocalAccounts| देखें). यदि यह नीति सेट नहीं है, तो कोई स्वत:-प्रवेश नहीं होगा.</translation> +<translation id="5529037166721644841">उपयोगकर्ता नीति की जानकारी के लिए क्वेरी की गई डिवाइस प्रबंधन सेवा की अवधि को मिलीसेकंड में निर्दिष्ट करती है. + + यह नीति सेट करने से 3 घंटो का डिफ़ॉल्ट मान ओवरराइड हो जाता है. इस नीति के मान्य मान 1800000 (30 मिनट) से 86400000 (1 दिन) तक हैं. इस सीमा में नहीं आने वाले सभी मानों को संबंधित सीमा से संबद्ध कर दिया जाएगा. + + नीति को सेट किए बिना छोड़ने से <ph name="PRODUCT_OS_NAME" /> 3 घंटों के डिफ़ॉल्ट मान का उपयोग करेगा. + + नोट करें कि यदि प्लेटफ़ॉर्म, नीति नोटिफ़िकेशन का समर्थन करता है, तो रीफ्रेश विलंब को 24 घंटों (सभी डिफ़ॉल्ट और इस नीति के मान को अनदेखा करते हुए) पर सेट कर दिया जाएगा क्योंकि यह अपेक्षा की जाती है कि नीति में बदलाव होने पर नीति नोटिफ़िकेशन अपने आप एक रीफ्रेश लागू करेंगे, जिनसे अधिक बार रीफ्रेश करने की आवश्यकता नहीं रह जाएगी.</translation> <translation id="5535957389335373033">नेटवर्क पैकेट मॉनीटर करने के लिए भेजा जाना कितने मिलीसेकंड में दोहराया जाता है. यदि यह पॉलिसी सेट नहीं की गई है, तो डिफ़ॉल्ट आवृत्ति 3 मिनट की होती है. न्यूनतम @@ -1860,6 +1873,9 @@ यह नीति केवल तभी मान्य होती है यदि 'DefaultSearchProviderEnabled' नीति सक्षम है.</translation> <translation id="7302043767260300182">AC पावर पर चलते समय स्क्रीन लॉक विलंब</translation> +<translation id="7311458740754205918">यदि यह सही पर सेट की हुई है या सेट नहीं की गई है, तो नया टैब पृष्ठ उपयोगकर्ता के ब्राउज़िंग इतिहास, रुचियों या स्थान के आधार पर सामग्री के सुझाव दिखा सकता है. + + यदि यह गलत पर सेट की हुई है, तो स्वत: जनरेट होने वाले सामग्री सुझाव, नया टैब पृष्ठ पर दिखाए नहीं देते हैं.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> के लिए अतिरिक्त आदेश पंक्ति पैरामीटर</translation> <translation id="7329842439428490522">बैटरी पावर पर चलते समय, उस समयावधि को निर्दिष्ट करती है जितनी देर तक उपयोगकर्ता कोई भी इनपुट न दे, उसके बाद स्क्रीन बंद हो जाती है. @@ -1992,6 +2008,7 @@ <translation id="7763479091692861127"> OS अपडेट के लिए अनुमति प्राप्त कनेक्शन के प्रकार. OS अपडेट अपने आकार के कारण संभावित रूप से कनेक्शन पर अत्यधिक भार डालते हैं और इसके कारण अतिरिक्त शुल्क लग सकते हैं. इसीलिए, उन्हें महंगे माने जाने वाले कनेक्शन प्रकारों जैसे WiMax, Bluetooth और कभी-कभी सेल्युलर के लिए डिफ़ॉल्ट रूप से सक्षम नहीं किया जाता है. मान्यता प्राप्त कनेक्शन प्रकार पहचानकर्ता हैं "इथरनेट", "wifi", "wimax", "bluetooth" और "सेल्युलर".</translation> +<translation id="7763614521440615342">नया टैब पृष्ठ पर सामग्री के सुझाव दिखाएं</translation> <translation id="7766336524667238790">सक्रिय कियोस्क सत्र के बारे में जानकारी की रिपोर्ट करें, जैसे ऐप्लिकेशन आईडी और वर्शन.
diff --git a/components/policy/resources/policy_templates_hr.xtb b/components/policy/resources/policy_templates_hr.xtb index 91bc468..6910e926 100644 --- a/components/policy/resources/policy_templates_hr.xtb +++ b/components/policy/resources/policy_templates_hr.xtb
@@ -233,6 +233,13 @@ Ako je ovo pravilo postavljeno na istinito, sustav <ph name="PRODUCT_OS_NAME" />pokušat će preuzeti podatke automatskog ažuriranja putem HTTP-a. Ako je pravilo postavljeno na neistinito ili nije postavljeno, za preuzimanje podataka automatskog ažuriranja upotrebljavat će se HTTPS.</translation> <translation id="2006530844219044261">Upravljanje napajanjem</translation> <translation id="201557587962247231">Učestalost učitavanja izvješća o statusu uređaja</translation> +<translation id="2018836497795982119">Određuje vrijeme u milisekundama tijekom kojeg se od usluge upravljanja uređajima traže podaci o korisničkim pravilima. + + Postavljanje ovog pravila nadjačava zadanu vrijednost od 3 sata. Valjane vrijednosti za ovo pravilo u rasponu su od 1800000 (30 minuta) do 86400000 (1 dan). Sve vrijednosti koje nisu u ovom rasponu prebacit će se u odgovarajuće granice. Ako platforma podržava obavijesti o pravilima, odgoda osvježavanja postavit će se na 24 sata jer se očekuje da će obavijesti o pravilima automatski nametnuti osvježavanje nakon svake promjene pravila. + + Ako ne postavite to pravilo, <ph name="PRODUCT_NAME" /> upotrebljavat će zadanu vrijednost od 3 sata. + + Ako platforma podržava obavijesti o pravilima, odgoda osvježavanja postavit će se na 24 sata (sve zadane postavke i vrijednost ovog pravila bit će zanemareni) jer se očekuje da će obavijesti o pravilima automatski nametnuti osvježavanje nakon svake promjene pravila, zbog čega su češća osvježavanja nepotrebna.</translation> <translation id="2024476116966025075">Konfiguriraj traženi naziv domene za klijente s daljinskim pristupom</translation> <translation id="2030905906517501646">Zadani davatelj usluga pretraživanja</translation> <translation id="206623763829450685">Određuje koje sheme HTTP autentifikacije <ph name="PRODUCT_NAME" /> podržava. @@ -1020,7 +1027,6 @@ Iako je pravilo podržano na prethodno navedenim platformama, značajka koju omogućuje može biti dostupna na manje platformi. Neke zastarjele značajke web-platformi ne mogu se ponovo omogućiti. Samo one koje su izričito navedene u nastavku mogu se ponovo omogućiti na ograničeno vrijeme koje se razlikuje od značajke do značajke. Općeniti oblik oznake niza bit će [Nazivzastarjeleznačajke]_EffectiveUntil[ggggmmdd]. Ako vas zanima, namjeru promjene značajke web-platforme možete pronaći na stranici https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Omogući zaključavanje kada uređaj prijeđe u stanje mirovanja ili se isključi</translation> -<translation id="4445684791305970001">Onemogućuje Alate za razvojne programere i konzolu JavaScriptu. Ako omogućite ovu postavku, više neće biti moguće pristupiti Alatima za razvojne programere i više se neće moći provjeravati elementi web-lokacija. Bit će onemogućeni svi tipkovnički prečaci i stavke izbornika ili kontekstnih izbornika za otvaranje Alata za razvojne programere ili konzole JavaScriptu. Ako se ova opcija onemogući ili ne postavi, bit će dopuštena upotreba Alata za razvojne programere i konzole JavaScripta.</translation> <translation id="4449545651113180484">Zakreni zaslon u smjeru kazaljke na satu 270 stupnjeva</translation> <translation id="4467952432486360968">Blokiraj kolačiće trećih strana</translation> <translation id="4474167089968829729">Omogući spremanje zaporki u upravitelj zaporki</translation> @@ -1244,6 +1250,13 @@ Ako je ovo pravilo postavljeno, automatski će se prijavljivati u navedenu sesiju nakon isteka vremenskog razdoblja bez interakcije korisnika na zaslonu za prijavu. Javna sesija mora biti već konfigurirana (pogledajte |DeviceLocalAccounts|). Ako ovo pravilo nije postavljeno, neće biti automatske prijave.</translation> +<translation id="5529037166721644841">Određuje vrijeme u milisekundama tijekom kojeg se od usluge upravljanja uređajima traže podaci o korisničkim pravilima. + + Postavljanje ovog pravila nadjačava zadanu vrijednost od 3 sata. Valjane vrijednosti za ovo pravilo u rasponu su od 1800000 (30 minuta) do 86400000 (1 dan). Sve vrijednosti koje nisu u ovom rasponu prebacit će se u odgovarajuće granice. + + Ako ne postavite to pravilo, <ph name="PRODUCT_OS_NAME" /> upotrebljavat će zadanu vrijednost od 3 sata. + + Ako platforma podržava obavijesti o pravilima, odgoda osvježavanja postavit će se na 24 sata (sve zadane postavke i vrijednost ovog pravila zanemarit će se) jer se očekuje da će obavijesti o pravilima automatski nametnuti osvježavanje nakon svake promjene pravila, zbog čega su češća osvježavanja nepotrebna.</translation> <translation id="5535957389335373033">Učestalost slanja mrežnih paketa za praćenje u milisekundama. Ako se to pravilo ne postavi, zadana učestalost iznosi 3 minute. Minimalna @@ -1768,6 +1781,9 @@ Ovo se pravilo primjenjuje samo ako je omogućeno pravilo 'DefaultSearchProviderEnabled'.</translation> <translation id="7302043767260300182">Odgoda zaključavanja zaslona za vrijeme napajanja izmjeničnom strujom</translation> +<translation id="7311458740754205918">Ako se ovo pravilo postavi na istinito ili se ne postavi, web-stranica nove kartice može prikazivati preporuke sadržaja na temelju korisnikove povijesti pretraživanja, interesa ili lokacije. + + Ako se postavi na neistinito, automatski generirani prijedlozi sadržaja neće se prikazivati na web-stranici nove kartice.</translation> <translation id="7323896582714668701">Dodatni parametri naredbenog retka za uslugu <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Određuje koliko vremena treba proteći bez aktivnosti korisnika da bi se zaslon isključio tijekom baterijskog napajanja. @@ -1900,6 +1916,7 @@ <translation id="7763479091692861127"> Vrste veza putem kojih su dopuštena ažuriranja OS-a. Ažuriranja OS-a zbog svoje veličine potencijalno jako opterećuju vezu i mogu uzrokovati dodatne troškove. Stoga prema zadanim postavkama nisu omogućena za vrste veza koje se smatraju skupima, a to su trenutačno WiMax, Bluetooth i mobilne veze. Prepoznati identifikatori vrste veze jesu "ethernet", "wifi", "wimax", "bluetooth" i "mobilna".</translation> +<translation id="7763614521440615342">Prikaz prijedloga sadržaja na web-stranici nove kartice</translation> <translation id="7766336524667238790">Prijavljuje informacije o aktivnoj sesiji kioska, primjerice, ID aplikacije i verziju.
diff --git a/components/policy/resources/policy_templates_hu.xtb b/components/policy/resources/policy_templates_hu.xtb index 39e9764..8fc5187 100644 --- a/components/policy/resources/policy_templates_hu.xtb +++ b/components/policy/resources/policy_templates_hu.xtb
@@ -234,6 +234,13 @@ Ha a házirend értéke igaz, akkor a <ph name="PRODUCT_OS_NAME" /> az automatikusan frissülő hasznos tartalmakat HTTP-kapcsolaton keresztül kísérli meg letölteni. Ha a házirend értéke hamis, vagy ha nincs beállítva, akkor a rendszer mindig HTTPS-kapcsolatot használ az automatikusan frissülő hasznos tartalmak letöltésére.</translation> <translation id="2006530844219044261">Energiagazdálkodás</translation> <translation id="201557587962247231">Az eszköz állapotával kapcsolatos jelentések feltöltési gyakorisága</translation> +<translation id="2018836497795982119">Azt az időtartamot adja meg ezredmásodpercben, amilyen rendszerességgel az eszközkezelő szolgáltatás lekérdezi a felhasználói szabályzattal kapcsolatos információkat. + + A házirend beállításával felülírja a 3 órás alapértelmezett értéket. Az érték 1800000 (30 perc) és 86400000 (1 nap) között lehet. A tartományon kívül eső értékeket a rendszer a közelebbi tartományhatárra állítja. Ha az operációs rendszer támogatja a házirendekkel kapcsolatos értesítéseket, akkor a frissítési időszak 24 órás lesz, ugyanis a házirenddel kapcsolatos értesítéseknek automatikusan ki kell kényszeríteniük a frissítést, amikor egy házirend megváltozik. + + Ha nem állítja be a házirendet, akkor a <ph name="PRODUCT_NAME" /> az alapértelmezett 3 órás értéket fogja használni. + + Felhívjuk figyelmét, hogy ha az operációs rendszer támogatja a házirendekkel kapcsolatos értesítéseket, akkor a frissítési időszak 24 órás lesz (azaz a böngésző nem veszi figyelembe sem az alapértelmezett, sem a beállított értékeket), ugyanis a házirenddel kapcsolatos értesítéseknek automatikusan ki kell kényszeríteniük a frissítést, amikor egy házirend megváltozik, így szükségtelen gyakrabban frissíteni.</translation> <translation id="2024476116966025075">A kötelező domainnév konfigurálása a távoli hozzáférésű ügyfeleknél</translation> <translation id="2030905906517501646">Alapértelmezett keresési szolgáltató kulcsszava</translation> <translation id="206623763829450685">Meghatározza, hogy a <ph name="PRODUCT_NAME" /> milyen HTTP-hitelesítési sémákat támogat. @@ -1024,7 +1031,6 @@ Bár magát a házirendet támogatja az összes fenti platform, előfordulhat, hogy maga az engedélyezett funkció kevesebb platformon áll rendelkezésre. Nem lehet újraengedélyezni az összes elavult Web Platform-funkciót. Kizárólag a lent felsoroltakat lehet engedélyezni korlátozott időtartamra, amely időtartam eltérő az egyes funkciók esetében. A karakterlánccímkék általános formátuma a következő: [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. A https://bit.ly/blinkintents webhelyen további információkat talál a Web Platform-funkciók módosításának hátterében álló szándékokról. </translation> <translation id="4442582539341804154">Lezárás engedélyezése, ha az eszköz tétlen vagy felfüggesztett</translation> -<translation id="4445684791305970001">Kikapcsolja a fejlesztői eszközöket és a JavaScript-konzolt. Ha engedélyezi ezt a beállítást, a fejlesztői eszközöket nem lehet elérni, és a webhelyek elemeit nem lehet ellenőrizni többé. Bármely billentyűparancs, menü vagy helyi menüpont le lesz tiltva, amely megnyitná a fejlesztői eszközöket vagy a JavaScript-konzolt. Ha letiltja ezt a beállítást, vagy konfigurálatlanul hagyja, akkor a felhasználó használhatja a felhasználói eszközöket és a JavaScript-konzolt.</translation> <translation id="4449545651113180484">Képernyő elforgatása 270 fokkal</translation> <translation id="4467952432486360968">Harmadik féltől származó cookie-k letiltása</translation> <translation id="4474167089968829729">Jelszavak mentésének aktiválása a jelszókezelőben</translation> @@ -1244,6 +1250,13 @@ Ha a házirend be van állítva, a meghatározott munkamenetet a rendszer automatikusan bejelentkezteti, ha felhasználói interakció nélkül telik el a megadott időtartam a bejelentkezési képernyőn. A nyilvános munkamenetet előre be kell állítani (tekintse meg a következőt: |DeviceLocalAccounts|). Ha nincs beállítva a házirend, nem lesz automatikus bejelentkezés.</translation> +<translation id="5529037166721644841">Azt az időtartamot adja meg ezredmásodpercben, amilyen rendszerességgel az eszközkezelő szolgáltatás lekérdezi az eszközszabályzattal kapcsolatos információkat. + + A házirend beállításával felülírja a 3 órás alapértelmezett értéket. Az érték 1800000 (30 perc) és 86400000 (1 nap) között lehet. A tartományon kívül eső értékeket a rendszer a közelebbi tartományhatárra állítja. + + Ha nem állítja be a házirendet, akkor a <ph name="PRODUCT_OS_NAME" /> az alapértelmezett 3 órás értéket fogja használni. + + Felhívjuk figyelmét, hogy ha az operációs rendszer támogatja a házirendekkel kapcsolatos értesítéseket, akkor a frissítési időszak 24 órás lesz (azaz a böngésző nem veszi figyelembe sem az alapértelmezett, sem a beállított értékeket), ugyanis a házirenddel kapcsolatos értesítéseknek automatikusan ki kell kényszeríteniük a frissítést, amikor egy házirend megváltozik, így szükségtelen gyakrabban frissíteni.</translation> <translation id="5535957389335373033">A böngésző által küldött ellenőrző hálózati csomagok gyakorisága (ezredmásodpercben). Ha nem állítja be az irányelvet, az alapértelmezett gyakoriság három perc. @@ -1773,6 +1786,9 @@ Az alkalmazás csak akkor veszi figyelembe ezt a házirendet, ha a „DefaultSearchProviderEnabled” házirend is engedélyezve van.</translation> <translation id="7302043767260300182">Képernyőzár késleltetése hálózati áramról való működés során</translation> +<translation id="7311458740754205918">Ha igazra van állítva, vagy ha nincs beállítva, az Új lap oldalon megjelenhetnek javaslatok a felhasználó böngészési előzményei, érdeklődési körei vagy tartózkodási helye alapján. + + Ha a beállítás hamis, akkor nem jelennek meg automatikusan generált tartalomjavaslatok az Új lap oldalon.</translation> <translation id="7323896582714668701">A(z) <ph name="PRODUCT_NAME" /> további parancssori paraméterei</translation> <translation id="7329842439428490522">Megadja azt a felhasználói bevitel nélküli időtartamot, amely után a rendszer kikapcsolja a képernyőt, ha akkumulátorról működik. @@ -1905,6 +1921,7 @@ <translation id="7763479091692861127"> Az operációs rendszer frissítéseihez használható kapcsolattípusok. Előfordulhat, hogy az operációs rendszer frissítései a méretük miatt nagyon megterhelik a kapcsolatot, és esetlegesen további költségeket eredményezhetnek. Ezért alapértelmezés szerint nincsenek engedélyezve a drágának tartott kapcsolattípusok, amelyek jelenleg a WiMax-, Bluetooth- és mobilkapcsolatokat jelentik. A felismert kapcsolattípus-azonosítók a következők: Ethernet, Wi-Fi, WiMax, Bluetooth és mobil.</translation> +<translation id="7763614521440615342">Tartalomjavaslatok az Új lap oldalon</translation> <translation id="7766336524667238790">Információk (például alkalmazásazonosító és -verzió) jelentése az aktív kioszkmunkamenetről.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb index 5529131..2f831c39 100644 --- a/components/policy/resources/policy_templates_id.xtb +++ b/components/policy/resources/policy_templates_id.xtb
@@ -233,6 +233,13 @@ Jika kebijakan ini disetel ke true, <ph name="PRODUCT_OS_NAME" /> akan berupaya mengunduh payload pembaruan otomatis via HTTP. Jika kebijakan ini disetel ke false atau tidak disetel, HTTPS akan digunakan untuk mengunduh payload pembaruan otomatis.</translation> <translation id="2006530844219044261">Pengelolaan daya</translation> <translation id="201557587962247231">Frekuensi unggahan laporan status perangkat</translation> +<translation id="2018836497795982119">Menjelaskan jangka waktu dalam milidetik terkait layanan pengelolaan perangkat yang ditanyakan untuk informasi kebijakan pengguna. + + Menyetel kebijakan ini akan mengganti nilai default 3 jam. Nilai yang valid untuk kebijakan ini adalah rentang mulai 1800000 (30 menit) hingga 86400000 (1 hari). Nilai di luar rentang ini akan dimasukkan ke batas masing-masing. Jika platform mendukung pemberitahuan kebijakan, jeda penyegaran akan disetel menjadi 24 jam karena pemberitahuan kebijakan diperkirakan akan memaksa penyegaran otomatis setiap kali kebijakan berubah. + + Membiarkan kebijakan ini tidak disetel akan membuat <ph name="PRODUCT_NAME" /> menggunakan nilai default 3 jam. + + Perlu diperhatikan jika platform mendukung pemberitahuan kebijakan, jeda penyegaran akan disetel menjadi 24 jam (dengan mengabaikan semua setelan default dan nilai kebijakan ini) karena pemberitahuan kebijakan diperkirakan akan memaksa penyegaran otomatis setiap kali kebijakan berubah, menghasilkan lebih banyak penyegaran yang tidak diperlukan.</translation> <translation id="2024476116966025075">Mengonfigurasi nama domain yang diperlukan untuk klien akses jarak jauh</translation> <translation id="2030905906517501646">Kata kunci penyedia penelusuran default</translation> <translation id="206623763829450685">Menentukan skema autentikasi HTTP yang didukung oleh <ph name="PRODUCT_NAME" />. @@ -1024,7 +1031,6 @@ Meski kebijakan ini sendiri didukung pada platform di atas, fitur yang diaktifkan mungkin tersedia pada lebih sedikit platform. Tidak semua fitur Platform Web yang tak digunakan lagi dapat diaktifkan kembali. Hanya yang dicantumkan secara eksplisit di bawah, yang dapat diaktifkan dalam jangka waktu terbatas, yang berbeda-beda per fitur. Format umum untuk tag string adalah [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Sebagai rujukan, Anda dapat menemukan maksud di balik perubahan fitur Platform Web di https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Aktifkan kunci bila perangkat menganggur atau ditangguhkan</translation> -<translation id="4445684791305970001">Menonaktifkan Alat Pengembang dan konsol JavaScript. Jika Anda mengaktifkan setelan ini, alat Pengembang tidak dapat diakses dan elemen situs web tidak dapat diperiksa lagi. Setiap pintasan keyboard dan menu atau entri menu konteks untuk membuka Alat Pengembang atau Konsol JavaScript akan dinonaktifkan. Dengan menyetel opsi menjadi nonaktif atau membiarkannya tanpa disetel akan memungkinkan penggunaan konsol JavaScript dan Alat Pengembang.</translation> <translation id="4449545651113180484">Putar layar searah jarum jam sebesar 270 derajat</translation> <translation id="4467952432486360968">Cekal cookie pihak ketiga</translation> <translation id="4474167089968829729">Aktifkan penyimpanan sandi di pengelola sandi</translation> @@ -1244,6 +1250,13 @@ Jika kebijakan ini disetel, sesi yang ditentukan akan secara otomatis masuk setelah jangka waktu tersebut berlalu pada layar masuk tanpa interaksi pengguna. Sesi publik harus sudah dikonfigurasi (lihat |DeviceLocalAccounts|). Jika kebijakan ini tidak disetel, tidak akan ada masuk secara otomatis.</translation> +<translation id="5529037166721644841">Menjelaskan jangka waktu dalam milidetik terkait layanan pengelolaan perangkat yang ditanyakan untuk informasi kebijakan pengguna. + + Menyetel kebijakan ini akan mengganti nilai default 3 jam. Nilai yang valid untuk kebijakan ini adalah rentang mulai 1800000 (30 menit) hingga 86400000 (1 hari). Nilai di luar rentang ini akan dimasukkan ke batas masing-masing. + + Membiarkan kebijakan ini tidak disetel akan membuat <ph name="PRODUCT_OS_NAME" /> menggunakan nilai default 3 jam. + + Perlu diperhatikan jika platform mendukung pemberitahuan kebijakan, jeda penyegaran akan disetel menjadi 24 jam (dengan mengabaikan semua setelan default dan nilai kebijakan ini) karena pemberitahuan kebijakan diperkirakan akan memaksa penyegaran otomatis setiap kali kebijakan berubah, menghasilkan lebih banyak penyegaran yang tidak diperlukan.</translation> <translation id="5535957389335373033">Frekuensi paket jaringan pemantauan dikirim, dalam milidetik. Jika kebijakan ini tidak disetel, frekuensi defaultnya adalah 3 menit. @@ -1773,6 +1786,9 @@ Kebijakan ini hanya diterapkan jika kebijakan 'DefaultSearchProviderEnabled' diaktifkan.</translation> <translation id="7302043767260300182">Penundaan kunci layar saat menggunakan daya AC</translation> +<translation id="7311458740754205918">Jika kebijakan ini disetel ke true atau tidak disetel, laman Tab Baru dapat menampilkan saran konten berdasarkan riwayat penjelajahan, minat, dan lokasi pengguna. + + Jika kebijakan disetel ke false, saran konten yang dibuat secara otomatis tidak akan ditampilkan di laman Tab Baru.</translation> <translation id="7323896582714668701">Parameter baris perintah tambahan untuk <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Menentukan panjang waktu tanpa masukan pengguna sebelum layar dimatikan ketika menggunakan daya baterai. @@ -1905,6 +1921,7 @@ <translation id="7763479091692861127"> Jenis sambungan yang diizinkan penggunaannya untuk pembaruan OS. Pembaruan OS berpotensi memberikan beban berat pada koneksi Internet karena ukurannya dan mungkin mengakibatkan biaya tambahan. Oleh karena itu, koneksi secara default tidak aktif untuk jenis koneksi yang dianggap mahal, yang meliputi WiMax, Bluetooth, dan Seluler untuk saat ini. Pengenal jenis koneksi yang diketahui saat ini adalah "ethernet", "wifi", "wimax", "bluetooth", dan "cellular".</translation> +<translation id="7763614521440615342">Tampilkan saran konten di laman Tab Baru</translation> <translation id="7766336524667238790">Laporkan informasi tentang sesi kios aktif, misalnya ID dan versi aplikasi @@ -1922,7 +1939,7 @@ <ph name="PROXY_HELP_URL" />.</translation> <translation id="7788511847830146438">Per Profil</translation> <translation id="7796141075993499320">Memungkinkan Anda menyetel daftar pola url yang menentukan situs yang diizinkan untuk menjalankan plugin. Jika kebijakan ini tidak disetel, nilai default global akan digunakan untuk semua situs, baik dari kebijakan 'DefaultPluginsSetting', jika disetel, atau konfigurasi pribadi pengguna.</translation> -<translation id="7801886189430766248">Jika kebijakan ini disetel ke true, data aplikasi Android akan diunggah ke server Cadangan Android dan dipulihkan saat pemasangan ulang aplikasi untuk aplikasi yang kompatibel. +<translation id="7801886189430766248">Jika kebijakan ini disetel ke true, data aplikasi Android akan diunggah ke server Pencadangan Android dan dipulihkan saat pemasangan ulang aplikasi untuk aplikasi yang kompatibel. Jika kebijakan ini disetel ke false, Android Backup Service akan dinonaktifkan.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb index e722363..c3677a9 100644 --- a/components/policy/resources/policy_templates_it.xtb +++ b/components/policy/resources/policy_templates_it.xtb
@@ -218,6 +218,13 @@ Se questa norma viene impostata su true, <ph name="PRODUCT_OS_NAME" /> tenterà di scaricare payload di aggiornamento automatico tramite HTTP. Se la norma viene impostata su false o non viene impostata, per il download di payload di aggiornamento automatico verrà utilizzato HTTPS.</translation> <translation id="2006530844219044261">Gestione dell'alimentazione</translation> <translation id="201557587962247231">Frequenza dei caricamenti del rapporto sullo stato del dispositivo</translation> +<translation id="2018836497795982119">Consente di specificare in millisecondi il periodo di tempo per cui vengono richieste informazioni sulle norme relative agli utenti al servizio di gestione del dispositivo. + + Se questa norma viene impostata, il valore predefinito di tre ore viene ignorato. L'intervallo dei valori validi per questa norma è compreso tra 1800000 (30 minuti) e 86400000 (un giorno). I valori non compresi in questo intervallo verranno bloccati al relativo limite. Se la piattaforma supporta le notifiche relative alle norme, il ritardo dell'aggiornamento verrà impostato su 24 ore perché è previsto che le notifiche relative alle norme forzino l'aggiornamento automatico quando cambiano le norme. + + Se questa norma non viene impostata, <ph name="PRODUCT_NAME" /> utilizzerà il valore predefinito di tre ore. + + Se la piattaforma supporta le notifiche relative alle norme, il ritardo dell'aggiornamento verrà impostato su 24 ore (vengono ignorati tutti i valori predefiniti e il valore di questa norma) perché è previsto che le notifiche relative alle norme forzino l'aggiornamento automatico quando cambiano le norme, rendendo superflui aggiornamenti più frequenti.</translation> <translation id="2024476116966025075">Configura il nome di dominio richiesto per i client di accesso remoto</translation> <translation id="2030905906517501646">Parola chiave del provider di ricerca predefinito</translation> <translation id="206623763829450685">Consente di specificare gli schemi di autenticazione HTTP supportati da <ph name="PRODUCT_NAME" />. @@ -991,7 +998,6 @@ La norma stessa è supportata sulle piattaforme precedenti, ma la funzione attivata dalla norma potrebbe essere disponibile su meno piattaforme. Non è possibile riattivare tutte le funzioni ritirate della piattaforma web, ma soltanto quelle elencate esplicitamente di seguito e soltanto per un periodo di tempo limitato, che è diverso per ogni funzione. Il formato generico del tag string sarà [NomeFunzioneRitirata]_EffectiveUntil[aaaammgg]. È possibile conoscere lo scopo delle modifiche alle funzioni della piattaforma web all'indirizzo https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Attiva il blocco quando lo stato del dispositivo diventa inattivo o sospeso</translation> -<translation id="4445684791305970001">Consente di disattivare gli Strumenti per sviluppatori e la Console JavaScript. Se attivi questa impostazione, gli Strumenti per sviluppatori non saranno accessibili e non sarà più possibile eseguire un'ispezione degli elementi del sito web. Le scorciatoie da tastiera e le voci dei menu contestuali e di altri menu che consentono di aprire gli Strumenti per sviluppatori o la Console JavaScript verranno disattivate. Se disattivi questa opzione o non la imposti sarà possibile utilizzare gli Strumenti per sviluppatori e la Console JavaScript.</translation> <translation id="4449545651113180484">Ruota lo schermo in senso orario di 270°</translation> <translation id="4467952432486360968">Blocca cookie di terze parti</translation> <translation id="4474167089968829729">Attiva il salvataggio delle password in Gestione password</translation> @@ -1209,6 +1215,13 @@ Se questa norma è impostata, verrà eseguito l'accesso automatico alla sessione specificata dopo che è trascorso un periodo di tempo senza interazioni dell'utente nella schermata di accesso. La sessione pubblica deve essere già configurata (vedi |DeviceLocalAccounts|). Se questa norma non è impostata, non avverrà l'accesso automatico.</translation> +<translation id="5529037166721644841">Consente di specificare in millisecondi il periodo di tempo per cui vengono richieste informazioni sulle norme relative agli utenti al servizio di gestione del dispositivo. + + Se questa norma viene impostata, il valore predefinito di tre ore viene ignorato. L'intervallo dei valori validi per questa norma è compreso tra 1800000 (30 minuti) e 86400000 (un giorno). I valori non compresi in questo intervallo verranno bloccati al relativo limite. + + Se questa norma non viene impostata, <ph name="PRODUCT_OS_NAME" /> utilizzerà il valore predefinito di tre ore. + + Se la piattaforma supporta le notifiche relative alle norme, il ritardo dell'aggiornamento verrà impostato su 24 ore (vengono ignorati tutti i valori predefiniti e il valore di questa norma) perché è previsto che le notifiche relative alle norme forzino l'aggiornamento automatico quando cambiano le norme, rendendo superflui aggiornamenti più frequenti.</translation> <translation id="5535957389335373033">Consente di stabilire la frequenza di invio, in millisecondi, dei pacchetti di rete di monitoraggio. Se la norma non viene impostata, la frequenza predefinita è pari a tre minuti. La frequenza minima è pari a 30 secondi, la massima a 24 ore. I valori che non rientrano in questo intervallo verranno fatti rientrare.</translation> @@ -1725,6 +1738,9 @@ Questa norma viene rispettata solo se è attiva la norma "DefaultSearchProviderEnabled".</translation> <translation id="7302043767260300182">Ritardo blocco schermo in caso di utilizzo di CA</translation> +<translation id="7311458740754205918">Se questa norma viene impostata su true o non viene impostata, nella pagina Nuova scheda potrebbero essere mostrati suggerimenti di contenuti basati sulla cronologia di navigazione, sugli interessi o sulla posizione dell'utente. + + Se viene impostata su false, i suggerimenti di contenuti generati automaticamente non vengono mostrati nella pagina Nuova scheda.</translation> <translation id="7323896582714668701">Parametri aggiuntivi della riga di comando per <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Consente di specificare il periodo di tempo senza input dell'utente trascorso il quale lo schermo viene disattivato quando viene utilizzata la batteria. @@ -1856,6 +1872,7 @@ <translation id="7763479091692861127"> I tipi di connessioni utilizzabili per aggiornamenti del sistema operativo. Gli aggiornamenti del sistema operativo possono mettere a dura prova la connessione a causa delle loro dimensioni e potrebbero generare costi aggiuntivi. Pertanto, per impostazione predefinita non sono abilitati per i tipi di connessione che sono considerati costosi, fra cui WiMax, Bluetooth e cellulare, al momento. Gli identificatori dei tipi di connessione riconosciuti sono "ethernet", "wifi", "wimax", "bluetooth" e "cellulare".</translation> +<translation id="7763614521440615342">Mostra suggerimenti di contenuti nella pagina Nuova scheda</translation> <translation id="7766336524667238790">Consente di segnalare informazioni sulla sessione kiosk attiva, ad esempio l'ID e la versione dell'applicazione. Se la norma viene impostata su false, le informazioni relative alla sessione non vengono segnalate. Se viene impostata su true o non viene impostata, tali informazioni vengono segnalate.</translation>
diff --git a/components/policy/resources/policy_templates_iw.xtb b/components/policy/resources/policy_templates_iw.xtb index be5650f..946f099 100644 --- a/components/policy/resources/policy_templates_iw.xtb +++ b/components/policy/resources/policy_templates_iw.xtb
@@ -227,6 +227,13 @@ אם אפשרות זו מוגדרת כ-true, <ph name="PRODUCT_OS_NAME" /> ינסה להוריד תוכן מנות של עדכונים אוטומטיים דרך HTTP. אם המדיניות מוגדרת כ-false, או אינה מוגדרת כלל, ייעשה שימוש ב-HTTPS להורדת תוכן מנות של עדכונים אוטומטיים.</translation> <translation id="2006530844219044261">ניהול צריכת החשמל</translation> <translation id="201557587962247231">תדירות ההעלאות של דוח מצב המכשיר</translation> +<translation id="2018836497795982119">מדיניות זו מציינת את פרק הזמן במילי-שניות עד שנשלחת לשירות ניהול המכשיר בקשה לקבלת מידע על מדיניות המשתמש. + + הגדרה של מדיניות זו תחול במקום הגדרת ברירת המחדל של 3 שעות. ערכים חוקיים למדיניות זו נמצאים בטווח שבין 1800000 (30 דקות) ל-86400000 (יום אחד). ערכים שאינם נמצאים בטווח הזה יוחלפו בערכים המתאימים הנמצאים בגבולות הטווח. אם הפלטפורמה תומכת בהודעות בנוגע למדיניות, פרק הזמן עד לרענון יוגדר ל-24 שעות, מכיוון שהודעות בנוגע למדיניות צפויות לגרום לרענון אוטומטי בכל פעם שהמדיניות משתנה. + + אם מדיניות זו לא מוגדרת, <ph name="PRODUCT_NAME" /> ישתמש בברירת המחדל של 3 שעות. + + שים לב שאם המערכת תומכת בהודעות בנוגע למדיניות, פרק הזמן עד לרענון יוגדר ל-24 שעות (תוך התעלמות מכל הגדרות ברירת המחדל והערכים של מדיניות זו) מכיוון שהודעות בנוגע למדיניות צפויות לגרום לרענון אוטומטי בכל פעם שהמדיניות משתנה, ובכך הן הופכות רענון בתדירות גבוהה יותר ללא הכרחי.</translation> <translation id="2024476116966025075">הגדר את שם הדומיין הנדרש ללקוחות של גישה מרחוק</translation> <translation id="2030905906517501646">מילת מפתח של ספק חיפוש המוגדר כברירת מחדל</translation> <translation id="206623763829450685">מציינת אילו סכמות אימות HTTP נתמכות ב-<ph name="PRODUCT_NAME" />. @@ -1018,7 +1025,6 @@ אף שהמדיניות עצמה נתמכת בפלטפורמות שהוזכרו לעיל, ייתכן שהתכונה שהיא מפעילה תהיה זמינה במספר קטן יותר של פלטפורמות. לא את כל תכונות פלטפורמת האינטרנט שהוצאו משימוש אפשר להפעיל מחדש. ניתן להפעיל רק את אלו המוזכרות במפורש ברשימה שבהמשך, וזאת לפרק זמן מוגבל, המשתנה בהתאם לתכונה. הפורמט הכללי של תג המחרוזת יהיה [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. כסימוכין, ניתן לראות את הכוונה שמאחורי השינויים בתכונת פלטפורמת האינטרנט בכתובת https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">אפשר נעילה כאשר המכשיר אינו פעיל או מושעה</translation> -<translation id="4445684791305970001">מבטל את כלי המפתח ואת לוח JavaScript. אם תהפוך הגדרה זו לפעילה, לא ניתן יהיה לגשת אל כלי המפתח ולא ניתן יהיה יותר לבדוק רכיבי אתר אינטרנט. כל מקש קיצור וכל רשומה של תפריט או של תפריט הקשר שמשמשים לפתיחת כלי המפתח או לוח JavaScript יושבתו. אם תשבית הגדרת אפשרות זו או לא תגדיר אותה, תאפשר למשתמש להשתמש בכלי המפתח ובלוח JavaScript.</translation> <translation id="4449545651113180484">סובב את המסך ב-270 מעלות בכיוון השעון</translation> <translation id="4467952432486360968">חסום קובצי Cookie של צד שלישי</translation> <translation id="4474167089968829729">אפשר שמירה של סיסמאות במנהל הסיסמאות</translation> @@ -1163,7 +1169,7 @@ מעבר לקריאה מוקדמת של DNS, המדיניות כוללת גם שליטה בחיבור מוקדם של TCP ו-SSL ובעיבוד מוקדם של דפי אינטרנט. שם המדיניות מתייחס לקריאת מוקדמת של DNS מסיבות היסטוריות. - אם תפעיל או תשבית את ההגדרה הזו, משתמשים לא יוכלו לשנות או לבטל את ההגדרה ב-<ph name="PRODUCT_NAME" />. + אם תפעיל או תשבית את ההגדרה הזו, המשתמשים לא יוכלו לשנות או לבטל את ההגדרה ב-<ph name="PRODUCT_NAME" />. אם המדיניות תישאר במצב לא מוגדר, ההגדרה הזו תופעל אך המשתמשים יוכלו לשנות אותה.</translation> <translation id="5208240613060747912">מאפשר לך להגדיר רשימה של דפוסי כתובות אתר המפרטת אתרים עם אישור להציג התראות. ם מדיניות זו לא הוגדרה, המערכת תשתמש בערך ברירת המחדל הכללי עבור כל האתרים לפי המדיניות 'DefaultNotificationsSetting' במקרה שהוגדרה, או לפי התצורה האישית שקבע המשתמש במקרה שלא הוגדרה.</translation> @@ -1232,6 +1238,13 @@ אם המדיניות הזו מוגדרת, הפעילות המצוינת באתר תחובר באופן אוטומטי לאחר שיחלוף משך זמן מסוים ללא פעולת משתמש במסך ההתחברות. על הפעילות הציבורית באתר כבר להיות מוגדרת (ראה |DeviceLocalAccounts|). אם המדיניות הזו לא מוגדרת, לא תבוצע התחברות אוטומטית.</translation> +<translation id="5529037166721644841">מדיניות זו מציינת את פרק הזמן במילי-שניות עד שנשלחת לשירות ניהול המכשיר בקשה לקבלת מידע על מדיניות המשתמש. + + הגדרה של מדיניות זו תחול במקום הגדרת ברירת המחדל של 3 שעות. ערכים חוקיים למדיניות זו נמצאים בטווח שבין 1800000 (30 דקות) ל-86400000 (יום אחד). ערכים שאינם נמצאים בטווח הזה יוחלפו בערכים המתאימים הנמצאים בגבולות הטווח. + + אם מדיניות זו לא מוגדרת, <ph name="PRODUCT_OS_NAME" /> ישתמש בברירת המחדל של 3 שעות. + + שים לב שאם המערכת תומכת בהודעות בנוגע למדיניות, פרק הזמן עד לרענון יוגדר ל-24 שעות (תוך התעלמות מכל הגדרות ברירת המחדל והערכים של מדיניות זו) מכיוון שהודעות בנוגע למדיניות צפויות לגרום לרענון אוטומטי בכל פעם שהמדיניות משתנה, ובכך הן הופכות רענון בתדירות גבוהה יותר ללא הכרחי.</translation> <translation id="5535957389335373033">תדירות השליחה של מנות רשת לניטור, באלפיות השנייה. אם מדיניות זו אינה מוגדרת, תדירות ברירת המחדל היא 3 דקות. התדירות המינימלית היא 30 @@ -1747,6 +1760,9 @@ מדיניות זו תכובד רק אם המדיניות 'DefaultSearchProviderEnabled' מופעלת</translation> <translation id="7302043767260300182">השהיה של נעילת מסך כשנעשה שימוש בשקע חשמל</translation> +<translation id="7311458740754205918">אם מדיניות זו מוגדרת כ-true או לא מוגדרת, הדף 'כרטיסייה חדשה' עשוי להציג הצעות תוכן בהתבסס על היסטוריית הגלישה, תחומי העניין או המיקום של המשתמש. + + אם מדיניות זו מוגדרת כ-false, הצעות תוכן שנוצרות באופן אוטומטי לא יוצגו בדף 'כרטיסייה חדשה'.</translation> <translation id="7323896582714668701">פרמטרים נוספים של שורת פקודה עבור <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">מציינת את משך הזמן ללא קלט משתמש שלאחריו המסך מכובה בזמן שימוש בסוללה. @@ -1879,6 +1895,7 @@ <translation id="7763479091692861127"> סוגי חיבורים המותרים לשימוש עבור עדכוני מערכת ההפעלה. עדכוני מערכת ההפעלה עלולים להכביד על החיבור בשל גודלם וייתכן שהם יהיו כרוכים בתשלום נוסף. לכן, כברירת מחדל, הם אינם פעילים עבור סוגי החיבורים הנחשבים יקרים, הכוללים Bluetooth, WiMax וסלולרי, בשלב זה. מזהי סוגי החיבור המוכרים הם "Ethernet", "WiFi", "WiMAX", "Bluetooth" ו"סלולרי".</translation> +<translation id="7763614521440615342">הצג הצעות תוכן בדף 'כרטיסייה חדשה'</translation> <translation id="7766336524667238790">דווח פרטים על הפעלת הקיוסק הפעילה, כדוגמת המזהה והגרסה של היישום.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb index 010be86..e73efc000a 100644 --- a/components/policy/resources/policy_templates_ja.xtb +++ b/components/policy/resources/policy_templates_ja.xtb
@@ -234,6 +234,13 @@ このポリシーを true に設定すると、<ph name="PRODUCT_OS_NAME" /> は HTTP 経由で自動更新ペイロードをダウンロードしようとします。このポリシーを false に設定するか、設定しない場合は、自動更新ペイロードのダウンロードに HTTPS が使用されます。</translation> <translation id="2006530844219044261">電源管理</translation> <translation id="201557587962247231">デバイス ステータス レポートのアップロード頻度</translation> +<translation id="2018836497795982119">デバイス管理サービスにユーザー ポリシー情報を照会する間隔をミリ秒単位で指定します。 + + このポリシーを設定すると、デフォルト値の 3 時間よりも優先されます。このポリシーの有効な値は 1,800,000(30 分)から86,400,000(1 日)の範囲の値です。この範囲に収まらない値は上限値と下限値のどちらか近い方に設定されます。プラットフォームがポリシーの通知に対応している場合は、ポリシーが変更されるたびにポリシーの通知により更新は自動的に適用されることになるため、更新の遅延は 24 時間に設定されます。 + + このポリシーを設定しない場合、<ph name="PRODUCT_NAME" /> はデフォルト値の 3 時間を使用します。 + + プラットフォームがポリシーの通知に対応している場合は、ポリシーが変更されるたびにポリシーの通知により更新は自動的に適用されることになるため、更新の遅延は 24 時間に設定され、頻繁な更新は不要になります(すべてのデフォルト値とこのポリシーの値は無視されます)。</translation> <translation id="2024476116966025075">リモート アクセスのクライアントに要求する必須のドメイン名を設定する</translation> <translation id="2030905906517501646">デフォルトの検索プロバイダのキーワード</translation> <translation id="206623763829450685"><ph name="PRODUCT_NAME" /> でサポートされる HTTP 認証スキームを指定します。 @@ -1020,7 +1027,6 @@ ポリシー自体は上記のプラットフォームでサポートされますが、このポリシーの対象となる機能を利用できるプラットフォームはそれより少ないことがあります。サポートが終了したすべてのウェブ プラットフォーム機能を再び有効にできるとは限りません。一時的に有効になるのは、下記のリストに指定されている機能のみで、有効になる期間は機能によって異なります。文字列タグの一般的な形式は [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] です。詳しくは、https://bit.ly/blinkintents でウェブ プラットフォーム機能を変更する意図をご確認ください。 </translation> <translation id="4442582539341804154">デバイスがアイドルまたは停止の状態になったときにロックを有効にする</translation> -<translation id="4445684791305970001">デベロッパー ツールと JavaScript コンソールを無効にします。この設定を有効にすると、デベロッパー ツールにアクセスできなくなり、ウェブサイト要素も検査できなくなります。デベロッパー ツールや JavaScript コンソールを開くためのキーボード ショートカット、メニューのエントリ、コンテキスト メニューのエントリは無効になります。このオプションが無効か未設定の場合、ユーザーはデベロッパー ツールと JavaScript コンソールを使用できるようになります。</translation> <translation id="4449545651113180484">画面を時計回りに 270 度回転</translation> <translation id="4467952432486360968">サードパーティの Cookie をブロックする</translation> <translation id="4474167089968829729">パスワード マネージャへのパスワード保存を有効にする</translation> @@ -1240,6 +1246,13 @@ このポリシーが設定されている場合、ログイン画面で一定時間ユーザー操作が行われないと、指定されたセッションに自動的にログインします。公開セッションは事前に設定しておく必要があります(|DeviceLocalAccounts| をご覧ください)。 このポリシーが設定されていない場合、自動ログインは行われません。</translation> +<translation id="5529037166721644841">デバイス管理サービスにデバイス ポリシー情報を照会する間隔をミリ秒単位で指定します。 + + このポリシーを設定すると、デフォルト値の 3 時間よりも優先されます。このポリシーの有効な値は 1,800,000(30 分)から 86,400,000(1 日)の範囲の値です。この範囲に収まらない値は上限値と下限値のどちらか近い方に設定されます。 + + このポリシーを設定しない場合、<ph name="PRODUCT_OS_NAME" /> はデフォルト値の 3 時間を使用します。 + + プラットフォームがポリシーの通知に対応している場合は、ポリシーが変更されるたびにポリシー通知により更新は自動的に適用されることになるため、更新の遅延は 24 時間に設定され、頻繁な更新は不要になります(すべてのデフォルト値とこのポリシーの値は無視されます)。</translation> <translation id="5535957389335373033">監視ネットワーク パケットの送信間隔(ミリ秒単位)です。 このポリシーが未設定の場合、デフォルトの間隔は 3 分です。最小間隔は 30 秒、 @@ -1766,6 +1779,9 @@ このポリシーは「DefaultSearchProviderEnabled」ポリシーが有効な場合のみ適用されます。</translation> <translation id="7302043767260300182">画面がロックされるまでの時間(AC 電源での実行時)</translation> +<translation id="7311458740754205918">このオプションが true に設定されているか、未設定の場合、[新しいタブ] ページには、ユーザーの閲覧履歴、興味・関心、場所に応じておすすめのコンテンツが表示されます。 + + このオプションが false に設定されている場合、自動生成のおすすめのコンテンツは [新しいタブ] ページに表示されません。</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> の追加コマンド ライン パラメータ</translation> <translation id="7329842439428490522">バッテリー電源での実行時に、ユーザー入力が行われなくなってから画面がオフになるまでの時間を指定します。 @@ -1898,6 +1914,7 @@ <translation id="7763479091692861127"> OS アップデートに使用できる接続のタイプです。OS アップデートは、サイズが大きいために接続に大きな負担がかかり、余分な費用が発生する可能性があります。そのため、デフォルトでは現在、WiMax、Bluetooth、携帯通信など費用が高くなる接続タイプは利用できません。 認識される接続タイプ ID は「ethernet」、「wifi」、「wimax」、「bluetooth」、「cellular」です。</translation> +<translation id="7763614521440615342">[新しいタブ] ページにおすすめのコンテンツを表示します</translation> <translation id="7766336524667238790">アクティブなキオスク セッションに関する情報(アプリケーション ID、バージョンなど)を報告します。 このポリシーを false に設定した場合、セッションに関する情報は報告されません。true に設定するか未設定のままにした場合は、セッションに関する情報が報告されます。</translation>
diff --git a/components/policy/resources/policy_templates_kn.xtb b/components/policy/resources/policy_templates_kn.xtb index 438d7e1..e669937 100644 --- a/components/policy/resources/policy_templates_kn.xtb +++ b/components/policy/resources/policy_templates_kn.xtb
@@ -228,6 +228,13 @@ ಈ ನೀತಿಯನ್ನು ಸರಿ ಎಂದು ಹೊಂದಿಸಿದ್ದರೆ, <ph name="PRODUCT_OS_NAME" /> HTTP ಮೂಲಕ ಸ್ವಯಂ-ಅಪ್ಡೇಟ್ ಉಪಕರಣಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ನೀತಿಯನ್ನು ತಪ್ಪು ಎಂದು ಹೊಂದಿಸಿದ್ದರೆ ಅಥವಾ ಹೊಂದಿಸಿರದಿದ್ದರೆ, ಸ್ವಯಂ-ಅಪ್ಡೇಟ್ ಉಪಕರಣಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು HTTPS ಅನ್ನು ಬಳಸಲಾಗುವುದು.</translation> <translation id="2006530844219044261">ವಿದ್ಯುತ್ ವ್ಯವಸ್ಥಾಪನೆ</translation> <translation id="201557587962247231">ಸಾಧನ ಸ್ಥಿತಿ ವರದಿ ಅಪ್ಲೋಡ್ಗಳ ಆವರ್ತನೆ</translation> +<translation id="2018836497795982119">ಬಳಕೆದಾರ ನೀತಿಯ ಮಾಹಿತಿಗಾಗಿ ಸಾಧನ ನಿರ್ವಹಣೆ ಸೇವೆಯನ್ನು ಪ್ರಶ್ನಿಸಲಾದ ಅವಧಿಯನ್ನು ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗುತ್ತದೆ. + + ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸುವುದರಿಂದಾಗಿ 3 ಗಂಟೆಗಳ ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು ಅತಿಕ್ರಮಿಸುತ್ತದೆ. ಈ ನೀತಿಗಾಗಿ ಮಾನ್ಯವಾದ ಮೌಲ್ಯಗಳು 1800000 (30 ನಿಮಿಷಗಳು) ರಿಂದ 86400000 (1 ದಿನ) ವ್ಯಾಪ್ತಿಯಲ್ಲಿವೆ. ವ್ಯಾಪ್ತಿಯಲ್ಲಿಲ್ಲದ ಯಾವುದೇ ಮೌಲ್ಯಗಳನ್ನು ಅನುಕ್ರಮವಾದ ಎಲ್ಲೆಗೆ ಮಿತಿಗೊಳಿಸಲಾಗುತ್ತದೆ. ಒಂದು ವೇಳೆ ನೀತಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಬೆಂಬಲಿಸಿದರೆ, ರಿಫ್ರೆಶ್ ಮಾಡುವಿಕೆಯ ವಿಳಂಬವನ್ನು 24 ಗಂಟೆಗಳಿಗೆ ಹೊಂದಿಸಲಾಗುತ್ತದೆ ಏಕೆಂದರೆ ನೀತಿಯು ಬದಲಾದಾಗಲೆಲ್ಲಾ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಿಫ್ರೆಶ್ ಆಗುವಂತೆ ನೀತಿ ಅಧಿಸೂಚನೆಗಳು ಬಲವಂತಪಡಿಸುತ್ತವೆ ಎಂಬುದಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ. + + ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೇ ಹಾಗೆಯೇ ಬಿಟ್ಟರೆ ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು 3 ಗಂಟೆಗಳವರೆಗೆ <ph name="PRODUCT_NAME" /> ಬಳಸಬಹುದು. + + ನೀತಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಒಂದು ವೇಳೆ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಬೆಂಬಲಿಸಿದರೆ, ರಿಫ್ರೆಶ್ ಮಾಡುವಿಕೆಯ ವಿಳಂಬವನ್ನು 24 ಗಂಟೆಗಳಿಗೆ ಹೊಂದಿಸಲಾಗುತ್ತದೆ (ಎಲ್ಲಾ ಡಿಫಾಲ್ಟ್ಗಳು ಮತ್ತು ಈ ನೀತಿಯ ಮೌಲ್ಯವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ) ಏಕೆಂದರೆ ನೀತಿಯು ಬದಲಾದಾಗಲೆಲ್ಲಾ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಿಫ್ರೆಶ್ ಆಗುವಂತೆ ನೀತಿ ಅಧಿಸೂಚನೆಗಳು ಬಲವಂತಪಡಿಸುತ್ತವೆ ಎಂಬುದಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ, ಈ ಮೂಲಕ ಅನಗತ್ಯವಾಗಿ ಹೆಚ್ಚು ಆಗಾಗ್ಗೆ ರಿಫ್ರೆಶ್ ಆಗುವುದಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ.</translation> <translation id="2024476116966025075">ರಿಮೋಟ್ ಪ್ರವೇಶ ಕ್ಲೈಂಟ್ಗಳಿಗೆ ಅಗತ್ಯವಿರುವ ಡೊಮೇನ್ ಹೆಸರನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ</translation> <translation id="2030905906517501646">ಡಿಫಾಲ್ಟ್ ಹುಡುಕಾಟ ನೀಡುಗರ ಕೀವರ್ಡ್</translation> <translation id="206623763829450685">ಯಾವ HTTP ದೃಢೀಕರಣ ಸ್ಕೀಮ್ಗಳನ್ನು <ph name="PRODUCT_NAME" /> ಬೆಂಬಲಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. @@ -1023,7 +1030,6 @@ ಮೇಲಿನ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಲ್ಲಿ ಸ್ವತಃ ನೀತಿಯೇ ಬೆಂಬಲಿಸಲ್ಪಟ್ಟರೂ, ಅದು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತಿರುವ ವೈಶಿಷ್ಟ್ಯಗಳು ಕೆಲವೇ ಪ್ಲ್ಯಾಟ್ಫಾರ್ಮ್ಗಳಲ್ಲಿ ಲಭ್ಯವಿರಬಹುದು. ಎಲ್ಲಾ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟ ವೆಬ್ ಪ್ಲ್ಯಾಟ್ಫಾರ್ಮ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮರು-ಸಕ್ರಿಯಗೊಳಿಸಲಾಗದೇ ಇರಬಹುದು. ಪ್ರತಿ ವೈಶಿಷ್ಟ್ಯಕ್ಕೆ ವಿಭಿನ್ನವಾಗಿರುವ ಕೆಳಗೆ ಸುಸ್ಪಷ್ಟವಾಗಿ ಪಟ್ಟಿ ಮಾಡಲ್ಪಟ್ಟಿರುವವುಗಳನ್ನು ಮಾತ್ರ ಸೀಮಿತ ಅವಧಿಯವರೆಗೆ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಬಹುದು. ಸ್ಟ್ರಿಂಗ್ ಟ್ಯಾಗ್ನ ಸಾಮಾನ್ಯ ಸ್ವರೂಪವು [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] ಆಗಿರುತ್ತದೆ. ಉಲ್ಲೇಖವಾಗಿ, ವೆಬ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ವೈಶಿಷ್ಟ್ಯ ಬದಲಾವಣೆಗಳ ಉದ್ದೇಶವನ್ನು https://bit.ly/blinkintents ನಲ್ಲಿ ನೀವು ಕಂಡುಕೊಳ್ಳಬಹುದು. </translation> <translation id="4442582539341804154">ಸಾಧನವು ತಟಸ್ಥ ಅಥವಾ ರದ್ದುಗೊಳಿಸಲಾಗಿದ್ದರೆ ಲಾಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> -<translation id="4445684791305970001">ಡೆವಲಪರ್ ಸಾಧನಗಳು ಮತ್ತು JavaScript ಕನ್ಸೋಲ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ನೀವು ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಡೆವಲಪರ್ ಸಾಧನಗಳನ್ನು ಪ್ರವೇಶಿಸಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ವೆಬ್ ಸೈಟ್ ಅಂಶಗಳನ್ನು ಎಂದಿಗೂ ಪರಿಶೀಲಿಸಲಾಗುವುದಿಲ್ಲ. ಡೆವಲಪರ್ ಸಾಧನಗಳು ಅಥವಾ JavaScript ಕನ್ಸೋಲ್ ಅನ್ನು ತೆರೆಯಲು ಯಾವುದೇ ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ಗಳು ಮತ್ತು ಯಾವುದೇ ಮೆನು ಅಥವಾ ಸಂದರ್ಭ ಮೆನು ನಮೂದುಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. ಈ ಆಯ್ಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದಂತೆ ಅಥವಾ ಇದನ್ನು ಹೊಂದಿಸದೆ ಬಿಡುವುದರಿಂದ ಡೆವಲಪರ್ ಸಾಧನಗಳು ಮತ್ತು JavaScript ಕನ್ಸೋಲ್ ಅನ್ನು ಬಳಸುವಂತೆ ಅನುಮತಿಸುತ್ತದೆ.</translation> <translation id="4449545651113180484">ಪರದೆಯನ್ನು 270 ಡಿಗ್ರಿಗಳಲ್ಲಿ ಪ್ರದಕ್ಷಿಣಾಕಾರವಾಗಿ ತಿರುಗಿಸಿ</translation> <translation id="4467952432486360968">ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಕುಕ್ಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿ</translation> <translation id="4474167089968829729">ಪಾಸ್ವರ್ಡ್ಗಳ ಉಳಿಸುವಿಕೆಯನ್ನು ಪಾಸ್ವರ್ಡ್ ಮ್ಯಾನೇಜರ್ಗೆ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation> @@ -1242,6 +1248,13 @@ ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸಿದರೆ, ಬಳಕೆದಾರರ ಮಧ್ಯಸ್ಥಿಕೆ ಇಲ್ಲದೆಯೇ ಲಾಗಿನ್ ಪರದೆಯಲ್ಲಿ ನಿಗಧಿತ ಸಮಯ ಕಳೆದ ನಂತರ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾದ ಸೆಷನ್ ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಾಗ್ ಇನ್ ಮಾಡಲಾಗುವುದು. ಸಾರ್ವಜನಿಕ ಸೆಷನ್ ಅನ್ನು ಈಗಾಗಲೇ ಕಾನ್ಫಿಗರ್ ಮಾಡಿರಬೇಕು (|DeviceLocalAccounts| ನೋಡಿ). ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದಿದ್ದರೆ, ಯಾವುದೇ ರೀತಿಯ ಸ್ವಯಂ ಲಾಗಿನ್ ಇರುವುದಿಲ್ಲ.</translation> +<translation id="5529037166721644841">ಸಾಧನ ನೀತಿಯ ಮಾಹಿತಿಗಾಗಿ ಸಾಧನ ನಿರ್ವಹಣೆ ಸೇವೆಯನ್ನು ಪ್ರಶ್ನಿಸಲಾದ ಅವಧಿಯನ್ನು ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗುತ್ತದೆ. + + ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸುವುದರಿಂದಾಗಿ 3 ಗಂಟೆಗಳ ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು ಅತಿಕ್ರಮಿಸುತ್ತದೆ. ಈ ನೀತಿಗಾಗಿ ಮಾನ್ಯವಾದ ಮೌಲ್ಯಗಳು 1800000 (30 ನಿಮಿಷಗಳು) ರಿಂದ 86400000 (1 ದಿನ) ವ್ಯಾಪ್ತಿಯಲ್ಲಿವೆ. ವ್ಯಾಪ್ತಿಯಲ್ಲಿಲ್ಲದ ಯಾವುದೇ ಮೌಲ್ಯಗಳನ್ನು ಅನುಕ್ರಮವಾದ ಎಲ್ಲೆಗೆ ಮಿತಿಗೊಳಿಸಲಾಗುತ್ತದೆ. + + ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೇ ಹಾಗೆಯೇ ಬಿಟ್ಟರೆ ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು 3 ಗಂಟೆಗಳವರೆಗೆ <ph name="PRODUCT_OS_NAME" /> ಬಳಸಬಹುದು. + + ನೀತಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಒಂದು ವೇಳೆ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಬೆಂಬಲಿಸಿದರೆ, ರಿಫ್ರೆಶ್ ಮಾಡುವಿಕೆಯ ವಿಳಂಬವನ್ನು 24 ಗಂಟೆಗಳಿಗೆ ಹೊಂದಿಸಲಾಗುತ್ತದೆ (ಎಲ್ಲಾ ಡೀಫಾಲ್ಟ್ಗಳು ಮತ್ತು ಈ ನೀತಿಯ ಮೌಲ್ಯವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ) ಏಕೆಂದರೆ ನೀತಿಯು ಬದಲಾದಾಗಲೆಲ್ಲಾ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಿಫ್ರೆಶ್ ಆಗುವಂತೆ ನೀತಿ ಅಧಿಸೂಚನೆಗಳು ಬಲವಂತಪಡಿಸುತ್ತವೆ ಎಂಬುದಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ, ಈ ಮೂಲಕ ಅನಗತ್ಯವಾಗಿ ಹೆಚ್ಚು ಆಗಾಗ್ಗೆ ರಿಫ್ರೆಶ್ ಆಗುವುದಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ.</translation> <translation id="5535957389335373033">ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ, ನೆಟ್ವರ್ಕ್ ಪ್ಯಾಕೇಟ್ಗಳ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವುದನ್ನು ಎಷ್ಟು ಬಾರಿ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಈ ನೀತಿಯನ್ನು ಹೊಂದಿಸದೇ ಇದ್ದರೆ, ಡಿಫಾಲ್ಟ್ ಆವರ್ತನೆಯು 3 ನಿಮಿಷಗಳಾಗಿರುತ್ತದೆ. ಕನಿಷ್ಠ ಆವರ್ತನೆಯು @@ -1765,6 +1778,9 @@ 'DefaultSearchProviderEnabled' ನೀತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಲ್ಲಿ ಮಾತ್ರ ಈ ನೀತಿಗೆ ತಕ್ಕ ಗೌರವ ದೊರೆಯುತ್ತದೆ.</translation> <translation id="7302043767260300182">AC ಪವರ್ನಲ್ಲಿರನ್ ಆಗುತ್ತಿರುವಾಗ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ವಿಳಂಬವಾಗುತ್ತದೆ</translation> +<translation id="7311458740754205918">ಇದನ್ನು ಸರಿ ಎಂಬುದಕ್ಕೆ ಹೊಂದಿಸಿದರೆ ಅಥವಾ ಹೊಂದಿಸದೆ ಹಾಗೆಯೇ ಬಿಟ್ಟರೆ, ಹೊಸ ಟ್ಯಾಬ್ ಪುಟವು ಬಳಕೆದಾರರ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸ, ಆಸಕ್ತಿಗಳು ಅಥವಾ ಸ್ಥಳವನ್ನು ಆಧರಿಸಿದ ವಿಷಯ ಸಲಹೆಗಳನ್ನು ತೋರಿಸಬಹುದು. + + ಇದನ್ನು ತಪ್ಪು ಎಂಬುದಕ್ಕೆ ಹೊಂದಿಸಿದರೆ, ಹೊಸ ಟ್ಯಾಬ್ ಪುಟದಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ-ರಚಿಸಲ್ಪಟ್ಟ ವಿಷಯ ಸಲಹೆಗಳನ್ನು ತೋರಿಸಲಾಗುವುದಿಲ್ಲ.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> ಗಾಗಿ ಹೆಚ್ಚುವರಿ ಆದೇಶ ಸಾಲು ಪ್ಯಾರಾಮೀಟರ್ಗಳು</translation> <translation id="7329842439428490522">ಬ್ಯಾಟರಿ ಪವರ್ನಲ್ಲಿರನ್ ಆಗುತ್ತಿರುವಾಗ ಬಳಕೆದಾರರ ಇನ್ಪುಟ್ ಇಲ್ಲದೆಯೇ ಪರದೆಯನ್ನು ಆಫ್ ಮಾಡಿದ ನಂತರ ಸಮಯದ ಅಳತೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. @@ -1897,6 +1913,7 @@ <translation id="7763479091692861127"> OS ಅಪ್ಡೇಟ್ಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿಸುವಂತಹ ಸಂಪರ್ಕಗಳ ಪ್ರಕಾರಗಳು. OS ಅಪ್ಡೇಟ್ಗಳು ಅದರ ಗಾತ್ರ ಮತ್ತು ಹೆಚ್ಚುವರಿ ವೆಚ್ಚವನ್ನುಂಟು ಮಾಡಬಹುದಾದ ಕಾರಣದಿಂದಾಗಿ ಸಂಪರ್ಕಿಸಲು ಸಂಭವನೀಯವಾಗಿ ಹೆಚ್ಚಿನ ಒತ್ತಡವನ್ನು ಹೇರುತ್ತದೆ. ಆದ್ದರಿಂದ, WiMax, ಬ್ಲೂಟೂತ್ ಮತ್ತು ಆ ಕ್ಷಣದಲ್ಲಿ ಸೆಲ್ಯುಲಾರ್ ಸೇರಿದಂತೆ ದುಬಾರಿ ಎಂದು ಪರಿಗಣಿಸಲಾದ ಸಂಪರ್ಕ ಪ್ರಕಾರಕ್ಕಾಗಿ ಡಿಫಾಲ್ಟ್ ಆಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಲಿಲ್ಲ. ಅಂಗೀಕರಿಸಲಾದ ಸಂಪರ್ಕ ಪ್ರಕಾರ ಗುರುತಿಸುವಿಕೆಗಳು ಎಂದರೆ "ethernet", "wifi", "wimax", "bluetooth" ಮತ್ತು "cellular".</translation> +<translation id="7763614521440615342">ಹೊಸ ಟ್ಯಾಬ್ ಪುಟದಲ್ಲಿ ವಿಷಯ ಸಲಹೆಗಳನ್ನು ತೋರಿಸಿ</translation> <translation id="7766336524667238790">ಅಪ್ಲಿಕೇಶನ್ ಐಡಿ ಮತ್ತು ಆವೃತ್ತಿಯಂತಹ ಸಕ್ರಿಯ ಕಿಯೋಸ್ಕ್ ಸೆಷನ್ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ವರದಿ ಮಾಡಿ. ನೀತಿಯನ್ನು ತಪ್ಪು ಎಂಬುದಕ್ಕೆ ಹೊಂದಿಸಿದರೆ, ಸೆಷನ್ ಮಾಹಿತಿಯನ್ನು ವರದಿ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಸರಿ ಎಂಬುದಕ್ಕೆ ಹೊಂದಿಸಿದರೆ ಅಥವಾ ಹೊಂದಿಸದೇ ಬಿಟ್ಟರೆ, ಸೆಷನ್ ಮಾಹಿತಿಯನ್ನು ವರದಿ ಮಾಡಲಾಗುತ್ತದೆ.</translation> @@ -2196,7 +2213,7 @@ <translation id="8731693562790917685">ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರದ (ಉದಾಹರಣೆಗೆ ಕುಕೀಸ್, ಚಿತ್ರಗಳು ಅಥವಾ JavaScript) ವಿಷಯಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ ಹೇಗೆ ನಿರ್ವಹಿಸಬೇಕೆಂದು ವಿಷಯ ಸೆಟ್ಟಿಂಗ್ಗಳು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.</translation> <translation id="8749370016497832113">ಬ್ರೌಸರ್ ಇತಿಹಾಸವನ್ನು ಅಳಿಸುವುದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ ಮತ್ತು <ph name="PRODUCT_NAME" /> ನಲ್ಲಿ ಇತಿಹಾಸವನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಿಸುವುದರಿಂದ ಬಳಕೆದಾರರನ್ನು ತಡೆಯುತ್ತದೆ. - ಈ ನೀತಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದರೊಂದಿಗೆ ಬ್ರೌಸಿಂಗ್ ಮತ್ತು ಡೌನ್ಲೋಡ್ ಇತಿಹಾಸವನ್ನು ಇರಿಸಿಕೊಳ್ಳುವಲ್ಲಿ ಖಾತ್ರಿಪಡಿಸಲಾಗುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ಗಮನದಲ್ಲಿರಿಸಿಕೊಳ್ಳಿ: ಬಳಕೆದಾರರಿಗೆ ಇತಿಹಾಸ ಡೇಟಾಬೇಸ್ ಫೈಲ್ಗಳನ್ನು ನೇರವಾಗಿ ಸಂಪಾದಿಸಲು ಅಥವಾ ಅಳಿಸಲು ಸಾಧ್ಯವಾಗಬಹುದು ಮತ್ತು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಬ್ರೌಸರ್ ಅವಧಿ ಮುಕ್ತಾಯಗೊಳ್ಳಬಹುದು ಅಥವಾ ಸಂಗ್ರಹಗೊಳ್ಳಬಹುದು. + ಈ ನೀತಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದರೊಂದಿಗೆ ಬ್ರೌಸಿಂಗ್ ಮತ್ತು ಡೌನ್ಲೋಡ್ ಇತಿಹಾಸವನ್ನು ಇರಿಸಿಕೊಳ್ಳುವಲ್ಲಿ ಖಾತ್ರಿಪಡಿಸಲಾಗುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ಗಮನದಲ್ಲಿರಿಸಿಕೊಳ್ಳಿ: ಬಳಕೆದಾರರಿಗೆ ಇತಿಹಾಸ ಡೇಟಾಬೇಸ್ ಫೈಲ್ಗಳನ್ನು ನೇರವಾಗಿ ಎಡಿಟ್ ಮಾಡಲು ಅಥವಾ ಅಳಿಸಲು ಸಾಧ್ಯವಾಗಬಹುದು ಮತ್ತು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಬ್ರೌಸರ್ ಅವಧಿ ಮುಕ್ತಾಯಗೊಳ್ಳಬಹುದು ಅಥವಾ ಸಂಗ್ರಹಗೊಳ್ಳಬಹುದು. ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ ಅಥವಾ ಗೊಳಿಸದಿದ್ದರೆ, ಬ್ರೌಸಿಂಗ್ ಮತ್ತು ಡೌನ್ಲೋಡ್ ಇತಿಹಾಸವನ್ನು ಅಳಿಸಬಹುದು.
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb index 02e1e256..31bd31f 100644 --- a/components/policy/resources/policy_templates_ko.xtb +++ b/components/policy/resources/policy_templates_ko.xtb
@@ -241,6 +241,13 @@ 이 정책을 true로 설정하면 <ph name="PRODUCT_OS_NAME" />에서 HTTP를 통해 자동 업데이트 페이로드를 다운로드하기 위해 시도합니다. 이 정책이 false로 설정되어 있거나 아무런 설정이 되지 않은 경우 자동 업데이트 페이로드 다운로드 시 HTTPS를 사용합니다.</translation> <translation id="2006530844219044261">전력 관리</translation> <translation id="201557587962247231">기기 상태 보고서 업로드 빈도</translation> +<translation id="2018836497795982119">사용자 정책 정보에 대해 기기 관리 서비스를 검색하는 시간(밀리초)을 지정합니다. + + 이 정책을 설정하면 기본값인 3시간이 무시됩니다. 이 정책에 대해 유효한 값은 1800000(30분)에서 86400000(1일) 사이입니다. 이 범위에 포함되지 않는 모든 값은 각 경계값으로 고정됩니다. 플랫폼에서 정책 알림을 지원하면 정책이 변경될 때마다 정책 알림이 자동으로 강제 새로고침되므로 새로고침 지연이 24시간으로 설정됩니다. + + 이 정책을 설정하지 않으면 <ph name="PRODUCT_NAME" />에서 기본 값 3시간을 사용합니다. + + 플랫폼에서 정책 알림을 지원하면 정책이 변경될 때마다 정책 알림이 자동으로 강제 새로고침되어 잦은 새로고침을 불필요하게 하므로 새로고침 지연이 24시간으로 설정됩니다(모든 기본값 및 이 정책의 값 무시).</translation> <translation id="2024476116966025075">원격 액세스 클라이언트에게 필요한 도메인 이름 설정</translation> <translation id="2030905906517501646">기본 검색 공급자 키워드</translation> <translation id="206623763829450685"><ph name="PRODUCT_NAME" />에서 지원하는 HTTP 인증 스키마를 지정합니다. @@ -1073,11 +1080,6 @@ 정책 자체는 위의 플랫폼에서 지원되지만 정책을 통해 사용 설정되는 기능은 일부 플랫폼에서만 사용할 수 있습니다. 지원 중단된 웹 플랫폼 기능 중 일부는 다시 사용 설정할 수 없습니다. 아래 명시적으로 표시된 기능만 한시적으로 다시 사용 설정될 수 있으며, 기능에 따라 기간이 다릅니다. 문자열 태그의 일반 형식은 [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]입니다. 참고로 https://bit.ly/blinkintents 페이지에서 웹 플랫폼 기능 변경사항의 인텐트를 확인할 수 있습니다. </translation> <translation id="4442582539341804154">기기가 유휴 상태이거나 일시 중지되었을 때 잠금 기능을 사용</translation> -<translation id="4445684791305970001">개발자 도구 및 자바스크립트 콘솔의 사용을 중지합니다. - - 이 설정을 사용하면 개발자 도구에 액세스할 수 없으며 더 이상 웹사이트 요소를 검사할 수 없습니다. 개발자 도구나 자바스크립트 콘솔을 열기 위한 모든 단축키와 메뉴, 컨텍스트 메뉴 항목이 사용 중지됩니다. - - 이 옵션을 사용 중지하도록 설정하거나 설정하지 않으면 사용자가 개발자 도구와 자바스크립트 콘솔을 사용할 수 있습니다.</translation> <translation id="4449545651113180484">화면을 시계 방향으로 270도 회전</translation> <translation id="4467952432486360968">제3자 쿠키 차단</translation> <translation id="4474167089968829729">비밀번호 관리자에 비밀번호 저장 기능 사용</translation> @@ -1252,7 +1254,7 @@ <ph name="PRODUCT_NAME" />에서 네트워크 예측을 사용하도록 설정하고 사용자가 이 설정을 변경하지 못하게 합니다. - 이는 DNS 프리패치뿐 아니라 TCP와 SSL 사전 연결 및 웹페이지 사전 렌더링을 제어합니다. 정책 이름에는 여러 가지 이유로 인해 DNS 프리패치가 사용되었습니다. + 이는 DNS 프리패치뿐 아니라 TCP와 SSL 사전 연결 및 웹페이지 사전 렌더링을 제어합니다. 정책 이름은 과거 상의 이유로 인해 DNS 프리패치로 명명되었습니다. 이 설정을 사용 설정하거나 사용 중지하면 사용자는 <ph name="PRODUCT_NAME" />에서 이 설정을 변경하거나 무시할 수 없습니다. @@ -1338,6 +1340,13 @@ 이 정책이 설정되어 있으면, 로그인 화면에서 사용자 활동 없이 일정 시간이 경과한 뒤에 지정된 세션이 자동으로 로그인됩니다. 공개 세션은 이미 구성되어 있어야 합니다(|DeviceLocalAccounts| 참조). 이 정책이 설정되어 있지 않으면 자동 로그인할 수 없습니다.</translation> +<translation id="5529037166721644841">사용자 정책 정보에 대해 기기 관리 서비스를 검색하는 시간(밀리초)을 지정합니다. + + 이 정책을 설정하면 기본값인 3시간이 무시됩니다. 이 정책에 대해 유효한 값은 1800000(30분)에서 86400000(1일) 사이입니다. 이 범위에 포함되지 않는 모든 값은 각 경계값으로 고정됩니다. + + 이 정책을 설정하지 않으면 <ph name="PRODUCT_OS_NAME" />에서 기본 값 3시간을 사용합니다. + + 플랫폼에서 정책 알림을 지원하면 정책이 변경될 때마다 정책 알림이 자동으로 강제 새로고침되어 잦은 새로고침을 불필요하게 하므로 새로고침 지연이 24시간으로 설정됩니다(모든 기본값 및 이 정책의 값 무시).</translation> <translation id="5535957389335373033">네트워크 패킷 모니터링이 전송되는 빈도를 밀리초로 나타냅니다. 이 정책이 설정되지 않으면 기본 주기는 3분입니다. @@ -1904,6 +1913,9 @@ 이 정책은 'DefaultSearchProviderEnabled' 정책을 사용 설정한 경우에만 적용됩니다.</translation> <translation id="7302043767260300182">AC 전원으로 실행할 때 화면 잠금 지연</translation> +<translation id="7311458740754205918">true로 설정되거나 설정되지 않으면 새 탭 페이지에서 사용자의 방문 기록, 관심분야 또는 위치를 기반으로 콘텐츠 추천을 표시할 수 있습니다. + + false로 설정되어 있다면 자동 생성 콘텐츠 추천이 새 탭 페이지에 표시되지 않습니다.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" />의 추가 명령줄 매개변수</translation> <translation id="7329842439428490522">배터리 전원으로 실행할 때 사용자 입력이 없어서 화면이 꺼질 때까지 걸리는 시간을 지정합니다. @@ -2046,6 +2058,7 @@ <translation id="7763479091692861127"> OS 업데이트에 사용할 수 있는 연결 유형입니다. OS 업데이트는 용량이 크고 부가 비용이 발생할 수 있기 때문에 잠재적으로 연결 네트워크에 부담이 됩니다. 따라서 비용이 부담스러운 연결 유형(예: WiMax, Bluetooth 및 Cellular)은 현재 기본적으로 사용하지 않도록 설정합니다. 인식할 수 있는 연결 유형 식별자는 'ethernet', 'wifi', 'wimax', 'bluetooth' 및 'cellular'입니다.</translation> +<translation id="7763614521440615342">새 탭 페이지에 콘텐츠 추천 표시</translation> <translation id="7766336524667238790">활성 키오스크 세션에 대한 정보(예: 애플리케이션 ID 및 버전)를 보고합니다.
diff --git a/components/policy/resources/policy_templates_lt.xtb b/components/policy/resources/policy_templates_lt.xtb index c9953fe..4c07ad33 100644 --- a/components/policy/resources/policy_templates_lt.xtb +++ b/components/policy/resources/policy_templates_lt.xtb
@@ -241,6 +241,13 @@ Jei ši politika galioja, „<ph name="PRODUCT_OS_NAME" />“ bandys atsisiųsti automatinį naudingųjų apkrovų naujinį naudodama HTTP. Jei ši politika negalioja arba yra nenustatyta, automatinis naudingųjų apkrovų naujinys bus atsisiunčiamas naudojant HTTPS.</translation> <translation id="2006530844219044261">Maitinimo valdymas</translation> <translation id="201557587962247231">Įrenginio būsenos ataskaitų įkėlimo dažnis</translation> +<translation id="2018836497795982119">Milisekundėmis nurodomas laikotarpis, per kurį įrenginio tvarkymo paslaugai pateikiama užklausa dėl naudotojo politikos informacijos. + + Nustačius šią politiką nepaisoma numatytosios 3 valandų vertės. Tinkamos šios politikos vertės svyruoja nuo 1 800 000 (30 minučių) iki 86 400 000 (1 diena). Vertės už šio diapazono ribų bus nustatytos į šio diapazono vertę. Jei platformoje palaikomi politikos pranešimai, atnaujinimo delsa bus nustatyta į 24 val., nes tikimasi, kad politikos pranešimai suaktyvins atnaujinimą kaskart, kai politika bus pakeista. + + Jei ši politika nebus nustatyta, „<ph name="PRODUCT_NAME" />“ naudos numatytąją vertę – 3 val. + + Atminkite, kad jei platformoje palaikomi politikos pranešimai, atnaujinimo delsa bus nustatyta į 24 val. (bus nepaisoma visų numatytųjų nustatymų ir šios politikos vertės), nes tikimasi, kad politikos pranešimai automatiškai suaktyvins atnaujinimą kaskart, kai politika bus pakeista, todėl nereikės dažniau atnaujinti.</translation> <translation id="2024476116966025075">Būtino nuotolinės prieigos klientų domeno pavadinimo konfigūravimas</translation> <translation id="2030905906517501646">Numatytojo paieškos teikėjo raktinis žodis</translation> <translation id="206623763829450685">Nurodoma, kurios HTTP autentifikavimo schemos palaikomos „<ph name="PRODUCT_NAME" />“. @@ -1083,11 +1090,6 @@ Politika palaikoma anksčiau nurodytose platformose, tačiau įgalinama funkcija gali būti pasiekiama mažiau platformų. Ne visas nebenaudojamas žiniatinklio platformos funkcijas galima įgalinti. Tik šiame sąraše pateiktas funkcijas galima laikinai (atsižvelgiant į funkciją) įgalinti. Bendra eilutės žymos forma [NebeteikiamosFunkcijosPavadinimas]_GaliojaIki[yyyymmdd]. Informacijos apie žiniatinklio platformos funkcijos pakeitimus galite gauti apsilankę adresu https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Įgalinti užraktą, kai įrenginys nenaudojamas arba laikinai sustabdytas</translation> -<translation id="4445684791305970001">Neleidžiami kūrėjo įrankiai ir „JavaScript“ pultas. - - Jei įgalinsite šį nustatymą, daugiau nebus galima pasiekti kūrėjo įrankių ir patikrinti svetainės elementų. Bus neleidžiami visi spartieji klavišai ir meniu ar kontekstinių meniu įrašai, skirti kūrėjo įrankiams ar „JavaScript“ konsolei atidaryti. - - Neleidus šios parinkties ar jos nenustačius, naudotojas (-a) galės naudoti kūrėjo įrankius ir „JavaScript“ konsolę.</translation> <translation id="4449545651113180484">Sukti ekraną pagal laikrodžio rodyklę 270 laipsnių kampu</translation> <translation id="4467952432486360968">Blokuoti trečiosios šalies slapukus</translation> <translation id="4474167089968829729">Įgalinti slaptažodžių saugojimą slaptažodžių tvarkytuvėje</translation> @@ -1263,7 +1265,7 @@ Jei ši politika nenustatyta ar nustatyta „Ne“, kūrėjo režimas liks pasiekiamas įrenginiui.</translation> <translation id="5203271367506489164">Vietoje šios politikos M48 naudojama „NetworkPredictionOptions“ ir ji pašalinta iš M54. - Įgalinamas tinklo numatymas „<ph name="PRODUCT_NAME" />“ ir naudotojams neleidžiama naudotojams keisti šio nustatymo. + Įgalinamas tinklo numatymas „<ph name="PRODUCT_NAME" />“ ir naudotojams neleidžiama keisti šio nustatymo. Pagal šią politiką valdomas ne tik išankstinis DNS pateikimas, bet ir išankstinis TCP bei SSL ryšys ir tinklalapių pateikimas. Politikos pavadinime išankstinis DNS pateikimas įtrauktas atsižvelgiant į istoriją. @@ -1351,6 +1353,13 @@ Jei ši politika nenustatyta, prie nurodytos sesijos bus automatiškai prisijungta prisijungimo ekrane praėjus tam tikram laikui be naudotojo sąveikos. Vieša sesija jau turi būti sukonfigūruota (žr. |DeviceLocalAccounts|). Jei ši politika nenustatyta, nebus automatiškai prijungiama.</translation> +<translation id="5529037166721644841">Milisekundėmis nurodomas laikotarpis, per kurį įrenginio tvarkymo paslaugai pateikiama užklausa dėl įrenginio politikos informacijos. + + Nustačius šią politiką nepaisoma numatytosios 3 valandų vertės. Tinkamos šios politikos vertės svyruoja nuo 1 800 000 (30 minučių) iki 86 400 000 (1 diena). Vertės už šio diapazono ribų bus nustatytos į šio diapazono vertę. + + Jei ši politika nebus nustatyta, „<ph name="PRODUCT_OS_NAME" />“ naudos numatytąją vertę – 3 val. + + Atminkite, kad jei platformoje palaikomi politikos pranešimai, atnaujinimo delsa bus nustatyta į 24 val. (bus nepaisoma visų numatytųjų nustatymų ir šios politikos vertės), nes tikimasi, kad politikos pranešimai automatiškai suaktyvins atnaujinimą kaskart, kai politika bus pakeista, todėl nereikės dažniau atnaujinti.</translation> <translation id="5535957389335373033">Stebėjimo tinklo paketų siuntimo dažnis milisekundėmis. Jei ši politika nenustatyta, numatytasis dažnis bus 3 minutės. Minimalus @@ -1917,6 +1926,9 @@ Ši politika taikoma, tik jei įgalinta politika „DefaultSearchProviderEnabled“.</translation> <translation id="7302043767260300182">Ekrano užrakto delsa, kai naudojama kintamosios srovės energija</translation> +<translation id="7311458740754205918">Jei ši politika nustatyta kaip „true“ arba nenustatyta, naujo skirtuko puslapyje gali būti rodomi turinio pasiūlymai. + + Jei ši politika nustatyta kaip „false“, automatiškai sugeneruoti turinio pasiūlymai naujo skirtuko puslapyje nerodomi.</translation> <translation id="7323896582714668701">Papildomi „<ph name="PRODUCT_NAME" />“ komandinės eilutės parametrai</translation> <translation id="7329842439428490522">Nurodoma laiko trukmė be naudotojo įvesties, po kurios ekranas išjungiamas, kai naudojama akumuliatoriaus energija. @@ -2059,6 +2071,7 @@ <translation id="7763479091692861127"> Ryšių, leidžiamų naudoti OS naujiniams, tipai. OS naujiniai potencialiai apsunkina ryšį dėl savo dydžio, todėl gali būti taikomi papildomi mokesčiai. Taigi pagal numatytuosius nustatymus jie nėra įgalinti brangiais laikomiems ryšių tipams, įskaitant šiuo metu naudojamus „WiMax“, „Bluetooth“ ir „Cellular“. Atpažįstami ryšio tipo identifikatoriai yra „ethernet“, „wifi“, „wimax“, „bluetooth“ ir „cellular“.</translation> +<translation id="7763614521440615342">Rodyti turinio pasiūlymus naujo skirtuko puslapyje</translation> <translation id="7766336524667238790">Pateikiama informacija apie aktyvią viešojo terminalo sesiją, pvz., programos ID ir versija. @@ -2080,7 +2093,7 @@ Nenustačius šios politikos visose svetainėse bus naudojama visuotinė numatytoji vertė iš politikos „Numatytasis papildinių nustatymas“ (jei nustatyta) ar naudotojo asmeninės konfigūracijos.</translation> <translation id="7801886189430766248">Kai ši politika nustatyta kaip „true“, „Android“ programos duomenys įkeliami į „Android“ atsarginių kopijų serverius ir pakartotinai diegiant suderinamas programas yra atkuriami iš šių serverių. - Kai ši politika nustatyta kaip „false“, „Android“ atsarginių kopijų kūrimo paslauga bus išjungta. + Kai ši politika nustatyta kaip „false“, „Android“ atsarginių kopijų kūrimo paslauga yra išjungta. Jei šis nustatymas sukonfigūruotas, naudotojai negali pakeisti jo patys.
diff --git a/components/policy/resources/policy_templates_lv.xtb b/components/policy/resources/policy_templates_lv.xtb index a3f8be7a..bb4b9d13 100644 --- a/components/policy/resources/policy_templates_lv.xtb +++ b/components/policy/resources/policy_templates_lv.xtb
@@ -240,6 +240,13 @@ Ja šai politikai ir iestatīta vērtība Patiesa, <ph name="PRODUCT_OS_NAME" /> mēģinās lejupielādēt automātiskās atjaunināšanas vērtumus, izmantojot HTTP. Ja šai politikai ir iestatīta vērtība Nepatiesa vai politika nav iestatīta, automātiskās atjaunināšanas vērtumu lejupielādei tiks izmantots HTTPS.</translation> <translation id="2006530844219044261">Barošanas pārvaldība</translation> <translation id="201557587962247231">Ierīces statusa pārskatu augšupielādes biežums</translation> +<translation id="2018836497795982119">Norāda laika periodu milisekundēs, pēc kura ierīces pārvaldības pakalpojumam tiek vaicāti lietotāja politikas dati. + + Iestatot šo politiku, tiek ignorēta noklusējuma vērtība (3 stundas). Šīs politikas derīgo vērtību diapazons ir no 1 800 000 (30 minūtēm) līdz 86 400 000 (1 dienai). Jebkura vērtība ārpus šī diapazona tiks pieskaņota attiecīgajai robežvērtībai. Ja platformā tiek atbalstīti politikas paziņojumi, tiks iestatīts atsvaidzināšanas aizkaves laiks 24 stundas, jo ir paredzēts, ka ar politikas paziņojumiem atsvaidzināšana tiks veikta piespiedu kārtā katru reizi, kad tiks mainīta politika. + + Atstājot šo politiku neiestatītu, <ph name="PRODUCT_NAME" /> izmanto noklusējuma vērtību (3 stundas). + + Ņemiet vērā: ja platformā tiek atbalstīti politikas paziņojumi, tiks iestatīts atsvaidzināšanas aizkaves laiks 24 stundas (ignorējot visas noklusējuma vērtības un šīs politikas vērtību), jo ir paredzēts, ka ar politikas paziņojumiem atsvaidzināšana tiks veikta piespiedu kārtā katru reizi, kad tiks mainīta politika, un biežāka atsvaidzināšana nebūs nepieciešama.</translation> <translation id="2024476116966025075">Nepieciešamā domēna nosaukuma konfigurēšana attālās piekļuves klientiem</translation> <translation id="2030905906517501646">Noklusējuma meklētājprogrammas atslēgvārds</translation> <translation id="206623763829450685">Norāda <ph name="PRODUCT_NAME" /> atbalstītās HTTP autentifikācijas shēmas. @@ -1074,11 +1081,6 @@ Lai gan šī politika ir atbalstīta iepriekš minētajās platformās, ne visas iespējotās funkcijas var būt pieejamas visās platformās. Ne visas novecojušās tīmekļa platformas funkcijas var iespējot atkārtoti. Var iespējot tikai tālāk norādītās funkcijas, un katrai funkcijai ir atšķirīgs derīguma laiks. Virknes taga vispārīgais formāts ir [NovecojušāsFunkcijasNosaukums]_SpēkāLīdz[ggggmmdd]. Ja vēlaties uzzināt vairāk, vietnē https://bit.ly/blinkintents ir minēti iemesli, kādēļ tīmekļa platformas funkcijās ir veiktas izmaiņas. </translation> <translation id="4442582539341804154">Bloķēšanas iespējošana, ja ierīce pāriet dīkstāvē vai tās darbība tiek apturēta</translation> -<translation id="4445684791305970001">Atspējo izstrādātāju rīkus un JavaScript konsoli. - - Ja šis iestatījums ir iespējots, nevar piekļūt izstrādātāju rīkiem un vairs nevar pārbaudīt vietņu elementus. Tiks atspējoti visi īsinājumtaustiņi un visi izvēļņu vai kontekstizvēlņu ieraksti, ar kuriem tiek atvērti izstrādātāju rīki vai JavaScript konsole. - - Ja šis iestatījums ir atspējots vai nav iestatīts, izstrādātāju rīkus un JavaScript konsoli varēs lietot.</translation> <translation id="4449545651113180484">Pagriezt ekrānu pulksteņrādītāju kustības virzienā par 270 grādiem</translation> <translation id="4467952432486360968">Bloķē trešo pušu sīkfailus</translation> <translation id="4474167089968829729">Iespējot paroļu saglabāšanu paroļu pārvaldniekā</translation> @@ -1343,6 +1345,13 @@ Ja šī politika ir iestatīta, pēc tam, kad noteiktu laika periodu lietotājs pieteikšanās ekrānā nebūs veicis nekādas darbības, notiks automātiska pieteikšanās norādītajā sesijā. Publiskajai sesijai jau ir jābūt konfigurētai (skatiet politiku |DeviceLocalAccounts|). Ja šī politika nav iestatīta, automātiska pieteikšanās netiks veikta.</translation> +<translation id="5529037166721644841">Norāda laika periodu milisekundēs, pēc kura ierīces pārvaldības pakalpojumam tiek vaicāti ierīces politikas dati. + + Iestatot šo politiku, tiek ignorēta noklusējuma vērtība (3 stundas). Šīs politikas derīgo vērtību diapazons ir no 1 800 000 (30 minūtēm) līdz 86 400 000 (1 dienai). Jebkura vērtība ārpus šī diapazona tiks pieskaņota attiecīgajai robežvērtībai. + + Ja šī politika nav iestatīta, operētājsistēmā <ph name="PRODUCT_OS_NAME" /> tiek izmantota noklusējuma vērtība (3 stundas). + + Ņemiet vērā: ja platformā tiek atbalstīti politikas paziņojumi, tiks iestatīts atsvaidzināšanas aizkaves laiks 24 stundas (ignorējot visas noklusējuma vērtības un šīs politikas vērtību), jo ir paredzēts, ka ar politikas paziņojumiem atsvaidzināšana tiks veikta piespiedu kārtā katru reizi, kad tiks mainīta politika, un biežāka atsvaidzināšana nebūs nepieciešama.</translation> <translation id="5535957389335373033">Pārraudzības tīkla pakešu sūtīšanas biežums (milisekundēs). Ja šī politika netiek iestatīta, noklusējuma biežums ir 3 minūtes. @@ -1906,6 +1915,9 @@ Šī politika tiek lietota tikai tad, ja ir iespējota politika DefaultSearchProviderEnabled.</translation> <translation id="7302043767260300182">Aizkave līdz ekrāna bloķēšanai, ja ierīce darbojas ar maiņstrāvu</translation> +<translation id="7311458740754205918">Ja šai politikai ir iestatīta vērtība “Patiesa” vai tā nav iestatīta, lapā “Jauna cilne” var tikt rādīti satura ieteikumi, pamatojoties uz lietotāja pārlūkošanas vēsturi, interesēm vai atrašanās vietu. + + Ja šai politikai ir iestatīta vērtība “Nepatiesa”, lapā “Jauna cilne” netiek rādīti automātiski veidoti satura ieteikumi.</translation> <translation id="7323896582714668701">Papildu komandrindas parametri pārlūkprogrammai <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Tiek norādīts laika periods, kurā lietotājam ir jāveic kāda darbība, pretējā gadījumā ekrāns tiek izslēgts, ja ierīce darbojas ar akumulatora jaudu. @@ -2048,6 +2060,7 @@ <translation id="7763479091692861127"> Savienojumu veidi, kurus ir atļauts izmantot OS atjauninājumiem. OS atjauninājumi var ievērojami noslogot savienojumu sava lieluma dēļ, kā arī var radīt papildu izmaksas. Šī iemesla dēļ pēc noklusējuma tie nav iespējoti tiem savienojumu veidiem, kas tiek uzskatīti par dārgiem, tostarp WiMax, Bluetooth un mobilajam savienojumam (pašlaik). Atpazītie savienojumu veidu identifikatori ir “ethernet”, “wifi”, “wimax”, “bluetooth” un “cellular”.</translation> +<translation id="7763614521440615342">Rādīt satura ieteikumus lapā “Jauna cilne”</translation> <translation id="7766336524667238790">Tiek sniegta informācija par aktīvo kioska režīma sesiju, piemēram, lietojumprogrammas ID un versiju.
diff --git a/components/policy/resources/policy_templates_ml.xtb b/components/policy/resources/policy_templates_ml.xtb index a60a936..5e71c91b 100644 --- a/components/policy/resources/policy_templates_ml.xtb +++ b/components/policy/resources/policy_templates_ml.xtb
@@ -242,6 +242,13 @@ ഈ നയം true എന്നതായി സജ്ജമാക്കുകയാണെങ്കിൽ, HTTP വഴി യാന്ത്രിക-അപ്ഡേറ്റ് പേലോഡുകൾ ഡൗൺലോഡുചെയ്യാൻ <ph name="PRODUCT_OS_NAME" /> ശ്രമിക്കും. ഈ നയം false എന്നായി സജ്ജീകരിക്കുകയോ സജ്ജീകരിക്കാത്ത നിലയിലോ ആണെങ്കിൽ, യാന്ത്രിക-അപ്ഡേറ്റ് പേലോഡുകൾ ഡൗൺലോഡുചെയ്യുന്നതിന് HTTPS ഉപയോഗിക്കും.</translation> <translation id="2006530844219044261">പവർ മാനേജുമെന്റ്</translation> <translation id="201557587962247231">ഉപകരണ നില റിപ്പോർട്ട് അപ്ലോഡുകളുടെ ആവൃത്തി</translation> +<translation id="2018836497795982119">ഉപയോക്തൃ നയ വിവരത്തിന് വേണ്ടി അന്വേഷിച്ച ഉപകരണ മാനേജ്മെന്റ് സേവനത്തിൽ, കാലയളവ് മില്ലിസെക്കൻഡിലാണ് വ്യക്തമാക്കുന്നത്. + + ഈ നയം ക്രമീകരിക്കുന്നത് ഡിഫോൾട്ട് മൂല്യമായ 3 മണിക്കൂറിനെ അസാധുവാക്കും. ഈ നയത്തിന്റെ സാധുതയുള്ള മൂല്യങ്ങളുടെ ശ്രേണി 1800000 (30 മിനിറ്റ്) മുതൽ 86400000 (ഒരു ദിവസം) വരെയാണ്. ഈ ശ്രേണിയിലില്ലാത്ത ഏതൊരു മൂല്യത്തെയും അതിന്റെ പരിധിക്കുള്ളിൽത്തന്നെ ഉൾപ്പെടുത്തും. നയത്തിന്റെ അറിയിപ്പുകളെ പ്ലാറ്റ്ഫോം പിന്തുണയ്ക്കുന്നുണ്ടെങ്കിൽ, നയം മാറുമ്പോഴെല്ലാം നയത്തിന്റെ അറിയിപ്പുകൾ സ്വയം പുതുക്കിയെടുക്കാൻ നിർബന്ധിക്കുന്നതിന് സാധ്യതയുള്ളതിനാൽ, പുതുക്കിയെടുക്കാനുള്ള കാലയളവ് 24 മണിക്കൂറായി സജ്ജമാക്കും. + + ഈ നയം സജ്ജമാക്കാതെ വിടുന്നത്, <ph name="PRODUCT_NAME" /> എന്നതിനെ ഡിഫോൾട്ട് മൂല്യമായ 3 മണിക്കൂർ എന്നത് ഉപയോഗിക്കാനിടയാക്കും. + + നയത്തിന്റെ അറിയിപ്പുകളെ പ്ലാറ്റ്ഫോം പിന്തുണയ്ക്കുന്നുണ്ടെങ്കിൽ, നയം മാറുമ്പോഴെല്ലാം നയത്തിന്റെ അറിയിപ്പുകൾ സ്വയം പുതുക്കിയെടുക്കാൻ നിർബന്ധിക്കുകയും അതിലൂടെ അനാവശ്യമായി ഇടയ്ക്കിടെയുള്ള പുതുക്കിയെടുക്കലുകൾക്കും സാധ്യതയുള്ളതിനാൽ, പുതുക്കിയെടുക്കാനുള്ള കാലയളവ് 24 മണിക്കൂറായി (എല്ലാ ഡിഫോൾട്ടുകളും ഈ നയത്തിന്റെ മൂല്യവും അവഗണിച്ചുകൊണ്ട്) സജ്ജമാക്കുകയും ചെയ്യുമെന്നത് ശ്രദ്ധിക്കുക.</translation> <translation id="2024476116966025075">വിദൂര ആക്സസ്സ് ക്ലയന്റുകൾക്ക് ആവശ്യമുള്ള ഡൊമെയ്ൻ പേര് കോൺഫിഗർ ചെയ്യുക</translation> <translation id="2030905906517501646">സ്ഥിരസ്ഥിതി തിരയൽ ദാതാവിന്റെ കീവേഡ്</translation> <translation id="206623763829450685"><ph name="PRODUCT_NAME" /> പിന്തുണയ്ക്കുന്ന HTTP പ്രാമാണീകരണ സ്കീമുകൾ ഏതെന്ന് വ്യക്തമാക്കുന്നു. @@ -1090,11 +1097,6 @@ മുകളിൽ പറഞ്ഞിരിക്കുന്ന പ്ലാറ്റ്ഫോമുകളിൽ നയം പിന്തുണയ്ക്കുമ്പോൾ, ഇത് പ്രവർത്തനക്ഷമമാക്കുന്ന ഫീച്ചർ കുറച്ച് പ്ലാറ്റ്ഫോമുകളിൽ ലഭ്യമാകാനിടയുണ്ട്. ഒഴിവാക്കിയ എല്ലാ വെബ് പ്ലാറ്റ്ഫോം സവിശേഷതകളും വീണ്ടും പ്രവർത്തനക്ഷമമാക്കാനാകില്ല. ചുവടെ സ്പഷ്ടമായി ലിസ്റ്റുചെയ്തിരിക്കുന്നവ നിശ്ചിത സമയത്തേയ്ക്ക് മാത്രമായിരിക്കാം, അത് ഓരോ ഫീച്ചറിനും വ്യത്യസ്തമായിരിക്കും. സ്ട്രിംഗ് ടാഗിന്റെ സാധാരണ ഫോർമാറ്റ് [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] ആയിരിക്കും. റഫറൻസിനായി, http://bit.ly/blinkintents എന്നതിൽ വെബ് പ്ലാറ്റ്ഫോം ഫീച്ചർ മാറ്റങ്ങൾക്കുള്ള കാരണം നിങ്ങൾക്ക് കാണാനാകും. </translation> <translation id="4442582539341804154">ഉപകരണം നിഷ്ക്രിയമാകുമ്പോഴോ താൽക്കാലികമായി നിർത്തുമ്പോഴോ ലോക്ക് പ്രാപ്തമാക്കുക</translation> -<translation id="4445684791305970001">ഡെവലപ്പർ ഉപകരണങ്ങളും JavaScript കൺസോളും അപ്രാപ്തമാക്കുന്നു. - - നിങ്ങൾ ഈ ക്രമീകരണം പ്രാപ്തമാക്കുകയാണെങ്കിൽ, ഡെവലപ്പർ ഉപകരണം ആക്സസ് ചെയ്യാൻ കഴിയില്ല കൂടാതെ വെബ്-സൈറ്റ് ഘടകങ്ങൾ ഇനി പരിശോധിക്കില്ല. ഡെവലപ്പർ ഉപകരണത്തിൽ അല്ലെങ്കിൽ JavaScript കൺസോളിൽ തുറക്കേണ്ട കീബോർഡ് കുറുക്കു വഴികൾ, മെനു അല്ലെങ്കിൽ പശ്ചാത്തല മെനു എൻട്രികൾ എന്നിങ്ങനെയുള്ളവ അപ്രാപ്തമാക്കപ്പെടും. - - ഈ ഓപ്ഷൻ അപ്രാപ്തമാക്കി അല്ലെങ്കിൽ സജ്ജമാക്കാതെ വിട്ടതായി ക്രമീകരിക്കുകയാണെങ്കിൽ ഡെവലപ്പർ ടൂളുകളും JavaScript കൺസോളുകളും ഉപയോഗിക്കുന്നതിനായി ഉപയോക്താവിനെ അനുവദിക്കും.</translation> <translation id="4449545651113180484">സ്ക്രീൻ 270 ഡിഗ്രി ഘടികാരദിശയിൽ തിരിക്കുക</translation> <translation id="4467952432486360968">മൂന്നാം കക്ഷി കുക്കികള് തടയുക</translation> <translation id="4474167089968829729">പാസ്വേഡ് മാനേജറിൽ പാസ്വേഡുകൾ സംരക്ഷിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കുക</translation> @@ -1361,6 +1363,13 @@ ഈ നയം സജ്ജമാക്കിയിട്ടുണ്ടെങ്കിൽ, ലോഗിൻ സ്ക്രീനിൽ ഉപയോക്തൃ ഇടപെടൽ ഇല്ലാത്ത സമയം കഴിഞ്ഞ ശേഷം നിർദ്ദിഷ്ട സെഷൻ സ്വയമേവ ലോഗിൻ ചെയ്യപ്പെടും. എല്ലാവർക്കുമുള്ള സെഷൻ ഇതിനകം കോൺഫിഗർ ചെയ്തിരിക്കണം (|DeviceLocalAccounts| കാണുക). ഈ നയം സജ്ജമാക്കാതിരുന്നാൽ, യാന്ത്രിക-ലോഗിൻ സംഭവിക്കില്ല.</translation> +<translation id="5529037166721644841">ഉപയോക്തൃ നയ വിവരത്തിന് വേണ്ടി അന്വേഷിച്ച ഉപകരണ മാനേജ്മെന്റ് സേവനത്തിൽ, കാലയളവ് മില്ലിസെക്കൻഡിലാണ് വ്യക്തമാക്കുന്നത്. + + ഈ നയം ക്രമീകരിക്കുന്നത് ഡിഫോൾട്ട് മൂല്യമായ 3 മണിക്കൂറിനെ അസാധുവാക്കും. ഈ നയത്തിന്റെ സാധുതയുള്ള മൂല്യങ്ങളുടെ ശ്രേണി 1800000 (30 മിനിറ്റ്) മുതൽ 86400000 (1 ദിവസം) വരെയാണ്. ഈ ശ്രേണിയിലില്ലാത്ത ഏതൊരു മൂല്യത്തെയും അതിന്റെ പരിധിക്കുള്ളിൽത്തന്നെ ഉൾപ്പെടുത്തും. + + ഈ നയം സജ്ജമാക്കാതെ വിടുന്നത്, <ph name="PRODUCT_OS_NAME" /> എന്നതിനെ ഡിഫോൾട്ട് മൂല്യമായ 3 മണിക്കൂർ ഉപയോഗിക്കാനിടയാക്കും. + + നയത്തിന്റെ അറിയിപ്പുകളെ പ്ലാറ്റ്ഫോം പിന്തുണയ്ക്കുന്നുണ്ടെങ്കിൽ, നയം മാറുമ്പോഴെല്ലാം നയത്തിന്റെ അറിയിപ്പുകൾ സ്വയം പുതുക്കിയെടുക്കാൻ നിർബന്ധിക്കുകയും അതിലൂടെ അനാവശ്യമായി ഇടയ്ക്കിടെയുള്ള പുതുക്കിയെടുക്കലുകൾക്കും സാധ്യതയുള്ളതിനാൽ, പുതുക്കിയെടുക്കാനുള്ള കാലയളവ് 24 മണിക്കൂറായി (എല്ലാ ഡിഫോൾട്ടുകളും ഈ നയത്തിന്റെ മൂല്യവും അവഗണിച്ചുകൊണ്ട്) സജ്ജമാക്കുകയും ചെയ്യുമെന്നത് ശ്രദ്ധിക്കുക.</translation> <translation id="5535957389335373033">മില്ലിസെക്കൻഡിനുള്ളിൽ എത്ര സമയം ഇടവിട്ടാണ് നെറ്റ്വർക്ക് പാക്കറ്റുകളുടെ നിരീക്ഷണവിവരം അയയ്ക്കുന്നത്. ഈ നയം സജ്ജമാക്കിയിട്ടില്ലെങ്കിൽ, ഡിഫോൾട്ടായ ഇടവേള 3 മിനിറ്റ് ആണ്. ഏറ്റവും @@ -1927,6 +1936,9 @@ ഈ നയം ബാധകമാകുന്നത് 'DefaultSearchProviderEnabled' നയം പ്രാപ്തമാക്കിയിട്ടുണ്ടെങ്കിൽ മാത്രമാണ്.</translation> <translation id="7302043767260300182">AC പവറിൽ പ്രവർത്തിക്കുമ്പോഴുള്ള സ്ക്രീൻ ലോക്ക് കാലതാമസം</translation> +<translation id="7311458740754205918">ഇത് ശരിയാണെന്ന് സജ്ജമാക്കുകയോ സജ്ജമാക്കാതിരിക്കുകയോ ആണെങ്കിൽ, ഉപയോക്താവിന്റെ ബ്രൗസിംഗ് ചരിത്രമോ താൽപ്പര്യങ്ങളോ ലൊക്കേഷനോ അടിസ്ഥാനമാക്കി പുതിയ ടാബ് പേജിൽ ഉള്ളടക്ക നിർദ്ദേശങ്ങൾ കാണിച്ചേക്കും. + + ഇത് തെറ്റാണെന്ന് സജ്ജമാക്കുകയാണെങ്കിൽ, പുതിയ ടാബ് പേജിൽ സ്വയം സൃഷ്ടിക്കപ്പെട്ട ഉള്ളടക്ക നിർദ്ദേശങ്ങളെ കാണിക്കില്ല.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> എന്നതിനായുള്ള കൂടുതൽ കമാന്റ് ലൈൻ പാരാമീറ്ററുകൾ</translation> <translation id="7329842439428490522">ബാറ്ററി പവറിൽ പ്രവർത്തിക്കുമ്പോൽ സ്ക്രീൻ ഓഫാക്കിയതിനുശേഷം, ഉപയോക്തൃ ഇൻപുട്ടില്ലാതെ സമയദൈർഘ്യം വ്യക്തമാക്കുന്നു. @@ -2069,6 +2081,7 @@ <translation id="7763479091692861127"> OS അപ്ഡേറ്റുകൾ ഉപയോഗിക്കുന്നതിന് അനുവദനീയമായ കണക്ഷൻ തരങ്ങൾ. OS അപ്ഡേറ്റുകൾ അവയുടെ വലുപ്പം കാരണം കണക്ഷനിൽ വളരെയധികം ബുദ്ധിമുട്ട് ഉണ്ടാക്കുകയും അധിക നിരക്ക് ഈടാക്കുന്നതിന് കാരണമായേക്കുകയും ചെയ്യാം. അതിനാൽ ഇപ്പോൾ WiMax, Bluetooth, Cellular എന്നിവ ഉൾപ്പെടുന്ന ചെലവേറിയ കണക്ഷൻ തരങ്ങളായി പരിഗണിക്കുന്നവ ഡിഫോൾട്ടായി പ്രാപ്തമാക്കില്ല. "ethernet", "wifi", "wimax", "bluetooth", "cellular" എന്നിവയാണ് അംഗീകൃത കണക്ഷൻ തര ഐഡന്റിഫയറുകൾ.</translation> +<translation id="7763614521440615342">പുതിയ ടാബ് പേജിൽ ഉള്ളടക്ക നിർദ്ദേശങ്ങൾ കാണിക്കുക</translation> <translation id="7766336524667238790">അപ്ലിക്കേഷൻ ഐഡി, പതിപ്പ് എന്നിങ്ങനെയുള്ള സജീവ കിയോസ്ക് സെഷനെക്കുറിച്ചുള്ള വിവരങ്ങൾ റിപ്പോർട്ടുചെയ്യുക.
diff --git a/components/policy/resources/policy_templates_mr.xtb b/components/policy/resources/policy_templates_mr.xtb index a6f8f2e6..80391cef 100644 --- a/components/policy/resources/policy_templates_mr.xtb +++ b/components/policy/resources/policy_templates_mr.xtb
@@ -228,6 +228,13 @@ हे धोरण सत्य वर सेट केले असल्यास, <ph name="PRODUCT_OS_NAME" /> HTTP द्वारे स्वयं-अद्यतन अभिभार डाउनलोड करण्याचा प्रयत्न करेल. धोरण असत्य वर सेट केले असल्यास किंवा सेट केले नसल्यास, स्वयं-अद्यतन अभिभार डाउनलोड करण्यासाठी HTTP वापरले जाईल.</translation> <translation id="2006530844219044261">उर्जा व्यवस्थापन</translation> <translation id="201557587962247231">डिव्हाइस स्थिती अहवाल अपलोडची वारंवारता</translation> +<translation id="2018836497795982119">डिव्हाइस व्यवस्थापन सेवेकडे वापरकर्ता धोरण माहितीसाठी क्वेरी करण्यात आली तो कालावधी मिलीसेकंदात निर्दिष्ट करते. + +हे धोरण सेट केल्याने 3 तासांचे डीफॉल्ट मूल्य ओलांडले जाते. या धोरणासाठी वैध मूल्ये 1800000 (30 मिनिटे) ते 86400000 (1 दिवसाच्या) श्रेणीत आहेत. या श्रेणीत नसणारी कोणतीही मूल्ये अनुक्रमे सीमारेखांवर बद्ध करण्यात येतील. प्लॅटफॉर्म धोरण सूचनांचे समर्थन करत असल्यास, रीफ्रेश विलंब 24 तासांसाठी सेट केला जाईल कारण असे अपेक्षित आहे की जेव्हा धोरण बदलेल तेव्हा धोरण सूचना स्वयंचलितपणे रीफ्रेश करण्याची सक्ती केली जाईल. + + हे धोरण सेट न करता सोडल्यास <ph name="PRODUCT_NAME" /> 3 तासांच्या डीफॉल्ट मूल्याचा वापर करेल. + + लक्षात ठेवा की प्लॅटफॉर्म धोरण सूचनांचे समर्थन करीत असल्यास, रीफ्रेश विलंब 24 तासांसाठी (सर्व डीफॉल्ट आणि धोरणाचे मूल्य दुर्लक्षित करून) सेट केला जाईल कारण असे अपेक्षित आहे की जेव्हा धोरण बदलेल तेव्हा धोरण सूचना स्वयंचलितपणे रीफ्रेश करण्याची सक्ती केली जाईल, जे वारंवार केल्या जाणार्या रीफ्रेश क्रिया अनावश्यक बनविते.</translation> <translation id="2024476116966025075">दूरस्थ प्रवेश क्लायंटसाठी आवश्यक असलेले डोमेन नाव कॉन्फिगर करा</translation> <translation id="2030905906517501646">डीफॉल्ट शोध प्रदाता कीवर्ड</translation> <translation id="206623763829450685"><ph name="PRODUCT_NAME" /> कडून कोणत्या HTTP प्रमाणीकरण योजना समर्थित केल्या जातात ते निर्दिष्ट करते. @@ -714,7 +721,7 @@ "allowed_types": हे सेटिंग <ph name="PRODUCT_NAME" /> मध्ये स्थापित केल्या जाऊ शकणाऱ्या विस्तार/अॅप्सच्या अनुमती असलेल्या प्रकारांना श्वेतसूचीत टाकते. मूल्य हे स्ट्रिंगची एक सूची असते, यापैकी प्रत्येक खालीलपैकी एक असावे: "विस्तार", "थीम", "user_script", "hosted_app", "legacy_packaged_app", "platform_app". या प्रकारांवरील अधिक माहितीसाठी <ph name="PRODUCT_NAME" /> विस्तार दस्तऐवज पहा - हे धोरण अद्याप वापरासाठी सज्ज नाही, कृपया त्याचा वापर करू नका. + हे धोरण अद्याप वापरासाठी तयार नाही, कृपया त्याचा वापर करू नका. </translation> <translation id="3205825995289802549">पहिल्यांदा चालविल्यावर प्रथम ब्राउझर विंडो मोठी करा</translation> <translation id="3206731874112238027">मुद्रण पूर्वावलोकन अक्षम करा (बहिष्कृत केलेले)</translation> @@ -803,7 +810,7 @@ हे धोरण पर्यायी आहे. सेट केले नसल्यास, कोणताही प्रतिमा शोध वापरला जाणार नाही. 'DefaultSearchProviderEnabled' धोरण सक्षम असल्यासच या धोरणाचा फक्त आदर केला जातो.</translation> -<translation id="350797926066071931">अनुवाद सक्षम करा</translation> +<translation id="350797926066071931">भाषांतर सक्षम करा</translation> <translation id="3516856976222674451">वापरकर्ता सत्राची कमाल लांबी मर्यादित करा. हे धोरण सेट होते, तेव्हा ते वेळेचा कालावधी निर्दिष्ट करते यानंतर सत्र समाप्त करून, एक वापरकर्ता स्वयंचलितपणे लॉग आउट होतो. वापरकर्त्यास सिस्टीम ट्रे मध्ये दर्शविलेल्या एका उलटगणती टाइमरद्वारे उर्वरित वेळेबद्दल सूचित केले जाते. @@ -920,7 +927,7 @@ हे धोरण सक्षम केले असल्यास SPDY प्रोटोकॉल <ph name="PRODUCT_NAME" /> मध्ये उपलब्ध नसेल. - अक्षम केले वर हे धोरण सेट केल्यामुळे SPDY च्या वापरास अनुमती मिळेल. + हे धोरण अक्षम केले वर सेट केल्यामुळे SPDY च्या वापरास अनुमती मिळेल. हे धोरण सेट न केलेले ठेवल्यास, SPDY उपलब्ध असेल.</translation> <translation id="3891357445869647828">JavaScript सक्षम करा</translation> @@ -1068,11 +1075,6 @@ वरील प्लॅटफॉर्मवर धोरण समर्थित असल्यास, ते सक्षम करीत असलेले वैशिष्ट्य थोड्या प्लॅटफॉर्मवर उपलब्ध असू शकते. सर्व बहिष्कृत केलेली वेब प्लॅटफॉर्म वैशिष्ट्ये पुन्हा सक्षम केली जाऊ शकत नाहीत. खाली सुस्पष्टपणे सूचीबद्ध केलेली वैशिष्ट्ये प्रति वैशिष्ट्यासाठी भिन्न असलेल्या मर्यादित वेळेसाठी सक्षम केली जाऊ शकतात. सर्वसामान्य स्ट्रिंग टॅगचे स्वरूपन [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] असेल. संदर्भानुसार, आपण https://bit.ly/blinkintents येथे वेब प्लॅटफॉर्म वैशिष्ट्य बदलांच्या मागचा उद्देश पाहू शकता. </translation> <translation id="4442582539341804154">डिव्हाइस निष्क्रिय किंवा निलंबित झाल्यास लॉक सक्षम करा</translation> -<translation id="4445684791305970001">विकसक साधने आणि JavaScript कन्सोल अक्षम करते. - - आपण हे सेटिंग सक्षम केल्यास, विकसक साधनांवर प्रवेश करता येणार नाही आणि यानंतर वेब-साइट घटकांचे निरीक्षण करता येणार नाही. विकसक साधने किंवा JavaScript कन्सोल उघडण्यासाठीचे कोणतेही कीबोर्ड शॉर्टकट किंवा कोणत्याही मेनू किंवा संदर्भ मेनू प्रविष्ट्या अक्षम करण्यात येतील. - - हा पर्याय अक्षम करणे किंवा सेट न करता सोडल्याने वापरकर्ता विकसक साधने आणि JavaScript कन्सोल वापरण्याकरिता वापरण्याची अनुमती देईल.</translation> <translation id="4449545651113180484">स्क्रीन घड्याळाच्या दिशेने 270 अंश फिरवा</translation> <translation id="4467952432486360968">तृतीय पक्ष कुकीज अवरोधित करा</translation> <translation id="4474167089968829729">संकेतशब्द व्यवस्थापकामध्ये संकेतशब्द जतन करणे सक्षम करा</translation> @@ -1242,7 +1244,7 @@ <ph name="PRODUCT_NAME" /> मध्ये नेटवर्क पूर्वानुमान सक्षम करते आणि वापरकर्त्यांना हे सेटिंग बदलण्यास प्रतिबंधित करते. - हे केवळ DNS पूर्वप्राप्तीच नाही तर TCP आणि SSL पूर्वकनेक्शन आणि वेबपृष्ठांची पूर्वप्रस्तुती देखील नियंत्रित करते. हे धोरण नाव ऐतिहासिक कारणांसाठी DNS पूर्वप्राप्तीचा संदर्भ देते. + हे केवळ DNS पूर्वप्राप्तीच नाही तर TCP आणि SSL पूर्वकनेक्शन आणि वेबपृष्ठांची पूर्वप्रस्तुती देखील नियंत्रित करते. हे धोरण नाव ऐतिहासिक कारणांसाठी DNS पूर्वप्राप्ती म्हटले जाते. आपण हे सेटिंग सक्षम किंवा अक्षम केल्यास, वापरकर्ते <ph name="PRODUCT_NAME" /> मध्ये हे सेटिंग बदलू किंवा अधिशून्य करू शकत नाही. @@ -1331,6 +1333,13 @@ हे धोरण सेट केलेले असल्यास, वापरकर्ता संवादाशिवाय लॉग इन स्क्रीनवर गेलेल्या कालावधीनंतर निर्दिष्ट सत्र स्वयंचलितपणे लॉग इन केले जाईल. सार्वजनिक सत्र आधीपासून कॉन्फिगर केले जाणे आवश्यक आहे (|DeviceLocalAccounts| पहा). हे धोरण सेट न केल्यास, कोणतेही स्वयं-लॉग इन नसेल.</translation> +<translation id="5529037166721644841">ज्यावर डिव्हाइस व्यवस्थापन सेवेने डिव्हाइस धोरणाच्या माहितीसाठी क्वेरी केली आहे असा कालावधी मिलिसेकंदांमध्ये निर्दिष्ट करते. + + हे धोरण सेट करणे 3 तासांचे डीफॉल्ट मूल्य अधिलिखित करेल. या धोरणासाठी वैध मूल्ये 1800000 (30 मिनिटां) पासून 86400000 (1 दिवस) पर्यंत आहेत. या श्रेणीत नसलेली कोणतीही मूल्ये संबंधित सीमेत घेतली जातील. + + हे धोरण सेट न करता सोडल्यास <ph name="PRODUCT_OS_NAME" /> 3 तासांच्या डीफॉल्ट मूल्याचा वापर करेल. + + लक्षात ठेवा की प्लॅटफॉर्म धोरण सूचनांचे समर्थन करीत असल्यास, रीफ्रेश विलंब 24 तासांसाठी (सर्व डीफॉल्ट आणि धोरणाचे मूल्य दुर्लक्षित करून) सेट केला जाईल कारण असे अपेक्षित आहे की जेव्हा धोरण बदलेल तेव्हा धोरण सूचना स्वयंचलितपणे रीफ्रेश करण्याची सक्ती केली जाईल, जे वारंवार केल्या जाणार्या रीफ्रेश क्रिया थांबविते.</translation> <translation id="5535957389335373033">मिलिसेकंदांमध्ये किती वारंवारपणे नेटवर्क पॅकेटचे परीक्षण पाठविले जाते. हे धोरण अनसेट केलेले ठेवल्यास, डीफॉल्ट वारंवारता 3 मिनिटे असते. किमान @@ -1878,6 +1887,9 @@ या धोरणाकडे 'DefaultSearchProviderEnabled' धोरण सक्षम केले असल्यासच लक्ष दिले जाते.</translation> <translation id="7302043767260300182">AC उर्जेवर चालताना स्क्रीन लॉक विलंब</translation> +<translation id="7311458740754205918">हे सत्यवर सेट केलेले किंवा सेट न केलेले असल्यास, नवीन टॅब पृष्ठ वापरकर्त्यांच्या ब्राउझिंग इतिहास, स्वारस्ये किंवा स्थानाच्या आधारावर सामग्री सूचना दर्शवू शकते. + +हे असत्यावर सेट केलेले असल्यास, स्वयंचलितपणे-व्युत्पन्न होणार्या सामग्री सूचना, नवीन टॅब पृष्ठावर दर्शविल्या जाणार नाहीत.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> साठी अतिरिक्त आदेश रेखा मापदंड</translation> <translation id="7329842439428490522">वापरकर्ता इनपुटशिवाय वेळेची लांबी निर्दिष्ट करते ज्यानंतर बॅटरी उर्जेवर चालताना स्क्रीन बंद होते. @@ -2012,6 +2024,7 @@ <translation id="7763479091692861127"> OS च्या अद्यतने वापरण्यास अनुमती असलेल्या कनेक्शनचे प्रकार. OS अद्यतने संभाव्यतः त्यांच्या आकारामुळे कनेक्शनवर प्रचंड ताण देतात आणि जास्तीचा खर्च येऊ शकतो. तथापि, खर्चिक म्हणून विचारात घेतलेल्या कनेक्शन प्रकारांसाठी डीफॉल्टनुसार सक्षम नसतात, ज्यात त्यावेळी WiMax, Bluetooth आणि Cellular समाविष्ट असते. मान्य कनेक्शन प्रकार अभिज्ञापक "ethernet", "wifi", "wimax", "bluetooth" आणि "cellular" हे आहेत.</translation> +<translation id="7763614521440615342">नवीन टॅब पृष्ठावर सामग्री सूचना दर्शवा</translation> <translation id="7766336524667238790">अनुप्रयोग ID आणि आवृत्ती यासारख्या सक्रिय कियॉस्क सत्राविषयी माहितीचा अहवाल द्या. हे धोरण असत्य वर सेट केल्यास, सत्र माहितीचा अहवाल दिला जाणार नाही. सत्य वर सेट केल्यास किंवा अनसेट केलेला ठेवल्यास, सत्र माहितीचा अहवाल दिला जाईल.</translation> @@ -2173,9 +2186,9 @@ हे धोरण <ph name="PRODUCT_NAME" /> द्वारे अंतर्गत वापरासाठी आहे.</translation> <translation id="8170878842291747619"><ph name="PRODUCT_NAME" /> वर समाकलित केलेली Google Translate सेवा सक्षम करते. - आपण हे सेटिंग सक्षम केल्यास, योग्य असताना <ph name="PRODUCT_NAME" /> वापरकर्त्याला पृष्ठ अनुवादित करुन देणारा एक समाकलित केलेला टूलबार दर्शवेल. + आपण हे सेटिंग सक्षम केल्यास, योग्य असताना <ph name="PRODUCT_NAME" /> वापरकर्त्याला पृष्ठ भाषांतरित करुन देणारा एक समाकलित केलेला टूलबार दर्शवेल. - आपण हे सेटिंग अक्षम केल्यास, वापरकर्त्यांना अनुवाद बार कधीही दिसणार नाही. + आपण हे सेटिंग अक्षम केल्यास, वापरकर्त्यांना भाषांतर बार कधीही दिसणार नाही. आपण हे सेटिंग सक्षम किंवा अक्षम केल्यास, वापरकर्ते हे सेटिंग <ph name="PRODUCT_NAME" /> मध्ये बदलू किंवा अधिलिखित करू शकत नाहीत.
diff --git a/components/policy/resources/policy_templates_ms.xtb b/components/policy/resources/policy_templates_ms.xtb index ab651950..4a76c2c 100644 --- a/components/policy/resources/policy_templates_ms.xtb +++ b/components/policy/resources/policy_templates_ms.xtb
@@ -245,6 +245,13 @@ Jika dasar ini ditetapkan kepada benar, <ph name="PRODUCT_OS_NAME" /> akan cuba memuat turun beban bayar auto kemas kini melalui HTTP. Jika dasar ini ditetapkan kepada palsu atau tidak ditetapkan, HTTPS akan digunakan untuk memuat turun beban bayar auto kemas kini.</translation> <translation id="2006530844219044261">Pengurusan kuasa</translation> <translation id="201557587962247231">Kekerapan muat naik laporan status peranti</translation> +<translation id="2018836497795982119">Menentukan tempoh dalam milisaat ketika perkhidmatan pengurusan peranti diminta maklumat dasar pengguna. + + Tindakan menetapkan dasar ini akan mengatasi nilai lalai iaitu 3 jam. Nilai yang sah untuk dasar ini ialah dalam julat 1800000 (30 minit) hingga 86400000 (1 hari). Sebarang nilai yang tidak berada dalam julat ini akan diapit ke sempadan masing-masing. Jika platform menyokong pemberitahuan dasar, kelewatan muat semula akan ditetapkan kepada 24 jam kerana pemberitahuan dasar dijangka akan memaksa muat semula secara automatik apabila dasar berubah. + + Apabila dasar ini dibiarkan tanpa ditetapkan, <ph name="PRODUCT_NAME" /> akan menggunakan nilai lalai 3 jam. + + Ambil perhatian bahawa jika platform menyokong pemberitahuan dasar, kelewatan muat semula akan ditetapkan kepada 24 jam (mengabaikan semua nilai lalai dan nilai dasar ini) kerana pemberitahuan dasar dijangka akan memaksa muat semula secara automatik apabila dasar berubah, melakukan muat semula yang tidak diperlukan dengan lebih kerap.</translation> <translation id="2024476116966025075">Konfigurasikan nama domain yang diperlukan untuk pelanggan akses jauh</translation> <translation id="2030905906517501646">Kata kunci pembekal carian lalai</translation> <translation id="206623763829450685">Menetapkan skim pengesahan HTTP yang disokong oleh <ph name="PRODUCT_NAME" />. @@ -1086,11 +1093,6 @@ Walaupun dasar ini sendiri disokong pada platform di atas, ciri yang didayakannya mungkin tersedia pada lagi kurang platform. Bukan semua ciri Platform Web yang ditamatkan boleh didayakan semula. Hanya ciri yang disenaraikan dengan jelas di bawah ini boleh didayakan semula untuk tempoh yang terhad, yang berbeza bagi setiap ciri. Format umum bagi tanda rentetan ialah [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Sebagai rujukan, anda boleh dapati tujuan di sebalik perubahan ciri Platform Web di https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Dayakan kunci apabila peranti melahu atau digantung</translation> -<translation id="4445684791305970001">Melumpuhkan Alat Pembangun dan konsol JavaScript. - - Jika anda mendayakan tetapan ini, Alat Pembangun tidak boleh diakses dan elemen tapak web tidak lagi boleh diperiksa. Sebarang pintasan papan kekunci dan mana-mana menu atau masukan menu konteks untuk membuka Alat Pembangun atau Konsol JavaScript akan dilumpuhkan. - - Menetapkan pilihan ini kepada dilumpuhkan atau membiarkannya tanpa ditetapkan, akan membolehkan pengguna menggunakan Alat Pembangun dan konsol JavaScript.</translation> <translation id="4449545651113180484">Putar skrin 270 darjah mengikut arah jam</translation> <translation id="4467952432486360968">Sekat kuki pihak ketiga</translation> <translation id="4474167089968829729">Dayakan penyimpanan kata laluan pada pengurus kata laluan</translation> @@ -1351,6 +1353,13 @@ Jika dasar ini ditetapkan, sesi yang dinyatakan akan log masuk secara automatik selepas berlalunya suatu tempoh pada skrin log masuk tanpa interaksi pengguna. Sesi terbuka hendaklah telah dikonfigurasi (lihat |DeviceLocalAccounts|). Jika dasar ini tidak ditetapkan, log masuk automatik tidak akan berlaku.</translation> +<translation id="5529037166721644841">Menentukan tempoh dalam milisaat ketika perkhidmatan pengurusan peranti diminta maklumat dasar peranti. + + Tindakan menetapkan dasar ini akan mengatasi nilai lalai iaitu 3 jam. Nilai yang sah untuk dasar ini ialah dalam julat 1800000 (30 minit) hingga 86400000 (1 hari). + + Apabila dasar ini dibiarkan tanpa ditetapkan, <ph name="PRODUCT_OS_NAME" /> akan menggunakan nilai lalai 3 jam. + + Ambil perhatian bahawa jika platform menyokong pemberitahuan dasar, kelewatan muat semula akan ditetapkan kepada 24 jam (mengabaikan semua nilai lalai dan nilai dasar ini) kerana pemberitahuan dasar dijangka akan memaksa muat semula secara automatik apabila dasar berubah, melakukan muat semula yang tidak diperlukan dengan lebih kerap.</translation> <translation id="5535957389335373033">Kekerapan pemantauan bingkisan rangkaian dihantar, dalam milisaat. Jika dasar ini tidak ditetapkan, kekerapan lalai ialah 3 minit. Kekerapan minimum @@ -1919,6 +1928,9 @@ Dasar ini hanya dihormati jika dasar 'DefaultSearchProviderEnabled' didayakan.</translation> <translation id="7302043767260300182">Kelewatan kunci skrin apabila dijalankan dengan kuasa AC</translation> +<translation id="7311458740754205918">Jika dasar ini ditetapkan kepada benar atau tidak ditetapkan, halaman Tab Baharu boleh menunjukkan cadangan kandungan berdasarkan sejarah penyemakan imbas, minat atau lokasi pengguna. + + Jika dasar ini ditetapkan kepada palsu, cadangan kandungan yang dihasilkan secara automatik tidak ditunjukkan pada halaman Tab Baharu.</translation> <translation id="7323896582714668701">Parameter baris perintah tambahan untuk <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Menyatakan panjang masa tanpa input pengguna dan skrin akan dimatikan selepas masa ini tamat apabila dijalankan dengan kuasa bateri. @@ -2061,6 +2073,7 @@ <translation id="7763479091692861127"> Jenis sambungan yang dibenarkan untuk digunakan bagi kemas kini OS. Kemas kini OS mungkin akan membebankan sambungan disebabkan oleh saiznya dan boleh menyebabkan kos tambahan. Oleh itu, kemas kini ini tidak didayakan secara lalai untuk jenis sambungan yang dianggap mahal, yang merangkumi WiMax, Bluetooth dan Selular pada masa ini. Pengecam jenis sambungan yang diperakui ialah "ethernet", "wifi", "wimax", "bluetooth" dan "selular".</translation> +<translation id="7763614521440615342">Tunjukkan cadangan kandungan pada halaman Tab Baharu</translation> <translation id="7766336524667238790">Laporkan maklumat tentang sesi kios yang aktif, seperti ID dan versi aplikasi. @@ -2080,13 +2093,13 @@ <translation id="7796141075993499320">Membolehkan anda menentukan senarai pola url yang dibenarkan untuk menjalankan pemalam. Jika dasar ini dibiarkan tanpa ditetapkan, nilai lalai global akan digunakan untuk semua tapak sama ada dari dasar 'DefaultPluginsSetting' jika ia ditetapkan atau konfigurasi peribadi pengguna jika sebaliknya.</translation> -<translation id="7801886189430766248">Apabila dasar ini ditetapkan kepada benar, data apl Android dimuat naik ke pelayan Sandaran Android dan dipulihkan daripadanya semasa pemasangan semula apl untuk apl yang serasi. +<translation id="7801886189430766248">Apabila dasar ini ditetapkan kepada benar, data apl Android dimuat naik ke pelayan Android Backup dan dipulihkan daripadanya semasa pemasangan semula apl untuk apl yang serasi. - Apabila dasar ini ditetapkan kepada palsu, Perkhidmatan Sandaran Android akan dimatikan. + Apabila dasar ini ditetapkan kepada palsu, Android Backup Service akan dimatikan. Jika tetapan ini dikonfigurasikan, maka pengguna tidak akan dapat mengubahnya sendiri. - Jika tetapan ini tidak dikonfigurasikan, maka pengguna akan dapat menghidupkan dan mematikan Perkhidmatan Sandaran Android dalam apl Tetapan Android.</translation> + Jika tetapan ini tidak dikonfigurasikan, maka pengguna akan dapat menghidupkan dan mematikan Android Backup Service dalam apl Tetapan Android.</translation> <translation id="7818131573217430250">Tetapkan keadaan lalai mod kontras tinggi pada skrin log masuk</translation> <translation id="7831595031698917016">Menentukan kelewatan maksimum dalam milisaat antara menerima pentaksahan dan mengambil dasar baharu dari perkhidmatan pengurusan peranti.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb index 37d0b14f..13d684e6 100644 --- a/components/policy/resources/policy_templates_nl.xtb +++ b/components/policy/resources/policy_templates_nl.xtb
@@ -237,6 +237,13 @@ Als dit beleid is ingesteld op 'true' (waar), probeert <ph name="PRODUCT_OS_NAME" /> nettoladingen voor automatische updates te downloaden via HTTP. Als het beleid is ingesteld op 'false' (onwaar) of niet is geconfigureerd, wordt HTTPS gebruikt voor het downloaden van nettoladingen voor automatische updates.</translation> <translation id="2006530844219044261">Energiebeheer</translation> <translation id="201557587962247231">De frequentie van uploads van rapporten over de apparaatstatus</translation> +<translation id="2018836497795982119">Hiermee wordt de periode in milliseconden gespecificeerd waarna de apparaatbeheerservice wordt gevraagd om informatie over het gebruikersbeleid. + + Als je dit beleid instelt, wordt de standaardwaarde van 3 uur overschreven. Geldige waarden voor dit beleid liggen tussen 1800000 (30 minuten) en 86400000 (1 dag). Alle waarden die niet binnen dit bereik vallen, worden afgerond tot de betreffende minimum- of maximumgrens. Als het platform beleidsmeldingen ondersteunt, wordt de vernieuwingsvertraging ingesteld op 24 uur omdat beleidsmeldingen naar verwachting automatisch een vernieuwing afdwingen wanneer het beleid wordt gewijzigd. + + Als je dit beleid niet instelt, gebruikt <ph name="PRODUCT_NAME" /> de standaardwaarde van 3 uur. + + Houd er rekening mee dat als het platform beleidsmeldingen ondersteunt, de vernieuwingsvertraging wordt ingesteld op 24 uur (hierbij worden alle standaardinstellingen en de waarde van dit beleid genegeerd) omdat beleidsmeldingen naar verwachting automatisch een vernieuwing afdwingen wanneer het beleid wordt gewijzigd, waardoor frequentere vernieuwingen overbodig zijn.</translation> <translation id="2024476116966025075">De vereiste domeinnaam configureren voor clients voor externe toegang</translation> <translation id="2030905906517501646">Zoekwoord voor standaardzoekprovider</translation> <translation id="206623763829450685">Hiermee wordt gespecificeerd welke HTTP-verificatieschema's door <ph name="PRODUCT_NAME" /> worden ondersteund. @@ -1078,11 +1085,6 @@ Hoewel het beleid zelf op de bovenstaande platforms wordt ondersteund, is de functie die ermee wordt ingeschakeld mogelijk op minder platforms beschikbaar. Niet alle verouderde webplatformfuncties kunnen opnieuw worden ingeschakeld. Alleen de webplatformfuncties die hieronder worden vermeld, kunnen tijdelijk opnieuw worden ingeschakeld, waarbij de periode per functie verschilt. De algemene indeling van de stringtag is [NaamVerouderdeFunctie]_EffectiveUntil[jjjjmmdd]. De reden voor de wijzigingen van webplatformfuncties vind je op https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Vergrendeling inschakelen wanneer het apparaat inactief wordt of overschakelt op de slaapstand</translation> -<translation id="4445684791305970001">Hiermee worden de ontwikkelaarstools en de JavaScript-console uitgeschakeld. - - Als je deze instelling inschakelt, kunnen de ontwikkelaarstools niet meer worden geopend en kunnen website-elementen niet meer worden geïnspecteerd. Alle sneltoetsen en menu- en contextmenu-opties voor het openen van de ontwikkelaarstools of de JavaScript-console worden uitgeschakeld. - - Als je deze optie uitschakelt of niet instelt, kunnen ontwikkelaarstools en de JavaScript-console worden gebruikt.</translation> <translation id="4449545651113180484">Scherm 270 graden met de klok mee draaien</translation> <translation id="4467952432486360968">Indirecte cookies blokkeren</translation> <translation id="4474167089968829729">Opslaan van wachtwoorden in wachtwoordbeheer inschakelen</translation> @@ -1343,6 +1345,13 @@ Als dit beleid is ingesteld, wordt de opgegeven sessie automatisch ingelogd na een tijdsperiode zonder gebruikersinteractie op het inlogscherm is verstreken. De openbare sessie moet al zijn geconfigureerd (zie |DeviceLocalAccounts|). Als dit beleid niet is ingesteld, wordt er niet automatisch ingelogd.</translation> +<translation id="5529037166721644841">Hiermee wordt de periode in milliseconden gespecificeerd waarna de apparaatbeheerservice wordt gevraagd om informatie over het apparaatbeleid. + + Als je dit beleid instelt, wordt de standaardwaarde van 3 uur overschreven. Geldige waarden voor dit beleid liggen tussen 1800000 (30 minuten) en 86400000 (1 dag). Alle waarden die niet binnen dit bereik vallen, worden afgerond tot de betreffende minimum- of maximumgrens. + + Als je dit beleid niet instelt, gebruikt <ph name="PRODUCT_OS_NAME" /> de standaardwaarde van 3 uur. + + Houd er rekening mee dat als het platform beleidsmeldingen ondersteunt, de vernieuwingsvertraging wordt ingesteld op 24 uur (hierbij worden alle standaardinstellingen en de waarde van dit beleid genegeerd) omdat beleidsmeldingen naar verwachting automatisch een vernieuwing afdwingen wanneer het beleid wordt gewijzigd, waardoor frequentere vernieuwingen overbodig zijn.</translation> <translation id="5535957389335373033">Hoe vaak netwerkpakketten voor bijhouden worden verzonden, in milliseconden. Als dit beleid niet is ingesteld, is de standaardfrequentie 3 minuten. De minimumfrequentie is 30 seconden en de maximumfrequentie is 24 uur. Waarden die buiten dit bereik vallen, worden afgerond tot dit bereik.</translation> @@ -1901,6 +1910,9 @@ Dit beleid wordt alleen gerespecteerd als het beleid 'DefaultSearchProviderEnabled' is ingeschakeld.</translation> <translation id="7302043767260300182">Vertraging van schermvergrendeling wanneer op netstroom wordt gewerkt</translation> +<translation id="7311458740754205918">Als dit beleid is ingesteld op 'waar' of niet is ingesteld, kunnen op de nieuwe tabbladpagina contentsuggesties worden weergegeven op basis van de browsegeschiedenis, interesses en locatie van de gebruiker. + + Als dit is ingesteld op 'onwaar', worden er geen automatisch gegenereerde contentsuggesties weergegeven op de nieuwe tabbladpagina.</translation> <translation id="7323896582714668701">Extra opdrachtregelparameters voor <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Hiermee wordt de tijdsduur zonder input van gebruikers gespecificeerd waarna het scherm wordt uitgeschakeld als er op de accu wordt gewerkt. @@ -2043,6 +2055,7 @@ <translation id="7763479091692861127"> De verbindingstypen die mogen worden gebruikt voor updates voor het besturingssysteem. Updates voor het besturingssysteem kunnen de verbinding zwaar belasten door hun grootte en kunnen extra kosten tot gevolg hebben. Updates voor het besturingssysteem zijn daarom standaard uitgeschakeld voor dure verbindingstypen. Dit omvat momenteel de verbindingstypen WiMax, Bluetooth en Mobiel. De herkende verbindingstypen zijn 'ethernet', 'wifi', 'wimax', 'bluetooth' en 'mobiel'.</translation> +<translation id="7763614521440615342">Contentsuggesties weergeven op de nieuwe tabbladpagina</translation> <translation id="7766336524667238790">Informatie rapporteren over de actie kiosksessie, zoals de ID en versie van de app.
diff --git a/components/policy/resources/policy_templates_no.xtb b/components/policy/resources/policy_templates_no.xtb index 7b7c1f7..4f5b170 100644 --- a/components/policy/resources/policy_templates_no.xtb +++ b/components/policy/resources/policy_templates_no.xtb
@@ -239,6 +239,13 @@ Hvis denne innstillingen angis som sann, prøver <ph name="PRODUCT_OS_NAME" /> å laste ned nyttelaster med automatisk oppdatering via HTTP. Hvis innstillingen angis som usann eller ikke angis i det hele tatt, blir HTTPS brukt til å laste ned nyttelaster med automatisk oppdatering.</translation> <translation id="2006530844219044261">Strømstyring</translation> <translation id="201557587962247231">Frekvensen for opplasting av statusrapporter for enheter</translation> +<translation id="2018836497795982119">Angir perioden i millisekunder for når tjenesten for enhetsbehandling skal spørres om brukerinnstillinger. + + Hvis du angir denne regelen, overstyres standardverdien på tre timer. Gyldige verdier for denne regelen er i området mellom 1800000 (30 minutter) og 86400000 (én dag). Eventuelle verdier som ikke er i dette området, blir endret til den respektive grensen. Hvis plattformen støtter varsler om brudd på reglene, angis forsinkelsen for nye innlastinger til 24 timer, fordi det forventes at varsler om brudd på reglene tvinger nye innlastinger automatisk når regelen endres. + + Hvis du ikke spesifiserer noen periode, bruker <ph name="PRODUCT_NAME" /> standardverdien på tre timer. + + Merk: Hvis plattformen støtter varsler om brudd på reglene, angis forsinkelsen for nye innlastinger til 24 timer (dette ignorerer alle standarder og verdier i regelen), fordi det forventes at varsler om brudd på reglene tvinger nye innlastinger automatisk når regelen endres. Dette gjør at det ikke er nødvendig med hyppige nye innlastinger.</translation> <translation id="2024476116966025075">Konfigurer det nødvendige domenenavnet for klienter med ekstern tilgang</translation> <translation id="2030905906517501646">Søkeord for standard søkeleverandør</translation> <translation id="206623763829450685">Spesifiserer hvilke HTTP-autentiseringsskjemaer som støttes av <ph name="PRODUCT_NAME" />. @@ -1046,11 +1053,6 @@ Selv om selve regelen støttes på plattformene ovenfor, kan funksjonene som slås på, være tilgjengelige på færre plattformer. Ikke alle avviklede nettplattformfunksjoner kan slås på igjen. Bare funksjonene som uttrykkelig listes opp nedenfor, kan slås på igjen for en begrenset periode. Perioden varierer fra funksjon til funksjon. Det generelle formatet for streng-taggene er [NavnetPåDenAvvikledeFunksjonen]_EffectiveUntil[ååååmmdd]. Som referanse kan du gå til https://bit.ly/blinkintents for å se formålet med endringene av nettplattformfunksjonene. </translation> <translation id="4442582539341804154">Aktiver lås når enheten blir inaktiv eller suspendert</translation> -<translation id="4445684791305970001">Deaktiverer utviklerverktøyene og JavaScript-konsollen. - - Hvis du aktiverer denne innstillingen, har man ingen tilgang til utviklerverktøyene, og nettstedelementene kan ikke inspiseres lenger. Alle tastatursnarveier og eventuelle oppføringer i menyer eller kontekstmenyer som kan åpne utviklerverktøyene eller JavaScript-konsollen, blir deaktivert. - - Hvis dette alternativet deaktiveres eller ikke angis, kan utviklerverktøyene og JavaScript-konsollen brukes.</translation> <translation id="4449545651113180484">Rotér skjermen 270 grader med klokken</translation> <translation id="4467952432486360968">Blokkér tredjeparts informasjonskapsler</translation> <translation id="4474167089968829729">Slå på lagring av passord i passordbehandleren</translation> @@ -1305,6 +1307,13 @@ Hvis denne innstillingen angis, skjer det en automatisk pålogging etter en gitt periode av brukerinaktivitet. Den offentlige økten må allerede være konfigurert (se |DeviceLocalAccounts|). Hvis denne innstillingen ikke angis, skjer det ingen automatisk pålogging.</translation> +<translation id="5529037166721644841">Angir perioden i millisekunder for når tjenesten for enhetsbehandling skal forespørres om brukerinnstillinger. + + Hvis du angir denne regelen, overstyres standardverdien på tre timer. Gyldige verdier for denne regelen er i området mellom 1800000 (30 minutter) og 86400000 (én dag). Eventuelle verdier som ikke er i dette området, blir endret til den respektive grensen. + + Hvis du ikke spesifiserer noen periode, bruker <ph name="PRODUCT_OS_NAME" /> standardverdien på tre timer. + + Merk: Hvis plattformen støtter varsler om brudd på reglene, angis forsinkelsen for nye innlastinger til 24 timer (dette ignorerer alle standarder og verdier i regelen), fordi det forventes at varsler om brudd på reglene tvinger nye innlastinger automatisk når regelen endres. Dette gjør at det ikke er nødvendig med hyppige nye innlastinger.</translation> <translation id="5535957389335373033">Hvor ofte (i millisekunder) nettverkspakker for overvåking sendes. Hvis denne regelen ikke spesifiseres, er standardfrekvensen 3 minutter. @@ -1865,6 +1874,9 @@ Denne retningslinjen gjelder bare hvis retningslinjen DefaultSearchProviderEnabled er aktivert.</translation> <translation id="7302043767260300182">Skjermlåsforsinkelse når du bruker strømadapteren</translation> +<translation id="7311458740754205918">Hvis denne regelen er angitt som «true» (sann) eller ikke er angitt, kan nye faner vise innholdsforslag som er basert på brukerens nettleserlogg, interesser eller steder. + + Hvis den er angitt som «false» (usann), vises ikke automatisk genererte innholdsforslag på nye faner.</translation> <translation id="7323896582714668701">Ytterligere kommandolinjeparametere for <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Angir hvor lenge brukeren må være inaktiv før skjermen låses når enheten kjører på batteristrøm. @@ -2007,6 +2019,7 @@ <translation id="7763479091692861127"> Tilkoblingstypene som tillates for oppdateringer av operativsystem. Oppdateringer av operativsystem legger potensielt beslag på store deler av kapasiteten som følge av at de er omfattende operasjoner, og det kan påløpe ekstra kostnader. Derfor er slike oppdateringer som standard ikke slått på for tilkoblingstyper som anses som kostbare, herunder WiMax, Bluetooth og mobilnettverk. Identifikatorene som gjenkjennes for tilkoblingstyper er "ethernet", "wifi", "wimax", "bluetooth" og "cellular".</translation> +<translation id="7763614521440615342">Vis innholdsforslag på nye faner</translation> <translation id="7766336524667238790">Rapportér informasjon om den aktive kioskøkten, for eksempel app-ID og -versjon. @@ -2025,7 +2038,7 @@ <translation id="7796141075993499320">Gjør at du kan angi en liste over nettadressemønstre som spesifiserer hvilke nettsteder som får kjøre programtillegg. Hvis denne retningslinjen ikke angis, brukes den globale verdien for alle nettsteder, enten fra retningslinjenDefaultPluginsSetting hvis den er angitt, eller fra brukerens egen konfigurasjon hvis den nevnte innstillingen ikke er angitt.</translation> -<translation id="7801886189430766248">Når denne regelen er satt til true (sann), lastes Android-appdata opp til Android Backup Service og gjenopprettes derfra når kompatible apper installeres på nytt. +<translation id="7801886189430766248">Når denne regelen er satt til true (sann), lastes Android-appdata opp til Android Backup-tjenere og gjenopprettes derfra når kompatible apper installeres på nytt. Når denne regelen settes til false (usann), blir Android Backup Service slått av.
diff --git a/components/policy/resources/policy_templates_pl.xtb b/components/policy/resources/policy_templates_pl.xtb index e0327dd..9a8b4ff 100644 --- a/components/policy/resources/policy_templates_pl.xtb +++ b/components/policy/resources/policy_templates_pl.xtb
@@ -225,6 +225,13 @@ Jeśli ustawisz tu wartość prawda, <ph name="PRODUCT_OS_NAME" /> będzie próbować pobierać ładunki aktualizacji automatycznych przez HTTP. Jeśli nie skonfigurujesz tej zasady lub ustawisz w niej wartość fałsz, do pobierania ładunków aktualizacji automatycznych będzie używany protokół HTTPS.</translation> <translation id="2006530844219044261">Zarządzanie energią</translation> <translation id="201557587962247231">Częstotliwość pobierania raportów o stanie urządzenia</translation> +<translation id="2018836497795982119">Określa, co ile milisekund do usługi zarządzania urządzeniami będzie wysyłane zapytanie o zasady dotyczące użytkowników. + + Skonfigurowanie tej zasady powoduje zastąpienie wartości domyślnej 3 godzin. Dozwolone są wartości od 1 800 000 (30 minut) do 86 400 000 (1 dzień). Wartości spoza tego zakresu zostaną sprowadzone do odpowiedniej wartości granicznej. Jeśli platforma obsługuje powiadomienia o naruszeniach zasad, czas odświeżania będzie ustawiony na 24 godziny, ponieważ powiadomienia te powinny automatycznie wymuszać odświeżenie po każdej zmianie zasad. + + Pozostawienie tej zasady nieskonfigurowanej powoduje, że <ph name="PRODUCT_NAME" /> używa wartości domyślnej 3 godzin. + + Uwaga: jeśli platforma obsługuje powiadomienia o naruszeniach zasad, czas odświeżania będzie ustawiony na 24 godziny (wartości domyślne i wartość tej zasady będą ignorowane), ponieważ powiadomienia te powinny automatycznie wymuszać odświeżenie po każdej zmianie zasad, przez co częstsze odświeżanie jest niepotrzebne.</translation> <translation id="2024476116966025075">Konfiguracja wymaganej nazwy domeny dla klientów zdalnego dostępu</translation> <translation id="2030905906517501646">Słowo kluczowe domyślnego dostawcy wyszukiwania</translation> <translation id="206623763829450685">Pozwala określić schematy uwierzytelniania HTTP obsługiwane w <ph name="PRODUCT_NAME" />. @@ -1022,7 +1029,6 @@ Mimo że zasada działa na tych platformach, włączana przez nią funkcja może być dostępna tylko na niektórych z nich. Nie wszystkie wycofane funkcje platform internetowych można ponownie włączyć. Zasada pozwala włączyć tylko te wymienione poniżej – na określony czas, który różni się w zależności od funkcji. Ogólny format tagu z ciągiem znaków to [NazwaWycofanejFunkcji]_EffectiveUntil[rrrrmmdd]. Przyczyny zmian funkcji platform internetowych możesz w razie potrzeby znaleźć na https://bit.ly/blinkintents </translation> <translation id="4442582539341804154">Włącz blokadę w przypadku bezczynności lub zawieszenia działania urządzenia</translation> -<translation id="4445684791305970001">Wyłącza narzędzia dla programistów i konsolę JavaScript. Jeśli włączysz to ustawienie, niemożliwe będzie uzyskanie dostępu do narzędzi dla programistów i dokonanie przeglądu elementów witryny. Wszelkie skróty klawiszowe oraz pozycje w menu aplikacji i menu kontekstowym umożliwiające otwarcie narzędzi dla programistów lub konsoli JavaScript będą nieaktywne. Wyłączenie lub nieskonfigurowanie tej opcji umożliwi korzystanie z narzędzi dla programistów i konsoli JavaScript.</translation> <translation id="4449545651113180484">Obróć ekran w prawo o 270 stopni</translation> <translation id="4467952432486360968">Blokuj pliki cookie innych firm</translation> <translation id="4474167089968829729">Włącz zapisywanie haseł w menedżerze haseł</translation> @@ -1242,6 +1248,13 @@ Jeśli ta zasada jest ustawiona, użytkownik zostanie automatycznie zalogowany do określonej sesji po upływie określonego czasu nieaktywności na ekranie logowania. Sesja publiczna musi zostać wcześniej skonfigurowana (zobacz zasadę |DeviceLocalAccounts|). Jeśli ta zasada jest nieustawiona, automatyczne logowanie nie działa.</translation> +<translation id="5529037166721644841">Określa, co ile milisekund do usługi zarządzania urządzeniami będzie wysyłane zapytanie o zasady dotyczące urządzeń. + + Skonfigurowanie tej zasady powoduje zastąpienie wartości domyślnej 3 godzin. Dozwolone są wartości od 1 800 000 (30 minut) do 86 400 000 (1 dzień). Wartości spoza tego zakresu zostaną sprowadzone do odpowiedniej wartości granicznej. + + Pozostawienie tej zasady nieskonfigurowanej powoduje, że <ph name="PRODUCT_OS_NAME" /> używa wartości domyślnej 3 godzin. + + Uwaga: jeśli platforma obsługuje powiadomienia o zasadach, czas odświeżania będzie ustawiony na 24 godziny (wartości domyślne i wartość tej zasady będą ignorowane), ponieważ powiadomienia te powinny automatycznie wymuszać odświeżenie po każdej zmianie zasad, przez co częstsze odświeżanie jest niepotrzebne.</translation> <translation id="5535957389335373033">Częstotliwość wysyłania pakietów sieciowych monitorowania (w milisekundach). Jeśli ta zasada nie jest skonfigurowana, domyślna częstotliwość wynosi trzy minuty. @@ -1761,6 +1774,9 @@ Ta zasada jest stosowana tylko wtedy, gdy włączono zasadę „DefaultSearchProviderEnabled”.</translation> <translation id="7302043767260300182">Opóźnienie blokady ekranu przy zasilaniu sieciowym</translation> +<translation id="7311458740754205918">Jeśli ta zasada ma wartość prawda lub nie jest skonfigurowana, na stronie Nowa karta mogą pojawiać się polecane treści wybrane na podstawie historii przeglądania, zainteresowań lub lokalizacji użytkownika. + + Jeśli ta zasada ma wartość fałsz, automatycznie wybierane polecane treści nie będą wyświetlać się na stronie Nowa karta.</translation> <translation id="7323896582714668701">Dodatkowe parametry wiersza poleceń dla <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Określa, po jakim czasie nieaktywności użytkownika wyłączany jest ekran przy zasilaniu z baterii. @@ -1893,6 +1909,7 @@ <translation id="7763479091692861127"> Typy połączeń, które mogą być używane do aktualizowania systemu operacyjnego. Z powodu swojego rozmiaru aktualizacje te silnie wykorzystują połączenie, co może skutkować dodatkowymi kosztami. Dlatego domyślnie są wyłączone w przypadku połączeń uznanych za „kosztowne”, czyli aktualnie dla WiMax, Bluetooth i komórek. Rozpoznawane identyfikatory typów połączeń to „ethernet”, „wifi”, „wimax”, „bluetooth” i „cellular”.</translation> +<translation id="7763614521440615342">Pokazuj polecane treści na stronie Nowa karta</translation> <translation id="7766336524667238790">Przesyłaj informacje o aktywnej sesji publicznej, np. dotyczące identyfikatora i wersji aplikacji.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb index dc61e73..154e4e7 100644 --- a/components/policy/resources/policy_templates_pt-BR.xtb +++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -229,6 +229,13 @@ Se essa política for definida como "true", o <ph name="PRODUCT_OS_NAME" /> tentará fazer o download das cargas úteis de atualização automática via HTTP. Se a política for definida como "false" ou não for definida, o HTTPS será usado para o download das cargas úteis de atualização automática.</translation> <translation id="2006530844219044261">Gerenciamento de energia</translation> <translation id="201557587962247231">Frequência de uploads de relatórios de status do dispositivo</translation> +<translation id="2018836497795982119">Especifica o período em milissegundos em que o serviço de gerenciamento de dispositivos é consultado para o recebimento de informações sobre a política do usuário. + + A definição dessa política modifica o valor padrão de três horas. Os valores válidos para essa política compreendem o período entre 1.800.000 (30 minutos) e 86.400.000 (1 dia). Todos os valores que não estiverem nesse período serão fixados no respectivo limite. Se a plataforma for compatível com as notificações sobre políticas, o atraso de atualização será definido para 24 horas, pois espera-se que as notificações sobre políticas forcem uma atualização automaticamente sempre que política for alterada. + + Deixar a política sem definição fará o <ph name="PRODUCT_NAME" /> utilizar o valor padrão de três horas. + + Se a plataforma for compatível com notificações sobre políticas, o atraso de atualização será configurado para 24 horas (ignorando todos os padrões e o valor da política), pois espera-se que as notificações sobre políticas forcem uma atualização automaticamente sempre que a política for alterada, tornando as atualizações mais frequentes desnecessárias.</translation> <translation id="2024476116966025075">Configurar o nome de domínio obrigatório para clientes de acesso remoto</translation> <translation id="2030905906517501646">Palavra-chave do provedor de pesquisa padrão</translation> <translation id="206623763829450685">Especifica quais esquemas de autenticação HTTP são compatíveis com <ph name="PRODUCT_NAME" />. @@ -1013,7 +1020,6 @@ Embora a política seja compatível com as plataformas acima, o recurso que ela ativa pode estar disponível em menos plataformas, Nem todos os recursos de uso suspenso da plataforma Web podem ser reativados. Apenas aqueles explicitamente listados abaixo podem ser reativados por um período de tempo limitado, e isso difere de acordo com o recurso. O formato geral da tag de string será [NomeDoRecursoDeUsoSuspenso]_EffectiveUntil[aaaammdd]. Como referência, é possível verificar o objeto por trás das alterações do recurso da plataforma Web em https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Ativar o bloqueio quando o dispositivo entrar no modo ocioso ou suspenso</translation> -<translation id="4445684791305970001">Desativa as Ferramentas do desenvolvedor e o console JavaScript. Se ativar esta configuração, as Ferramentas do desenvolvedor não podem ser acessadas e elementos de websites não poderão mais ser inspecionados. Quaisquer entradas para abrir as Ferramentas do desenvolvedor ou o Console de JavaScript em atalhos de teclado, menus ou menus de contextos serão desativadas. Definir esta opção como desativada ou deixá-la sem definição permitirá a utilização das Ferramentas do desenvolvedor e do console JavaScript.</translation> <translation id="4449545651113180484">Girar tela no sentido horário em 270 graus</translation> <translation id="4467952432486360968">Bloquear cookies de terceiros</translation> <translation id="4474167089968829729">Ativar salvamento de senhas no gerenciador de senhas</translation> @@ -1225,6 +1231,13 @@ Se esta política for definida, automaticamente ocorrerá o login na sessão especificada após haver transcorrido um período sem interação do usuário na tela de login. A sessão pública já deve estar configurada (consulte |DeviceLocalAccounts|). Se esta política não for definida, não ocorrerá login automático.</translation> +<translation id="5529037166721644841">Especifica o período em milissegundos em que o serviço de gerenciamento de dispositivos é consultado para o recebimento de informações sobre a política do dispositivo. + + A definição dessa política modifica o valor padrão de três horas. Os valores válidos para essa política compreendem o período entre 1.800.000 (30 minutos) e 86.400.000 (1 dia). Todos os valores que não estão nesse período serão fixados no respectivo limite. + + Deixar a política sem definição fará o <ph name="PRODUCT_OS_NAME" /> utilizar o valor padrão de três horas. + + Se a plataforma for compatível com notificações sobre políticas, o atraso de atualização será configurado para 24 horas (ignorando todos os padrões e o valor da política), pois espera-se que as notificações sobre políticas forcem uma atualização automaticamente sempre que a política for alterada, tornando as atualizações mais frequentes desnecessárias.</translation> <translation id="5535957389335373033">Frequência com que os pacotes de monitoramento de rede são enviados, em milissegundos. Se esta política for configurada, a frequência padrão é de três minutos. A frequência @@ -1749,6 +1762,9 @@ Esta política será respeitada apenas se a política 'DefaultSearchProviderEnabled' estiver ativada.</translation> <translation id="7302043767260300182">Intervalo de bloqueio da tela no funcionamento com alimentação CA</translation> +<translation id="7311458740754205918">Se a política é definida como true ou não é configurada, a página "Nova guia" pode mostrar sugestões de conteúdo com base no histórico de navegação, nos interesses ou no local do usuário. + + Se a política for definida como false, as sugestões de conteúdo geradas automaticamente não serão mostradas na página "Nova guia".</translation> <translation id="7323896582714668701">Parâmetros de linha de comando adicionais para o <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Especifica o período de inatividade do usuário após o qual a tela é desligada no funcionamento com a energia da bateria. @@ -1881,6 +1897,7 @@ <translation id="7763479091692861127"> Os tipos de conexão que podem ser usados para atualizações do sistema operacional. As atualizações do sistema operacional podem colocar grande pressão sobre a conexão, devido a seu tamanho, e poderão incorrer em custos adicionais. Portanto, por padrão, não são ativadas para tipos de conexão considerados dispendiosos, o que inclui WiMax, Bluetooth, WiMax e Cellular, no momento. Os identificadores de tipos de conexão reconhecidos são "ethernet", "wifi", "WiMAX", "bluetooth" e "celular".</translation> +<translation id="7763614521440615342">Mostrar sugestões de conteúdo na página "Nova guia"</translation> <translation id="7766336524667238790">Informar detalhes sobre a sessão de quiosque ativa, por exemplo, versão e código do aplicativo.
diff --git a/components/policy/resources/policy_templates_pt-PT.xtb b/components/policy/resources/policy_templates_pt-PT.xtb index da9bee8..324ca4c 100644 --- a/components/policy/resources/policy_templates_pt-PT.xtb +++ b/components/policy/resources/policy_templates_pt-PT.xtb
@@ -233,6 +233,13 @@ Se esta política for definida como verdadeira, o <ph name="PRODUCT_OS_NAME" /> tentará transferir payloads de atualização automática através de HTTP. Se esta política for definida como falsa ou não for definida, será utilizado HTTPS para transferir payloads de atualização automática.</translation> <translation id="2006530844219044261">Gestão de energia</translation> <translation id="201557587962247231">Frequência de carregamentos de relatórios de estado do dispositivo</translation> +<translation id="2018836497795982119">Especifica o período em milissegundos no qual o serviço de gestão de dispositivos é consultado quanto a informações da política do utilizador. + + A definição desta política substitui o valor predefinido de 3 horas. Os valores válidos para esta política encontram-se no intervalo de 1 800 000 (30 minutos) a 86 400 000 (1 dia). Quaisquer valores que não se encontrem neste intervalo são ajustados para o respetivo limite. Se a plataforma suportar notificações sobre políticas, o atraso de atualização é definido para 24 horas porque é esperado que as notificações sobre políticas forcem uma atualização automaticamente, sempre que a política sofrer alterações. + + Deixar esta política por definir faz com que o <ph name="PRODUCT_NAME" /> utilize o valor predefinido de três horas. + + Tenha em atenção que, se a plataforma suportar notificações sobre políticas, o atraso de atualização é definido para 24 horas (ao ignorar todas as predefinições e o valor desta política) porque é esperado que as notificações sobre políticas forcem uma atualização automaticamente, sempre que a política sofrer alterações, o que torna desnecessárias as atualizações mais frequentes.</translation> <translation id="2024476116966025075">Configurar o nome do domínio obrigatório para clientes de acesso remoto</translation> <translation id="2030905906517501646">Palavra-chave do fornecedor de pesquisas predefinido</translation> <translation id="206623763829450685">Especifica quais os esquemas de autenticação HTTP que o <ph name="PRODUCT_NAME" /> suporta. @@ -1024,7 +1031,6 @@ Embora a política em si seja suportada nas plataformas acima, a funcionalidade que está a ativar pode estar disponível em menos plataformas. Nem todas as funcionalidades de plataformas Web descontinuadas podem ser reativadas. Apenas podem ser reativadas por um período limitado de tempo as que estão indicadas explicitamente na lista abaixo, o que difere consoante a funcionalidade. O formato geral da etiqueta de string é [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Como referência, pode encontrar a intenção por detrás das alterações às funcionalidades de plataformas Web em https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Ativar o bloqueio quando o dispositivo fica inativo ou entra em suspensão.</translation> -<translation id="4445684791305970001">Desativa as Ferramentas do Programador e a Consola de JavaScript. Se ativar esta definição, não será possível aceder às Ferramentas do Programador e os elementos de Web sites deixarão de ser inspecionados. Todos os atalhos de teclado e entradas de menu ou de menu de contexto para abrir as Ferramentas do Programador ou a Consola de JavaScript serão desativados. Se desativar ou não definir esta opção, permitirá que o utilizador use as Ferramentas do Programador e a Consola de JavaScript.</translation> <translation id="4449545651113180484">Rodar o ecrã 270 graus para a direita</translation> <translation id="4467952432486360968">Bloquear cookies de terceiros</translation> <translation id="4474167089968829729">Permitir guardar palavras-passe no gestor de palavras-passe</translation> @@ -1244,6 +1250,13 @@ Se esta política estiver definida, a sessão especificada será iniciada automaticamente após ter decorrido um período de tempo no ecrã de início de sessão sem a interação do utilizador. A sessão pública já tem de estar configurada (ver |DeviceLocalAccounts|). Se esta política não estiver definida, o início de sessão automático não irá ocorrer.</translation> +<translation id="5529037166721644841">Especifica o período em milissegundos no qual o serviço de gestão de dispositivos é consultado quanto a informações da política do utilizador. + + A definição desta política substitui o valor predefinido de 3 horas. Os valores válidos para esta política encontram-se no intervalo de 1 800 000 (30 minutos) a 86 400 000 (1 dia). Quaisquer valores que não se encontrem neste intervalo são ajustados para o respetivo limite. + + Deixar esta política por definir faz com que o <ph name="PRODUCT_OS_NAME" /> utilize o valor predefinido de 3 horas. + + Tenha em atenção que, se a plataforma suportar notificações sobre políticas, o atraso de atualização é definido para 24 horas (ao ignorar todas as predefinições e o valor desta política) porque é esperado que as notificações sobre políticas forcem uma atualização automaticamente, sempre que a política sofrer alterações, o que torna desnecessárias as atualizações mais frequentes.</translation> <translation id="5535957389335373033">Com que frequência são enviados os pacotes de monitorização de rede, em milissegundos. Se esta política não for definida, a frequência predefinida é de 3 minutos. A frequência @@ -1773,6 +1786,9 @@ Esta política só é respeitada se a política "DefaultSearchProviderEnabled" estiver ativada.</translation> <translation id="7302043767260300182">Atraso do bloqueio do ecrã quando o dispositivo está ligado à eletricidade</translation> +<translation id="7311458740754205918">Se esta política for definida para verdadeira ou não for definida, a página Novo separador pode mostrar sugestões de conteúdo com base no histórico de navegação, nos interesses ou na localização do utilizador. + + Se for definida para falsa, as sugestões de conteúdo geradas automaticamente não são mostradas na página Novo separador.</translation> <translation id="7323896582714668701">Parâmetros da linha de comandos adicionais para <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Especifica o período de tempo sem atividade por parte do utilizador após o qual se desliga o ecrã quando o dispositivo está a utilizar a energia da bateria. @@ -1905,6 +1921,7 @@ <translation id="7763479091692861127"> Os tipos de ligação permitidos para utilização em atualizações do SO. As atualizações do SO podem sobrecarregar a ligação devido ao seu tamanho, o que pode implicar custos adicionais. Por conseguinte, por predefinição, não estão ativadas para tipos de ligação considerados caros, nomeadamente WiMax, Bluetooth e Celular. Os identificadores dos tipos de ligação reconhecidos são "ethernet", "wifi", "wimax", "bluetooth" e "celular".</translation> +<translation id="7763614521440615342">Mostrar sugestões de conteúdo na página Novo separador</translation> <translation id="7766336524667238790">Comunica informações acerca da sessão ativa do quiosque, como o ID e a versão da aplicação.
diff --git a/components/policy/resources/policy_templates_ro.xtb b/components/policy/resources/policy_templates_ro.xtb index 2a1a84e7..5ca2e12 100644 --- a/components/policy/resources/policy_templates_ro.xtb +++ b/components/policy/resources/policy_templates_ro.xtb
@@ -238,6 +238,13 @@ Dacă politica este activată, <ph name="PRODUCT_OS_NAME" /> va încerca să descarce încărcările utile pentru actualizările automate prin HTTP. Dacă politica este dezactivată sau nu este configurată, la descărcarea încărcărilor utile pentru actualizări automate se va utiliza HTTPS.</translation> <translation id="2006530844219044261">Gestionarea consumului de energie</translation> <translation id="201557587962247231">Frecvența de încărcare a raportului privind starea dispozitivului</translation> +<translation id="2018836497795982119">Specifică intervalul (în milisecunde) la care serviciului de gestionare a dispozitivelor i se solicită informații legate de politica privind utilizatorii. + + Setarea acestei politici înlocuiește valoarea prestabilită de 3 ore. Valorile valide pentru această politică se află în intervalul 1800000 (30 de minute) – 86400000 (1 zi). Toate valorile care nu se află în acest interval vor fi fixate în limitele respective. Dacă platforma acceptă notificări privind politica, întârzierea actualizării va fi setată la 24 de ore, deoarece se așteaptă ca notificările privind politica să forțeze automat o actualizare ori de câte ori politica se modifică. + + Dacă politica nu este setată, <ph name="PRODUCT_NAME" /> va folosi valoarea prestabilită de 3 ore. + + Reține că dacă platforma acceptă notificări privind politica, întârzierea actualizării va fi setată la 24 de ore (vor fi ignorate valorile prestabilite și valoarea acestei politici), deoarece se așteaptă ca notificările privind politica să forțeze automat o actualizare ori de câte ori politica se modifică, actualizările mai frecvente fiind inutile.</translation> <translation id="2024476116966025075">Configurează numele de domeniu necesar pentru clienții cu acces la distanță</translation> <translation id="2030905906517501646">Cuvânt cheie pentru furnizorul de căutare prestabilit</translation> <translation id="206623763829450685">Specifică schemele de autentificare HTTP acceptate de <ph name="PRODUCT_NAME" />. @@ -1037,7 +1044,6 @@ Deși politica în sine este acceptată pe platformele de mai sus, funcția pe care o activează poate fi disponibilă pe mai puține platforme. Nu toate funcțiile învechite ale platformei web pot fi reactivate. Numai cele specificate mai jos pot fi reactivate, pentru o perioadă limitată, aceasta variind de la o funcție la alta. Formatul general al etichetei de tip șir de caractere va fi [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Ca referință, poți să te informezi despre scopul modificărilor privind funcțiile platformei web la http://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Activați blocarea când dispozitivul este inactiv sau suspendat</translation> -<translation id="4445684791305970001">Dezactivează Instrumentele pentru dezvoltatori și consola JavaScript. Dacă activați această setare, Instrumentele pentru dezvoltatori nu pot fi accesate, iar elementele site-urilor web nu mai pot fi inspectate. Toate comenzile rapide de la tastatură și toate intrările din meniuri sau din meniurile contextuale pentru deschiderea Instrumentelor pentru dezvoltatori sau a consolei JavaScript vor fi dezactivate. Dacă dezactivați această opțiune sau nu o setați, utilizatorul va putea să folosească Instrumentele pentru dezvoltatori și consola JavaScript.</translation> <translation id="4449545651113180484">Rotește ecranul la 270 de grade în sensul acelor de ceasornic</translation> <translation id="4467952432486360968">Blochează cookie-urile terță parte</translation> <translation id="4474167089968829729">Activează salvarea parolelor în managerul de parole</translation> @@ -1261,6 +1267,13 @@ Dacă această politică este setată, sesiunea specificată va fi conectată în mod automat după o perioadă de timp care s-a scurs după afișarea ecranului de conectare fără ca utilizatorul să interacționeze cu acesta. Sesiunea publică trebuie să fie deja configurată (vedeți |DeviceLocalAccounts|). Dacă setarea acestei politici este anulată, nu va exista o conectare automată.</translation> +<translation id="5529037166721644841">Specifică intervalul (în milisecunde) la care serviciului de gestionare a dispozitivelor i se solicită informații legate de politica privind dispozitivele. + + Setarea acestei politici înlocuiește valoarea prestabilită de 3 ore. Valorile valide pentru această politică se află în intervalul 1800000 (30 de minute) – 86400000 (1 zi). Toate valorile care nu se află în acest interval vor fi fixate în limitele respective. + + Dacă politica nu este setată, <ph name="PRODUCT_OS_NAME" /> va folosi valoarea prestabilită de 3 ore. + + Reține că dacă platforma acceptă notificări privind politica, întârzierea actualizării va fi setată la 24 de ore (vor fi ignorate valorile prestabilite și valoarea acestei politici), deoarece se așteaptă ca notificările privind politica să forțeze automat o actualizare ori de câte ori politica se modifică, actualizările mai frecvente fiind inutile.</translation> <translation id="5535957389335373033">Frecvența de trimitere a pachetelor de monitorizare din rețea, în milisecunde. Dacă această politică nu este configurată, frecvența prestabilită este de 3 minute. Frecvența minimă @@ -1791,6 +1804,9 @@ Această politică este respectată numai dacă este activată politica „DefaultSearchProviderEnabled”.</translation> <translation id="7302043767260300182">Interval până la blocarea ecranului la funcționarea pe c.a.</translation> +<translation id="7311458740754205918">Dacă politica este activată sau nu este configurată, este posibil ca pagina Filă nouă să afișeze sugestii privind conținutul pe baza istoricului de navigare, a intereselor și a locației utilizatorului. + + Dacă politica este dezactivată, sugestiile generate automat privind conținutul nu sunt afișate pe pagina Filă nouă.</translation> <translation id="7323896582714668701">Parametri de linie de comandă suplimentari pentru <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Indică intervalul de timp fără intervenția utilizatorului după care ecranul este oprit atunci când dispozitivul funcționează pe baterie. @@ -1923,6 +1939,7 @@ <translation id="7763479091692861127"> Tipurile de conexiune care pot fi utilizate pentru actualizările sistemului de operare. Din cauza dimensiunii lor, actualizările sistemului de operare pot suprasolicita conexiunea și pot genera costuri suplimentare. Prin urmare, în mod prestabilit, acestea nu sunt activate pentru tipurile de conexiune considerate scumpe, printre care se numără în prezent conexiunile WiMax, cele prin Bluetooth și cele prin rețele mobile. Identificatorii recunoscuți pentru tipurile de conexiune sunt „ethernet”, „wifi”, „wimax”, „bluetooth” și „cellular”.</translation> +<translation id="7763614521440615342">Afișează sugestii privind conținutul pe pagina Filă nouă</translation> <translation id="7766336524667238790">Raportează informații privind sesiunea chioșc activă, cum ar fi ID-ul și versiunea aplicației.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb index a8c99d5..cca6f4cc 100644 --- a/components/policy/resources/policy_templates_ru.xtb +++ b/components/policy/resources/policy_templates_ru.xtb
@@ -226,6 +226,13 @@ Если задано значение true, то <ph name="PRODUCT_OS_NAME" /> будет пытаться скачивать автоматические обновления по протоколу HTTP. Если задано значение false или правило не настроено, обновления будут скачиваться по протоколу HTTPS.</translation> <translation id="2006530844219044261">Управление питанием</translation> <translation id="201557587962247231">Частота загрузки отчетов об устройствах</translation> +<translation id="2018836497795982119">Задает периодичность в миллисекундах, с которой в службу управления устройством направляются запросы о политике пользователя. + + Установка этого правила переопределяет значение по умолчанию, равное 3 часам. Допустимые значения: от 1 800 000 (30 минут) до 86 400 000 (1 день). Любые значения, выходящие за пределы этого диапазона, будут приведены к соответствующей предельной величине. Если платформа поддерживает уведомления о политиках, то значение будет установлено на 24 часа, потому что при уведомлениях автоматически должен отправляться запрос обновления, если политики были изменены. + + Если это правило не установлено, <ph name="PRODUCT_NAME" /> будет использовать значение по умолчанию: 3 часа. + + Если платформа поддерживает уведомления о политиках, то значение будет установлено на 24 часа (игнорируя все значения по умолчанию и установки правила), потому что при уведомлениях автоматически должен отправляться запрос обновления, если политики были изменены. Как следствие, более частые обновления становятся не нужны.</translation> <translation id="2024476116966025075">Выбор обязательного домена для клиентов удаленного доступа</translation> <translation id="2030905906517501646">Ключевое слово для поисковой системы по умолчанию</translation> <translation id="206623763829450685">Определяет поддерживаемые схемы HTTP-аутентификации для <ph name="PRODUCT_NAME" />. @@ -1009,7 +1016,6 @@ Это правило поддерживается на всех указанных выше платформах, но сами функции могут на них не работать. Включить можно только те функции, которые перечислены ниже. Для каждой функции установлено свое время включения. Общий формат тега: [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Подробную информацию о целях изменения функций веб-платформы вы найдете здесь: http://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Включение блокировки, когда устройство не используется или его работа приостановлена</translation> -<translation id="4445684791305970001">Отключает Инструменты разработчика и консоль JavaScript. Если этот параметр включен, Инструменты разработчика недоступны, сайты невозможно анализировать с их помощью, а все быстрые клавиши, управляющие Инструментами разработчика и консолью JavaScript, отключены. Если этот параметр отключен или не задан, Инструменты разработчика и консоль JavaScript можно использовать.</translation> <translation id="4449545651113180484">Повернуть экран на 270 градусов по часовой стрелке</translation> <translation id="4467952432486360968">Блокировать сторонние файлы cookie</translation> <translation id="4474167089968829729">Включить сохранение паролей</translation> @@ -1230,6 +1236,13 @@ Если правило задано, по прошествии заданного времени бездействия на экране входа будет выполнен автоматический вход в указанный сеанс общего доступа. Сеанс общего доступа необходимо настроить заранее (см. |DeviceLocalAccounts|). Если правило не задано, автоматический вход не будет выполняться.</translation> +<translation id="5529037166721644841">Задает периодичность в миллисекундах, с которой в службу управления устройством направляются запросы о политике пользователя. + + Установка этого правила переопределяет значение по умолчанию, равное 3 часам. Допустимые значения: от 1 800 000 (30 минут) до 86 400 000 (1 день). Любые значения, выходящие за пределы этого диапазона, будут приведены к соответствующей предельной величине. + + Если это правило не установлено, <ph name="PRODUCT_OS_NAME" /> будет использовать значение по умолчанию: 3 часа. + + Если платформа поддерживает уведомления о политиках, то значение будет установлено на 24 часа (игнорируя все значения по умолчанию и установки правила), потому что при уведомлениях автоматически должен отправляться запрос обновления, если политики были изменены. Как следствие, более частые обновления становятся не нужны.</translation> <translation id="5535957389335373033">Частота отправки сетевых пакетов (в миллисекундах). Если это правило не настроено, частота по умолчанию составляет 3 минуты. @@ -1752,6 +1765,9 @@ Оно действует, только если включено правило DefaultSearchProviderEnabled.</translation> <translation id="7302043767260300182">Задержка блокировки экрана при работе от сети</translation> +<translation id="7311458740754205918">Если это правило включено или не установлено, на странице быстрого доступа могут предлагаться страницы на базе истории просмотра, интересов или рекомендаций. + + Если это правило выключено, пользователю не будут автоматически предлагаться рекомендованные страницы.</translation> <translation id="7323896582714668701">Дополнительные параметры командной строки для <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Указывает, через какое время бездействия экран отключается при работе от батареи. @@ -1884,6 +1900,7 @@ <translation id="7763479091692861127"> Типы подключений, которые разрешается использовать для скачивания обновлений ОС. Из-за большого размера файлов скачивание может перегружать соединение и требовать дополнительных расходов. Поэтому передача через сети с высокой стоимостью трафика, такие как WiMAX, Bluetooth и сеть сотовой связи, по умолчанию отключена. Поддерживаются следующие типы подключений: ethernet, wifi, wimax, bluetooth и cellular.</translation> +<translation id="7763614521440615342">Показывать рекомендации на странице быстрого доступа</translation> <translation id="7766336524667238790">Позволяет отправлять отчеты об активных сеансах киоска, включающие, например, идентификатор и версию приложения. Если вы укажете значение False, информация о сеансе передаваться не будет.</translation>
diff --git a/components/policy/resources/policy_templates_sk.xtb b/components/policy/resources/policy_templates_sk.xtb index 9dd233d..a1c66ef7 100644 --- a/components/policy/resources/policy_templates_sk.xtb +++ b/components/policy/resources/policy_templates_sk.xtb
@@ -232,6 +232,13 @@ Ak toto pravidlo nastavíte na hodnotu true, systém <ph name="PRODUCT_OS_NAME" /> sa bude pokúšať sťahovať dátové časti automatických aktualizácií prostredníctvom protokolu HTTP. Ak pravidlo nastavíte na hodnotu false alebo ho nenastavíte, na sťahovanie dátových častí automatických aktualizácií sa použije protokol HTTPS.</translation> <translation id="2006530844219044261">Správa možností napájania</translation> <translation id="201557587962247231">Frekvencia nahrávania hlásení stavu zariadenia</translation> +<translation id="2018836497795982119">Určuje interval (v ms), v ktorom budú službe správy zariadenia odosielané žiadosti o informácie o pravidlách pre používateľov. + + Nastavením tohto pravidla bude prepísaná predvolená hodnota 3 hodiny. Platné hodnoty pre toto pravidlo sa pohybujú v rozmedzí od 1800000 (30 minút) do 86400000 (1 deň). Hodnoty mimo daný rozsah budú upravené na príslušnú medznú hodnotu. Ak platforma podporuje upozornenia na pravidlá, oneskorenie obnovenia bude nastavené na 24 hodín, pretože sa očakáva, že upozornenia na pravidlá vynútia automatické obnovenie po každej zmene pravidiel. + + Ak toto pravidlo nenastavíte, <ph name="PRODUCT_NAME" /> použije predvolenú hodnotu – 3 hodiny. + + Upozorňujeme, že ak platforma podporuje upozornenia na pravidlá, oneskorenie obnovenia bude nastavené na 24 hodín (všetky predvolené nastavenia a hodnota určená v tomto pravidle budú ignorované), pretože sa očakáva, že upozornenia na pravidlá vynútia automatické obnovenie po každej zmene pravidiel. Častejšie obnovenia sú preto zbytočné.</translation> <translation id="2024476116966025075">Konfigurovať požadovaný názov domény pre klientov vzdialeného prístupu</translation> <translation id="2030905906517501646">Kľúčové slovo predvoleného poskytovateľa vyhľadávania</translation> <translation id="206623763829450685">Určuje, ktoré schémy overenia totožnosti pomocou protokolu HTTP bude prehliadač <ph name="PRODUCT_NAME" /> podporovať. @@ -1068,11 +1075,6 @@ Zatiaľ čo samotné pravidlo podporujú platformy uvedené vyššie, funkcie, ktoré povoľuje, môžu byť k dispozícii na menšom množstve platforiem. Niektoré zastarané funkcie webovej platformy nie je možné znova povoliť. Je možné povoliť iba tie funkcie, ktoré sú výslovne uvedené nižšie (na obmedzený čas, ktorý sa líši podľa funkcie). Všeobecný formát značky reťazca je [NázovZastaranejFunkcie]_EffectiveUntil[rrrrmmdd]. Dôvody na zmenu funkcií webovej platformy nájdete na adrese https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Povoliť zámok, ak je zariadenie nečinné alebo pozastavené</translation> -<translation id="4445684791305970001">Zakáže Nástroje pre vývojárov a konzolu JavaScript. - - Ak toto nastavenie povolíte, nebude možné pristupovať k nástrojom pre vývojárov ani kontrolovať prvky webových stránok. Zakázané budú tiež všetky klávesové skratky a položky klasických či kontextových ponúk, pomocou ktorých je možné nástroje pre vývojárov alebo konzolu kódu JavaScript otvoriť. - - Ak túto možnosť nastavíte ako zakázanú alebo ju ponecháte nenastavenú, umožní to používateľovi použiť Nástroje pre vývojárov a konzolu JavaScript.</translation> <translation id="4449545651113180484">Otočiť obrazovku v smere hodinových ručičiek o 270 stupňov</translation> <translation id="4467952432486360968">Blokovať súbory cookie tretej strany</translation> <translation id="4474167089968829729">Povolenie ukladania hesiel do správcu hesiel</translation> @@ -1250,7 +1252,7 @@ Umožňuje povoliť predvídanie siete v prehliadači <ph name="PRODUCT_NAME" /> a zabráni používateľom toto nastavenie zmeniť. - Toto pravidlo ovláda spoločne s predbežným načítaním servera DNS aj predbežné pripojenie pomocou protokolu TCP a technológie SSL a predbežné vykreslenie webových stránok. Názov pravidla je založený na predbežnom načítaní servera DNS z historických dôvodov.. + Toto pravidlo ovláda spoločne s predbežným načítaním servera DNS aj predbežné pripojenie pomocou protokolu TCP a technológie SSL a predbežné vykreslenie webových stránok. Názov pravidla je založený na predbežnom načítaní servera DNS z historických dôvodov. Ak toto nastavenie povolíte alebo zakážete, používatelia ho v prehliadači <ph name="PRODUCT_NAME" /> nebudú môcť prepísať. @@ -1336,6 +1338,13 @@ Ak je pravidlo nastavené, zariadenie sa po uplynutí určitého časového obdobia nečinnosti používateľa na prihlasovacej obrazovke automaticky prihlási do určenej relácie. Verejná relácia už musí byť nakonfigurovaná (prečítajte si časť |DeviceLocalAccounts|). Ak pravidlo nastavené nie je, automatické prihlásenie nenastane.</translation> +<translation id="5529037166721644841">Určuje interval (v ms), v ktorom budú službe správy zariadenia odosielané žiadosti o informácie o pravidlách pre zariadenie. + + Nastavením tohto pravidla bude prepísaná predvolená hodnota 3 hodiny. Platné hodnoty pre toto pravidlo sa pohybujú v rozmedzí od 1800000 (30 minút) do 86400000 (1 deň). Hodnoty mimo daný rozsah budú upravené na príslušnú medznú hodnotu. + + Ak toto pravidlo nenastavíte, <ph name="PRODUCT_OS_NAME" /> použije predvolenú hodnotu – 3 hodiny. + + Upozorňujeme, že ak platforma podporuje upozornenia na pravidlá, oneskorenie obnovenia bude nastavené na 24 hodín (všetky predvolené nastavenia a hodnota určená v tomto pravidle budú ignorované), pretože sa očakáva, že upozornenia na pravidlá vynútia automatické obnovenie po každej zmene pravidiel. Častejšie obnovenia sú preto zbytočné.</translation> <translation id="5535957389335373033">Ako často sa odosielajú sledovacie sieťové pakety (v milisekundách). Ak toto pravidlo nie je nastavené, použije sa predvolená frekvencia tri minúty. Minimálna frekvencia je 30 sekúnd a maximálna 24 hodín – hodnoty mimo tohto rozsahu budú prispôsobené na príslušnú hranicu.</translation> @@ -1899,6 +1908,9 @@ Toto pravidlo sa použije iba v prípade, že je povolené pravidlo DefaultSearchProviderEnabled.</translation> <translation id="7302043767260300182">Oneskorenie uzamknutia obrazovky pri používaní napájacieho zdroja</translation> +<translation id="7311458740754205918">Ak toto pravidlo nastavíte na hodnotu True alebo ho nenastavíte, na stránke na novej karte sa môžu zobrazovať návrhy obsahu na základe používateľovej histórie prehliadania, záujmov alebo polohy. + + Ak toto pravidlo nastavíte na možnosť False, automaticky generované návrhy obsahu sa na stránke na novej karte nezobrazujú.</translation> <translation id="7323896582714668701">Dodatočné parametre príkazového riadka pre <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Určuje dobu nečinnosti používateľa, po ktorej sa obrazovka pri napájaní z batérie vypne. @@ -2041,6 +2053,7 @@ <translation id="7763479091692861127"> Typy pripojení, ktoré je možné používať na aktualizáciu operačného systému. Aktualizácie operačného systému môžu vzhľadom na objem dát významne zaťažovať pripojenie a môžu tak zvýšiť vaše poplatky. Predvolene preto nie sú povolené pre typy pripojení, ktoré sú považované za finančne nákladné, ako sú momentálne pripojenia WiMax, Bluetooth a mobilné pripojenie. Medzi uznávané identifikátory typov pripojení patria "ethernet", "wifi", "wimax", "bluetooth" a "cellular".</translation> +<translation id="7763614521440615342">Zobrazovať návrhy obsahu na stránke na novej karte</translation> <translation id="7766336524667238790">Nahlasuje informácie o aktívnej relácii režimu verejného terminálu, ako sú identifikátor a verzia aplikácie. @@ -2060,7 +2073,7 @@ <translation id="7796141075993499320">Umožňuje nastaviť zoznam vzorov webových adries určujúcich webové stránky, ktoré môžu spúšťať doplnky. Ak toto pravidlo ponecháte nenastavené, použije sa v prípade všetkých webových stránok globálna predvolená hodnota buď z pravidla „DefaultPluginsSetting“ (ak je nastavené), alebo z osobnej konfigurácie používateľa.</translation> -<translation id="7801886189430766248">Keď toto pravidlo nastavíte na hodnotu True, údaje aplikácií pre Android sa nahrajú na severy služby Android Backup a pri opätovnej inštalácii kompatibiliných aplikácií ich z nich obnoví. +<translation id="7801886189430766248">Keď toto pravidlo nastavíte na hodnotu True, údaje aplikácií pre Android sa nahrajú na servery služby Android Backup a pri opätovnej inštalácii kompatibilných aplikácií ich z nich obnoví. Keď ho nastavíte na hodnotu False, služba Android Backup Service bude vypnutá.
diff --git a/components/policy/resources/policy_templates_sl.xtb b/components/policy/resources/policy_templates_sl.xtb index 90eefeb..9d493dd 100644 --- a/components/policy/resources/policy_templates_sl.xtb +++ b/components/policy/resources/policy_templates_sl.xtb
@@ -241,6 +241,13 @@ Če je ta pravilnik nastavljen na »true«, poskuša <ph name="PRODUCT_OS_NAME" /> samoposodobitvene pakete prenesti prek HTTP. Če je ta pravilnik nastavljen na »false« ali ni nastavljen, se za prenos samoposodobitvenih paketov uporabi HTTPS.</translation> <translation id="2006530844219044261">Upravljanje porabe</translation> <translation id="201557587962247231">Pogostost nalaganja poročil o stanju naprave</translation> +<translation id="2018836497795982119">Določa obdobje v milisekundah, po katerem se storitvi za upravljanje naprave pošlje poizvedba za uporabniške podatke pravilnika. + + Z nastavitvijo tega pravilnika se preglasi privzeta vrednost 3 ur. Veljavne vrednosti za ta pravilnik so med 1.800.000 (30 minut) in 86.400.000 (1 dan). Vrednosti, ki niso v tem obsegu, bodo spremenjene na ustrezno mejo obsega. Če okolje podpira obvestila pravilnika, je zakasnitev osvežitve nastavljena na 24 ur, ker je pričakovano, da obvestila pravilnika ob vsakokratni zamenjavi pravilnika samodejno vsilijo osvežitev. + + Če tega pravilnika ne nastavitev, bo brskalnik <ph name="PRODUCT_NAME" /> uporabljal privzeto vrednost 3 ur. + + Če okolje podpira obvestila pravilnika, je zakasnitev osvežitve nastavljena na 24 ur (prezrejo se vse privzete nastavitve in vrednost tega pravilnika), ker je pričakovano, da obvestila pravilnika ob vsakokratni zamenjavi pravilnika samodejno vsilijo osvežitev, zaradi česar so pogostejše osvežitve nepotrebne.</translation> <translation id="2024476116966025075">Konfiguriranje imena domene, potrebnega za odjemalce za oddaljeni dostop</translation> <translation id="2030905906517501646">Privzeta ključna beseda iskalnika</translation> <translation id="206623763829450685">Določa, katere načine preverjanja pristnosti HTTP podpira <ph name="PRODUCT_NAME" />. @@ -927,7 +934,7 @@ Navaja razširitve, samodejno nameščene za uporabnika predstavitvenega načina, za naprave v maloprodajnem načinu. Te razširitve so shranjene v napravi in jih je mogoče namestiti brez povezave. Vsak vnos na seznamu vsebuje slovar, ki mora vključevati ID razširitve v polju »extension-id« in URL za posodobitev v polju »update-url«.</translation> -<translation id="388237772682176890">Ta pravilnik je zastarel v različicoi M53 in je bil odstranjen v različici M54 zaradi umika podpore za protokol SPDY/3.1. +<translation id="388237772682176890">Ta pravilnik je zastarel v različici M53 in je odstranjen v različici M54 zaradi umika podpore za protokol SPDY/3.1. Onemogoči uporabo protokola SPDY v brskalniku <ph name="PRODUCT_NAME" />. @@ -1082,11 +1089,6 @@ Medtem ko je ta pravilnik podprt v zgornjih okoljih, je funkcija, ki jo omogoča, morda na voljo v manj okoljih. Vseh zastarelih funkcij spletnega okolja ni mogoče znova omogočiti; za omejen čas (različno od funkcije do funkcije) je mogoče samo tiste, ki so izrecno navedene spodaj. Splošna oblika zapisa oznake niza bo [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Če vas zanima referenčno gradivo in namen spremembe funkcij spletnega okolja, obiščite http://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Omogoči zaklepanje, ko je naprava nedejavna ali preide v stanje pripravljenosti</translation> -<translation id="4445684791305970001">Onemogoči orodja za razvijalce in konzolo JavaScript. - - Če to nastavitev omogočite, dostop do orodij za razvijalcev ne bo mogoč in spletnih elementov ne bo več mogoče pregledovati. Vse bližnjične tipke in vnosi v meniju ali priročnem meniju za odpiranje orodij za razvijalce in konzole za JavaScript bodo onemogočeni. - - Če to možnost onemogočite ali jo ne nastavite, bo lahko uporabnik uporabljal orodja za razvijalce in konzolo JavaScript.</translation> <translation id="4449545651113180484">Sukanje zaslona v smeri urnega kazalca za 270 stopinj</translation> <translation id="4467952432486360968">Blokiraj piškotke drugih spletnih mest</translation> <translation id="4474167089968829729">Omogočanje shranjevanja gesel v upravitelju gesel</translation> @@ -1259,11 +1261,11 @@ Če je ta pravilnik vklopljen, bo sistem <ph name="PRODUCT_OS_NAME" /> preprečil, da bi se naprava zagnala v načinu za razvijalce. Če je stikalo za razvijalce vklopljeno, sistem ne bo dovolil zagona in bo prikazal zaslon z napako. Če ta pravilnik ni nastavljen ali je izklopljen, bo način za razvijalce v napravi še naprej na voljo.</translation> -<translation id="5203271367506489164">Ta pravilnik je zastarel v različici M48 v dobro pravilnika »NetworkPredictionOptions« in je bil odstranjen v različici M54. +<translation id="5203271367506489164">Ta pravilnik je zastarel in nadomeščen s pravilnikom »NetworkPredictionOptions« v različici M48. Odstranjen je v različici M54. Omogoča omrežno predvidevanje v brskalniku <ph name="PRODUCT_NAME" /> in uporabnikom preprečuje spreminjanje te nastavitve. - Ta pravilnik ne nadzira le vnaprejšnjega prenosa podatkov DNS, ampak tudi vnaprejšnje povezovanje TCP in SSL ter vnaprejšnje upodabljanje spletnih strani. Ime pravilnika se nanaša na vnaprejšnji prenos podatkov DNS iz zgodovinskih razlogov. + Ta pravilnik ne nadzira le vnaprejšnjega prenosa podatkov DNS, ampak tudi vnaprejšnje povezovanje TCP in SSL ter vnaprejšnje upodabljanje spletnih strani. Ime pravilnika se nanaša na vnaprejšnji prenos podatkov DNS zaradi zgodovinskih razlogov. Če to nastavitev omogočite ali onemogočite, je uporabniki v brskalniku <ph name="PRODUCT_NAME" /> ne morejo spremeniti ali preglasiti. @@ -1349,6 +1351,13 @@ Če je ta pravilnik nastavljen, bo po preteku določenega časa nedejavnosti uporabnika na zaslonu za prijavo določena seja prijavljena samodejno. Javna seja mora biti pred tem konfigurirana (glejte |DeviceLocalAccounts|). Če ta pravilnik ni nastavljen, ni samodejne prijave.</translation> +<translation id="5529037166721644841">Določa obdobje v milisekundah, po katerem se storitvi za upravljanje naprave pošlje poizvedba za podatke pravilnika naprave. + + Z nastavitvijo tega pravilnika se preglasi privzeta vrednost 3 ur. Veljavne vrednosti za ta pravilnik so med 1.800.000 (30 minut) in 86.400.000 (1 dan). Vrednosti, ki niso v tem obsegu, bodo spremenjene na ustrezno mejo obsega. + + Če tega pravilnika ne nastavitev, bo brskalnik <ph name="PRODUCT_OS_NAME" /> uporabljal privzeto vrednost 3 ur. + + Če okolje podpira obvestila pravilnika, je zakasnitev osvežitve nastavljena na 24 ur (prezrejo se vse privzete nastavitve in vrednost tega pravilnika), ker je pričakovano, da obvestila pravilnika ob vsakokratni zamenjavi pravilnika samodejno vsilijo osvežitev, zaradi česar so pogostejše osvežitve nepotrebne.</translation> <translation id="5535957389335373033">Kako pogosto se pošiljajo omrežni paketi za spremljanje (v milisekundah). Če ta pravilnik ni nastavljen, je privzeta pogostost 3 minute. Najmanjša @@ -1916,6 +1925,9 @@ Ta pravilnik velja le, če je omogočen pravilnik »DefaultSearchProviderEnabled«.</translation> <translation id="7302043767260300182">Časovni zamik zaklepa zaslona, če se napaja iz električnega omrežja</translation> +<translation id="7311458740754205918">Če je ta pravilnik omogočen ali ni nastavljen, bodo na strani »Nov zavihek« morda prikazani predlogi vsebine na podlagi uporabnikove zgodovine brskanja, zanimanj ali lokacije. + + Če je ta pravilni onemogočen, samodejno ustvarjeni predlogi vsebine ne bodo prikazani na strani »Nov zavihek«.</translation> <translation id="7323896582714668701">Dodatni parametri ukazne vrstice za <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Določa trajanje uporabnikove nedejavnosti, po preteku katere se zaslon izklopi, če se napaja iz akumulatorja. @@ -2058,6 +2070,7 @@ <translation id="7763479091692861127"> Vrste povezav, ki so dovoljene za uporabo za posodobitve operacijskega sistema. Posodobitve operacijskega sistema lahko zaradi svoje velikosti zelo obremenijo povezavo in lahko prinesejo dodatne stroške. Zato trenutno niso omogočene za vrste povezave, ki štejejo za drage; trenutno so to WiMax, Bluetooth in prenos podatkov v mobilnem omrežju. Prepoznani identifikatorji vrste povezav so »ethernet«, »wifi«, »wimax«, »bluetooth« in »cellular«.</translation> +<translation id="7763614521440615342">Prikaz predlogov vsebine na strani »Nov zavihek«</translation> <translation id="7766336524667238790">Poročanje podatkov o aktivni seji kioska, na primer ID-ja in različice aplikacije.
diff --git a/components/policy/resources/policy_templates_sr.xtb b/components/policy/resources/policy_templates_sr.xtb index 4474a7e..eb322cf6 100644 --- a/components/policy/resources/policy_templates_sr.xtb +++ b/components/policy/resources/policy_templates_sr.xtb
@@ -240,6 +240,13 @@ Ако подесите ове смернице на Тачно, <ph name="PRODUCT_OS_NAME" /> ће покушати да преузме корисне податке из аутоматских ажурирања преко HTTP-а. Ако подесите ове смернице на Нетачно или их не подесите, користићемо HTTPS за преузимање корисних података из аутоматских ажурирања.</translation> <translation id="2006530844219044261">Управљање енергијом</translation> <translation id="201557587962247231">Учесталост отпремања извештаја о статусу уређаја</translation> +<translation id="2018836497795982119">Наводе период у милисекундама током којег се од услуге за управљање уређајем траже информације о смерницама за корисника. + + Подешавањем ових смерница замењује се подразумевана вредност од 3 сата. Важеће вредности за ове смернице су у опсегу од 1.800.000 (30 минута) до 86.400.000 (1 дан). Све вредности које нису у овом опсегу биће прилагођене да би се уклопиле у одговарајуће ограничење. Ако платформа подржава обавештења о смерницама, кашњење освежавања ће бити подешено на 24 сата зато што се очекује да обавештења о смерницама принудно покрену освежавање аутоматски када год се смернице промене. + + Ако не подесите ове смернице, <ph name="PRODUCT_NAME" /> ће користити подразумевану вредност од 3 сата. + + Имајте на уму да ће кашњење освежавања, под условом да платформа подржава обавештења о смерницама, бити подешено на 24 сата (занемарујући све подразумеване вредности и вредност ових смерница) зато што се очекује да обавештења о смерницама принудно покрену освежавање аутоматски када год се смернице промене, па чешћа освежавања неће бити неопходна.</translation> <translation id="2024476116966025075">Конфигуриши потребно име домена за клијенте за даљински приступ</translation> <translation id="2030905906517501646">Кључна реч подразумеваног добављача претраге</translation> <translation id="206623763829450685">Наводe које шеме HTTP провере аутентичности подржава <ph name="PRODUCT_NAME" />. @@ -1068,11 +1075,6 @@ Иако су саме смернице подржане на горенаведеним платформама, функција коју омогућавају може да буде доступна на мањем броју платформи. Не могу све застареле функције веб-платформи поново да се омогуће. Само функције које су изричито наведене у наставку могу поново да се омогуће на ограничено време, које зависи од функције. Општи формат ознаке низа ће бити [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Референцу за намеру која чини основу промена функција веб-платформи можете да пронађете на https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Омогућавање закључавања када уређаји постану неактивни или уђу у стање спавања</translation> -<translation id="4445684791305970001">Онемогућава Алатке за програмере и JavaScript конзолу. - - Ако омогућите ово подешавање, Алаткама за програмере више неће моћи да се приступа и елементи веб сајта више неће моћи да се проверавају. Све тастерске пречице и сви уноси менија или контекстуалних менија за отварање Алатки за програмере или JavaScript конзоле биће онемогућени. - - Ако онемогућите ову опцију или је не подесите, моћи ћете да користите Алатке за програмере и JavaScript конзолу.</translation> <translation id="4449545651113180484">Ротира екран у смеру кретања казаљке на сату за 270 степени</translation> <translation id="4467952432486360968">Блок колачиће треће стране</translation> <translation id="4474167089968829729">Омогућите чување лозинки у менаџеру лозинки</translation> @@ -1333,6 +1335,13 @@ Ако су ове смернице подешене, наведена сесија ће бити аутоматски пријављена када истекне одређени период на екрану за пријављивање без корисничке интеракције. Јавна сесија мора већ да буде конфигурисана (погледајте |DeviceLocalAccounts|). Ако ове смернице нису подешене, неће бити аутоматског пријављивања.</translation> +<translation id="5529037166721644841">Наводе период у милисекундама током којег се од услуге за управљање уређајем траже информације о смерницама за корисника. + + Подешавањем ових смерница замењује се подразумевана вредност од 3 сата. Важеће вредности за ове смернице су у опсегу од 1.800.000 (30 минута) до 86.400.000 (1 дан). Све вредности које нису у овом опсегу биће прилагођене да би се уклопиле у одговарајуће ограничење. + + Ако не подесите ове смернице, <ph name="PRODUCT_OS_NAME" /> ће користити подразумевану вредност од 3 сата. + + Имајте на уму да ће кашњење освежавања, под условом да платформа подржава обавештења о смерницама, бити подешено на 24 сата (занемарујући све подразумеване вредности и вредност ових смерница) зато што се очекује да обавештења о смерницама принудно покрену освежавање аутоматски када год се смернице промене, па чешћа освежавања неће бити неопходна.</translation> <translation id="5535957389335373033">Колико често се шаљу мрежни пакети за надгледање, у милисекундама. Ако нисте подесили ове смернице, подразумевана учесталост је 3 минута. Највећа @@ -1894,6 +1903,9 @@ Ове смернице се поштују само ако су омогућене смернице „DefaultSearchProviderEnabled“.</translation> <translation id="7302043767260300182">Време до закључавања екрана када је уређај прикључен на струју</translation> +<translation id="7311458740754205918">Ако подесите ове смернице на Тачно или их не подесите, страница нове картице ће можда приказивати предлоге за садржај на основу корисникове историје прегледања, интересовања или локације. + + Ако подесите ове смернице на Нетачно, аутоматски генерисани предлози за садржај се не приказују на страници нове картице.</translation> <translation id="7323896582714668701">Додатни параметри командне линије за <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Наводе период без корисничких уноса после кога се екран искључује када се користи батерија. @@ -2036,6 +2048,7 @@ <translation id="7763479091692861127"> Типови веза који могу да се користе за ажурирања ОС-а. Ажурирања ОС-а могу потенцијално да оптерете везу због величине и изазову додатне трошкове. У складу са тим, она подразумевано нису омогућена за типове веза који се сматрају скупим, а који тренутно обухватају WiMax, Bluetooth и мобилне мреже. Идентификатори препознатих типова веза су „ethernet“, „wifi“, „wimax“, „bluetooth“ и „cellular“.</translation> +<translation id="7763614521440615342">Приказују предлоге за садржај на страници нове картице</translation> <translation id="7766336524667238790">Шаљу информације о активној сесији киоска, попут ИД-а и верзије апликације.
diff --git a/components/policy/resources/policy_templates_sv.xtb b/components/policy/resources/policy_templates_sv.xtb index 5c7778bb..c7a398af 100644 --- a/components/policy/resources/policy_templates_sv.xtb +++ b/components/policy/resources/policy_templates_sv.xtb
@@ -245,6 +245,13 @@ Om policyn är inställd på sant kommer <ph name="PRODUCT_OS_NAME" /> att försöka ladda ned betalningar med automatisk uppdatering via HTTP. Om policyn är inställd på falskt eller inte har angetts kommer HTTPS att användas för att ladda ned betalningar med automatisk uppdatering.</translation> <translation id="2006530844219044261">Energibesparing (DPMS)</translation> <translation id="201557587962247231">Frekvens för antal uppladdningar av statusrapport för enhet</translation> +<translation id="2018836497795982119">Anger en tid i millisekunder för hur ofta enhetshanteringstjänsten avfrågas för principinformation. + + När den här principen har ställts in åsidosätts standardvärdet tre timmar. Giltiga värden är från 1800000 (30 minuter) till 86400000 (en dag). Värden utanför intervallet ändras till närmaste gräns. Om plattformen stöder principmeddelanden används 24 timmar som uppdateringsfördröjning, eftersom uppdateringar då sker automatiskt så fort en princip förändras. + + Om den här principen inte har ställts in används standardvärdet 3 timmar i <ph name="PRODUCT_NAME" />. + + Observera att om plattformen stöder principmeddelanden används 24 timmar som uppdateringsfördröjning (och alla standardvärden och detta principvärde ignoreras), eftersom uppdateringar då sker automatiskt så fort en princip förändras.</translation> <translation id="2024476116966025075">Konfigurera domännamnet som krävs för fjärråtkomstklienter</translation> <translation id="2030905906517501646">Sökord för standardsökleverantör</translation> <translation id="206623763829450685">Anger vilka scheman för HTTP-autentisering som stöds av <ph name="PRODUCT_NAME" />. @@ -1086,11 +1093,6 @@ Även om själva policyn stöds av plattformarna ovan kanske inte den återaktiverade funktionen stöds av alla dessa plattformar. Det är inte alla utfasade webbplattformsfunktioner som kan återaktiveras. Endast de funktioner som uttryckligen tas upp i listan nedan kan återaktiveras under en begränsad tid som varierar mellan olika funktioner. Strängtaggens allmänna format är [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. För information om ändringarna av webbplattformsfunktioner hänvisar vi till http://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Aktivera lås när enheten är i viloläge eller vänteläge</translation> -<translation id="4445684791305970001">Policyn inaktiverar utvecklarverktygen och JavaScript-konsolen. - - Om du aktiverar inställningen går det inte att använda utvecklarverktygen och det går inte att inspektera webbplatselement. Alla kortkommandon och alla objekt på menyer och snabbmenyer som öppnar utvecklarverktygen eller JavaScript-konsolen inaktiveras. - - Om det här alternativet inaktiveras eller inte anges kan utvecklarverktygen och JavaScript-konsolen användas.</translation> <translation id="4449545651113180484">Rotera skärmen 270 grader medurs</translation> <translation id="4467952432486360968">Blockera cookies från tredje part</translation> <translation id="4474167089968829729">Aktivera lösenordshanteraren för sparade lösenord</translation> @@ -1355,6 +1357,13 @@ Om policyn har angetts kommer den angivna sessionen automatiskt att loggas in efter att en viss tid har förflutit på inloggningsskärmen utan åtgärder från användaren. Den offentliga sessionen måste redan vara konfigurerad (se |DeviceLocalAccounts|). Om policyn inte har angetts sker ingen automatisk inloggning.</translation> +<translation id="5529037166721644841">Anger en tid i millisekunder för hur ofta enhetshanteringstjänsten avfrågas för principinformation. + + När den här principen har ställts åsidosätts standardvärdet tre timmar. Giltiga värden är från 1800000 (30 minuter) till 86400000 (en dag). Värden utanför intervallet ändras till närmaste gräns. + + Om den här principen inte har ställts in används standardvärdet 3 timmar i <ph name="PRODUCT_OS_NAME" />. + + Observera att om plattformen stöder principmeddelanden används 24 timmar som uppdateringsfördröjning (och alla standardvärden och detta principvärde ignoreras), eftersom uppdateringar då sker automatiskt så fort en princip förändras. Det gör tätare uppdateringar överflödiga.</translation> <translation id="5535957389335373033">Hur ofta nätverkspaket för övervakning skickas, i millisekunder. Om policyn inte har angetts är standardfrekvensen 3 minuter. Den lägsta @@ -1921,6 +1930,9 @@ Den här policyn gäller bara om policyn DefaultSearchProviderEnabled är aktiverad.</translation> <translation id="7302043767260300182">Skärmlåsningstid när enheten är ansluten till elnätet</translation> +<translation id="7311458740754205918">Om principen är inställd på sant eller inte inställd alls kan förslag på innehåll utifrån användarens webbhistorik, intressen eller plats visas på sidan Ny flik. + + Om principen är inställd på falskt visas inte förslag på innehåll som genererats automatiskt på sidan Ny flik.</translation> <translation id="7323896582714668701">Ytterligare kommandoradsparametrar för <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Anger efter hur lång tid utan åtgärd från användaren som skärmen ska stängas av när enheten drivs av batteriet. @@ -2063,6 +2075,7 @@ <translation id="7763479091692861127"> De typer av anslutningar som är tillåtna att använda uppdateringar av operativsystem. Uppdateringar av operativsystem belastar anslutningen hårt på grund av dess storlek och kan medföra extra kostnader. Därför är de inte aktiverade som standard för anslutningstyper som anses vara dyra. Det gäller bland annat WiMax, Bluetooth och Cellular. Identifierarna för giltiga anslutningstyper är ”ethernet”, ”wifi”, ”wimax”, ”bluetooth” och ”cellular”.</translation> +<translation id="7763614521440615342">Visa förslag på innehåll på sidan Ny flik</translation> <translation id="7766336524667238790">Rapporterar information om den aktiva kiosksessionen, bland annat app-id och appversion.
diff --git a/components/policy/resources/policy_templates_sw.xtb b/components/policy/resources/policy_templates_sw.xtb index 48d151c..5f1e24d1 100644 --- a/components/policy/resources/policy_templates_sw.xtb +++ b/components/policy/resources/policy_templates_sw.xtb
@@ -235,6 +235,13 @@ Sera hii ikiwekwa kuwa ndivyo, <ph name="PRODUCT_OS_NAME" /> itajaribu kupakua sasisho za data kiotomatiki kupitia HTTP. Sera ikiwekwa kuwa sivyo ama isiwekwe, HTTPS itatumika kupakua sasisho za data kiotomatiki.</translation> <translation id="2006530844219044261">Usimamizi wa nishati</translation> <translation id="201557587962247231">Idadi ya upakiaji wa ripoti ya hali ya kifaa</translation> +<translation id="2018836497795982119">Hubainisha kipindi kwa kipimo cha milisekunde ambapo huduma ya kudhibiti kifaa huulizwa maelezo ya sera ya mtumiaji + + Kuweka sera hii hubatilisha thamani chaguo-msingi ya saa 3. Thamani sahihi za sera hii ziko kuanzia 1800000 (dakika 30) hadi 86400000 (siku 1). Thamani zozote ambazo hazipo katika masafa haya zitawekwa katika mpaka husika. Ikiwa mfumo unatumia arifa za sera, ucheleweshwaji wa kuonyesha upya utawekwa kuwa saa 24 kwa sababu unatarajiwa kwamba arifa za sera zitalazimisha kuonyesha upya kiotomatiki wakati wowote ambao sera itabadilika. + + Kuacha sera hii bila kuwekwa kutafanya <ph name="PRODUCT_NAME" /> itumie thamani chaguo-msingi ya saa 3. + + Kumbuka kwamba ikiwa mfumo huu unatumia arifa za sera, ucheleweshwaji wa kuonyesha upya utawekwa kuwa saa 24 (ukipuuza chaguo-msingi zote na thamani ya sera hii) kwa sababu inatarajiwa kwamba arifa za sera zitalazimisha kuonyesha upya kiotomatiki wakati wowote ambao sera itabadilika, hivyo kuondoa haja ya kuonyesha upya mara kwa mara.</translation> <translation id="2024476116966025075">Weka mipangilio ya jina la kikoa linalohitajika kwa ajili ya seva teja za ufikiaji wa mbali</translation> <translation id="2030905906517501646">Nenomsingi la mtoa huduma chaguo-msingi wa utafutaji</translation> <translation id="206623763829450685">Hubainisha mipango ya uthibitishaji wa HTTP inayotumia na <ph name="PRODUCT_NAME" />. @@ -1060,11 +1067,6 @@ Ingawa sera yenyewe inaweza kutumiwa kwenye mbinu zilizo hapo juu, kipengele inachokiwasha kinaweza kupatikana kwenye mbinu chache. Si vipengele vyote vilivyoacha kuendesha huduma vya Mbinu ya Wavuti vinaweza kuwashwa tena. Vilivyoorodheshwa hapa chini pekee ndivyo vinavyoweza kuwashwa tena kwa muda mfupi, muda huo ni tofauti kwa kila kipengele. Muundo wa jumla wa lebo ya mfuatano utakuwa [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Kama rejeleo, unaweza kupata lengo la yaliyochangia mabadiliko ya kipengele cha Mbinu ya Wavuti https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Wawezesha kufunga wakati kifaa kinapokuwa hakifanyi kitu au kimesimamishwa</translation> -<translation id="4445684791305970001">Inalemaza Zana za Msanidi Programu na kiweko cha JavaScript. - - Ukiwezesha mpangilio huu, Zana za Msanidi Programu haziwezi kufikiwa na vipengee vya tovuti haviwezi kukaguliwa tena. Mikato yoyote ya kibodi na menyu yoyote au maingizo yoyote ya menyu ya muktadha ya kufungua Zana za Msanidi Programu au Kiweko cha JavaScript vitalemazwa. - - Kulemaza chaguo hii au kuiacha bila kuwekwa kutaruhusu mtumiaji kutumia Zana za Msanidi Programu na kiweko cha JavaScript.</translation> <translation id="4449545651113180484">Zungusha skrini kwa mwendo wa saa kwa digrii 270</translation> <translation id="4467952432486360968">Zuia vidakuzi vya wengine</translation> <translation id="4474167089968829729">Washa kipengele cha kuhifadhi manenosiri kwenye kidhibiti cha nenosiri</translation> @@ -1323,6 +1325,13 @@ Endapo sera imewekwa, kipindi kilichobainishwa kitawekewa kumbukumbu kiotomatiki baada ya kipindi cha muda kupita katika skrini ya kuingia bila muingiliano wa mtumiaji. Kipindi cha umma lazima kiwe kimesanidiwa tayari (tazama |DeviceLocalAccounts|). Endapo sera hii haijawekwa, hakutakuwa na kuingia kiotomatiki.</translation> +<translation id="5529037166721644841">Hubainisha muda kwa kipimo cha milisekunde ambacho huduma ya kudhibiti kifaa ambao huulizwa maelezo ya sera ya kifaa. + + Kuweka sera hii kutafuta thamani chaguo-msingi ya saa 3. Thamani sahihi za sera hii ziko kuanzia 1800000 (dakika 30) hadi 86400000 (siku 1). Thamani zozote ambazo haziko katika masafa haya zitawekwa katika mpaka husika. + + Kuacha sera hii bila kuiweka kutafanya <ph name="PRODUCT_OS_NAME" /> itumie thamani chaguo-msingi ya saa 3. + + Kumbuka kwamba ikiwa mfumo unatumia arifa za sera, ucheleweshwaji wa kuonyesha upya utawekwa kuwa saa 24 (ukipuuza chaguo-msingi zote na thamani ya sera hii) kwa sababu inatarajiwa kwamba arifa za sera zitalazimisha kuonyesha upya kiotomatiki wakati wowote ambao sera itabadilika, hivyo kuondoa haja ya kuonyesha upya mara kwa mara.</translation> <translation id="5535957389335373033">Mara ambazo vifurushi vya mtandao vya ufuatiliaji hutumwa, katika milisekunde. Sera hii isipowekwa, idadi chaguo-msingi ni dakika 3. Idadi ya chini @@ -1880,6 +1889,9 @@ Sera hii inazingatiwa tu iwapo sera ya 'DefaultSearchProviderEnabled' imewashwa.</translation> <translation id="7302043767260300182">Ufungaji wa skrini unachelewa wakati nishati ya AC inapotimika</translation> +<translation id="7311458740754205918">Sera hii ikiwekwa kuwa ndivyo au isipowekwa, ukurasa wa Kichupo Kipya utaonyesha mapendekezo ya maudhui kulingana na historia ya kuvinjari, mambo yanayovutia, mahali alipo mtumiaji. + + Sera hii ikiwekwa kuwa sivyo, mapendekezo ya maudhui yanayozalishwa kiotomatiki hayataonyeshwa katika ukurasa wa Kichupo Kipya.</translation> <translation id="7323896582714668701">Vigezo vya ziada vya mstari wa amri vya <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Hubainisha urefu wa muda bila mchango wa mtumiaji ambapo baadaye skrini inazimwa inapoendeshwa kwenye nishati ya betri. @@ -2022,6 +2034,7 @@ <translation id="7763479091692861127"> Aina za miunganisho zinazoruhusiwa kutumia sasisho za Mfumo wa Uendeshaji. Sasisho za Mfumo wa Uendeshaji zinaweza kuweka vichujo vizito kwenye muunganisho kwa sababu ya ukubwa wavyo na huenda vikasababisha gharama ya ziada. Kwa hivyo, haviwashwi kwa chaguo-msingi kwa aina za miunganisho zinazoonekana kuwa ghali, zinazojumuisha WiMax, Bluetooth na Simu ya Mkononi kwa wakati huu. Vitambulisho vinavyotambuliwa vya aina vya muunganisho ni "ethaneti", "wifi", "wimax", "bluetooth" na "simu ya mkononi".</translation> +<translation id="7763614521440615342">Onyesha mapendekezo ya maudhui kwenye ukurasa wa Kichupo Kipya</translation> <translation id="7766336524667238790">Ripoti maelezo kuhusu kipindi cha skrini nzima kinachoendelea, kama vile Kitambulisho cha programu na toleo.
diff --git a/components/policy/resources/policy_templates_ta.xtb b/components/policy/resources/policy_templates_ta.xtb index 856e41e2..c76d69c9 100644 --- a/components/policy/resources/policy_templates_ta.xtb +++ b/components/policy/resources/policy_templates_ta.xtb
@@ -227,6 +227,13 @@ இந்தக் கொள்கை சரி என்பதற்கு அமைக்கப்பட்டிருந்தால், HTTP வழியாகத் தானியங்கு புதுப்பிப்பு தரவுகளைப் பதிவிறக்க <ph name="PRODUCT_OS_NAME" /> முயற்சிக்கும். கொள்கை தவறு என்பதற்கு அமைக்கப்பட்டிருந்தால் அல்லது அமைக்கப்படாமல் இருந்தால், தானியங்கு புதுப்பிப்பு தரவுகளைப் பதிவிறக்க HTTPS பயன்படுத்தப்படும்.</translation> <translation id="2006530844219044261">ஆற்றல் நிர்வாகம்</translation> <translation id="201557587962247231">சாதனத்தின் நிலை அறிக்கை ஏற்றப்படும் கால இடைவெளி</translation> +<translation id="2018836497795982119">பயனர் கொள்கை தகவலை சாதன மேலாண்மை சேவை வினவும் சூழல்களில், காலத்தை மில்லிவினாடிகளில் குறிப்பிடும். + + இந்தக் கொள்கையை அமைத்தால், இயல்புமதிப்பான 3 மணிநேரத்தை மீறி இது செயல்படும். இந்தக் கொள்கைக்கான செல்லுபடியாகும் மதிப்புகள்: 1800000 (30 நிமிடங்கள்) முதல் 86400000 (1 நாள்) வரை. இந்த வரம்பில் இல்லாத எந்த மதிப்பும், செல்லுபடியாகும் மதிப்பின்படி மாற்றப்படும். இயங்குதளம் கொள்கை அறிவிப்புகளை ஆதரித்தால், புதுப்பிப்பிற்கான தாமதம் 24 மணிநேரமாக அமைக்கப்படும். ஏனெனில் பாலிசி மாற்றங்கள் ஏற்படும் போதெல்லாம், பாலிசி அறிவிப்புகள் தானாகவே புதுப்பிக்கும் என எதிர்பார்க்கப்படுகிறது. + + இந்தக் கொள்கையை அமைக்காமல் விட்டால், இயல்புமதிப்பான 3 மணிநேரத்தையே <ph name="PRODUCT_NAME" /> பயன்படுத்தும். + + இயங்குதளம் கொள்கை அறிவிப்புகளை ஆதரிக்கிறது எனில், புதுப்பிப்பிற்கான தாமதம் 24 மணிநேரமாக (எல்லா இயல்புகளும் இந்தக் கொள்கையின் மதிப்பும் புறக்கணிக்கப்படும்) அமைக்கப்படும். ஏனெனில் பாலிசி மாற்றங்கள் ஏற்படும் போதெல்லாம், பாலிசி அறிவிப்புகள் தானாகவே புதுப்பிக்கும் என எதிர்பார்க்கப்படுகிறது, மேலும் தேவையில்லாமல் அடிக்கடி புதுப்பிக்கும்.</translation> <translation id="2024476116966025075">தொலைநிலை அணுகல் க்ளையன்ட்களுக்கு தேவையான களப் பெயரை உள்ளமை</translation> <translation id="2030905906517501646">இயல்புநிலை தேடல் வழங்குநர் திறவுச்சொல்</translation> <translation id="206623763829450685"><ph name="PRODUCT_NAME" /> ஆதரிக்கும் HTTP அங்கீகாரத் திட்டங்களைக் குறிப்பிடும். @@ -1014,7 +1021,6 @@ மேலே உள்ள இயங்குதளங்களில் கொள்கை ஆதரிக்கப்பட்டிருந்தால் கூட, கொள்கை இயக்கும் அம்சம் சில இயங்குதளங்களில் மட்டும் கிடைக்கலாம். எல்லா மறுக்கப்பட்ட இணைய இயங்குதள அம்சங்களும் மீண்டும் இயக்கப்படாது. ஒவ்வொரு அம்சத்திற்கும் மாறுபடக்கூடிய, கீழே வெளிப்படையாக பட்டியலிடப்பட்டவை மட்டுமே குறிப்பிட்ட நேரத்திற்கு கிடைக்கும். எழுத்துச்சரக் குறியின் பொதுவான வடிவம்: [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. மேற்கோளாக, இணைய இயங்குதள அம்ச மாற்றங்களின் பின்னணியில் உள்ள நோக்கத்தை https://bit.ly/blinkintents என்ற இணைய தளத்தில் காணலாம். </translation> <translation id="4442582539341804154">சாதனம் செயலற்றுப்போனாலோ இடைநிறுத்தப்பட்டாலோ பூட்டை இயக்கு</translation> -<translation id="4445684791305970001">டெவலப்பர் கருவிகளையும், JavaScript கன்சோலையும் முடக்குகிறது. இந்த அமைப்பை இயக்கினால், டெவலப்பர் கருவிகளை அணுக முடியாது, வலைத்தள கூறுகளை இனி ஆய்வு செய்யமுடியாது. எந்தவொரு விசைப்பலகை குறுக்குவழிகளும், எந்தவொரு மெனுவும் அல்லது டெவலப்பர் கருவிகள் அல்லது JavaScript கன்சோலைத் திறப்பதற்கான சூழல் மெனு உள்ளீடுகள் முடக்கப்படும். இந்த விருப்பத்தை முடக்குமாறு அமைத்தல் அல்லது அமைக்காமல் விலக்குதல், டெவலப்பர் கருவிகளையும், JavaScript கன்சோலையும் பயன்படுத்த பயனரை அனுமதிக்கும்.</translation> <translation id="4449545651113180484">திரையைக் கடிகாரத் திசையில் 270 டிகிரிக்குச் சுழற்று</translation> <translation id="4467952432486360968">மூன்றாம் தரப்பு குக்கீகளைத் தடு</translation> <translation id="4474167089968829729">கடவுச்சொல் நிர்வாகியில் கடவுச்சொற்களைச் சேமிப்பதை இயக்கு</translation> @@ -1157,7 +1163,7 @@ இந்தக் கொள்கை அமைக்கப்படவில்லை என், தவறு என அமைக்கப்பட்டாலோ, இந்தச் சாதனத்திற்கான டெவலப்பர் பயன்முறை தொடர்ந்து இருக்கும்.</translation> <translation id="5203271367506489164">இந்தக் கொள்கையானது NetworkPredictionOptionsக்குச் சாதகமாக M48 இல் தடுக்கப்பட்டுள்ளது, M54 இல் அகற்றப்பட்டுள்ளது. - <ph name="PRODUCT_NAME" /> இல் நெட்வொர்க் கணிப்பை இயக்கி, இந்த அமைப்பை மாற்றுவதிலிருந்து பயனர்களைத் தடுக்கும். + <ph name="PRODUCT_NAME" /> இல் நெட்வொர்க் கணிப்பை இயக்கி, இந்த அமைப்பை மாற்றாதபடி பயனர்களைத் தடுக்கும். DNS ப்ரீஃபெட்சிங் மட்டுமல்லாமல் TCP மற்றும் SSL ப்ரீகனெக்ஷன், இணையப் பக்கங்களின் ப்ரீரெண்டரிங் ஆகியவற்றையும் இது கட்டுப்படுத்தும். இந்தக் கொள்கையின் பெயரானது வரலாற்று காரணங்களுக்கான DNS ப்ரீஃபெட்சிங்கைக் குறிக்கும். @@ -1234,6 +1240,13 @@ இந்தக் கொள்கை அமைக்கப்பட்டால், பயனர் இடையீட்டுச் செயலில்லாமல் உள்நுழைவுத் திரையில் குறிப்பிட்ட காலம் கடந்த பிறகு குறிப்பிட்ட அமர்வானது தானாக உள்நுழைந்துவிடும். ஏற்கனவே பொது அமர்வு உள்ளமைக்கப்பட்டிருக்க வேண்டும் (|DeviceLocalAccounts| ஐக் காண்க). இந்தக் கொள்கை அமைக்கப்படாவிட்டால், தானியங்கு உள்நுழைவு இருக்காது.</translation> +<translation id="5529037166721644841">சாதனக் கொள்கை தகவலை சாதன மேலாண்மை சேவை வினவும் சூழல்களில், காலத்தை மில்லிவினாடிகளில் குறிப்பிடும். + + இந்தக் கொள்கையை அமைத்தால், இயல்புமதிப்பான 3 மணிநேரத்தை மீறி இது செயல்படும். இந்தக் கொள்கைக்கான செல்லுபடியாகும் மதிப்புகள்: 1800000 (30 நிமிடங்கள்) முதல் 86400000 (1 நாள்) வரை. இந்த வரம்பில் இல்லாத எந்த மதிப்பும், செல்லுபடியாகும் மதிப்பின்படி மாற்றப்படும். + + இந்தக் கொள்கையை அமைக்காமல் விட்டால், இயல்புமதிப்பான 3 மணிநேரத்தையே <ph name="PRODUCT_OS_NAME" /> பயன்படுத்தும். + + இயங்குதளம் கொள்கை அறிவிப்புகளை ஆதரித்தால், புதுப்பிப்பிற்கான தாமதம் 24 மணிநேரமாக (எல்லா இயல்புகளும் இந்தக் கொள்கையின் மதிப்பும் புறக்கணிக்கப்படும்) அமைக்கப்படும். ஏனெனில் பாலிசி மாற்றங்கள் ஏற்படும் போதெல்லாம், பாலிசி அறிவிப்புகள் தானாகவே புதுப்பிக்கும் என எதிர்பார்க்கப்படுகிறது, மேலும் தேவையில்லாமல் அடிக்கடி புதுப்பிக்கும்.</translation> <translation id="5535957389335373033">கண்காணிக்கப்படும் நெட்வொர்க் பாக்கெட்டுகள் அனுப்பப்படும் கால இடைவெளியானது மில்லிவினாடிகளில் குறிப்பிடப்படும். இந்தக் கொள்கையை அமைக்கவில்லை எனில், இயல்புநிலைக் கால இடைவெளி 3 நிமிடங்களாகும். குறைந்தபட்ச @@ -1755,6 +1768,9 @@ 'DefaultSearchProviderEnabled' கொள்கை இயக்கப்பட்டிருந்தால் மட்டுமே, இந்தக் கொள்கை செயல்படுத்தப்படும்.</translation> <translation id="7302043767260300182">AC சக்தியில் இயங்கும்போது திரைப் பூட்டு தாமதமாகும்</translation> +<translation id="7311458740754205918">இது "சரி" என அமைக்கப்பட்டாலோ அல்லது அமைக்கப்படாமல் விடப்பட்டாலோ, புதிய தாவல் பக்கத்தில் பயனரின் உலாவல் வரலாறு, ஆர்வங்கள் அல்லது இருப்பிடம் ஆகியவை சார்ந்த உள்ளடக்கப் பரிந்துரைகள் காட்டப்படக்கூடும். + + இது "தவறு" என அமைக்கப்பட்டால், புதிய தாவல் பக்கத்தில் தானாக உருவாக்கப்படும் உள்ளடக்கப் பரிந்துரைகள் காட்டப்படாது.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> க்கான கூடுதல் கட்டளை வரி அளவுருக்கள்</translation> <translation id="7329842439428490522">AC சக்தியில் இயங்கும்போது திரை முடக்கப்படும் நேரத்தின் அளவைப் பயனரின் உள்ளீடு இல்லாமல் குறிப்பிடுகிறது. @@ -1887,6 +1903,7 @@ <translation id="7763479091692861127"> OS புதுப்பிப்புகளுக்குப் பயன்படுத்த அனுமதிக்கப்பட்ட இணைப்புகளின் வகைகளாகும். OS புதுப்பிப்புகள் தனது அளவின் காரணமாக அதிக சுமையை இணைப்புகளின் மேல் ஏற்படுத்தும், மேலும் கூடுதல் கட்டணங்களையும் ஏற்படுத்தும். இதனால், விலை அதிகமான இணைப்பு வகைகளாகக் கருதப்படும் WiMax, Bluetooth மற்றும் Cellular உள்ளிட்ட இணைப்பு வகைகளுக்கு இயல்புநிலையில் இயக்கப்படாது. "ethernet", "wifi", "wimax", "bluetooth" மற்றும் "cellular" ஆகியவை அங்கீகரிக்கப்பட்ட இணைப்பு வகை அடையாளங்காட்டிகளாகும்.</translation> +<translation id="7763614521440615342">புதிய தாவல் பக்கத்தில் உள்ளடக்கப் பரிந்துரைகளைக் காட்டு</translation> <translation id="7766336524667238790">பயன்பாட்டு ஐடி, பதிப்பு போன்ற செயலில் உள்ள கியாஸ்க் அமர்வைப் பற்றிய தகவலை அறிவிக்கும். கொள்கை false என அமைக்கப்பட்டால், அமர்வுத் தகவல் அறிவிக்கப்படாது. true என அமைக்கப்பட்டாலோ அல்லது அமைக்காமல் விட்டாலோ, அமர்வுத் தகவல் அறிவிக்கப்படும்.</translation>
diff --git a/components/policy/resources/policy_templates_te.xtb b/components/policy/resources/policy_templates_te.xtb index 81042cb2..7d5b399 100644 --- a/components/policy/resources/policy_templates_te.xtb +++ b/components/policy/resources/policy_templates_te.xtb
@@ -237,6 +237,13 @@ ఈ విధానాన్ని ఒప్పుకి సెట్ చేస్తే, <ph name="PRODUCT_OS_NAME" /> స్వీయ-నవీకరణ పేలోడ్లను HTTP ద్వారా డౌన్లోడ్ చేయడానికి ప్రయత్నిస్తుంది. విధానాన్ని తప్పుకి సెట్ చేసినా లేదా సెట్ చేయకుండా వదిలివేసినా, స్వీయ-నవీకరణ పేలోడ్లను డౌన్లోడ్ చేయడానికి HTTPS ఉపయోగించబడుతుంది.</translation> <translation id="2006530844219044261">శక్తి నిర్వహణ</translation> <translation id="201557587962247231">పరికర స్థితి నివేదిక అప్లోడ్ల తరచుదనం</translation> +<translation id="2018836497795982119">వినియోగదారు విధాన సమాచారం కోసం పరికర నిర్వహణ సేవ ప్రశ్న సమయ వ్యవధిని మిల్లీ సెకన్లలో పేర్కొంటుంది. + + ఈ విధానాన్ని సెట్ చేయడం వలన 3 గంటల డిఫాల్ట్ విలువ భర్తీ చేయబడుతుంది. ఈ విధానానికి సంబంధించి చెల్లుబాటు అయ్యే విలువల పరిధి 1800000 (30 నిమిషాలు) నుండి 86400000 (1 రోజు) వరకు ఉంది. ఈ పరిధిలో లేని విలువలు ఏవైనా సమీపంలోని పరిధికి పరిమితం చేయబడతాయి. ప్లాట్ఫారమ్ విధాన నోటిఫికేషన్లకు మద్దతిచ్చే పక్షంలో, రిఫ్రెష్ జాప్యం 24 గంటలకు సెట్ చేయబడుతుంది, ఎందుకంటే విధానంలో మార్పులు జరిగినప్పుడు విధాన నోటిఫికేషన్లు నిర్బంధంగా స్వయంచాలిత రిఫ్రెష్ చేయడానికి అవకాశం ఉంటుంది. + + ఈ విధానాన్ని సెట్ చేయకుండా వదిలివేసినప్పుడు <ph name="PRODUCT_NAME" /> 3 గంటల డిఫాల్ట్ విలువను ఉపయోగిస్తుంది. + + ప్లాట్ఫారమ్ విధాన నోటిఫికేషన్లకు మద్దతు ఇచ్చే పక్షంలో, అత్యంత తరచుగా రిఫ్రెష్లు చేయడాన్ని నివారించడానికి రిఫ్రెష్ జాప్యం 24 గంటలకు సెట్ చేయబడుతుందని గమనించండి (ఈ సందర్భంలో అన్ని డిఫాల్ట్లు మరియు ఈ విధానం విలువ విస్మరించబడతాయి), ఎందుకంటే విధానంలో మార్పులు జరిగినప్పుడు విధాన నోటిఫికేషన్లు నిర్బంధంగా స్వయంచాలిత రిఫ్రెష్ చేయడానికి అవకాశం ఉంటుంది.</translation> <translation id="2024476116966025075">రిమోట్ ప్రాప్యత క్లయింట్ల కోసం అవసరమైన డొమైన్ పేరును కాన్ఫిగర్ చేయండి</translation> <translation id="2030905906517501646">డిఫాల్ట్ శోధన అందింపుదారు కీవర్డ్</translation> <translation id="206623763829450685"><ph name="PRODUCT_NAME" /> మద్దతు ఇచ్చే HTTP ప్రామాణీకరణ స్కీమ్లను పేర్కొంటుంది. @@ -1041,7 +1048,6 @@ విధానానికి ఎగువ ప్లాట్ఫారమ్ల్లో మద్దతు ఉన్నప్పుడు, విధానం అనుమతించే లక్షణం కొన్ని ప్లాట్ఫారమ్ల్లో అందుబాటులో ఉండవచ్చు. అన్ని నిలిపివేయబడిన వెబ్ ప్లాట్ఫారమ్ లక్షణాలు మళ్లీ ప్రారంభించబడవు. దిగువ స్పష్టంగా జాబితా చేసినవి మాత్రమే పరిమిత సమయం పాటు ఉండగలవు, ఇవి ప్రతి లక్షణానికి భిన్నంగా ఉంటాయి. స్ట్రింగ్ ట్యాగ్ సాధారణ ఆకృతి [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. సూచనగా, మీరు https://bit.ly/blinkintentsలో వెబ్ ప్లాట్ఫారమ్ లక్షణాల మార్పుల ఉద్దేశాన్ని తెలుసుకోవచ్చు. </translation> <translation id="4442582539341804154">పరికరం నిష్క్రియంగా ఉన్నపుడు లేదా తాత్కాలికంగా నిలిపివేయబడినపుడు లాక్ చేయబడుతుంది</translation> -<translation id="4445684791305970001">డెవలపర్ సాధనాలు మరియు JavaScript కన్సోల్ను ఆపివేస్తుంది. మీరు ఈ సెట్టింగ్ను ప్రారంభిస్తే, డెవలపర్ సాధనాలు ప్రాప్యత చేయబడవు మరియు వెబ్-సైట్ మూలకాలు ఇకపై తనిఖీ చేయబడవు. డెవలపర్ సాధనాలు లేదా JavaScript కన్సోల్ను తెరిచే ఏ కీబోర్డ్ షార్ట్కట్లు మరియు ఏ మెనూ లేదా సందర్భోచిత మెనూ నమోదులు అయినా ఆపివేయబడతాయి. ఈ ఎంపికను ఆపివేయడం లేదా సెట్ చేయకుండా వదిలివేయడం చేస్తే డెవలపర్ సాధనాలు మరియు JavaScript కన్సోల్ను వినియోగాన్ని ఉపయోగించడానికి అనుమతిస్తుంది.</translation> <translation id="4449545651113180484">స్క్రీన్ను సవ్యదిశలో 270 డిగ్రీల మేర తిప్పండి</translation> <translation id="4467952432486360968">మూడవ పార్టీ కుక్కీలని బ్లాక్ చెయ్యి</translation> <translation id="4474167089968829729">పాస్వర్డ్ నిర్వాహికికి పాస్వర్డ్లను సేవ్ చేయడాన్ని ప్రారంభించండి</translation> @@ -1265,6 +1271,13 @@ ఈ విధానం సెట్ చేయబడితే, లాగిన్ స్క్రీన్లో వినియోగదారు పరస్పర చర్య లేని సమయ వ్యవధి తర్వాత నిర్దిష్ట సెషన్ స్వయంచాలకంగా లాగిన్ చేయబడుతుంది. పబ్లిక్ సెషన్ను తప్పనిసరిగా ముందుగానే కాన్ఫిగర్ చేయాలి (|DeviceLocalAccounts|ని చూడండి). ఈ విధానం సెట్ చేయబడకపోతే, స్వీయ లాగిన్ ఉండదు.</translation> +<translation id="5529037166721644841">పరికర విధాన సమాచారం కోసం పరికర నిర్వహణ సేవ ప్రశ్న సమయ వ్యవధిని మిల్లీ సెకన్లలో పేర్కొంటుంది. + + ఈ విధానాన్ని సెట్ చేయడం వలన 3 గంటల డిఫాల్ట్ విలువ భర్తీ చేయబడుతుంది. ఈ విధానానికి సంబంధించి చెల్లుబాటయ్యే విలువల పరిధి 1800000 (30 నిమిషాలు) నుండి 86400000 (1 రోజు) వరకు ఉంది. ఈ పరిధిలో లేని విలువలు ఏవైనా సమీప పరిధికి పరిమితం చేయబడతాయి. + + ఈ విధానాన్ని సెట్ చేయకుండా వదిలివేసినప్పుడు <ph name="PRODUCT_OS_NAME" /> 3 గంటల డిఫాల్ట్ విలువను ఉపయోగిస్తుంది. + + ప్లాట్ఫారమ్ విధాన నోటిఫికేషన్లకు మద్దతు ఇచ్చే పక్షంలో, అత్యంత తరచుగా రిఫ్రెష్లు చేయడాన్ని నివారించడానికి రిఫ్రెష్ జాప్యం 24 గంటలకు సెట్ చేయబడుతుందని గమనించండి (ఈ సందర్భంలో అన్ని డిఫాల్ట్లు మరియు ఈ విధానం విలువ విస్మరించబడతాయి), ఎందుకంటే విధానంలో మార్పులు జరిగినప్పుడు విధాన నోటిఫికేషన్లు నిర్బంధంగా స్వయంచాలిత రిఫ్రెష్ చేయడానికి అవకాశం ఉంటుంది.</translation> <translation id="5535957389335373033">పర్యవేక్షిత నెట్వర్క్ ప్యాకెట్లు పంపబడే సమయ వ్యవధి, మిల్లీసెకన్లలో ఉండాలి. ఈ విధానాన్ని సెట్ చేయకుంటే, డిఫాల్ట్ సమయ వ్యవధి 3 నిమిషాలు ఉంటుంది. దీని కనీస @@ -1794,6 +1807,9 @@ 'DefaultSearchProviderEnabled' విధానం ప్రారంభించబడినప్పుడు మాత్రమే ఈ విధానానికి ప్రాధాన్యత ఉంటుంది.</translation> <translation id="7302043767260300182">AC శక్తితో అమలవుతున్నప్పుడు స్క్రీన్ లాక్ ఆలస్యం</translation> +<translation id="7311458740754205918">దీన్ని ఒప్పుకి సెట్ చేసినా లేదా సెట్ చేయకుండా వదిలివేసినా, కొత్త ట్యాబ్ పేజీ వినియోగదారు బ్రౌజింగ్ చరిత్ర, ఆసక్తులు లేదా స్థానం ఆధారంగా కంటెంట్ సూచనలను చూపవచ్చు. + + దీన్ని తప్పుకి సెట్ చేస్తే, కొత్త ట్యాబ్ పేజీలో స్వయంచాలకంగా ఉత్పాదించిన కంటెంట్ సూచనలు చూపబడవు.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> కోసం అదనపు ఆదేశ పంక్తి పరామితులు</translation> <translation id="7329842439428490522">బ్యాటరీ శక్తితో అమలవుతున్నప్పుడు ఎంత సమయం పాటు వినియోగదారు ఇన్పుట్ లేకుంటే స్క్రీన్ ఆపివేయబడుతుందో పేర్కొంటుంది. @@ -1926,6 +1942,7 @@ <translation id="7763479091692861127"> OS నవీకరణల కోసం ఉపయోగించడానికి అనుమతించబడిన కనెక్షన్ల రకాలు. OS నవీకరణలు వాటి పరిమాణం కారణంగా కనెక్షన్పై సంభావ్యంగా తీవ్ర ఒత్తిడిని ఉంచుతాయి మరియు అదనపు ఖర్చు కావచ్చు. అందువలన, ప్రస్తుతం ఇవి డిఫాల్ట్గా WiMax, Bluetooth మరియు Cellular వంటి ఖరీదైనవిగా భావించే కనెక్షన్ల రకాల కోసం ప్రారంభించబడదు. "ethernet", "wifi", "wimax", "bluetooth" మరియు "cellular" గుర్తింపు పొందిన కనెక్షన్ రకం ఐడెంటిఫైయర్లు.</translation> +<translation id="7763614521440615342">కొత్త ట్యాబ్ పేజీలో కంటెంట్ సూచనలను చూపుతుంది</translation> <translation id="7766336524667238790">సక్రియ కియోస్క్ సెషన్ గురించిన సమాచారాన్ని అనగా, అనువర్తన ID మరియు సంస్కరణ వంటివి నివేదిస్తుంది.
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb index e733dd7..7b36b11 100644 --- a/components/policy/resources/policy_templates_th.xtb +++ b/components/policy/resources/policy_templates_th.xtb
@@ -228,6 +228,13 @@ หากตั้งค่านโยบายนี้เป็น "จริง" จะทำให้ <ph name="PRODUCT_OS_NAME" /> พยายามดาวน์โหลดการอัปเดตรายได้อัตโนมัติผ่าน HTTP หากตั้งค่านโยบายเป็น "เท็จ" หรือไม่ตั้งเลย จะมีการใช้ HTTPS สำหรับการดาวน์โหลดการอัปเดตรายได้อัตโนมัติ</translation> <translation id="2006530844219044261">การจัดการพลังงาน</translation> <translation id="201557587962247231">ความถี่ในการอัปโหลดรายงานสถานะของอุปกรณ์</translation> +<translation id="2018836497795982119">ระบุระยะเวลาเป็นมิลลิวินาทีที่ใช้ในการสอบถามข้อมูลนโยบายผู้ใช้จากบริการจัดการอุปกรณ์ + + การตั้งค่านโยบายนี้จะลบล้างค่าเริ่มต้นซึ่งอยู่ที่ 3 ชั่วโมง ค่าที่ใช้ได้สำหรับนโยบายนี้ต้องอยู่ในช่วงตั้งแต่ 1800000 (30 นาที) ถึง 86400000 (1 วัน) ค่าใดๆ ที่ไม่อยู่ในช่วงนี้จะถูกจำกัดตามขอบเขตที่เกี่ยวข้อง หากแพลตฟอร์มสนับสนุนการแจ้งเตือนตามนโยบาย การหน่วงเวลาการรีเฟรชจะตั้งค่าเป็น 24 ชั่วโมงเพราะคาดการณ์ว่าการแจ้งเตือนตามนโยบายจะบังคับให้รีเฟรชโดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนนโยบาย + + หากไม่ได้ตั้งค่านโยบายนี้ <ph name="PRODUCT_NAME" /> จะใช้ค่าเริ่มต้นที่ 3 ชั่วโมง + + โปรดทราบว่าหากแพลตฟอร์มสนับสนุนการแจ้งเตือนนโยบาย ระบบจะตั้งค่าการหน่วงเวลาการรีเฟรชเป็น 24 ชั่วโมง (โดยไม่คำนึงถึงค่าเริ่มต้นทั้งหมดและค่าของนโยบายนี้) เพราะคาดการณ์ว่าการแจ้งเตือนตามนโยบายจะบังคับให้รีเฟรชโดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนนโยบาย ซึ่งทำให้ระบบรีเฟรชบ่อยเกินไปโดยไม่จำเป็น</translation> <translation id="2024476116966025075">กำหนดค่าชื่อโดเมนที่ต้องใช้สำหรับไคลเอ็นต์การเข้าถึงระยะไกล</translation> <translation id="2030905906517501646">คำหลักของผู้ให้บริการการค้นหาเริ่มต้น</translation> <translation id="206623763829450685">ระบุว่าการตรวจสอบสิทธิ์ HTTP รูปแบบใดที่ <ph name="PRODUCT_NAME" /> สนับสนุน @@ -1013,7 +1020,6 @@ แม้ตัวนโยบายจะได้รับการสนับสนุนบนแพลตฟอร์มข้างต้น แต่คุณลักษณะที่นโยบายเปิดใช้อาจใช้ได้บนแพลตฟอร์มไม่กี่แห่ง คุณลักษณะเว็บแพลตฟอร์มที่เลิกใช้แล้วบางรายการอาจไม่สามารถเปิดใช้ได้อีก เฉพาะคุณลักษณะที่ระบุไว้อย่างชัดเจนด้านล่างเท่านั้นที่สามารถเปิดใช้ได้อีกภายในช่วงเวลาจำกัด ซึ่งจะแตกต่างกันไปตามคุณลักษณะ รูปแบบของสตริงแท็กทั่วไปคือ [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd] ตามข้อมูลอ้างอิง คุณสามารถค้นหาเจตนาในการเปลี่ยนแปลงคุณลักษณะเว็บแพลตฟอร์มได้ที่ https://bit.ly/blinkintents </translation> <translation id="4442582539341804154">เปิดใช้งานการล็อกเมื่อไม่ได้ใช้งานหรือระงับใช้อุปกรณ์</translation> -<translation id="4445684791305970001">ปิดใช้งานเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์และคอนโซล JavaScript หากคุณเปิดใช้งานการตั้งค่านี้ จะไม่สามารถเข้าถึงเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ได้และจะไม่สามารถตรวจสอบองค์ประกอบของเว็บไซต์ได้อีกต่อไป แป้นพิมพ์ลัดใดๆ และเมนูหรือข้อความเมนูตามบริบทใดๆ ที่เปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์หรือคอนโซล JavaScript จะถูกปิดใช้งาน การตั้งค่าตัวเลือกนี้เป็นปิดใช้งานหรือปล่อยไว้โดยไม่ได้ตั้งค่าจะเป็นการอนุญาตให้ใช้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์และคอนโซล JavaScript</translation> <translation id="4449545651113180484">หมุนหน้าจอตามเข็มนาฬิกา 270 องศา</translation> <translation id="4467952432486360968">ปิดกั้นคุกกี้ของบุคคลที่สาม</translation> <translation id="4474167089968829729">เปิดการบันทึกรหัสผ่านไปยังโปรแกรมจัดการรหัสผ่าน</translation> @@ -1233,6 +1239,13 @@ หากมีการตั้งค่านโยบายนี้ เซสชันที่ระบุจะถูกลงชื่อเข้าใช้อัตโนมัติหลังจากช่วงเวลาหนึ่งได้ล่วงเลยไปบนหน้าจอการเข้าสู่ระบบโดยไม่มีการโต้ตอบของผู้ใช้ เซสชันสาธารณะต้องได้รับการกำหนดค่าไว้แล้ว (ดู |DeviceLocalAccounts|) หากไม่มีการตั้งค่านโยบายนี้ จะไม่มีการเข้าสู่ระบบอัตโนมัติ</translation> +<translation id="5529037166721644841">ระบุระยะเวลาเป็นมิลลิวินาทีที่ใช้ในการสอบถามข้อมูลนโยบายผู้ใช้จากบริการจัดการอุปกรณ์ + + การตั้งค่านโยบายนี้จะลบล้างค่าเริ่มต้นซึ่งอยู่ที่ 3 ชั่วโมง ค่าที่ใช้ได้สำหรับนโยบายนี้ต้องอยู่ในช่วงตั้งแต่ 1800000 (30 นาที) ถึง 86400000 (1 วัน) ค่าใดๆ ที่ไม่อยู่ในช่วงนี้จะถูกจำกัดตามขอบเขตที่เกี่ยวข้อง + + หากไม่ได้ตั้งค่านโยบายนี้ <ph name="PRODUCT_OS_NAME" /> จะใช้ค่าเริ่มต้น 3 ชั่วโมง + + โปรดทราบว่าหากแพลตฟอร์มสนับสนุนการแจ้งเตือนนโยบาย ระบบจะตั้งค่าการหน่วงเวลาการรีเฟรชเป็น 24 ชั่วโมง (โดยไม่คำนึงถึงค่าเริ่มต้นทั้งหมดและค่าของนโยบายนี้) เพราะคาดการณ์ว่าการแจ้งเตือนตามนโยบายจะบังคับให้รีเฟรชโดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนนโยบาย ซึ่งทำให้ระบบรีเฟรชบ่อยเกินไปโดยไม่จำเป็น</translation> <translation id="5535957389335373033">ความถี่ในการส่งการติดตามดูแพ็กเก็ตเครือข่ายเป็นมิลลิวินาที หากไม่ได้ตั้งค่านโยบาย ความถี่เริ่มต้นคือทุก 3 นาที ส่วน @@ -1761,6 +1774,9 @@ นโยบายนี้จะสามารถใช้ได้เฉพาะเมื่อเปิดใช้งานนโยบาย "DefaultSearchProviderEnabled" เท่านั้น</translation> <translation id="7302043767260300182">ระยะหน่วงเวลาการล็อกหน้าจอเมื่อทำงานโดยใช้ไฟ AC</translation> +<translation id="7311458740754205918">หากตั้งค่าเป็น True หรือไม่ได้ตั้งค่า หน้า "แท็บใหม่" อาจแสดงคำแนะนำเนื้อหาโดยอิงจากประวัติการท่องเว็บ ความสนใจ หรือสถานที่ของผู้ใช้ + + หากตั้งค่าเป็น False คำแนะนำเนื้อหาที่สร้างขึ้นโดยอัตโนมัติจะไม่แสดงในหน้า "แท็บใหม่"</translation> <translation id="7323896582714668701">พารามิเตอร์บรรทัดคำสั่งเพิ่มเติมสำหรับ <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">ระบุระยะเวลาก่อนปิดหน้าจอเมื่อไม่มีการป้อนข้อมูลจากผู้ใช้ขณะทำงานโดยใช้พลังงานแบตเตอรี่ @@ -1899,6 +1915,7 @@ <translation id="7763479091692861127"> ประเภทของการเชื่อมต่อที่ได้รับอนุญาตให้ใช้สำหรับการอัปเดตระบบปฏิบัติการ การอัปเดตระบบปฏิบัติการทำให้การเชื่อมต่อต้องทำงานหนักมากเนื่องจากขนาดของการอัปเดตและอาจทำให้มีค่าใช้จ่ายเพิ่มเติม ดังนั้น การอัปเดตระบบดังกล่าวจะไม่ถูกเปิดใช้โดยค่าเริ่มต้นสำหรับประเภทการเชื่อมต่อที่มีราคาแพง ซึ่งรวมถึง WiMax, บลูทูธ และการเชื่อมต่อมือถือในปัจจุบัน ตัวระบุประเภทการเชื่อมต่อที่เป็นที่รู้จักกันได้แก่ "อีเทอร์เน็ต", "Wi-Fi", "WiMax", "บลูทูธ" และ "การเชื่อมต่อมือถือ"</translation> +<translation id="7763614521440615342">แสดงคำแนะนำเนื้อหาบนหน้า "แท็บใหม่"</translation> <translation id="7766336524667238790">รายงานข้อมูลเกี่ยวกับเซสชันคีออสก์ที่ใช้งาน เช่น รหัสและเวอร์ชันของแอปพลิเคชัน
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb index c7a9724..d255da4 100644 --- a/components/policy/resources/policy_templates_tr.xtb +++ b/components/policy/resources/policy_templates_tr.xtb
@@ -248,6 +248,13 @@ Bu politika doğru seçeneğine ayarlanırsa <ph name="PRODUCT_OS_NAME" /> otomatik güncelleme verilerini HTTP aracılığıyla indirmeye çalışır. Politika yanlış seçeneğine ayarlanırsa veya hiç ayarlanmazsa otomatik güncelleme verilerini indirmek için HTTPS kullanılır.</translation> <translation id="2006530844219044261">Güç yönetimi</translation> <translation id="201557587962247231">Cihaz durumu raporlarının yüklenme sıklığı</translation> +<translation id="2018836497795982119">Cihaz yönetim hizmetinin, kullanıcı politikası bilgileri için sorgulanma süresini milisaniye olarak belirtir. + + Bu politika ayarlandığında varsayılan değer (3 saat) geçersiz olur. Bu politika için geçerli değerler 1800000 (30 dakika) ile 86400000 (1 gün) aralığındadır. Bu aralıkta bulunmayan değerler ilgili sınıra çekilir. Politika değiştiğinde politika bildirimlerinin otomatik olarak bir yenilemeyi zorlaması beklendiğinden, platform politika bildirimlerini destekliyorsa yenileme gecikmesi 24 saate ayarlanır. + + Bu politika ayarlanmadan bırakılırsa <ph name="PRODUCT_NAME" /> varsayılan değeri (3 saat) kullanır. + + Platform politika bildirimlerini destekliyorsa yenileme gecikmesinin 24 saate ayarlanacağını (tüm varsayılanların ve bu politikanın değerinin yoksayılacağını) unutmayın. Bunun nedeni, politika değiştiğinde politika bildirimlerinin otomatik olarak bir yenilemeyi zorlamasının beklenmesi ve bu yüzden, daha sık yenileme yapılmasına gerek olmamasıdır.</translation> <translation id="2024476116966025075">Uzaktan erişim istemcileri için gereken alan adını yapılandır</translation> <translation id="2030905906517501646">Varsayılan arama sağlayıcı anahtar kelimesi</translation> <translation id="206623763829450685"><ph name="PRODUCT_NAME" /> tarafından desteklenen HTTP kimlik doğrulaması şemalarını belirtir. @@ -1082,11 +1089,6 @@ Politikanın kendisi yukarıdaki platformlarda desteklense de, etkinleştirdiği özellik daha az sayıda platformda kullanılabilir. Kullanımdan kaldırılmış Web Platformu özelliklerinin tümü yeniden etkinleştirilemez. Sadece açık şekilde aşağıda listelenenler, özelliğe göre farklı olan sınırlı bir süre için etkinleştirilebilir. Dize etiketinin genel biçimi [KullanımdanKaldırılmışÖzelliğinAdı]_EffectiveUntil[yyyyaagg] olacaktır. Referans olarak, Web Platformu özelliklerinde değişiklik yapılmasının amacını şu adresten öğrenebilirsiniz: https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Cihaz boşta olduğunda veya askıya alındığında kilidi etkinleştir</translation> -<translation id="4445684791305970001">Geliştirici Araçları'nı ve JavaScript konsolunu devre dışı bırakır. - - Bu ayarı etkinleştirirseniz, Geliştirici Araçları'na erişilemez ve web sitesi öğeleri bundan sonra incelenemez. Geliştirici Araçları veya JavaScript Konsolu'nu açmak için kullanılan menüler veya bağlam menüsü girişleri devre dışı bırakılır. - - Bu seçeneğin devre dışı olarak ayarlanması veya ayarlanmadan bırakılması, Geliştirici Araçları ve JavaScript konsolunun kullanımına olanak tanır.</translation> <translation id="4449545651113180484">Ekranı saat yönünde 270 derece döndür</translation> <translation id="4467952432486360968">Üçüncü taraf çerezlerini engelle</translation> <translation id="4474167089968829729">Şifrelerin, şifre yöneticisine kaydedilmesini etkinleştir</translation> @@ -1347,6 +1349,13 @@ Bu politika ayarlanırsa, giriş ekranında kullanıcı etkileşimi olmadan bir süre geçtikten sonra, belirlenen oturuma otomatik olarak giriş yapılır. Herkese açık oturumun önceden yapılandırılmış olması gerekir (Bkz. |DeviceLocalAccounts|). Bu politika ayarlanmazsa, otomatik giriş yapılmaz.</translation> +<translation id="5529037166721644841">Cihaz yönetim hizmetinin, cihaz politika bilgileri için sorgulanma süresini milisaniye olarak belirtir. + + Bu politika ayarlandığında varsayılan değer (3 saat) geçersiz olur. Bu politika için geçerli değerler 1800000 (30 dakika) ile 86400000 (1 gün) aralığındadır. Bu aralıkta bulunmayan değerler ilgili sınıra çekilir. + + Bu politika ayarlanmadan bırakılırsa <ph name="PRODUCT_OS_NAME" /> varsayılan değer (3 saat) kullanır. + + Platform politika bildirimlerini destekliyorsa yenileme gecikmesinin 24 saate ayarlanacağını (tüm varsayılanların ve bu politikanın değerinin yoksayılacağını) unutmayın. Bunun nedeni, politika değiştiğinde politika bildirimlerinin otomatik olarak bir yenilemeyi zorlamasının beklenmesi ve bu yüzden, daha sık yenileme yapılmasına gerek olmamasıdır.</translation> <translation id="5535957389335373033">İzleme amaçlı ağ paketlerinin ne kadar sık gönderileceğini (milisaniye olarak) belirtir. Bu politika ayarlanmazsa, varsayılan sıklık 3 dakikadır. Minimum @@ -1912,6 +1921,9 @@ Bu politika yalnızca 'DefaultSearchProviderEnabled' politikası etkinleştirilirse uygulanır.</translation> <translation id="7302043767260300182">AC güçle çalışırken ekran kilidi gecikmesi</translation> +<translation id="7311458740754205918">Bunun için doğru (true) değeri ayarlanır veya herhangi bir değer belirtilmezse Yeni Sekme sayfasında kullanıcının tarama geçmişi, ilgi alanları veya konumuna dayalı içerik önerileri gösterilebilir. + +Bu politika yanlış (false) değerine ayarlanırsa Yeni Sekme sayfasında, otomatik oluşturulan içerik önerileri gösterilmez.</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> için ek komut satırı parametreleri</translation> <translation id="7329842439428490522">Pil gücüyle çalışırken, ekran kapatılmadan önce kullanıcı girişi olmadan geçecek süreyi belirtir. @@ -2054,6 +2066,7 @@ <translation id="7763479091692861127"> İşletim sistemi güncellemeleri için kullanılmasına izin verilen bağlantı türleri. İşletim sistemi güncellemeleri, boyutları nedeniyle muhtemelen bağlantı üzerine ağır yük getirir ve ek maliyete neden olabilir. Bu nedenle, aralarında WiMax, Bluetooth ve Hücresel bağlantıların da yer aldığı, pahalı kabul edilen bağlantı türleri için şu anda varsayılan olarak etkin değildir. Tanınan bağlantı türü tanıtıcıları şunlardır: "ethernet", "wifi", "wimax", "bluetooth" ve "cellular".</translation> +<translation id="7763614521440615342">Yeni Sekme sayfasında içerik önerileri göster</translation> <translation id="7766336524667238790">Uygulama kimliği ve sürümü gibi aktif kiosk oturumuyla ilgili bilgileri rapor edin. Bu politika yanlış seçeneğine ayarlanırsa, oturum bilgileri rapor
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb index 20f5784e..31b73a44 100644 --- a/components/policy/resources/policy_templates_uk.xtb +++ b/components/policy/resources/policy_templates_uk.xtb
@@ -234,6 +234,13 @@ Якщо для цього правила встановлено значення "true", <ph name="PRODUCT_OS_NAME" /> намагатиметься завантажити автоматичне оновлення через HTTP. Якщо для цього правила встановлено значення "false" або значення не задано, для завантаження автоматичного оновлення використовуватиметься протокол HTTPS.</translation> <translation id="2006530844219044261">Керування живленням</translation> <translation id="201557587962247231">Частота завантаження звіту про статус пристрою</translation> +<translation id="2018836497795982119">Указує період (у мілісекундах), упродовж якого в службу керування пристроєм надсилається запит щодо інформації про правила для користувача. + + Якщо це правило налаштовано, замінюється значення за умовчанням (3 години). Дійсні значення для цього правила – у діапазоні від 1 800 000 (30 хвилин) до 86 400 000 (1 день). Значення, які не входять у цей діапазон, прив’язуються до відповідної межі. Якщо платформа підтримує сповіщення про порушення правил, оновлення затримуватимуться на 24 години, оскільки очікується, що через ці сповіщення оновлення відбуватиметься автоматично, щоразу коли змінюється правило. + + Якщо це правило не встановлено, <ph name="PRODUCT_NAME" /> використовує значення за умовчанням, тобто 3 години. + + Зауважте: якщо платформа підтримує сповіщення про порушення правил, оновлення затримуватимуться на 24 години (ігноруючи всі значення за умовчанням і значення цього правила), оскільки очікується, що через ці сповіщення оновлення відбуватиметься автоматично, щоразу коли змінюється правило.</translation> <translation id="2024476116966025075">Налаштувати назву домену, потрібного для віддаленого доступу</translation> <translation id="2030905906517501646">Ключове слово пошукової служби за умовчанням</translation> <translation id="206623763829450685">Указує, яка схема автентифікації HTTP підтримується в <ph name="PRODUCT_NAME" />. @@ -1026,7 +1033,6 @@ Хоча саме правило підтримується на вказаних вище платформах, функція, яку воно вмикає, може бути доступна не на всіх платформах. Не всі непідтримувані функції веб-платформи можна ввімкнути. Лише перелічені нижче функції можна ввімкнути на обмежений період часу, який для кожної з них може бути різним. Загальний формат тегу рядка: [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Докладніше про змінення функцій веб-платформи можна дізнатися на сторінці https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Вмикати блокування, коли пристрій перебуває в режимі очікування чи сну</translation> -<translation id="4445684791305970001">Вимикає Інструменти розробника та консоль JavaScript. Якщо це налаштування ввімкнено, Інструменти розробника не доступні й елементи веб-сайтів не можна перевірити. Усі комбінації клавіш і меню або рядки контекстного меню для відкривання Інструментів розробника чи консолі JavaScript вимикаються. Якщо це налаштування вимкнено чи не встановлено, користувач може використовувати Інструменти розробника та консоль JavaScript.</translation> <translation id="4449545651113180484">Обернути екран на 270 градусів за годинниковою стрілкою</translation> <translation id="4467952432486360968">Блокувати файли cookie третьої сторони</translation> <translation id="4474167089968829729">Дозволити зберігати паролі в диспетчері паролів</translation> @@ -1246,6 +1252,13 @@ Якщо це правило встановлено, вхід у вказаний сеанс здійснюється автоматично, щойно мине період часу на екрані входу без жодних дій із боку користувача. Загальнодоступний сеанс потрібно налаштувати до цього (див. правило |DeviceLocalAccounts|). Якщо це правило не налаштовано, автоматичний вхід не відбувається.</translation> +<translation id="5529037166721644841">Указує період (у мілісекундах), упродовж якого в службу керування пристроєм надсилається запит щодо інформації про правила для пристрою. + + Якщо це правило налаштовано, замінюється значення за умовчанням (3 години). Дійсні значення для цього правила – у діапазоні від 1 800 000 (30 хвилин) до 86 400 000 (1 день). Значення, які не входять у цей діапазон, прив’язуються до відповідної межі. + + Якщо це правило не встановлено, <ph name="PRODUCT_OS_NAME" /> використовує значення за умовчанням, тобто 3 години. + + Зауважте: якщо платформа підтримує сповіщення про порушення правил, оновлення затримуватимуться на 24 години (ігноруючи всі значення за умовчанням і значення цього правила), оскільки очікується, що через ці сповіщення оновлення відбуватиметься автоматично, щоразу коли змінюється правило.</translation> <translation id="5535957389335373033">Як часто надсилаються мережеві пакети для відстеження (у мілісекундах). Якщо це правило не налаштовано, частота за умовчанням становить 3 хвилини. @@ -1774,6 +1787,9 @@ Це правило застосовується, лише якщо ввімкнено правило "DefaultSearchProviderEnabled".</translation> <translation id="7302043767260300182">Затримка блокування екрана, коли використовується живлення від мережі</translation> +<translation id="7311458740754205918">Якщо це правило не налаштовано або має значення "true", на сторінці "Нова вкладка" відображатимуться пропозиції вмісту, підібрані на основі історії переглядів, зацікавлень чи місцезнаходження користувача. + + Якщо встановлено значення "false", на сторінці "Нова вкладка" відображатиметься автоматично згенерований вміст.</translation> <translation id="7323896582714668701">Додаткові параметри командного рядка для <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Визначає період часу неактивності користувача, після якого екран вимикається, якщо використовується заряд акумулятора. @@ -1905,6 +1921,7 @@ <translation id="7763479091692861127"> Типи з’єднань, які можуть використовуватися для оновлення операційної системи. Оновлення ОС потенційно створює велике навантаження для з’єднання через свій розмір. Також може стягуватися додаткова плата. Тому їх не ввімкнено за умовчанням для тих типів з’єднань, які вважаються дорогими, і до яких зараз належать WiMax, Bluetooth та Cellular. Визнані ідентифікатори типів з’єднань: "ethernet", "wifi", "wimax", "bluetooth" і "cellular".</translation> +<translation id="7763614521440615342">Показувати пропозиції вмісту на сторінці "Нова вкладка"</translation> <translation id="7766336524667238790">Надсилати інформацію про активний сеанс термінала, як-от ідентифікатор і версію додатка.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index ea2ebed..7c2a22dc 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -239,6 +239,13 @@ Nếu chính sách này được đặt thành true, <ph name="PRODUCT_OS_NAME" /> sẽ cố gắng tải xuống các phần tải dữ liệu tự động cập nhật qua HTTP. Nếu chính sách được đặt thành false hoặc không được đặt, HTTPS sẽ không được sử dụng để tải xuống các phần tải dữ liệu tự động cập nhật.</translation> <translation id="2006530844219044261">Quản lý nguồn</translation> <translation id="201557587962247231">Tần suất tải lên báo cáo trạng thái thiết bị</translation> +<translation id="2018836497795982119">Chỉ định khoảng thời gian tính bằng mili giây mà dịch vụ quản lý thiết bị được truy vấn về thông tin chính sách người dùng. + + Đặt chính sách này sẽ ghi đè giá trị mặc định là 3 giờ. Các giá trị hợp lệ dành cho chính sách này nằm trong khoảng từ 1800000 (30 phút) tới 86400000 (1 ngày). Mọi giá trị không nằm trong khoảng này sẽ được giới hạn ở mức tương ứng. Nếu nền tảng hỗ trợ thông báo chính sách, độ trễ làm mới sẽ được đặt thành 24 giờ vì thông báo chính sách được kỳ vọng sẽ buộc làm mới tự động bất cứ khi nào chính sách thay đổi. + + Không đặt chính sách này sẽ cho phép <ph name="PRODUCT_NAME" /> sử dụng giá trị mặc định là 3 giờ. + + Xin lưu ý rằng nếu nền tảng hỗ trợ thông báo chính sách, độ trễ làm mới sẽ được đặt thành 24 giờ (bỏ qua tất cả các cài đặt mặc định và giá trị của chính sách này) vì thông báo chính sách được kỳ vọng sẽ buộc làm mới tự động bất cứ khi nào chính sách thay đổi, giúp việc làm mới thường xuyên hơn trở nên không cần thiết.</translation> <translation id="2024476116966025075">Định cấu hình tên miền được yêu cầu cho ứng dụng truy cập từ xa</translation> <translation id="2030905906517501646">Từ khóa nhà cung cấp dịch vụ tìm kiếm mặc định</translation> <translation id="206623763829450685">Chỉ định các cơ chế xác thực HTTP mà <ph name="PRODUCT_NAME" /> hỗ trợ. @@ -1070,11 +1077,6 @@ Mặc dù chính sách được hỗ trợ trên các nền tảng ở trên, tính năng mà chính sách đang bật có thể khả dụng trên ít nền tảng hơn. Không phải tất cả tính năng trên Nền tảng web không dùng nữa đều có thể bật lại được. Chỉ có thể bật lại các tính năng được liệt kê rõ ràng bên dưới trong một khoảng thời gian giới hạn, khoảng thời gian này khác nhau tùy theo tính năng. Định dạng chung của thẻ chuỗi sẽ là [DeprecatedFeatureName]_EffectiveUntil[yyyymmdd]. Để tham khảo, bạn có thể tìm ý nghĩa ẩn sau các thay đổi về tính năng trên Nền tảng web tại https://bit.ly/blinkintents. </translation> <translation id="4442582539341804154">Bật khóa khi thiết bị không hoạt động hoặc bị tạm ngừng</translation> -<translation id="4445684791305970001">Tắt các Công cụ dành cho nhà phát triển và bảng điều khiển JavaScript. - - Nếu bạn bật cài đặt này, sẽ không thể truy cập các Công cụ dành cho nhà phát triển cũng như không thể kiểm tra các phần tử của trang web được nữa. Mọi phím tắt và mọi menu hoặc các mục nhập menu ngữ cảnh để mở các Công cụ dành cho nhà phát triển hoặc Bảng điều khiển JavaScript sẽ bị tắt. - - Đặt thành tắt hoặc không đặt tùy chọn này sẽ cho phép người dùng sử dụng các Công cụ dành cho nhà phát triển và bảng điều khiển JavaScript.</translation> <translation id="4449545651113180484">Xoay màn hình 270 độ theo chiều kim đồng hồ</translation> <translation id="4467952432486360968">Chặn cookie của bên thứ ba</translation> <translation id="4474167089968829729">Bật lưu mật khẩu cho trình quản lý mật khẩu</translation> @@ -1337,6 +1339,13 @@ Nếu chính sách này được đặt, sẽ tự động đăng nhập vào phiên được chỉ định sau khi một khoảng thời gian trôi qua ở màn hình đăng nhập mà không có tương tác của người dùng (xem |DeviceLocalAccounts|). Nếu chính sách này không được đặt, tự động đăng nhập sẽ không xảy ra.</translation> +<translation id="5529037166721644841">Chỉ định khoảng thời gian tính bằng mili giây mà dịch vụ quản lý thiết bị được truy vấn về thông tin chính sách thiết bị. + + Đặt chính sách này sẽ ghi đè giá trị mặc định là 3 giờ. Các giá trị hợp lệ dành cho chính sách này nằm trong khoảng từ 1800000 (30 phút) tới 86400000 (1 ngày). Mọi giá trị không nằm trong khoảng này được giới hạn ở mức tương ứng. + + Nếu không đặt chính sách này, <ph name="PRODUCT_OS_NAME" /> sẽ sử dụng giá trị mặc định là 3 giờ. + + Xin lưu ý rằng nếu nền tảng hỗ trợ thông báo chính sách, độ trễ làm mới sẽ được đặt thành 24 giờ (bỏ qua tất cả các cài đặt mặc định và giá trị của chính sách này) vì thông báo chính sách được kỳ vọng sẽ bắt buộc làm mới tự động bất cứ khi nào chính sách thay đổi, giúp việc làm mới thường xuyên hơn trở nên không cần thiết.</translation> <translation id="5535957389335373033">Tần suất gửi thông tin theo dõi gói mạng, bằng mili giây. Nếu chính sách này không được đặt thì tần suất mặc định là 3 phút. Tần suất @@ -1895,6 +1904,9 @@ Chính sách này chỉ được áp dụng nếu chính sách 'DefaultSearchProviderEnabled' được bật.</translation> <translation id="7302043767260300182">Độ trễ khóa màn hình khi chạy trên nguồn AC</translation> +<translation id="7311458740754205918">Nếu giá trị này được đặt thành true hoặc không được đặt, trang Tab mới có thể hiển thị đề xuất nội dung dựa trên lịch sử duyệt web, sở thích hoặc vị trí của người dùng. + + Nếu giá trị này được đặt thành false, các đề xuất nội dung được tạo tự động sẽ không hiển thị trên trang Tab mới.</translation> <translation id="7323896582714668701">Tham số dòng lệnh bổ sung cho <ph name="PRODUCT_NAME" /></translation> <translation id="7329842439428490522">Chỉ định khoảng thời gian không có thao tác nhập của người dùng mà sau khoảng thời gian đó màn hình bị tắt khi chạy trên nguồn pin. @@ -2030,6 +2042,7 @@ <translation id="7763479091692861127"> Các loại kết nối được phép sử dụng cho cập nhật hệ điều hành. Các cập nhật hệ điều hành có khả năng gây quá tải cho kết nối do kích thước của chúng và có thể phải chịu thêm phí. Do đó, theo mặc định chúng không được bật cho các loại kết nối hiện được xem là đắt đỏ, gồm có WiMax, Bluetooth và kết nối di động. Các mã định danh loại kết nối được nhận dạng là "ethernet", "wifi", "wimax", "bluetooth" và "cellular".</translation> +<translation id="7763614521440615342">Hiển thị các đề xuất nội dung trên trang Tab mới</translation> <translation id="7766336524667238790">Báo cáo thông tin về phiên kiosk hiện hoạt, chẳng hạn như ID và phiên bản ứng dụng.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb index 781d6fe..2dd9d16 100644 --- a/components/policy/resources/policy_templates_zh-CN.xtb +++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -217,6 +217,13 @@ 如果此政策设为true,<ph name="PRODUCT_OS_NAME" />将尝试通过HTTP下载自动更新有效负荷。如果此政策设为false或未设置,系统将使用HTTPS下载自动更新有效负荷。</translation> <translation id="2006530844219044261">电源管理</translation> <translation id="201557587962247231">设备状态报告的上传频率</translation> +<translation id="2018836497795982119">指定向设备管理服务查询用户政策信息的周期(以毫秒为单位)。 + + 设置此政策将会覆盖默认值(3 小时)。此政策的有效值范围为 1800000(30 分钟)至 86400000(1 天)。低于 1800000 的值将被调整为 1800000,高于 86400000 的值将被调整为 86400000。如果平台支持政策通知,刷新延迟时间将被设为 24 小时,这是因为只要政策发生变化,政策通知应该会自动强制进行刷新。 + + 如果此政策未设置,<ph name="PRODUCT_NAME" /> 将使用默认值(3 小时)。 + + 请注意,如果平台支持政策通知,刷新延迟时间将被设为 24 小时(忽略所有默认值和此政策的值),这是因为只要政策发生变化,政策通知应该会自动强制进行刷新,所以没有必要更频繁地进行刷新。</translation> <translation id="2024476116966025075">为远程访问客户端配置必要的域名</translation> <translation id="2030905906517501646">默认搜索服务提供商关键字</translation> <translation id="206623763829450685">指定 <ph name="PRODUCT_NAME" /> 支持哪些 HTTP 身份验证方案。 @@ -986,7 +993,6 @@ 尽管上述平台均支持此政策,但此政策启用的功能在其中的少数平台上可能无法使用。并非所有已弃用的网络平台功能都可重新启用。只有下面明确列出的功能才能在限定的时间(具体因功能而异)内重新发挥功效。字符串标记的常用格式为 [已弃用功能的名称]_EffectiveUntil[yyyymmdd]。要了解更改网络平台功能的意图,请访问 https://bit.ly/blinkintents。 </translation> <translation id="4442582539341804154">当设备进入待机或暂停状态时启用锁定</translation> -<translation id="4445684791305970001">停用开发者工具和 JavaScript 控制台。如果您启用了此设置,用户就无法再访问开发者工具和查看网站元素了。用于启动开发者工具和 JavaScript 控制台的任何键盘快捷键以及任何菜单或右键菜单条目都会停用。如果停用或未设置此选项,用户就可以使用开发者工具和 JavaScript 控制台。</translation> <translation id="4449545651113180484">将屏幕顺时针旋转 270 度</translation> <translation id="4467952432486360968">阻止第三方 Cookie</translation> <translation id="4474167089968829729">允许将密码保存到密码管理器</translation> @@ -1206,6 +1212,13 @@ 如果设置了此政策,则用户未与登录屏幕互动的时间达到指定的时长后,将会自动登录指定的会话。此公用自助终端必须已配置(参阅 |DeviceLocalAccounts|)。 如果未设置此政策,则不会自动登录。</translation> +<translation id="5529037166721644841">指定向设备管理服务查询设备政策信息的周期(以毫秒为单位)。 + + 设置此政策将会覆盖默认值(3 小时)。此政策的有效值范围为 1800000(30 分钟)至 86400000(1 天)。低于 1800000 的值将被调整为 1800000,高于 86400000 的值将被调整为 86400000。 + + 如果此政策未设置,<ph name="PRODUCT_OS_NAME" /> 将使用默认值(3 小时)。 + + 请注意,如果平台支持政策通知,刷新延迟时间将被设为 24 小时(忽略所有默认值和此政策的值),这是因为只要政策发生变化,政策通知应该会自动强制进行刷新,所以没有必要更频繁地进行刷新。</translation> <translation id="5535957389335373033">发送监控网络数据包的频率(以毫秒为单位)。 如果此政策未设置,频率的默认间隔为 3 分钟。允许的最短间隔为 30 秒,最长间隔为 24 小时(低于 30 秒的值将被视为 30 秒,高于 24 小时的值将被视为 24 小时)。</translation> @@ -1725,6 +1738,9 @@ 要实施此策略,必须启用“DefaultSearchProviderEnabled”策略。</translation> <translation id="7302043767260300182">使用交流电源供电时的屏幕锁定延迟时间</translation> +<translation id="7311458740754205918">如果此政策设为 true 或未设置,“打开新的标签页”页面可能会根据用户的浏览记录、兴趣或位置信息显示内容建议。 + + 如果此政策设为 false,“打开新的标签页”页面上不会显示自动生成的内容建议。</translation> <translation id="7323896582714668701">适用于 <ph name="PRODUCT_NAME" />的其他命令行参数</translation> <translation id="7329842439428490522">指定在使用电池供电时用户停止输入后隔多久关闭屏幕。 @@ -1857,6 +1873,7 @@ <translation id="7763479091692861127"> 可用于操作系统更新的连接类型。由于操作系统更新较大,因此可能会增加连接的负荷,还可能会产生额外费用。因此在默认情况下,系统不会针对公认的昂贵连接类型(目前包括 WiMax、蓝牙和移动网络)启用操作系统更新。 已识别的连接类型标识符包括“以太网”、“Wi-Fi”、“WiMax”、“蓝牙”和“移动”网络。</translation> +<translation id="7763614521440615342">在“打开新的标签页”页面上显示内容建议</translation> <translation id="7766336524667238790">报告当前自助服务终端的相关信息,例如应用 ID 和版本。 如果此政策设为 false,系统将不会报告会话信息。如果此政策设为 true 或未设置,系统将报告会话信息。</translation>
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb index 902267e6..94708dc 100644 --- a/components/policy/resources/policy_templates_zh-TW.xtb +++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -233,6 +233,13 @@ 如果將這項政策設為 True,<ph name="PRODUCT_OS_NAME" /> 將嘗試透過 HTTP 下載自動更新裝載。如果設為 False 或未設定,系統則會透過 HTTPS 下載自動更新裝載。</translation> <translation id="2006530844219044261">電源管理</translation> <translation id="201557587962247231">裝置狀態報告上傳頻率</translation> +<translation id="2018836497795982119">指定向裝置管理服務查詢使用者政策資訊的時間 (以毫秒為單位)。 + + 設定這項政策會覆寫預設值 (3 小時)。這項政策的有效值範圍是 1800000 (30 分鐘) 到 86400000 (1 天)。超出範圍的值一律會自動調整為上限值或下限值。如果平台支援政策通知,由於政策通知通常會在政策變更時自動強制更新,所以更新延遲時間會設為 24 小時。 + + 如未設定這項政策,<ph name="PRODUCT_NAME" /> 會使用預設值 (3 小時)。 + + 請注意,如果平台支援政策通知,由於政策通知通常會在政策變更時自動強制更新 (不需更高的更新頻率),所以更新延遲時間會設為 24 小時 (忽略所有預設值和這項政策的值)。</translation> <translation id="2024476116966025075">設定遠端存取用戶端的網域名稱 (必要)</translation> <translation id="2030905906517501646">預設搜尋引擎關鍵字</translation> <translation id="206623763829450685">指定 <ph name="PRODUCT_NAME" /> 支援的 HTTP 驗證機制。 @@ -1018,7 +1025,6 @@ 雖然以上平台支援政策本身,但這些平台不一定全部支援透過政策啟用的功能。部分已淘汰的網路平台功能無法重新啟用,只有下方明確列出者可在限定時間內啟用,啟用時限則視功能而異。字串標記的通用格式是 <已淘汰的功能名稱>_EffectiveUntil<yyyymmdd>。如需參考資訊,請前往 https://bit.ly/blinkintents 查看網路平台功能變更的意義。 </translation> <translation id="4442582539341804154">裝置閒置或暫停時啟用鎖定</translation> -<translation id="4445684791305970001">停用「開發人員工具」和 JavaScript 控制台。如果您啟用這項設定,系統就無法存取「開發人員工具」且無法查看網站元素。此外,也會停用任何用來開啟「開發人員工具」和 JavaScript 控制台的鍵盤快速鍵、選單或內容選單項目。如果您停用或未設定這個選項,使用者即可使用「開發人員工具」和 JavaScript 控制台。</translation> <translation id="4449545651113180484">將畫面以順時針方向旋轉 270 度</translation> <translation id="4467952432486360968">封鎖第三方 Cookie</translation> <translation id="4474167089968829729">允許將密碼儲存到密碼管理員</translation> @@ -1238,6 +1244,13 @@ 如果設定這項政策,系統會在使用者於登入畫面停止互動後的一段時間過後,自動登入指定的工作階段。您必須已設定公開工作階段 (請參閱 |DeviceLocalAccounts|)。 如果未設定這項政策,系統不會進行自動登入。</translation> +<translation id="5529037166721644841">指定向裝置管理服務查詢使用者政策資訊的時間 (以毫秒為單位)。 + + 設定這項政策會覆寫預設值 (3 小時)。這項政策的有效值範圍是 1800000 (30 分鐘) 到 86400000 (1 天)。超出範圍的值一律會自動調整為上限值或下限值。 + + 如未設定這項政策,<ph name="PRODUCT_OS_NAME" /> 會使用預設值 (3 小時)。 + + 請注意,如果平台支援政策通知,由於政策通知通常會在政策變更時自動強制更新 (不需更高的更新頻率),所以更新延遲時間會設為 24 小時 (忽略所有預設值和這項政策的值)。</translation> <translation id="5535957389335373033">監控網路封包的傳送頻率 (以毫秒為單位)。 如果未設定這項政策,預設頻率為 3 分鐘。 @@ -1762,6 +1775,9 @@ 只有在啟用「DefaultSearchProviderEnabled」政策時,系統才會遵循這項政策。</translation> <translation id="7302043767260300182">在 AC 供電環境下執行時的螢幕鎖定延遲時間</translation> +<translation id="7311458740754205918">如果將這項政策設為 true 或未設定這項政策,系統可能會根據使用者的瀏覽紀錄、興趣或位置在新分頁顯示內容建議。 + + 如果將這項政策設為 false,新分頁就不會顯示系統自動產生的內容建議。</translation> <translation id="7323896582714668701"><ph name="PRODUCT_NAME" /> 額外命令列參數</translation> <translation id="7329842439428490522">指定時間長度,如果系統在電池供電環境下執行且未偵測到使用者輸入行為,就會在這段時間過後關閉螢幕。 @@ -1895,6 +1911,7 @@ <translation id="7763479091692861127"> 允許用來進行作業系統更新的連線類型。由於作業系統更新檔案較大,可能會對連線流量造成沉重負荷,同時也可能讓使用者必須支付額外費用,因此當使用者使用較昂貴的連線類型 (目前包括 WiMax、藍牙和行動網路) 時,預設情況並不允許進行作業系統更新。 系統可識別的連線類型識別碼包括「ethernet」、「wifi」、「wimax」、「bluetooth」和「cellular」。</translation> +<translation id="7763614521440615342">在新分頁顯示內容建議</translation> <translation id="7766336524667238790">回報執行中資訊站工作階段的相關資訊,例如 應用程式 ID 和版本。
diff --git a/components/safe_browsing_db/v4_local_database_manager.cc b/components/safe_browsing_db/v4_local_database_manager.cc index 493ccc5..5f555cfd 100644 --- a/components/safe_browsing_db/v4_local_database_manager.cc +++ b/components/safe_browsing_db/v4_local_database_manager.cc
@@ -21,8 +21,8 @@ // TODO(vakh): Implement this to populate the map appopriately. // Filed as http://crbug.com/608075 StoreFileNameMap GetStoreFileNameMap() { - return StoreFileNameMap( - {{kUrlMalwareId, "UrlMalware.store"}, {kUrlSocengId, "UrlSoceng.store"}}); + return StoreFileNameMap({{GetUrlMalwareId(), "UrlMalware.store"}, + {GetUrlSocEngId(), "UrlSoceng.store"}}); } } // namespace
diff --git a/components/safe_browsing_db/v4_protocol_manager_util.cc b/components/safe_browsing_db/v4_protocol_manager_util.cc index ffc13d4..64905a4 100644 --- a/components/safe_browsing_db/v4_protocol_manager_util.cc +++ b/components/safe_browsing_db/v4_protocol_manager_util.cc
@@ -68,6 +68,29 @@ return os; } +#if defined(OS_WIN) +#define PLATFORM_TYPE WINDOWS_PLATFORM +#elif defined(OS_LINUX) +#define PLATFORM_TYPE LINUX_PLATFORM +#elif defined(OS_MACOSX) +#define PLATFORM_TYPE OSX_PLATFORM +#else +// This should ideally never compile but it is getting compiled on Android. +// See: https://bugs.chromium.org/p/chromium/issues/detail?id=621647 +// TODO(vakh): Once that bug is fixed, this should be removed. If we leave +// the platform_type empty, the server won't recognize the request and +// return an error response which will pollute our UMA metrics. +#define PLATFORM_TYPE LINUX_PLATFORM +#endif + +const UpdateListIdentifier GetUrlMalwareId() { + return UpdateListIdentifier(PLATFORM_TYPE, URL, MALWARE_THREAT); +} + +const UpdateListIdentifier GetUrlSocEngId() { + return UpdateListIdentifier(PLATFORM_TYPE, URL, SOCIAL_ENGINEERING_PUBLIC); +} + // The Safe Browsing V4 server URL prefix. const char kSbV4UrlPrefix[] = "https://safebrowsing.googleapis.com/v4";
diff --git a/components/safe_browsing_db/v4_protocol_manager_util.h b/components/safe_browsing_db/v4_protocol_manager_util.h index fc6472b..467f6041 100644 --- a/components/safe_browsing_db/v4_protocol_manager_util.h +++ b/components/safe_browsing_db/v4_protocol_manager_util.h
@@ -77,25 +77,8 @@ std::ostream& operator<<(std::ostream& os, const UpdateListIdentifier& id); -#if defined(OS_WIN) -#define PLATFORM_TYPE WINDOWS_PLATFORM -#elif defined(OS_LINUX) -#define PLATFORM_TYPE LINUX_PLATFORM -#elif defined(OS_MACOSX) -#define PLATFORM_TYPE OSX_PLATFORM -#else -// This should ideally never compile but it is getting compiled on Android. -// See: https://bugs.chromium.org/p/chromium/issues/detail?id=621647 -// TODO(vakh): Once that bug is fixed, this should be removed. If we leave -// the platform_type empty, the server won't recognize the request and -// return an error response which will pollute our UMA metrics. -#define PLATFORM_TYPE LINUX_PLATFORM -#endif - -const UpdateListIdentifier kUrlMalwareId(PLATFORM_TYPE, URL, MALWARE_THREAT); -const UpdateListIdentifier kUrlSocengId(PLATFORM_TYPE, - URL, - SOCIAL_ENGINEERING_PUBLIC); +const UpdateListIdentifier GetUrlMalwareId(); +const UpdateListIdentifier GetUrlSocEngId(); // The set of interesting lists and ASCII filenames for their hash prefix // stores. The stores are created inside the user-data directory.
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb index b82d906f..174790ff 100644 --- a/components/strings/components_strings_am.xtb +++ b/components/strings/components_strings_am.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">በ<ph name="HOST_NAME" /> ላይ የነበረው የአገልጋይ እውቅና ማረጋገጫ የተጨበረበረ ይመስላል።</translation> <translation id="2889159643044928134">ዳግም አትጫን</translation> <translation id="2896499918916051536">ይህ ተሰኪ አይደገፍም።</translation> +<translation id="2900469785430194048">Google Chrome ይህን ድረ-ገጽ ለማሳየት በሚሞክርበት ጊዜ ማኅደረ ትውስታ አልቆበታል።</translation> <translation id="2909946352844186028">የአውታረ መረብ ለውጥ ተገኝቷል።</translation> <translation id="2915500479781995473">ይህ አገልጋይ <ph name="DOMAIN" /> መሆኑን ሊያረጋግጥ አልቻለም፤ የደህንነት እውቅና ማረጋገጫው ጊዜ አልፎበታል። ይሄ በተሳሳተ ውቅር ወይም ግንኙነትዎን እየጠለፈ ባለ አንድ አጥቂ የተከሰተ ሊሆን ይችላል። የኮምፒውተርዎ ሰዓት በአሁኑ ጊዜ ወደ <ph name="CURRENT_TIME" /> ተዋቅሯል። ትክክል ይመስላል? ካልሆነ የስርዓትዎን ሰዓት አስተካክለው ይህን ገጽ ማደስ አለብዎት።</translation> <translation id="2922350208395188000">የአገልጋይ እውቅና ማረጋገጫ ሊረጋገጥ አልቻለም።</translation> @@ -454,6 +455,7 @@ <translation id="6355080345576803305">የይፋዊ ክፍለ-ጊዜ መሻር</translation> <translation id="6358450015545214790">እነዚህ ምን ማለት ናቸው?</translation> <translation id="6387478394221739770">አዲስ የChrome ባህሪያትን ይፈልጋሉ? የቅድመ ይሁንታ ሰርጣችንን በchrome.com/beta ላይ ይሞክሩት።</translation> +<translation id="6389758589412724634">Chromium ይህን ድረ-ገጽ ለማሳየት በሚሞክርበት ጊዜ ማኅደረ ትውስታ አልቆበታል።</translation> <translation id="641480858134062906"><ph name="URL" /> ለመጫን አልተቻለም</translation> <translation id="6417515091412812850">የእውቅና ማረጋገጫው ተሽሮ እንደሆነ ማረጋገጥ አልተቻለም።</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> ማገናኘት አሻፈረኝ ብሏል።</translation> @@ -631,7 +633,6 @@ <translation id="8647750283161643317">ሁሉንም ወደ ነባሪ ዳግም አስጀምር</translation> <translation id="8680787084697685621">የመለያ መግቢያ ዝርዝሮች ጊዜ ያለፈባቸው ናቸው።</translation> <translation id="8703575177326907206">ከ<ph name="DOMAIN" /> ጋር ያለዎት ግንኙነት አልተመሰጠረም</translation> -<translation id="8713130696108419660">መጥፎ የአስጀማሪ ፊርማ</translation> <translation id="8725066075913043281">እንደገና ይሞክሩ</translation> <translation id="8728672262656704056">ማንነት የማያሳውቅ ሁነታ ውስጥ ገብተዋል</translation> <translation id="8730621377337864115">ተከናውኗል</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index 2ef5f393..dfbf06cd 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">يبدو أن شهادة الخادم على <ph name="HOST_NAME" /> مزيفة.</translation> <translation id="2889159643044928134">إلغاء إعادة التحميل</translation> <translation id="2896499918916051536">هذا المكون الإضافي غير معتمد.</translation> +<translation id="2900469785430194048">نفدت ذاكرة Google Chrome أثناء محاولة عرض صفحة الويب هذه.</translation> <translation id="2909946352844186028">تم اكتشاف حدوث تغيير في الشبكة.</translation> <translation id="2915500479781995473">هذا الخادم لم يتمكن من إثبات أن ذلك <ph name="DOMAIN" />؛ بل إنه شهادة أمان منتهية الصلاحية. وربما يكون سبب ذلك خطأ في التهيئة أو مهاجمًا يعترض الاتصال. تم تعيين ساعة الكمبيوتر حاليًا على <ph name="CURRENT_TIME" />. هل تبدو الساعة صحيحة؟ إذا لم تكن كذلك، يجب عليك تصحيح ساعة النظام، ثم تحديث هذه الصفحة.</translation> <translation id="2922350208395188000">لا يمكن التحقق من شهادة الخادم.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">إلغاء الجلسة العامة</translation> <translation id="6358450015545214790">ماذا تعني هذه الأقسام؟</translation> <translation id="6387478394221739770">إذا كنت مهتمًا بميزات Google الجديدة والرائعة، فيُمكنك تجربة القناة التجريبية على chrome.com/beta.</translation> +<translation id="6389758589412724634">نفدت ذاكرة Chromium أثناء محاولة عرض صفحة الويب هذه.</translation> <translation id="641480858134062906">فشل تحميل <ph name="URL" /></translation> <translation id="6417515091412812850">تعذر التحقق مما إذا كانت الشهادة قد تم إبطالها.</translation> <translation id="6433595998831338502">رفض <ph name="HOST_NAME" /> الاتصال.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">إعادة التعيين على الإعدادات الافتراضية</translation> <translation id="8680787084697685621">تفاصيل تسجيل الدخول إلى الحساب قديمة.</translation> <translation id="8703575177326907206">الاتصال بالموقع <ph name="DOMAIN" /> غير محميّ بنظام تشفير.</translation> -<translation id="8713130696108419660">توقيع أولي غير صحيح</translation> <translation id="8725066075913043281">أعد المحاولة</translation> <translation id="8728672262656704056">لقد انتقلت إلى وضع التصفح المتخفي</translation> <translation id="8730621377337864115">تم</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index 8a66bdc..70c7280 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Изглежда, че сертификатът на сървъра на адрес <ph name="HOST_NAME" /> е подправен.</translation> <translation id="2889159643044928134">Без презареждане</translation> <translation id="2896499918916051536">Тази приставка не се поддържа.</translation> +<translation id="2900469785430194048">Паметта на Google Chrome се изчерпа, докато браузърът опитваше да покаже тази уеб страница.</translation> <translation id="2909946352844186028">Установена бе промяна в мрежата.</translation> <translation id="2915500479781995473">Сървърът не можа да докаже, че е <ph name="DOMAIN" /> – сертификатът му за сигурност е изтекъл. Това може да се дължи на неправилно конфигуриране или на прихващане на връзката ви от извършител на атака. Понастоящем часовникът на компютъра ви показва <ph name="CURRENT_TIME" />. Това правилно ли е? Ако не е, трябва да сверите системния си часовник и след това да опресните страницата.</translation> <translation id="2922350208395188000">Сертификатът на сървъра не може да бъде проверен.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Принудително зададено поради обществена сесия</translation> <translation id="6358450015545214790">Какво означават тези неща?</translation> <translation id="6387478394221739770">Търсите интересни нови функции на Chrome? Изпробвайте бета канала на адрес chrome.com/beta.</translation> +<translation id="6389758589412724634">Паметта на Chromium се изчерпа, докато браузърът опитваше да покаже тази уеб страница.</translation> <translation id="641480858134062906">Неуспешно зареждане на <ph name="URL" /></translation> <translation id="6417515091412812850">Не може да се провери дали сертификатът е анулиран.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> отказа да установи връзка.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Възстановяване на всичко към стандартното състояние</translation> <translation id="8680787084697685621">Данните за вход в профила ви не са актуални.</translation> <translation id="8703575177326907206">Връзката ви с <ph name="DOMAIN" /> не е шифрована.</translation> -<translation id="8713130696108419660">Лош подпис посредством първоначалния ключ</translation> <translation id="8725066075913043281">Опитайте отново</translation> <translation id="8728672262656704056">Преминахте в режим „инкогнито“</translation> <translation id="8730621377337864115">Готово</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb index 326f1b7..0c5dcce 100644 --- a/components/strings/components_strings_bn.xtb +++ b/components/strings/components_strings_bn.xtb
@@ -171,6 +171,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> এর সার্ভার শংসাপত্রটি জাল বলে মনে হচ্ছে।</translation> <translation id="2889159643044928134">পুনরায় লোড করবেন না</translation> <translation id="2896499918916051536">এই প্লাগ ইন সমর্থিত নয়৷</translation> +<translation id="2900469785430194048">এই ওয়েবপৃষ্ঠা প্রদর্শন করার সময় Google Chrome এর মেমরি শেষ হয়ে গেছে।</translation> <translation id="2909946352844186028">একটি নেটওয়ার্ক পরিবর্তন সনাক্ত হয়েছে৷</translation> <translation id="2915500479781995473">এই সার্ভার প্রমাণ করতে পারেনি যে এটি <ph name="DOMAIN" />; এর নিরাপত্তা শংসাপত্রটির মেয়াদোত্তীর্ণ হয়ে গেছে৷ কোনো ভুল কনফিগারেশনের কারণে অথবা কোনো আক্রমণকারী আপনার সংযোগ মাঝপথে আটকে দিচ্ছে বলে এমনটা হতে পারে৷ আপনার কম্পিউটারের ঘড়িটি বর্তমানে <ph name="CURRENT_TIME" /> হিসেবে সেট করা আছে৷ এটি কি ঠিক আছে? ঠিক না থাকলে, আপনার সিস্টেম ঘড়িটি ঠিক করে পৃষ্ঠাটি রিফ্রেশ করা উচিৎ৷</translation> <translation id="2922350208395188000">সার্ভারের শংসাপত্র চেক করা যাবে না৷</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">সর্বজনীন অধিবেশন ওভাররাইড</translation> <translation id="6358450015545214790">এর অর্থ কী?</translation> <translation id="6387478394221739770">Chrome এর নতুন দুর্দান্ত বৈশিষ্ট্যগুলিতে আগ্রহী? chrome.com/beta এ আমাদের বিটা চ্যানেল ব্যবহার করে দেখুন৷</translation> +<translation id="6389758589412724634">এই ওয়েবপৃষ্ঠা প্রদর্শন করার সময় Chromium এর মেমরি শেষ হয়ে গেছে।</translation> <translation id="641480858134062906"><ph name="URL" /> লোড করতে ব্যর্থ</translation> <translation id="6417515091412812850">শংসাপত্রকরণটি প্রত্যাহার করা হয়েছে কিনা তা যাচাইয়ে অক্ষম৷</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> সংযোগ করতে প্রত্যাখ্যান করেছে।</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">সবগুলিকে ডিফল্টে পুনরায় সেট করুন</translation> <translation id="8680787084697685621">অ্যাকাউন্ট সাইন-ইন বিশদ তারিখ সীমার বাইরে৷</translation> <translation id="8703575177326907206"><ph name="DOMAIN" />-এ আপনার কানেকশন এনক্রিপ্ট হয় নি৷</translation> -<translation id="8713130696108419660">খারাপ ইনিশিয়াল স্বাক্ষর</translation> <translation id="8725066075913043281">আবার চেষ্টা করুন</translation> <translation id="8728672262656704056">আপনি ছদ্মবেশে রয়েছেন৷</translation> <translation id="8730621377337864115">সম্পন্ন হয়েছে</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index 6e807e3..a43b43b 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -168,6 +168,7 @@ <translation id="284702764277384724">Sembla que el certificat de servidor disponible a <ph name="HOST_NAME" /> és una falsificació.</translation> <translation id="2889159643044928134">No tornis a carregar</translation> <translation id="2896499918916051536">Aquest connector no és compatible.</translation> +<translation id="2900469785430194048">Google Chrome s'ha quedat sense memòria en provar de mostrar aquesta pàgina web.</translation> <translation id="2909946352844186028">S'ha detectat un canvi a la xarxa.</translation> <translation id="2915500479781995473">Aquest servidor no ha pogut comprovar que sigui <ph name="DOMAIN" /> perquè el seu certificat de seguretat ha caducat. Això pot ser a causa d'una configuració incorrecta o d'un atacant que intercepta la vostra connexió. Actualment, el rellotge de l'ordinador està definit com a <ph name="CURRENT_TIME" />. Creieu que és correcte? Si no és així, corregiu el rellotge del sistema i actualitzeu aquesta pàgina.</translation> <translation id="2922350208395188000">No es pot comprovar el certificat del servidor.</translation> @@ -451,6 +452,7 @@ <translation id="6355080345576803305">Substitueix en sessions públiques</translation> <translation id="6358450015545214790">Què vol dir tot això?</translation> <translation id="6387478394221739770">Esteu interessat en les funcions de Chrome noves i interessants? Proveu el nostre canal beta a la pàgina chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium s'ha quedat sense memòria en provar de mostrar aquesta pàgina web.</translation> <translation id="641480858134062906">No s'ha pogut carregar <ph name="URL" /></translation> <translation id="6417515091412812850">No es pot comprovar si s'ha revocat el certificat.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> no ens ha permès establir la connexió.</translation> @@ -587,7 +589,7 @@ <translation id="7983301409776629893">Tradueix sempre de: <ph name="ORIGINAL_LANGUAGE" /> a: <ph name="TARGET_LANGUAGE" /></translation> <translation id="7995512525968007366">No especificat</translation> <translation id="8012647001091218357">En aquests moments no ens hem pogut posar en contacte amb els pares. Torneu-ho a provar.</translation> -<translation id="8034522405403831421">Aquesta pàgina està escrita en <ph name="SOURCE_LANGUAGE" />. Voleu traduir-la a <ph name="TARGET_LANGUAGE" />?</translation> +<translation id="8034522405403831421">Aquesta pàgina està escrita en <ph name="SOURCE_LANGUAGE" />. Vols traduir-la a <ph name="TARGET_LANGUAGE" />?</translation> <translation id="8034955203865359138">No s'ha trobat cap entrada a l'historial.</translation> <translation id="8088680233425245692">No s'ha pogut consultar l'article.</translation> <translation id="8091372947890762290">L'activació està pendent al servidor</translation> @@ -628,7 +630,6 @@ <translation id="8647750283161643317">Restableix-ho tot als valors predeterminats</translation> <translation id="8680787084697685621">Les dades d'inici de sessió del compte no estan actualitzades.</translation> <translation id="8703575177326907206">La teva connexió a <ph name="DOMAIN" /> no està xifrada.</translation> -<translation id="8713130696108419660">Signatura inicial incorrecta</translation> <translation id="8725066075913043281">Torna-ho a provar</translation> <translation id="8728672262656704056">Heu passat al mode d'incògnit.</translation> <translation id="8730621377337864115">Fet</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb index 8329c2b..9d55b8d 100644 --- a/components/strings/components_strings_cs.xtb +++ b/components/strings/components_strings_cs.xtb
@@ -168,6 +168,7 @@ <translation id="284702764277384724">Zdá se, že certifikát serveru webu <ph name="HOST_NAME" /> je podvrh.</translation> <translation id="2889159643044928134">Nenačítat znovu</translation> <translation id="2896499918916051536">Tento plugin není podporován.</translation> +<translation id="2900469785430194048">Prohlížeč Google Chrome k zobrazení této webové stránky neměl dostatek paměti.</translation> <translation id="2909946352844186028">Byla zjištěna změna sítě.</translation> <translation id="2915500479781995473">Tento server nemohl prokázat, že patří do domény <ph name="DOMAIN" />. Platnost jeho bezpečnostního certifikátu vypršela. Může to být způsobeno nesprávnou konfigurací nebo tím, že vaše připojení zachytává útočník. Hodiny ve vašem počítači jsou aktuálně nastaveny na <ph name="CURRENT_TIME" />. Je to správně? Pokud ne, měli byste čas v počítači opravit a poté tuto stránku načíst znovu.</translation> <translation id="2922350208395188000">Certifikát serveru nelze zkontrolovat.</translation> @@ -446,6 +447,7 @@ <translation id="6355080345576803305">Přepsání veřejné relace</translation> <translation id="6358450015545214790">Nápověda</translation> <translation id="6387478394221739770">Zajímají vás nové funkce Chromu? Vyzkoušejte kanál beta na adrese chrome.com/beta.</translation> +<translation id="6389758589412724634">Prohlížeč Chromium k zobrazení této webové stránky neměl dostatek paměti.</translation> <translation id="641480858134062906">Stránku <ph name="URL" /> se nepodařilo se načíst.</translation> <translation id="6417515091412812850">Nelze ověřit, zda byl certifikát zrušen.</translation> <translation id="6433595998831338502">Web <ph name="HOST_NAME" /> odmítl připojení.</translation> @@ -623,7 +625,6 @@ <translation id="8647750283161643317">Obnovit u všech experimentů výchozí nastavení</translation> <translation id="8680787084697685621">Přihlašovací údaje k účtu jsou zastaralé.</translation> <translation id="8703575177326907206">Vaše spojení se serverem <ph name="DOMAIN" /> není šifrované.</translation> -<translation id="8713130696108419660">Nesprávný počáteční podpis</translation> <translation id="8725066075913043281">Zkusit znovu</translation> <translation id="8728672262656704056">Jste v anonymním režimu</translation> <translation id="8730621377337864115">Hotovo</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index 759eea7e..8e1c6ea 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Serverens certifikat på <ph name="HOST_NAME" /> lader til at være en forfalskning.</translation> <translation id="2889159643044928134">Genindlæs ikke siden</translation> <translation id="2896499918916051536">Dette plugin understøttes ikke.</translation> +<translation id="2900469785430194048">Google Chrome løb tør for hukommelse, da websiden skulle vises.</translation> <translation id="2909946352844186028">Der blev registreret en netværksændring.</translation> <translation id="2915500479781995473">Denne server kunne ikke bevise, at den er <ph name="DOMAIN" />, da sikkerhedscertifikatet er udløbet. Dette kan skyldes en fejlkonfiguration, eller at en hacker har opfanget din forbindelse. Uret på din computer er indstillet til <ph name="CURRENT_TIME" />. Er det korrekt? Hvis ikke, skal du indstille uret og opdatere siden.</translation> <translation id="2922350208395188000">Serverens certifikat kan ikke kontrolleres.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Tilsidesættelse af offentlig session</translation> <translation id="6358450015545214790">Hvad betyder dette?</translation> <translation id="6387478394221739770">Er du interesseret i smarte nye Chrome-funktioner? Prøv vores betakanal på chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium løb tør for hukommelse, da websiden skulle vises.</translation> <translation id="641480858134062906"><ph name="URL" /> indlæsningen mislykkedes</translation> <translation id="6417515091412812850">Kan ikke kontrollere, om certifikatet er tilbagekaldt.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> nægtede at oprette forbindelse.</translation> @@ -465,7 +467,7 @@ <translation id="6550675742724504774">Valgmuligheder</translation> <translation id="6596325263575161958">Krypteringsmuligheder</translation> <translation id="662080504995468778">Bliv her</translation> -<translation id="6628463337424475685"><ph name="ENGINE" /> Søg</translation> +<translation id="6628463337424475685"><ph name="ENGINE" /> -søgning</translation> <translation id="6634865548447745291">Du kan ikke gå til <ph name="SITE" /> lige nu, da <ph name="BEGIN_LINK" />dette certifikat er blevet tilbagekaldt<ph name="END_LINK" />. Netværksfejl og angreb er normalt midlertidige, så denne side vil sandsynligvis fungere senere.</translation> <translation id="6644283850729428850">Denne politik er forældet.</translation> <translation id="6656103420185847513">Rediger mappe</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Nulstil alle til standard</translation> <translation id="8680787084697685621">Oplysningerne om kontologin er forældede.</translation> <translation id="8703575177326907206">Din forbindelse til <ph name="DOMAIN" /> er ikke krypteret.</translation> -<translation id="8713130696108419660">Ugyldig første signatur</translation> <translation id="8725066075913043281">Forsøg igen</translation> <translation id="8728672262656704056">Du er nu i inkognitotilstand</translation> <translation id="8730621377337864115">Fuldført</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index 88d9006..cb484c8 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -171,6 +171,7 @@ <translation id="284702764277384724">Das Serverzertifikat bei <ph name="HOST_NAME" /> ist anscheinend eine Fälschung.</translation> <translation id="2889159643044928134">Nicht neu laden</translation> <translation id="2896499918916051536">Dieses Plug-in wird nicht unterstützt.</translation> +<translation id="2900469785430194048">Beim Versuch, diese Webseite aufzurufen, hat Google Chrome das Arbeitsspeicherlimit erreicht.</translation> <translation id="2909946352844186028">Eine Netzwerkänderung ist aufgetreten.</translation> <translation id="2915500479781995473">Dieser Server konnte nicht nachweisen, dass es sich dabei um <ph name="DOMAIN" /> handelt, da das Sicherheitszertifikat abgelaufen ist. Der Grund hierfür könnte eine fehlerhafte Konfiguration oder ein Angreifer sein, der Ihre Verbindung abfängt. Die Uhr Ihres Computers zeigt derzeit <ph name="CURRENT_TIME" /> an. Ist das korrekt? Falls nicht, stellen Sie die Uhr Ihres Systems richtig ein und aktualisieren Sie dann diese Seite.</translation> <translation id="2922350208395188000">Das Serverzertifikat kann nicht überprüft werden.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Überschreibung öffentlicher Sitzung</translation> <translation id="6358450015545214790">Was bedeuten diese Hinweise?</translation> <translation id="6387478394221739770">Interessiert an coolen neuen Chrome-Funktionen? Testen Sie unsere Betaversion unter chrome.com/beta.</translation> +<translation id="6389758589412724634">Beim Versuch, diese Webseite aufzurufen, hat Chromium das Arbeitsspeicherlimit erreicht.</translation> <translation id="641480858134062906"><ph name="URL" /> konnte nicht geladen werden</translation> <translation id="6417515091412812850">Überprüfung, ob das Zertifikat zurückgerufen wurde, nicht möglich</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> hat die Verbindung abgelehnt.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Alle auf Standardeinstellung zurücksetzen</translation> <translation id="8680787084697685621">Die Anmeldeinformationen für dieses Konto sind veraltet.</translation> <translation id="8703575177326907206">Die Verbindung zu <ph name="DOMAIN" /> ist nicht verschlüsselt.</translation> -<translation id="8713130696108419660">Erste Signatur ungültig</translation> <translation id="8725066075913043281">Erneut versuchen</translation> <translation id="8728672262656704056">Sie haben den Inkognitomodus aktiviert</translation> <translation id="8730621377337864115">Fertig</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb index e20cba1..a4b69dc 100644 --- a/components/strings/components_strings_el.xtb +++ b/components/strings/components_strings_el.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Το πιστοποιητικό διακομιστή στον κεντρικό υπολογιστή <ph name="HOST_NAME" /> φαίνεται πως είναι πλαστό.</translation> <translation id="2889159643044928134">Να μην γίνει επανάληψη φόρτωσης</translation> <translation id="2896499918916051536">Αυτή η προσθήκη δεν υποστηρίζεται.</translation> +<translation id="2900469785430194048">Η διαθέσιμη μνήμη του Google Chrome εξαντλήθηκε, κατά την προσπάθεια προβολής αυτής της ιστοσελίδας.</translation> <translation id="2909946352844186028">Εντοπίστηκε μια αλλαγή δικτύου.</translation> <translation id="2915500479781995473">Αυτός ο διακομιστής δεν μπόρεσε να αποδείξει ότι είναι <ph name="DOMAIN" />. Το πιστοποιητικό ασφαλείας του έχει λήξει. Αυτό ίσως να οφείλεται σε λάθος διαμόρφωση ή σε έναν εισβολέα που επιτίθεται στη σύνδεσή σας. Αυτήν τη στιγμή, η ώρα του υπολογιστή σας έχει οριστεί σε <ph name="CURRENT_TIME" />. Είναι σωστό αυτό; Εάν όχι, θα πρέπει να διορθώσετε το ρολόι του συστήματός σας και έπειτα να ανανεώσετε αυτήν τη σελίδα.</translation> <translation id="2922350208395188000">Δεν είναι δυνατός ο έλεγχος του πιστοποιητικού του διακομιστή.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Παράκαμψη δημόσιας περιόδου σύνδεσης</translation> <translation id="6358450015545214790">Τι σημαίνουν αυτά;</translation> <translation id="6387478394221739770">Θέλετε να ενημερώνεστε για τις συναρπαστικές νέες δυνατότητες του Chrome; Επισκεφτείτε το κανάλι beta στη διεύθυνση chrome.com/beta.</translation> +<translation id="6389758589412724634">Η διαθέσιμη μνήμη του Chromium εξαντλήθηκε, κατά την προσπάθεια προβολής αυτής της ιστοσελίδας.</translation> <translation id="641480858134062906">Απέτυχε η φόρτωση για <ph name="URL" /></translation> <translation id="6417515091412812850">Δεν είναι δυνατόν να ελεγχθεί αν το πιστοποιητικό έχει ακυρωθεί.</translation> <translation id="6433595998831338502">Ο κεντρικός υπολογιστής <ph name="HOST_NAME" /> απέρριψε τη σύνδεση.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Επαναφορά προεπιλογών</translation> <translation id="8680787084697685621">Τα στοιχεία σύνδεσης λογαριασμού έχουν λήξει.</translation> <translation id="8703575177326907206">Η σύνδεσή σας με τον τομέα <ph name="DOMAIN" /> δεν είναι κρυπτογραφημένη.</translation> -<translation id="8713130696108419660">Εσφαλμένη αρχική υπογραφή</translation> <translation id="8725066075913043281">Προσπαθήστε ξανά</translation> <translation id="8728672262656704056">Πραγματοποιείτε ανώνυμη περιήγηση</translation> <translation id="8730621377337864115">Ολοκληρώθηκε</translation>
diff --git a/components/strings/components_strings_en-GB.xtb b/components/strings/components_strings_en-GB.xtb index eec7cc8..a8f1e735 100644 --- a/components/strings/components_strings_en-GB.xtb +++ b/components/strings/components_strings_en-GB.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">The server certificate at <ph name="HOST_NAME" /> appears to be a forgery.</translation> <translation id="2889159643044928134">Don't reload</translation> <translation id="2896499918916051536">This plug-in is not supported.</translation> +<translation id="2900469785430194048">Google Chrome ran out of memory while trying to display this web page.</translation> <translation id="2909946352844186028">A network change was detected.</translation> <translation id="2915500479781995473">This server could not prove that it is <ph name="DOMAIN" />; its security certificate expired. This may be caused by a misconfiguration or an attacker intercepting your connection. Your computer's clock is currently set to <ph name="CURRENT_TIME" />. Does that look right? If not, you should correct your system's clock and then refresh this page.</translation> <translation id="2922350208395188000">Server's certificate cannot be checked.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Public session override</translation> <translation id="6358450015545214790">What do these mean?</translation> <translation id="6387478394221739770">Interested in cool new Chrome features? Try our beta channel at chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium ran out of memory while trying to display this web page.</translation> <translation id="641480858134062906"><ph name="URL" /> failed to load</translation> <translation id="6417515091412812850">Unable to check whether the certificate has been revoked.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> refused to connect.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Reset all to default</translation> <translation id="8680787084697685621">Account sign-in details are out of date.</translation> <translation id="8703575177326907206">Your connection to <ph name="DOMAIN" /> is not encrypted.</translation> -<translation id="8713130696108419660">Bad intial signature</translation> <translation id="8725066075913043281">Try again</translation> <translation id="8728672262656704056">You’ve gone incognito</translation> <translation id="8730621377337864115">Finished</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index 88665dab..2d7ac06 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">El certificado del servidor en <ph name="HOST_NAME" /> parece falso.</translation> <translation id="2889159643044928134">No volver a cargar</translation> <translation id="2896499918916051536">El complemento no es compatible.</translation> +<translation id="2900469785430194048">Google Chrome se quedó sin memoria cuando intentaba mostrar esta página web.</translation> <translation id="2909946352844186028">Se detectó un cambio de red.</translation> <translation id="2915500479781995473">Este servidor no pudo probar que su dominio es <ph name="DOMAIN" />; el certificado de seguridad venció. Es posible que esto se deba a una configuración incorrecta o a un atacante que interceptó la conexión. La hora actual del reloj de la computadora es <ph name="CURRENT_TIME" />. ¿Es correcta? De lo contrario, corrige la hora del sistema y actualiza la página.</translation> <translation id="2922350208395188000">No se puede comprobar el certificado del servidor.</translation> @@ -454,6 +455,7 @@ <translation id="6355080345576803305">Anulación de sesión pública</translation> <translation id="6358450015545214790">¿Qué significa esto?</translation> <translation id="6387478394221739770">Si estás interesado en probar nuevas e interesantes funciones de Chrome, visita nuestro canal beta en chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium se quedó sin memoria cuando intentaba mostrar esta página web.</translation> <translation id="641480858134062906">Se produjo un error al cargar <ph name="URL" />.</translation> <translation id="6417515091412812850">No se pudo verificar si el certificado ha sido revocado.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> rechazó la conexión.</translation> @@ -631,7 +633,6 @@ <translation id="8647750283161643317">Restablecer todos los valores predeterminados</translation> <translation id="8680787084697685621">Los datos de inicio de cuenta están desactualizados</translation> <translation id="8703575177326907206">Tu conexión a <ph name="DOMAIN" /> no está cifrada.</translation> -<translation id="8713130696108419660">Firma inicial no válida</translation> <translation id="8725066075913043281">Intentar nuevamente</translation> <translation id="8728672262656704056">Estás en modo incógnito</translation> <translation id="8730621377337864115">Listo</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index 34537920..9541a32 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Parece que el certificado de servidor de la página <ph name="HOST_NAME" /> es falso.</translation> <translation id="2889159643044928134">No volver a cargar</translation> <translation id="2896499918916051536">No se admite este complemento.</translation> +<translation id="2900469785430194048">Google Chrome se ha quedado sin memoria al intentar mostrar esta página web.</translation> <translation id="2909946352844186028">Se ha detectado un cambio de red.</translation> <translation id="2915500479781995473">Este servidor no ha podido probar que su dominio sea <ph name="DOMAIN" />, ya que su certificado de seguridad ha caducado. Este problema puede deberse a una configuración incorrecta o a que un atacante haya interceptado la conexión. La hora actual del reloj de tu ordenador es <ph name="CURRENT_TIME" />. ¿Es correcta? Si no lo es, debes corregir la hora del sistema y, a continuación, actualizar esta página.</translation> <translation id="2922350208395188000">No es posible comprobar el certificado del servidor.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Anulación de sesión pública</translation> <translation id="6358450015545214790">¿Necesitas ayuda?</translation> <translation id="6387478394221739770">Si estás interesado en probar nuevas e interesantes funciones de Chrome, prueba nuestro canal beta en la página chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium se ha quedado sin memoria al intentar mostrar esta página web.</translation> <translation id="641480858134062906">Se ha producido un error al cargar <ph name="URL" />.</translation> <translation id="6417515091412812850">No se ha podido comprobar si se ha revocado el certificado.</translation> <translation id="6433595998831338502">La página <ph name="HOST_NAME" /> ha rechazado la conexión.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Restablecer todo a su estado predeterminado</translation> <translation id="8680787084697685621">La información de inicio de sesión no está actualizada.</translation> <translation id="8703575177326907206">Tu conexión a <ph name="DOMAIN" /> no está cifrada.</translation> -<translation id="8713130696108419660">Firma inicial incorrecta</translation> <translation id="8725066075913043281">Volver a intentarlo</translation> <translation id="8728672262656704056">Has iniciado una sesión de incógnito</translation> <translation id="8730621377337864115">Listo</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb index 23d9c96..9467e44 100644 --- a/components/strings/components_strings_et.xtb +++ b/components/strings/components_strings_et.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Hosti <ph name="HOST_NAME" /> serveri sertifikaat näib olevat võltsing.</translation> <translation id="2889159643044928134">Ära laadi uuesti</translation> <translation id="2896499918916051536">Seda pistikprogrammi ei toetata.</translation> +<translation id="2900469785430194048">Google Chrome'il pole selle veebilehe kuvamiseks piisavalt mälu.</translation> <translation id="2909946352844186028">Tuvastati võrgumuudatus.</translation> <translation id="2915500479781995473">Server ei suutnud tõestada, et see on domeen <ph name="DOMAIN" />; selle turvasertifikaat on aegunud. Selle põhjuseks võib olla vale seadistus või ründaja, kes on sekkunud teie ühendusse. Teie arvuti kell on praegu <ph name="CURRENT_TIME" />. Kas see on õige? Kui see pole õige, korrigeerige süsteemi kellaaega ja värskendage lehte.</translation> <translation id="2922350208395188000">Serveri sertifikaati ei saa kontrollida.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Avaliku seansi alistamine</translation> <translation id="6358450015545214790">Mida need tähendavad?</translation> <translation id="6387478394221739770">Kas olete huvitatud Chrome'i uutest lahedatest funktsioonidest? Proovige meie beetakanalit aadressil chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromiumil pole selle veebilehe kuvamiseks piisavalt mälu.</translation> <translation id="641480858134062906">Aadressilt <ph name="URL" /> laadimine ebaõnnestus</translation> <translation id="6417515091412812850">Ei saa kontrollida sertifikaadi võimalikku tühistamist.</translation> <translation id="6433595998831338502">Host <ph name="HOST_NAME" /> keeldus ühendamast.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Lähtesta kõik vaikeolekusse</translation> <translation id="8680787084697685621">Konto sisselogimisüksikasjad on aegunud.</translation> <translation id="8703575177326907206">Teie ühendus <ph name="DOMAIN" />'ga pole krüptitud.</translation> -<translation id="8713130696108419660">Sobimatu esialgne allkiri</translation> <translation id="8725066075913043281">Proovi uuesti</translation> <translation id="8728672262656704056">Olete inkognito režiimis</translation> <translation id="8730621377337864115">Valmis</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb index 6f2a42fd..5df72cf 100644 --- a/components/strings/components_strings_fa.xtb +++ b/components/strings/components_strings_fa.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">به نظر میرسد که گواهی سرور در <ph name="HOST_NAME" /> جعلی باشد.</translation> <translation id="2889159643044928134">تازهسازی نشود</translation> <translation id="2896499918916051536">این افزایه پشتیبانی نمیشود.</translation> +<translation id="2900469785430194048">Google Chrome هنگام تلاش برای نمایش این صفحه با کمبود حافظه روبرو شد.</translation> <translation id="2909946352844186028">تغییر شبکه تشخیص داده شد.</translation> <translation id="2915500479781995473">این سرور نتوانست اثبات کند که این <ph name="DOMAIN" /> است؛ گواهینامه امنیتی آن منقضی شده است. ممکن است علت این موضوع پیکربندی اشتباه باشد یا مهاجمی اتصال شما را قطع کرده است. در حال حاضر ساعت رایانهتان روی <ph name="CURRENT_TIME" /> تنظیم شده است. آیا این زمان درست است؟ اگر درست نیست، باید ساعت سیستمتان را تنظیم کنید و سپس این صفحه را بازخوانی نمایید.</translation> <translation id="2922350208395188000">گواهی سرور بررسی نمیشود.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">لغو جلسه عمومی</translation> <translation id="6358450015545214790">معنی اینها چیست؟</translation> <translation id="6387478394221739770">علاقهمند به قابلیتهای جدید و جالب Chrome هستید؟ کانال بتای ما را در chrome.com/beta امتحان کنید.</translation> +<translation id="6389758589412724634">Chromium هنگام تلاش برای نمایش این صفحه با کمبود حافظه روبرو شد.</translation> <translation id="641480858134062906">بارگیری <ph name="URL" /> ناموفق بود</translation> <translation id="6417515091412812850">امکان بررسی اینکه آیا مجوز باطل شده است یا نه وجود ندارد.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> از اتصال خودداری کرد.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">بازنشانی همه به موارد پیشفرض</translation> <translation id="8680787084697685621">جزئیات ورود به سیستم حساب قدیمی است.</translation> <translation id="8703575177326907206">اتصال شما به <ph name="DOMAIN" /> رمزگذاری نشده است.</translation> -<translation id="8713130696108419660">امضای اولیه خراب</translation> <translation id="8725066075913043281">سعی مجدد</translation> <translation id="8728672262656704056">به صورت ناشناس وارد شدید</translation> <translation id="8730621377337864115">تمام</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb index fa31f1d..88c04b1 100644 --- a/components/strings/components_strings_fi.xtb +++ b/components/strings/components_strings_fi.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Sivustolla <ph name="HOST_NAME" /> oleva palvelimen varmenne vaikuttaa väärennökseltä.</translation> <translation id="2889159643044928134">Älä päivitä</translation> <translation id="2896499918916051536">Tätä laajennusta ei tueta.</translation> +<translation id="2900469785430194048">Google Chromen muisti loppui verkkosivua näytettäessä.</translation> <translation id="2909946352844186028">Verkossa havaittiin muutos.</translation> <translation id="2915500479781995473">Palvelin ei voinut todistaa olevansa <ph name="DOMAIN" />; sen suojausvarmenne on vanhentunut. Tämä voi johtua määritysvirheestä tai verkkoyhteytesi siepanneesta hyökkääjästä. Tietokoneesi kellon aika on tällä hetkellä <ph name="CURRENT_TIME" />. Onko se oikeassa? Jos ei, siirrä kello oikeaan aikaan ja päivitä sivu.</translation> <translation id="2922350208395188000">Palvelimen varmennetta ei voi tarkistaa.</translation> @@ -454,6 +455,7 @@ <translation id="6355080345576803305">Julkisen istunnon ohitus</translation> <translation id="6358450015545214790">Mitä nämä tarkoittavat?</translation> <translation id="6387478394221739770">Oletko kiinnostunut Chromen uusista jännittävistä ominaisuuksista? Kokeile beta-kanavaa osoitteessa chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromiumin muisti loppui verkkosivua näytettäessä.</translation> <translation id="641480858134062906"><ph name="URL" />-lataus epäonnistui</translation> <translation id="6417515091412812850">Ei voida tarkistaa, onko varmenne kumottu.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> kieltäytyi muodostamasta yhteyttä.</translation> @@ -631,7 +633,6 @@ <translation id="8647750283161643317">Palauta kaikki oletusarvoon</translation> <translation id="8680787084697685621">Tilin kirjautumistiedot ovat vanhentuneet.</translation> <translation id="8703575177326907206">Yhteyttäsi verkkotunnukseen <ph name="DOMAIN" /> ei ole salattu.</translation> -<translation id="8713130696108419660">Virheelliset nimikirjaimet</translation> <translation id="8725066075913043281">Yritä uudelleen</translation> <translation id="8728672262656704056">Olet muuttunut näkymättömäksi</translation> <translation id="8730621377337864115">Valmis</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb index a224ab8..0d79511 100644 --- a/components/strings/components_strings_fil.xtb +++ b/components/strings/components_strings_fil.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Mukhang peke ang certificate ng server sa <ph name="HOST_NAME" />.</translation> <translation id="2889159643044928134">Huwag I-reload</translation> <translation id="2896499918916051536">Hindi sinusuportahan ang plugin na ito.</translation> +<translation id="2900469785430194048">Naubusan ng memory ang Google Chrome habang sinusubukang ipakita ang webpage na ito.</translation> <translation id="2909946352844186028">May nakitang pagbabago sa network.</translation> <translation id="2915500479781995473">Hindi mapatunayan ng server na ito na ito ay <ph name="DOMAIN" />; nag-expire na ang certificate ng seguridad nito. Maaaring sanhi ito ng maling configuration o ng panghihimasok ng isang attacker sa iyong koneksyon. Kasalukuyang nakatakda ang orasan ng iyong computer sa <ph name="CURRENT_TIME" />. Mukha bang tama ito? Kung hindi, dapat mong iwasto ang orasan ng iyong system at pagkatapos ay i-refresh ang page na ito.</translation> <translation id="2922350208395188000">Hindi masuri ang certificate ng server.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Override sa pampublikong session</translation> <translation id="6358450015545214790">Ano ang ibig sabihin ng mga ito?</translation> <translation id="6387478394221739770">Interesado sa mga astig at bagong tampok sa Chrome? Subukan ang aming beta channel sa chrome.com/beta.</translation> +<translation id="6389758589412724634">Naubusan ng memory ang Chromium habang sinusubukang ipakita ang webpage na ito.</translation> <translation id="641480858134062906">Nabigo sa pagload ang <ph name="URL" /></translation> <translation id="6417515091412812850">Hindi nagawang masuri kung nabawi na ang certificate.</translation> <translation id="6433595998831338502">Tumangging kumonekta ang <ph name="HOST_NAME" />.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">I-reset ang lahat sa default</translation> <translation id="8680787084697685621">Wala sa panahon ang mga detalye sa pag-sign-in sa account.</translation> <translation id="8703575177326907206">Ang iyong koneksyon sa <ph name="DOMAIN" /> ay hindi naka-encrypt.</translation> -<translation id="8713130696108419660">Maling lagda ng inisyal</translation> <translation id="8725066075913043281">Muling subukan</translation> <translation id="8728672262656704056">Naging incognito ka</translation> <translation id="8730621377337864115">Tapos na</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb index 47c2803..e3a8e6a 100644 --- a/components/strings/components_strings_fr.xtb +++ b/components/strings/components_strings_fr.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Le certificat du serveur relatif à <ph name="HOST_NAME" /> semble être contrefait.</translation> <translation id="2889159643044928134">Ne pas actualiser</translation> <translation id="2896499918916051536">Ce plug-in n'est pas compatible.</translation> +<translation id="2900469785430194048">Google Chrome n'avait pas suffisamment de mémoire pour afficher cette page Web.</translation> <translation id="2909946352844186028">Un changement de réseau a été détecté.</translation> <translation id="2915500479781995473">Nous n'avons pas pu vérifier qu'il s'agissait du domaine <ph name="DOMAIN" />, car son certificat de sécurité a expiré. Cela peut être dû à une mauvaise configuration ou à une tentative d'interception de la connexion par un pirate informatique. L'horloge de votre ordinateur indique actuellement : <ph name="CURRENT_TIME" />. Cela vous semble-t-il correct ? Si ce n'est pas le cas, vous devez corriger l'horloge de votre système, puis réinitialiser la page.</translation> <translation id="2922350208395188000">Impossible de vérifier le certificat du serveur.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Contournement dû à la session publique</translation> <translation id="6358450015545214790">Qu'est-ce que c'est ?</translation> <translation id="6387478394221739770">Vous souhaitez bénéficier de nouvelles fonctionnalités Chrome passionnantes ? Essayez notre version bêta à l'adresse chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium n'avait pas suffisamment de mémoire pour afficher cette page Web.</translation> <translation id="641480858134062906">Échec du chargement de la page <ph name="URL" /></translation> <translation id="6417515091412812850">Impossible de vérifier si le certificat a été révoqué.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> n'autorise pas la connexion.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Rétablir tous les tests par défaut</translation> <translation id="8680787084697685621">Les informations de connexion au compte sont obsolètes.</translation> <translation id="8703575177326907206">Votre connexion à <ph name="DOMAIN" /> n'est pas chiffrée.</translation> -<translation id="8713130696108419660">Signature initiale incorrecte.</translation> <translation id="8725066075913043281">Réessayer</translation> <translation id="8728672262656704056">Vous êtes passé en mode navigation privée</translation> <translation id="8730621377337864115">OK</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 8124ee44..f2108c3 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> પરનું સર્વરનું પ્રમાણપત્ર બનાવટી હોય એવું લાગે છે.</translation> <translation id="2889159643044928134">ફરીથી લોડ કરશો નહીં</translation> <translation id="2896499918916051536">આ પ્લગિન સમર્થિત નથી.</translation> +<translation id="2900469785430194048">આ વેબ પૃષ્ઠ પ્રદર્શિત કરવાનો પ્રયાસ કરતી વખતે Google Chrome ની મેમરી સમાપ્ત થઈ ગઈ.</translation> <translation id="2909946352844186028">નેટવર્ક ફેરફાર મળ્યો હતો.</translation> <translation id="2915500479781995473">આ સર્વર સાબિત કરી શક્યું નથી કે તે <ph name="DOMAIN" /> છે; તેના સુરક્ષા પ્રમાણપત્રની સમયસીમા સમાપ્ત થઈ છે. આ કોઈ ગેરગોઠવણના કારણે થયું છે અથવા કોઈ હુમલાખોર તમારા કનેક્શનને અટકાવી રહ્યો છે. તમારા કમ્પ્યુટરની ઘડિયાળ હાલમાં <ph name="CURRENT_TIME" /> પર સેટ છે. શું તે બરાબર છે? જો નહીં, તો તમારે તમારા સિસ્ટમની ઘડિયાળને ઠીક કરવી જોઈએ અને તે પછી આ પૃષ્ઠને ફરી તાજું કરો.</translation> <translation id="2922350208395188000">સર્વરનું પ્રમાણપત્ર તપાસી શકાતું નથી.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">સાર્વજનિક સત્ર ઓવરરાઇડ</translation> <translation id="6358450015545214790">આનો અર્થ શું છે?</translation> <translation id="6387478394221739770">શું કૂલ નવી Chrome સુવિધાઓમાં રુચિ ધરાવો છો? chrome.com/beta પર અમારી બીટા ચેનલ અજમાવી જુઓ.</translation> +<translation id="6389758589412724634">આ વેબ પૃષ્ઠ પ્રદર્શિત કરવાનો પ્રયાસ કરતી વખતે Chromium ની મેમરી સમાપ્ત થઈ ગઈ.</translation> <translation id="641480858134062906"><ph name="URL" /> લોડ થવામાં નિષ્ફળ</translation> <translation id="6417515091412812850">પ્રમાણપત્ર રદ કરવામાં આવ્યું છે કે નહીં તે તપાસવામાં અક્ષમ છે.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> એ કનેક્ટ કરવાનો ઇનકાર કર્યો.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">બધાને ડિફોલ્ટ પર ફરીથી સેટ કરો</translation> <translation id="8680787084697685621">એકાઉન્ટ સાઇન-ઇન વિગતો જૂની થઈ ગઈ છે.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> સાથેનું તમારું કનેક્શન એન્ક્રિપ્ટેડ નથી.</translation> -<translation id="8713130696108419660">ખોટી ટૂંકી સહી</translation> <translation id="8725066075913043281">ફરી પ્રયાસ કરો</translation> <translation id="8728672262656704056">તમે છુપા મોડમાં ગયા છો</translation> <translation id="8730621377337864115">થઈ ગયું</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb index 335bbf7..ddad4d7 100644 --- a/components/strings/components_strings_hi.xtb +++ b/components/strings/components_strings_hi.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> पर सर्वर प्रमाणपत्र फर्जी दिखाई देता है.</translation> <translation id="2889159643044928134">पुन: लोड ना करें</translation> <translation id="2896499918916051536">यह प्लग इन समर्थित नहीं है.</translation> +<translation id="2900469785430194048">यह वेबपृष्ठ दिखाते समय Google Chrome में जगह नहीं बची.</translation> <translation id="2909946352844186028">नेटवर्क में बदलाव का पता चला.</translation> <translation id="2915500479781995473">यह सर्वर प्रमाणित नहीं कर सका कि वह <ph name="DOMAIN" /> है; उसका सुरक्षा प्रमाणपत्र समाप्त हो गया था. ऐसा गलत कॉन्फ़िगरेशन या किसी आक्रमणकर्ता द्वारा आपका कनेक्शन अवरोधित करने के कारण हो सकता है. अभी आपके कंप्यूटर की घड़ी <ph name="CURRENT_TIME" /> पर सेट है. क्या यह सही लग रहा है? यदि नहीं, तो आपको अपने सिस्टम की घड़ी सही करनी चाहिए और फिर इस पृष्ठ को रीफ्रेश करना चाहिए.</translation> <translation id="2922350208395188000">सर्वर प्रमाणपत्र की जांच नहीं की जा सकती.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">सार्वजनिक सत्र ओवरराइड</translation> <translation id="6358450015545214790">इनका क्या अर्थ है?</translation> <translation id="6387478394221739770">बेहतरीन नई Chrome सुविधाओं में रूचि है? chrome.com/beta पर हमारा बीटा चैनल आज़माएं.</translation> +<translation id="6389758589412724634">यह वेबपृष्ठ दिखाते समय क्रोमियम में जगह नहीं बची.</translation> <translation id="641480858134062906"><ph name="URL" /> लोड करने में असफ़ल</translation> <translation id="6417515091412812850">प्रमाणपत्र को रद्द किया गया है या नहीं यह जांच करने में असमरर्थ.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> ने कनेक्ट करने से मना कर दिया है.</translation> @@ -628,7 +630,6 @@ <translation id="8647750283161643317">सभी को डिफ़ॉल्ट पर रीसेट करें</translation> <translation id="8680787084697685621">खाता साइन-इन विवरण पुराने हैं.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> से आपके कनेक्शन को एन्क्रिप्ट नहीं किया गया है.</translation> -<translation id="8713130696108419660">खराब आरंभिक हस्ताक्षर</translation> <translation id="8725066075913043281">पुन: प्रयास करें</translation> <translation id="8728672262656704056">आप गुप्त मोड में चले गए हैं</translation> <translation id="8730621377337864115">पूर्ण</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index ea31d75..f47a84d3 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Certifikat poslužitelja na hostu <ph name="HOST_NAME" /> izgleda kao falsifikat.</translation> <translation id="2889159643044928134">Ne učitavaj ponovo</translation> <translation id="2896499918916051536">Taj dodatak nije podržan.</translation> +<translation id="2900469785430194048">Google Chrome ostao je bez memorije dok je pokušavao prikazati ovu web-stranicu.</translation> <translation id="2909946352844186028">Otkrivena je promjena mreže.</translation> <translation id="2915500479781995473">Poslužitelj nije mogao dokazati da se radi o domeni <ph name="DOMAIN" />. Njezin je sigurnosni certifikat istekao. Uzrok može biti pogrešna konfiguracija ili napadač koji ometa vašu vezu. Sat vašeg računala trenutačno je postavljen na <ph name="CURRENT_TIME" />. Je li to u redu? Ako nije, podesite sat svog sustava, a zatim osvježite ovu stranicu.</translation> <translation id="2922350208395188000">Certifikat poslužitelja nije moguće provjeriti.</translation> @@ -452,6 +453,7 @@ <translation id="6355080345576803305">Nadjačavanje javne sesije</translation> <translation id="6358450015545214790">Što to znači?</translation> <translation id="6387478394221739770">Zanimaju li vas nove, kul značajke preglednika Chrome? Isprobajte naš beta kanal na stranici chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium je ostao bez memorije dok je pokušavao prikazati ovu web-stranicu.</translation> <translation id="641480858134062906">Adresa <ph name="URL" /> nije učitana</translation> <translation id="6417515091412812850">Nije moguće provjeriti je li certifikat opozvan.</translation> <translation id="6433595998831338502">Host <ph name="HOST_NAME" /> odbio je povezivanje.</translation> @@ -629,7 +631,6 @@ <translation id="8647750283161643317">Vrati sve na zadano</translation> <translation id="8680787084697685621">Pojedinosti prijave na račun su zastarjele.</translation> <translation id="8703575177326907206">Vaša veza s <ph name="DOMAIN" /> nije šifrirana.</translation> -<translation id="8713130696108419660">Pogrešan početni potpis</translation> <translation id="8725066075913043281">Pokušajte ponovo</translation> <translation id="8728672262656704056">Radite u anonimnom načinu</translation> <translation id="8730621377337864115">Gotovo</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb index e26d723a..adf02022 100644 --- a/components/strings/components_strings_hu.xtb +++ b/components/strings/components_strings_hu.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">A(z) <ph name="HOST_NAME" /> szervertanúsítványa hamisítványnak tűnik.</translation> <translation id="2889159643044928134">Ne töltse újra</translation> <translation id="2896499918916051536">Ez a beépülő modul nem támogatott.</translation> +<translation id="2900469785430194048">Elfogyott a memória, miközben a Google Chrome megpróbálta megjeleníteni ezt a weboldalt.</translation> <translation id="2909946352844186028">Változást érzékeltünk a hálózatban.</translation> <translation id="2915500479781995473">A szerver nem tudta bizonyítani, hogy valóban a(z) <ph name="DOMAIN" /> domainbe tartozik; biztonsági tanúsítványa lejárt. Ennek oka lehet konfigurációs hiba, vagy hogy egy támadó eltérítette az Ön kapcsolódását. Számítógépének órája jelenleg <ph name="CURRENT_TIME" /> időre van állítva. Ez helyesnek tűnik? Ha nem, állítsa be megfelelően a rendszer óráját, majd frissítse az oldalt.</translation> <translation id="2922350208395188000">A szerver tanúsítványát nem sikerült leellenőrizni.</translation> @@ -451,6 +452,7 @@ <translation id="6355080345576803305">Nyilvános munkamenet általi felülbírálás</translation> <translation id="6358450015545214790">Mit jelent ez?</translation> <translation id="6387478394221739770">Érdekli néhány remek új Chrome-funkció? Próbálja ki a Béta csatornánkat a chrome.com/beta webhelyen.</translation> +<translation id="6389758589412724634">Elfogyott a memória, miközben a Chromium megpróbálta megjeleníteni ezt a weboldalt.</translation> <translation id="641480858134062906"><ph name="URL" /> nem töltődött be</translation> <translation id="6417515091412812850">Nem lehet ellenőrizni, hogy a tanúsítványt visszavonták-e.</translation> <translation id="6433595998831338502">A(z) <ph name="HOST_NAME" /> visszautasította a csatlakozást.</translation> @@ -628,7 +630,6 @@ <translation id="8647750283161643317">Minden visszaállítása az alapértékre</translation> <translation id="8680787084697685621">A fiók bejelentkezési részletei elavultak.</translation> <translation id="8703575177326907206">A kapcsolat (<ph name="DOMAIN" />) nem titkosított.</translation> -<translation id="8713130696108419660">Helytelen első aláírás</translation> <translation id="8725066075913043281">Újrapróbálás</translation> <translation id="8728672262656704056">Ön inkognitómódra váltott</translation> <translation id="8730621377337864115">Kész</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index f9d7ea7..6c7e629 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Sertifikat server di <ph name="HOST_NAME" /> tampaknya palsu.</translation> <translation id="2889159643044928134">Jangan Muat Ulang</translation> <translation id="2896499918916051536">Plugin ini tidak didukung.</translation> +<translation id="2900469785430194048">Google Chrome kehabisan memori saat mencoba menampilkan laman web ini.</translation> <translation id="2909946352844186028">Perubahan jaringan terdeteksi.</translation> <translation id="2915500479781995473">Server ini tidak dapat membuktikan bahwa ini adalah <ph name="DOMAIN" />; masa berlaku sertifikat keamanannya telah habis. Hal ini dapat disebabkan oleh kesalahan konfigurasi atau penyerang memotong sambungan Anda. Saat ini jam komputer Anda disetel ke <ph name="CURRENT_TIME" />. Apakah sudah benar? Jika belum, sebaiknya perbaiki jam sistem kemudian segarkan laman ini.</translation> <translation id="2922350208395188000">Sertifikat server tidak dapat diperiksa.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Diganti oleh sesi publik</translation> <translation id="6358450015545214790">Apakah maksud ini?</translation> <translation id="6387478394221739770">Tertarik dengan fitur Chrome baru yang keren? Coba saluran beta kami di chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium kehabisan memori saat mencoba menampilkan laman web ini.</translation> <translation id="641480858134062906"><ph name="URL" /> gagal dimuat</translation> <translation id="6417515091412812850">Tidak dapat memeriksa apakah sertifikat telah ditarik.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> menolak untuk tersambung.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Setel ulang semua ke default</translation> <translation id="8680787084697685621">Detail proses masuk akun sudah usang.</translation> <translation id="8703575177326907206">Sambungan ke <ph name="DOMAIN" /> tidak dienkripsi.</translation> -<translation id="8713130696108419660">Tanda tangan awal yang buruk</translation> <translation id="8725066075913043281">Coba lagi</translation> <translation id="8728672262656704056">Anda masuk mode penyamaran</translation> <translation id="8730621377337864115">Selesai</translation>
diff --git a/components/strings/components_strings_it.xtb b/components/strings/components_strings_it.xtb index 6c54a8a..8294b73 100644 --- a/components/strings/components_strings_it.xtb +++ b/components/strings/components_strings_it.xtb
@@ -168,6 +168,7 @@ <translation id="284702764277384724">Il certificato del server <ph name="HOST_NAME" /> risulta essere un falso.</translation> <translation id="2889159643044928134">Non ricaricare</translation> <translation id="2896499918916051536">Questo plug-in non è supportato.</translation> +<translation id="2900469785430194048">Google Chrome ha esaurito la memoria mentre cercava di visualizzare questa pagina web.</translation> <translation id="2909946352844186028">È stato rilevato un cambio di rete.</translation> <translation id="2915500479781995473">Questo server non è riuscito a verificare che si tratti di <ph name="DOMAIN" />; il relativo certificato di sicurezza è scaduto. Il problema potrebbe essere dovuto a un'errata configurazione o a un malitenzionato che ha intercettato la connessione. L'orologio del tuo computer è attualmente impostato sul giorno <ph name="CURRENT_TIME" />. È corretto? In caso contrario dovresti regolare l'orologio del sistema e aggiornare la pagina.</translation> <translation id="2922350208395188000">Il certificato del server non può essere verificato.</translation> @@ -447,6 +448,7 @@ <translation id="6355080345576803305">Sostituzione sessione pubblica</translation> <translation id="6358450015545214790">Che cosa significano?</translation> <translation id="6387478394221739770">Ti interessano le nuove e straordinarie funzioni di Chrome? Prova il nostro canale beta all'indirizzo chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium ha esaurito la memoria mentre cercava di visualizzare questa pagina web.</translation> <translation id="641480858134062906">Caricamento <ph name="URL" /> non riuscito</translation> <translation id="6417515091412812850">Impossibile controllare se il certificato è stato revocato.</translation> <translation id="6433595998831338502">Connessione negata da <ph name="HOST_NAME" />.</translation> @@ -624,7 +626,6 @@ <translation id="8647750283161643317">Ripristina i valori predefiniti per tutto</translation> <translation id="8680787084697685621">I dati di accesso dell'account sono obsoleti.</translation> <translation id="8703575177326907206">La connessione a <ph name="DOMAIN" /> non è crittografata.</translation> -<translation id="8713130696108419660">Firma iniziale non valida</translation> <translation id="8725066075913043281">Riprova</translation> <translation id="8728672262656704056">Sei passato alla navigazione in incognito</translation> <translation id="8730621377337864115">Fine</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb index 4a8d80c..fb12bae 100644 --- a/components/strings/components_strings_iw.xtb +++ b/components/strings/components_strings_iw.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">אישור השרת ב-<ph name="HOST_NAME" /> נראה מזויף.</translation> <translation id="2889159643044928134">אל תטען מחדש</translation> <translation id="2896499918916051536">הפלאגין הזה אינו נתמך.</translation> +<translation id="2900469785430194048">אזל הזיכרון הזמין ל-Google Chrome בעת ניסיון להציג דף אינטרנט זה.</translation> <translation id="2909946352844186028">אותר שינוי ברשת.</translation> <translation id="2915500479781995473">לשרת זה לא הייתה אפשרות להוכיח שהוא <ph name="DOMAIN" />; פג תוקפו של אישור האבטחה שלו. ייתכן שמצב זה נגרם בשל תצורה שגויה או שתוקף מיירט את החיבור שלך. שעון המחשב שלך מוגדר כעת ל-<ph name="CURRENT_TIME" />. האם השעה נכונה? אם לא, עליך לכוון את שעון המערכת ולאחר מכן לרענן דף זה.</translation> <translation id="2922350208395188000">לא ניתן לבדוק את אישור השרת.</translation> @@ -458,6 +459,7 @@ <translation id="6355080345576803305">שינוי הפעלה ציבורית</translation> <translation id="6358450015545214790">מה זה אומר?</translation> <translation id="6387478394221739770">מעוניין בתכונות חדשות ומגניבות של Chrome? נסה את ערוץ הביטא שלנו בכתובת chrome.com/beta.</translation> +<translation id="6389758589412724634">אזל הזיכרון הזמין ל-Chromium בעת ניסיון להציג דף אינטרנט זה.</translation> <translation id="641480858134062906">נכשלה הטעינה של <ph name="URL" /></translation> <translation id="6417515091412812850">לא ניתן לבדוק אם האישור נשלל.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> סירב להתחבר.</translation> @@ -635,7 +637,6 @@ <translation id="8647750283161643317">אפס הכל לברירת המחדל</translation> <translation id="8680787084697685621">פרטי הכניסה לחשבון אינם מעודכנים.</translation> <translation id="8703575177326907206">ההתחברות שלך אל <ph name="DOMAIN" /> אינה מוצפנת.</translation> -<translation id="8713130696108419660">חתימה ראשונית פגומה</translation> <translation id="8725066075913043281">נסה שוב</translation> <translation id="8728672262656704056">עברת למצב גלישה בסתר</translation> <translation id="8730621377337864115">בוצע</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb index e26d025a..3d50972a 100644 --- a/components/strings/components_strings_ja.xtb +++ b/components/strings/components_strings_ja.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> のサーバー証明書は偽造されたもののようです。</translation> <translation id="2889159643044928134">再読み込みを中止</translation> <translation id="2896499918916051536">このプラグインはサポートされていません。</translation> +<translation id="2900469785430194048">このウェブページを表示しようとしましたが、Google Chrome のメモリが不足しています。</translation> <translation id="2909946352844186028">ネットワークの変更が検出されました。</translation> <translation id="2915500479781995473">このサーバーが <ph name="DOMAIN" /> であることを確認できませんでした。セキュリティ証明書の期限が切れています。原因として、設定が不適切か、悪意のあるユーザーが接続を妨害している可能性があります。パソコンの時計は現在 <ph name="CURRENT_TIME" /> に設定されています。この時刻が正しくない場合は、システムの時計を修正して、このページを更新してください。</translation> <translation id="2922350208395188000">サーバーの証明書を確認できません。</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">公開セッションのオーバーライド</translation> <translation id="6358450015545214790">ヘルプ</translation> <translation id="6387478394221739770">Chrome の新しい機能に関心をお持ちでしたら、chrome.com/beta から Beta チャンネルをお試しください。</translation> +<translation id="6389758589412724634">このウェブページを表示しようとしましたが、Chromium のメモリが不足しています。</translation> <translation id="641480858134062906"><ph name="URL" /> の読み込みに失敗しました</translation> <translation id="6417515091412812850">証明書が取り消されたかどうかを確認できません。</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> で接続が拒否されました。</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">すべてデフォルトに戻す</translation> <translation id="8680787084697685621">アカウントのログイン情報が古くなっています。</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> への接続は暗号化されていません。</translation> -<translation id="8713130696108419660">無効なイニシャル署名です</translation> <translation id="8725066075913043281">やり直し</translation> <translation id="8728672262656704056">シークレット モードです</translation> <translation id="8730621377337864115">完了</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb index ef477ae..76fd3d6 100644 --- a/components/strings/components_strings_kn.xtb +++ b/components/strings/components_strings_kn.xtb
@@ -101,7 +101,7 @@ <translation id="2128531968068887769">ಸ್ಥಳೀಯ ಗ್ರಾಹಕ</translation> <translation id="213826338245044447">ಮೊಬೈಲ್ ಬುಕ್ಮಾರ್ಕ್ಗಳು</translation> <translation id="2148716181193084225">ಇಂದು</translation> -<translation id="2149973817440762519">ಬುಕ್ಮಾರ್ಕ್ ಸಂಪಾದಿಸಿ</translation> +<translation id="2149973817440762519">ಬುಕ್ಮಾರ್ಕ್ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="2166049586286450108">ಪೂರ್ಣ ನಿರ್ವಾಹಕ ಪ್ರವೇಶ</translation> <translation id="2166378884831602661">ಈ ಸೈಟ್ಗೆ ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಒದಗಿಸಲಾಗುವುದಿಲ್ಲ</translation> <translation id="2171101176734966184">ನೀವು <ph name="DOMAIN" /> ಅನ್ನು ತಲುಪಲು ಪ್ರಯತ್ನಿಸಿದಿರಿ, ಆದರೆ ದುರ್ಬಲ ಸಹಿ ಅಲ್ಗಾರಿದಮ್ ಬಳಸಿಕೊಂಡು ಸಹಿ ಮಾಡಿದ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಸರ್ವರ್ ಒದಗಿಸಿದೆ. ಇದರರ್ಥ ಸರ್ವರ್ ಒದಗಿಸಿದ ಸುರಕ್ಷತೆ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಖೋಟಾ ತಯಾರಿಸಿರಬಹುದು, ಮತ್ತು ನೀವು ನಿರೀಕ್ಷಿಸಿದ ಸರ್ವರ್ ಅದಾಗಿರದೇ ಇರಬಹುದು (ನೀವು ದಾಳಿಕೋರರೊಂದಿಗೆ ಸಂವಹನ ಮಾಡುತ್ತಿರಬಹುದು).</translation> @@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> ನಲ್ಲಿರುವ ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವು ನಕಲಿ ಎಂದು ತೋರುತ್ತಿದೆ.</translation> <translation id="2889159643044928134">ಮರುಲೋಡ್ ಮಾಡಬೇಡ</translation> <translation id="2896499918916051536">ಈ ಪ್ಲಗ್-ಇನ್ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.</translation> +<translation id="2900469785430194048">ಈ ವೆಬ್ಪುಟ ಪ್ರದರ್ಶಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ Google Chrome ಮೆಮೊರಿ ಖಾಲಿಯಾಗಿದೆ.</translation> <translation id="2909946352844186028">ನೆಟ್ವರ್ಕ್ ಬದಲಾವಣೆಯನ್ನು ಪತ್ತೆ ಮಾಡಲಾಗಿದೆ.</translation> <translation id="2915500479781995473">ಈ ಸರ್ವರ್ <ph name="DOMAIN" /> ಆಗಿದೆ ಎಂಬುದನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ; ಅದರ ಸುರಕ್ಷತಾ ಪ್ರಮಾಣಪತ್ರದ ಅವಧಿ ಮುಗಿದಿದೆ. ಇದು ತಪ್ಪು ಕಾನ್ಫಿಗರೇಶನ್ನಿಂದ ಅಥವಾ ಆಕ್ರಮಣಕಾರರು ನಿಮ್ಮ ಸಂಪರ್ಕದಲ್ಲಿ ಒಳನುಸುಳಿರುವುದರಿಂದ ಆಗಿರಬಹುದು. ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ನ ಗಡಿಯಾರವನ್ನು ಪ್ರಸ್ತುತ <ph name="CURRENT_TIME" /> ಗೆ ಹೊಂದಿಸಲಾಗಿದೆ. ಅದು ಸರಿಯಾಗಿ ತೋರುತ್ತಿದೆಯೆ? ಇಲ್ಲವಾದರೆ, ನಿಮ್ಮ ಸಿಸ್ಟಮ್ನ ಗಡಿಯಾರವನ್ನು ನೀವು ಸರಿಪಡಿಸಬೇಕು ಹಾಗೂ ನಂತರ ಈ ಪುಟವನ್ನು ರೀಫ್ರೆಶ್ ಮಾಡಿ.</translation> <translation id="2922350208395188000">ಸರ್ವರ್ನ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುವುದಿಲ್ಲ.</translation> @@ -449,6 +450,7 @@ <translation id="6355080345576803305">ಸಾರ್ವಜನಿಕ ಸೆಷನ್ ಅತಿಕ್ರಮಿಸುವಿಕೆ</translation> <translation id="6358450015545214790">ಇವುಗಳ ಅರ್ಥವೇನು?</translation> <translation id="6387478394221739770">ಉತ್ತಮವಾದ ಹೊಸ Chrome ವೈಶಿಷ್ಟ್ಯಗಳಲ್ಲಿ ಆಸಕ್ತಿ ಇದೆಯೇ? chrome.com/beta ನಲ್ಲಿ ನಮ್ಮ ಬೀಟಾ ಚಾನಲ್ ಪ್ರಯತ್ನಿಸಿ.</translation> +<translation id="6389758589412724634">ಈ ವೆಬ್ಪುಟ ಪ್ರದರ್ಶಿಸಲು ಪ್ರಯತ್ನಿಸುವಾಗ Chromium ಮೆಮೊರಿ ಖಾಲಿಯಾಗಿದೆ.</translation> <translation id="641480858134062906"><ph name="URL" /> ಲೋಡ್ ಆಗಲು ವಿಫಲವಾಗಿದೆ</translation> <translation id="6417515091412812850">ಪ್ರಮಾಣಪತ್ರವನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆಯೆ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> ಸಂಪರ್ಕಗೊಳ್ಳಲು ನಿರಾಕರಿಸಿದೆ.</translation> @@ -464,7 +466,7 @@ <translation id="6628463337424475685"><ph name="ENGINE" /> ಹುಡುಕಾಟ</translation> <translation id="6634865548447745291">ನೀವು <ph name="SITE" /> ಗೆ ಭೇಟಿ ನೀಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಏಕೆಂದರೆ <ph name="BEGIN_LINK" />ಈ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಹಿಂಪಡೆದುಕೊಳ್ಳಲಾಗಿದೆ<ph name="END_LINK" />. ನೆಟ್ವರ್ಕ್ ದೋಷಗಳು ಮತ್ತು ಆಕ್ರಮಣಗಳು ತಾತ್ಕಾಲಿಕ, ಹೀಗಾಗಿ ಈ ಪುಟವು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಕಾರ್ಯ ನಿರ್ವಹಿಸಬಹುದು.</translation> <translation id="6644283850729428850">ಈ ನೀತಿಯನ್ನು ವಿನಂತಿಸಲಾಗಿದೆ.</translation> -<translation id="6656103420185847513">ಫೋಲ್ಡರ್ ಸಂಪಾದಿಸಿ</translation> +<translation id="6656103420185847513">ಫೋಲ್ಡರ್ ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="6660210980321319655"><ph name="CRASH_TIME" /> ಸಮಯಕ್ಕೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ವರದಿ ಮಾಡಲಾಗಿದೆ</translation> <translation id="6671697161687535275">Chromium ನಿಂದ ಫಾರ್ಮ್ ಸಲಹೆಯನ್ನು ತೆಗೆದುಹಾಕುವುದೇ?</translation> <translation id="6685834062052613830">ಸೈನ್ ಔಟ್ ಮಾಡಿ ಹಾಗೂ ಸೆಟಪ್ ಪೂರ್ಣಗೊಳಿಸಿ</translation> @@ -626,9 +628,8 @@ <translation id="8647750283161643317">ಎಲ್ಲವನ್ನೂ ಡೀಫಾಲ್ಟ್ಗೆ ಮರುಹೊಂದಿಸಿ</translation> <translation id="8680787084697685621">ಖಾತೆಯ ಸೈನ್-ಇನ್ ವಿವರಗಳು ಹಳೆಯದಾಗಿವೆ.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> ಗೆ ನಿಮ್ಮ ಸಂಪರ್ಕವು ಎನ್ಕ್ರಿಪ್ಟ್ ಆಗಿಲ್ಲ.</translation> -<translation id="8713130696108419660">ತಪ್ಪಾದ ಇನಿಷಿಯಲ್ ಸಹಿ</translation> <translation id="8725066075913043281">ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</translation> -<translation id="8728672262656704056">ನೀವು ಅಜ್ಞಾತ ವಿಂಡೋಗೆ ಹೋಗಿರುವಿರಿ</translation> +<translation id="8728672262656704056">ನೀವು ಈಗ ಅಜ್ಞಾತರಾಗಿರುವಿರಿ</translation> <translation id="8730621377337864115">ಮುಗಿದಿದೆ</translation> <translation id="8738058698779197622">ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಲು, ನಿಮ್ಮ ಗಡಿಯಾರವನ್ನು ಸರಿಯಾಗಿ ಹೊಂದಿಸುವ ಅಗತ್ಯವಿದೆ. ವೆಬ್ಸೈಟ್ಗಳು ತಮ್ಮನ್ನು ಗುರುತಿಸಲು ಬಳಸುವ ಪ್ರಮಾಣಪತ್ರಗಳು ಸಮಯದ ನಿರ್ದಿಷ್ಟ ಅವಧಿಗಳಲ್ಲಿ ಮಾತ್ರ ಮಾನ್ಯವಾಗಿರುವ ಕಾರಣ ಹೀಗಾಗುತ್ತದೆ. ನಿಮ್ಮ ಸಾಧನದ ಗಡಿಯಾರವು ತಪ್ಪಾಗಿರುವ ಕಾರಣ, Chromium ಗೆ ಈ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation> <translation id="8740359287975076522"><ph name="HOST_NAME" /> ನ <abbr id="dnsDefinition">DNS ವಿಳಾಸ</abbr> ಕಂಡುಬರಲಿಲ್ಲ. ಸಮಸ್ಯೆಯನ್ನು ಪತ್ತೆಹಚ್ಚಲಾಗುತ್ತಿದೆ.</translation> @@ -663,7 +664,7 @@ <translation id="9039213469156557790">ಅಲ್ಲದೇ, ಸುರಕ್ಷಿತವಲ್ಲದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಈ ಪುಟ ಹೊಂದಿದೆ. ಸ್ಥಿತ್ಯಂತರಗೊಳ್ಳುವ ಸಂದರ್ಭದಲ್ಲಿ ಈ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಇತರರೂ ವೀಕ್ಷಿಸಬಹುದಾಗಿದೆ ಮತ್ತು ಪುಟದ ಹೊರನೋಟವೇ ಬದಲಾಗುವಂತೆ ಆಕ್ರಮಣಕಾರರು ಅದನ್ನು ತಿದ್ದಬಹುದಾಗಿದೆ.</translation> <translation id="9049981332609050619">ನೀವು <ph name="DOMAIN" /> ಅನ್ನು ತಲುಪಲು ಪ್ರಯತ್ನಿಸಿರುವಿರಿ, ಆದರೆ ಸರ್ವರ್ ಅಮಾನ್ಯ ಪ್ರಮಾಣಪತ್ರವನ್ನು ನೀಡಿದೆ.</translation> <translation id="9050666287014529139">ಪಾಸ್ಫ್ರೇಸ್</translation> -<translation id="9065203028668620118">ಸಂಪಾದಿಸು</translation> +<translation id="9065203028668620118">ಎಡಿಟ್</translation> <translation id="9092364396508701805"><ph name="HOST_NAME" /> ಪುಟ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ</translation> <translation id="9103872766612412690"><ph name="SITE" /> ಸಾಮಾನ್ಯವಾಗಿ ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಸಂರಕ್ಷಿಸಲು ಎನ್ಕ್ರಿಪ್ಶನ್ ಪ್ರಯೋಜನವನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ Chromium <ph name="SITE" /> ವೆಬ್ಸೈಟ್ಗೆ ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ, ಆ ವೆಬ್ಸೈಟ್ ಅಸಹಜ ಮತ್ತು ತಪ್ಪು ರುಜುವಾತುಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿದೆ. ದಾಳಿಕೋರರು <ph name="SITE" /> ರೂಪದಲ್ಲಿ ಸೋಗು ಹಾಕಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವಾಗ ಅಥವಾ ವೈ-ಫೈ ಸೈನ್-ಇನ್ ಪರದೆಯು ಸಂಪರ್ಕಕ್ಕೆ ಅಡ್ಡಿಯುಂಟು ಮಾಡಿದಾಗ ಇದು ಕಂಡುಬರಬಹುದು. ಯಾವುದೇ ಡೇಟಾವನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳುವ ಮೊದಲೇ Chromium ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿರುವ ಕಾರಣ, ನಿಮ್ಮ ಮಾಹಿತಿ ಈಗಲೂ ಸುರಕ್ಷಿತವಾಗಿದೆ.</translation> <translation id="9137013805542155359">ಮೂಲವನ್ನು ತೋರಿಸಿ</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb index dd445c5..df1fb56 100644 --- a/components/strings/components_strings_ko.xtb +++ b/components/strings/components_strings_ko.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" />의 서버 인증서가 위조된 것 같습니다.</translation> <translation id="2889159643044928134">새로고침 안함</translation> <translation id="2896499918916051536">이 플러그인은 지원되지 않습니다.</translation> +<translation id="2900469785430194048">이 웹페이지를 표시하려는 동안 Chrome에 메모리가 부족합니다.</translation> <translation id="2909946352844186028">네트워크 변경이 감지되었습니다.</translation> <translation id="2915500479781995473">이 서버가 <ph name="DOMAIN" />임을 입증할 수 없으며 서버의 보안 인증서가 만료되었습니다. 서버를 잘못 설정했거나 해커가 연결을 가로채고 있기 때문일 수 있습니다. 컴퓨터의 시계가 현재 <ph name="CURRENT_TIME" />(으)로 설정되어 있습니다. 시간이 정확하지 않으면 시스템 시계를 수정한 다음 이 페이지를 새로고침하세요.</translation> <translation id="2922350208395188000">서버 인증서를 확인할 수 없습니다.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">공개 세션 무시</translation> <translation id="6358450015545214790">자세히 알아보기</translation> <translation id="6387478394221739770">Chrome의 멋진 새 기능에 관심이 있으십니까? chrome.com/beta 페이지에서 베타 채널을 방문해 보세요.</translation> +<translation id="6389758589412724634">이 웹페이지를 표시하려는 동안 Chromium에 메모리가 부족합니다.</translation> <translation id="641480858134062906"><ph name="URL" />을(를) 로드하지 못했습니다.</translation> <translation id="6417515091412812850">인증서가 취소되었는지 확인할 수 없습니다.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" />에서 연결을 거부했습니다.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">기본값으로 재설정</translation> <translation id="8680787084697685621">계정 로그인 세부정보의 유효기간이 만료되었습니다.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" />로의 연결은 암호화되지 않습니다.</translation> -<translation id="8713130696108419660">잘못된 초기 서명</translation> <translation id="8725066075913043281">다시 시도하세요</translation> <translation id="8728672262656704056">시크릿 모드로 전환됨</translation> <translation id="8730621377337864115">완료</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb index 498be23..c57d379 100644 --- a/components/strings/components_strings_lt.xtb +++ b/components/strings/components_strings_lt.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Panašu, kad <ph name="HOST_NAME" /> serverio sertifikatas yra suklastotas.</translation> <translation id="2889159643044928134">Neįkelti iš naujo</translation> <translation id="2896499918916051536">Šis papildinys nepalaikomas.</translation> +<translation id="2900469785430194048">„Google Chrome“ trūksta atminties šiam tinklalapiui pateikti.</translation> <translation id="2909946352844186028">Aptiktas tinklo pasikeitimas.</translation> <translation id="2915500479781995473">Šiam serveriui nepavyko patvirtinti, kad tai yra <ph name="DOMAIN" />; jo saugos sertifikatas nebegalioja. Taip gali nutikti dėl netinkamos konfigūracijos ar dėl ryšį pertraukusio užgrobėjo. Šiuo metu jūsų kompiuterio laikrodis nustatytas į <ph name="CURRENT_TIME" />. Ar tai tinkamas laikas? Jei netinkamas, turėtumėte pakeisti sistemos laikrodžio laiką ir atnaujinti šį puslapį.</translation> <translation id="2922350208395188000">Neįmanoma patikrinti serverio sertifikato.</translation> @@ -454,6 +455,7 @@ <translation id="6355080345576803305">Viešosios sesijos nepaisymas</translation> <translation id="6358450015545214790">Ką tai reiškia?</translation> <translation id="6387478394221739770">Domina naujos „Chrome“ funkcijos? Išbandykite mūsų beta kanalą adresu chrome.com/beta.</translation> +<translation id="6389758589412724634">„Chromium“ trūksta atminties šiam tinklalapiui pateikti.</translation> <translation id="641480858134062906"><ph name="URL" /> nepavyko įkelti</translation> <translation id="6417515091412812850">Nepavyksta patikrinti, ar sertifikatas buvo panaikintas.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> atsisakė prisijungti.</translation> @@ -631,7 +633,6 @@ <translation id="8647750283161643317">Viską nustatyti į numatytuosius nustatymus</translation> <translation id="8680787084697685621">Išsami prisijungimo prie paskyros informacija pasenusi.</translation> <translation id="8703575177326907206">Jūsų ryšys su <ph name="DOMAIN" /> nekoduotas.</translation> -<translation id="8713130696108419660">Netinkamas pradinis parašas</translation> <translation id="8725066075913043281">Bandyti dar kartą</translation> <translation id="8728672262656704056">Veikia inkognito režimas</translation> <translation id="8730621377337864115">Atlikta</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb index 7bc0370..ef79361 100644 --- a/components/strings/components_strings_lv.xtb +++ b/components/strings/components_strings_lv.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Šķiet, ka servera sertifikāts vietnē <ph name="HOST_NAME" /> ir viltojums.</translation> <translation id="2889159643044928134">Neielādēt atkārtoti</translation> <translation id="2896499918916051536">Šis spraudnis netiek atbalstīts.</translation> +<translation id="2900469785430194048">Mēģinot parādīt šo tīmekļa lapu, pārlūka Google Chrome atmiņā nepietika vietas.</translation> <translation id="2909946352844186028">Konstatētas tīkla izmaiņas.</translation> <translation id="2915500479781995473">Šis serveris nevarēja pierādīt, ka ir <ph name="DOMAIN" />; tā drošības sertifikāts vairs nav derīgs. Šī problēma var rasties nepareizas konfigurācijas dēļ vai tādēļ, ka kāds uzbrucējs ir pārtvēris jūsu savienojumu. Jūsu datora pulkstenī pašlaik ir iestatīts šāds datums: <ph name="CURRENT_TIME" />. Vai tas ir pareizs? Ja datums nav pareizs, mainiet sistēmas pulksteni un pēc tam atsvaidziniet šo lapu.</translation> <translation id="2922350208395188000">Servera sertifikātu nevar pārbaudīt.</translation> @@ -452,6 +453,7 @@ <translation id="6355080345576803305">Publiskas sesijas ignorēšana</translation> <translation id="6358450015545214790">Ko tas nozīmē?</translation> <translation id="6387478394221739770">Vai jūs interesē jaunas Chrome funkcijas? Izmēģiniet mūsu Beta versiju, kas pieejama vietnē chrome.com/beta.</translation> +<translation id="6389758589412724634">Mēģinot parādīt šo tīmekļa lapu, pārlūka Chromium atmiņā nepietika vietas.</translation> <translation id="641480858134062906"><ph name="URL" /> neizdevās ielādēt</translation> <translation id="6417515091412812850">Nevar pārbaudīt, vai sertifikāts ir atsaukts.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> noraidīja savienojuma izveidi.</translation> @@ -629,7 +631,6 @@ <translation id="8647750283161643317">Atiestatīt visiem to noklusējuma iestatījumus</translation> <translation id="8680787084697685621">Konta pierakstīšanās informācija ir novecojusi.</translation> <translation id="8703575177326907206">Jūsu savienojums ar <ph name="DOMAIN" /> nav kodēts.</translation> -<translation id="8713130696108419660">Nederīgs sākotnējais paraksts</translation> <translation id="8725066075913043281">Mēģināt vēlreiz</translation> <translation id="8728672262656704056">Jūs esat atvēris inkognito režīmu</translation> <translation id="8730621377337864115">Gatavs</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index 2de0a465..37eeaa1 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> ഹോസ്റ്റിലെ സെർവർ സർട്ടിഫിക്കറ്റ് വിശ്വാസയോഗ്യമല്ലെന്ന് തോന്നുന്നു.</translation> <translation id="2889159643044928134">റീലോഡുചെയ്യരുത്</translation> <translation id="2896499918916051536">ഈ പ്ലഗിൻ പിന്തുണയ്ക്കുന്നില്ല.</translation> +<translation id="2900469785430194048">ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കാൻ ശ്രമിക്കുന്നതിനിടയിൽ Google Chrome-ന്റെ മെമ്മറി നിറഞ്ഞു.</translation> <translation id="2909946352844186028">ഒരു നെറ്റ്വർക്ക് മാറ്റം കണ്ടെത്തി.</translation> <translation id="2915500479781995473">ഈ സെർവറിന് അത് <ph name="DOMAIN" /> ആണെന്ന് തെളിയിക്കാനായില്ല; തെറ്റായ കോൺഫിഗറേഷൻ കാരണമോ ഒരു ആക്രമണകാരി നിങ്ങളുടെ കണക്ഷനെ തടസ്സപ്പെടുത്തുന്നതിനാലോ ആയിരിക്കാം ഇത് സംഭവിച്ചത്. നിലവിൽ നിങ്ങളുടെ കമ്പ്യൂട്ടറിന്റെ സമയം <ph name="CURRENT_TIME" /> എന്നായി സജ്ജീകരിച്ചിരിക്കുന്നു. അത് ശരിയല്ലേ? ശരിയല്ലെങ്കിൽ, സിസ്റ്റത്തിന്റെ സമയം ശരിയാക്കിയതിനുശേഷം ഈ പേജ് പുതുക്കുക.</translation> <translation id="2922350208395188000">സെര്വറിന്റെ സര്ട്ടിഫിക്കറ്റ് പരിശോധിക്കാന് കഴിയില്ല.</translation> @@ -452,6 +453,7 @@ <translation id="6355080345576803305">പൊതു സെഷൻ അസാധുവാക്കി</translation> <translation id="6358450015545214790">ഇത് അര്ത്ഥമാക്കുന്നതെന്താണ്?</translation> <translation id="6387478394221739770">Chrome-ന്റെ രസകരമായ പുതിയ സവിശേഷതകളിൽ താൽപ്പര്യമുണ്ടോ? chrome.com/beta-യിൽ ഞങ്ങളുടെ ബീറ്റ ചാനൽ പരീക്ഷിക്കുക.</translation> +<translation id="6389758589412724634">ഈ വെബ്പേജ് പ്രദർശിപ്പിക്കാൻ ശ്രമിക്കുന്നതിനിടയിൽ Chromium-ത്തിന്റെ മെമ്മറി നിറഞ്ഞു.</translation> <translation id="641480858134062906"><ph name="URL" /> ലോഡുചെയ്യല് പരാജയപ്പെട്ടു</translation> <translation id="6417515091412812850">സര്ട്ടിഫിക്കറ്റ് അസാധുവാക്കിയോ എന്ന് പരിശോധിക്കുന്നതിനായില്ല.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> കണക്റ്റുചെയ്യൽ നിരസിച്ചു.</translation> @@ -461,7 +463,7 @@ <translation id="647261751007945333">ഉപകരണ നയങ്ങൾ</translation> <translation id="6489534406876378309">ക്രാഷുകൾ അപ്ലോഡുചെയ്യുന്നത് ആരംഭിക്കുക</translation> <translation id="6529602333819889595">&ഇല്ലാതാക്കുന്നത് വീണ്ടും ചെയ്യുക</translation> -<translation id="6550675742724504774">ഐച്ഛികങ്ങള്</translation> +<translation id="6550675742724504774">ഓപ്ഷനുകൾ</translation> <translation id="6596325263575161958">എൻക്രിപ്ഷൻ ഓപ്ഷനുകൾ</translation> <translation id="662080504995468778">തുടരുക</translation> <translation id="6628463337424475685"><ph name="ENGINE" /> തിരയൽ</translation> @@ -629,7 +631,6 @@ <translation id="8647750283161643317">എല്ലാം സ്ഥിരമായി പുനഃസജ്ജമാക്കുക</translation> <translation id="8680787084697685621">അക്കൗണ്ട് പ്രവേശന വിവരങ്ങള് കാലഹരണപ്പെട്ടതാണ്.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> ലേക്കുള്ള നിങ്ങളുടെ കണക്ഷന് എന്ക്രിപ്റ്റ് ചെയ്തിട്ടില്ല.</translation> -<translation id="8713130696108419660">ഇനിഷ്യൽ സിഗ്നേച്ചർ മോശമാണ്</translation> <translation id="8725066075913043281">വീണ്ടും ശ്രമിക്കുക</translation> <translation id="8728672262656704056">നിങ്ങൾ ആൾമാറാട്ടത്തിലേക്ക് പോയി</translation> <translation id="8730621377337864115">പൂർത്തിയാക്കി</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index aa5da280..896728b 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -12,7 +12,7 @@ या URL ला विनंती पाठविण्याची अनुमती तात्पुरती रद्द केली गेली आहे.</translation> <translation id="106701514854093668">डेस्कटॉप बुकमार्क</translation> <translation id="1080116354587839789">रूंदीत फिट करा</translation> -<translation id="1103523840287552314">नेहमी अनुवाद करा <ph name="LANGUAGE" /></translation> +<translation id="1103523840287552314">नेहमी भाषांतर करा <ph name="LANGUAGE" /></translation> <translation id="1107591249535594099">चेक केल्यास, अधिक जलद फॉर्म भरण्यासाठी या डिव्हाइसवर Chrome आपल्या कार्डची एक प्रत संचयित करेल.</translation> <translation id="1113869188872983271">&पुनर्क्रमित करा पूर्ववत करा</translation> <translation id="112840717907525620">धोरण कॅशे ठीक</translation> @@ -34,7 +34,7 @@ <translation id="1232569758102978740">अशीर्षकांकित</translation> <translation id="1254117744268754948">फोल्डर निवडा</translation> <translation id="1264126396475825575"><ph name="CRASH_TIME" /> वाजता क्रॅश अहवाल कॅप्चर केला (अद्याप अपलोड केलेला नाही किंवा दुर्लक्ष केले)</translation> -<translation id="1285320974508926690">या साइटचा कधीही अनुवाद करु नका</translation> +<translation id="1285320974508926690">या साइटचा कधीही भाषांतर करु नका</translation> <translation id="129553762522093515">अलीकडे बंद केलेले</translation> <translation id="129863573139666797"><ph name="BEGIN_LINK" />आपल्या कुकीज साफ करून पहा<ph name="END_LINK" /></translation> <translation id="1339601241726513588">नावनोंदणी डोमेन:</translation> @@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> वरील सर्व्हर प्रमाणपत्र खोटे असल्याचे दिसते.</translation> <translation id="2889159643044928134">रीलोड करु नका</translation> <translation id="2896499918916051536">हे प्लगिन समर्थित नाही.</translation> +<translation id="2900469785430194048">हे वेबपृष्ठ प्रदर्शित करण्याचा प्रयत्न करताना Google Chrome ची मेमरी संपली आहे.</translation> <translation id="2909946352844186028">एक नेटवर्क बदल आढळला.</translation> <translation id="2915500479781995473">हे सर्व्हर ते <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकले नाही; त्याचे सुरक्षितता प्रमाणपत्र कालबाह्य झाले आहे. हे कदाचित एका चुकीच्या कॉन्फिगरेशनमुळे किंवा आक्रमणकर्त्याने आपले कनेक्शन आंतरखंडित केल्यामुळे झाले असू शकते. आपल्या संगणकाचे घड्याळ सध्या <ph name="CURRENT_TIME" /> वर सेट केले आहे. ते बरोबर वाटते आहे? नसल्यास, आपण आपल्या प्रणालीचे घड्याळ दुरुस्त करावे आणि नंतर हे पृष्ठ रीफ्रेश करावे.</translation> <translation id="2922350208395188000">सर्व्हरचे प्रमाणपत्र तपासणे शक्य नाही.</translation> @@ -265,7 +266,7 @@ <translation id="3717027428350673159"><ph name="BEGIN_LINK" />प्रॉक्सी, फायरवॉल आणि DNS कॉन्फिगरेशन तपासणे<ph name="END_LINK" /></translation> <translation id="3739623965217189342">आपण कॉपी केलेल्याचा दुवा जोडा</translation> <translation id="3744899669254331632">Chromium प्रक्रिया करू शकत नसलेले सरमिसळ केलेले क्रेडेन्शियल वेबसाइटने पाठविल्याने आपण आत्ता <ph name="SITE" /> ला भेट देऊ शकत नाही. नेटवर्क त्रुटी आणि आक्रमण सहसा तात्पुरते आहेत त्यामुळे संभवत: हे पृष्ठ नंतर कार्य करेल.</translation> -<translation id="375403751935624634">सर्व्हर त्रुटीमुळे अनुवाद अयशस्वी झाला.</translation> +<translation id="375403751935624634">सर्व्हर त्रुटीमुळे भाषांतर अयशस्वी झाला.</translation> <translation id="3759461132968374835">आपण अलीकडे कोणतेही क्रॅश नोंदवले नाहीत. क्रॅश नोंदवणे अक्षम असताना झालेले क्रॅश येथे दिसून येणार नाहीत.</translation> <translation id="3788090790273268753">या साइटसाठी असलेले प्रमाणपत्र 2016 मध्ये कालबाह्य होते आणि प्रमाणपत्र श्रृंखलेमध्ये SHA-1 वापरून स्वाक्षरी केलेले प्रमाणपत्र असते.</translation> <translation id="382518646247711829">आपण प्रॉक्सी सर्व्हर वापरत असल्यास...</translation> @@ -355,7 +356,7 @@ <translation id="5019198164206649151">समर्थन संचयन खराब स्थितीत</translation> <translation id="5023310440958281426">आपल्या प्रशासकाची धोरणे तपासा</translation> <translation id="5029568752722684782">कॉपी साफ करा</translation> -<translation id="5031870354684148875">Google अनुवाद बद्दल</translation> +<translation id="5031870354684148875">Google भाषांतर बद्दल</translation> <translation id="5040262127954254034">गोपनीयता</translation> <translation id="5045550434625856497">अयोग्य संकेतशब्द</translation> <translation id="5070335125961472645"><ph name="BEGIN_LINK" />प्रॉक्सी पत्ता तपासणे<ph name="END_LINK" /></translation> @@ -454,6 +455,7 @@ <translation id="6355080345576803305">सार्वजनिक सत्र अधिशून्य</translation> <translation id="6358450015545214790">याचा अर्थ काय आहे?</translation> <translation id="6387478394221739770">छान नवीन Chrome वैशिष्ट्यांमध्ये स्वारस्य आहे? chrome.com/beta वरील आमचे बीटा चॅनेल वापरून पहा.</translation> +<translation id="6389758589412724634">हे वेबपृष्ठ प्रदर्शित करण्याचा प्रयत्न करताना Chromium ची मेमरी संपली आहे.</translation> <translation id="641480858134062906"><ph name="URL" /> लोड करण्यात अयशस्वी</translation> <translation id="6417515091412812850">प्रमाणपत्र मागे घेतले की नाही हे तपासण्यात अक्षम.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> नी कनेक्ट करण्यास नकार दिला.</translation> @@ -481,7 +483,7 @@ <translation id="6757797048963528358">आपले डिव्हाइस निष्क्रीय झाले.</translation> <translation id="6820686453637990663">CVC</translation> <translation id="6830600606572693159"><ph name="URL" /> येथील वेबपृष्ठ सध्या अनुपलब्ध आहे. ते ओव्हरलोड असावे किंवा देखरेखीसाठी डाउन असावे.</translation> -<translation id="6831043979455480757">अनुवाद करा</translation> +<translation id="6831043979455480757">भाषांतर करा</translation> <translation id="6839929833149231406">क्षेत्र</translation> <translation id="6874604403660855544">&जोडा पुन्हा करा</translation> <translation id="6891596781022320156">धोरण स्तर समर्थित नाही.</translation> @@ -546,12 +548,12 @@ <translation id="7549584377607005141">हे वेबपृष्ठ योग्यरितीने प्रदर्शित केले जाण्यासाठी आपण पूर्वी प्रविष्ट केलेला डेटा आवश्यक आहे. आपण हा डेटा पुन्हा पाठवू शकता, परंतु असे केल्याने या पृष्ठाने मागे केलेली कोणत्याही क्रियेची पुनरावृत्ती आपण कराल.</translation> <translation id="7554791636758816595">नवीन टॅब</translation> <translation id="7567204685887185387">हा सर्व्हर हे <ph name="DOMAIN" /> असल्याचे सिद्ध करू शकला नाही; त्याचे सुरक्षितता प्रमाणपत्र कदाचित लबाडीने जारी केले असावे. हे कदाचित एका चुकीच्या कॉन्फिगरेशनमुळे किंवा आक्रमणकर्त्याने आपले कनेक्शन आंतरखंडित केल्यामुळे झाले असू शकते.</translation> -<translation id="7568593326407688803">हे पृष्ठ<ph name="ORIGINAL_LANGUAGE" />मध्ये आहे आपण याचा अनुवाद करु इच्छिता?</translation> +<translation id="7568593326407688803">हे पृष्ठ<ph name="ORIGINAL_LANGUAGE" />मध्ये आहे आपण याचा भाषांतर करु इच्छिता?</translation> <translation id="7569952961197462199">Chrome मधून क्रेडिट कार्ड काढायचे?</translation> <translation id="7578104083680115302">आपण Google सह जतन केलेल्या कार्डचा वापर करून डिव्हाइसेसवरून द्रुतपणे साइट आणि अॅप्सवर देय द्या.</translation> <translation id="7592362899630581445">सर्व्हरचे प्रमाणपत्र नाव मर्यादांचे उल्लंघन करते.</translation> <translation id="759889825892636187"><ph name="HOST_NAME" /> सध्या ही विनंती हाताळण्यात अक्षम आहे.</translation> -<translation id="7600965453749440009">कधीही <ph name="LANGUAGE" /> चा अनुवाद करु नका</translation> +<translation id="7600965453749440009">कधीही <ph name="LANGUAGE" /> चा भाषांतर करु नका</translation> <translation id="7610193165460212391">मूल्य <ph name="VALUE" /> श्रेणीच्या बाहेर आहे.</translation> <translation id="7613889955535752492">कालबाह्य: <ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="7615602087246926389">आपल्याकडे आधीपासूनच डेटा आहे जो आपल्या Google खाते संकेतशब्दाची विभिन्न आवृत्ती वापरुन कूटबद्ध करण्यात आला आहे. कृपया तो खाली प्रविष्ट करा.</translation> @@ -587,7 +589,7 @@ <translation id="7956713633345437162">Mobile बुकमार्क</translation> <translation id="7961015016161918242">कधीही नाही</translation> <translation id="7962083544045318153">क्रॅश ID <ph name="CRASH_LOCAL_ID" /></translation> -<translation id="7983301409776629893"> नेहमी <ph name="ORIGINAL_LANGUAGE" /> मधून <ph name="TARGET_LANGUAGE" /> मध्ये अनुवाद करा</translation> +<translation id="7983301409776629893"> नेहमी <ph name="ORIGINAL_LANGUAGE" /> मधून <ph name="TARGET_LANGUAGE" /> मध्ये भाषांतर करा</translation> <translation id="7995512525968007366">निर्दिष्ट केलेले नाही</translation> <translation id="8012647001091218357">आम्ही याक्षणी आपल्या पालकांपर्यंत पोहोचू शकलो नाही. कृपया पुन्हा प्रयत्न करा.</translation> <translation id="8034522405403831421">हे पृष्ठ <ph name="SOURCE_LANGUAGE" /> मध्ये आहे. त्यास <ph name="TARGET_LANGUAGE" /> मध्ये भाषांतरीत करायचे?</translation> @@ -609,7 +611,7 @@ <translation id="8289355894181816810">याचा निश्चित अर्थ आपल्याला माहिती नसल्यास आपल्या नेटवर्क प्रशासकाशी संपर्क साधा.</translation> <translation id="8293206222192510085">बुकमार्क जोडा</translation> <translation id="8294431847097064396">स्रोत</translation> -<translation id="8308427013383895095">नेटवर्क कनेक्शनसह समस्या असल्यामुळे अनुवाद अयशस्वी झाला.</translation> +<translation id="8308427013383895095">नेटवर्क कनेक्शनसह समस्या असल्यामुळे भाषांतर अयशस्वी झाला.</translation> <translation id="8332188693563227489"><ph name="HOST_NAME" /> मधील प्रवेश नाकारला</translation> <translation id="8349305172487531364">बुकमार्क बार</translation> <translation id="8363502534493474904">विमान मोड बंद करा</translation> @@ -622,7 +624,7 @@ <translation id="8498891568109133222"><ph name="HOST_NAME" /> नी प्रतिसाद देण्यात बराच वेळ घेतला.</translation> <translation id="8530504477309582336">या प्रकारचे कार्ड Google Payments द्वारे समर्थित नाही. कृपया एक भिन्न कार्ड निवडा.</translation> <translation id="8550022383519221471">समक्रमित सेवा आपल्या डोमेनसाठी उपलब्ध नाही.</translation> -<translation id="8553075262323480129">अनुवाद करण्यात अयशस्वी कारण पृष्ठाची भाषा निर्धारित करणे शक्य नाही.</translation> +<translation id="8553075262323480129">भाषांतर करण्यात अयशस्वी कारण पृष्ठाची भाषा निर्धारित करणे शक्य नाही.</translation> <translation id="8559762987265718583">आपल्या डिव्हाइसची तारीख आणि वेळ (<ph name="DATE_AND_TIME" />) चुकीची असल्याने <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> सह खाजगी कनेक्शन स्थापित केले जाऊ शकले नाही.</translation> <translation id="856992080682148">या साइटसाठी असलेले प्रमाणपत्र 2017 किंवा त्यानंतर कालबाह्य होते आणि प्रमाणपत्र श्रृंखलेमध्ये SHA-1 वापरून स्वाक्षरी केलेले प्रमाणपत्र असते.</translation> <translation id="8571890674111243710"><ph name="LANGUAGE" /> मध्ये पृष्ठ अनुवादित करत आहे...</translation> @@ -631,7 +633,6 @@ <translation id="8647750283161643317">सर्व डीफॉल्टमध्ये रीसेट करा</translation> <translation id="8680787084697685621">खाते साइन-इन तपशील कालबाह्य झाला.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> चे आपले कनेक्शन कूटबद्ध केलेले नाही.</translation> -<translation id="8713130696108419660">खराब मूळ स्वाक्षरी</translation> <translation id="8725066075913043281">पुन्हा प्रयत्न करा</translation> <translation id="8728672262656704056">आपण गुप्त झाला आहात</translation> <translation id="8730621377337864115">पूर्ण झाले</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb index 0e42028..fd3e50c 100644 --- a/components/strings/components_strings_ms.xtb +++ b/components/strings/components_strings_ms.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Sijil pelayan di <ph name="HOST_NAME" /> nampaknya palsu.</translation> <translation id="2889159643044928134">Jangan Muat Semula</translation> <translation id="2896499918916051536">Pemalam ini tidak disokong.</translation> +<translation id="2900469785430194048">Google Chrome kehabisan memori semasa cuba memaparkan halaman web ini.</translation> <translation id="2909946352844186028">Perubahan rangkaian dikesan.</translation> <translation id="2915500479781995473">Pelayan ini tidak dapat membuktikan bahawa ia adalah <ph name="DOMAIN" /> ; sijil keselamatannya tamat tempoh. Ini mungkin disebabkan oleh salah konfigurasi atau penyerang memintas sambungan anda. Jam komputer anda buat masa ini ditetapkan kepada <ph name="CURRENT_TIME" />. Betulkah itu? Jika tidak, anda perlu membetulkan jam sistem anda dan kemudian muatkan semula halaman ini.</translation> <translation id="2922350208395188000">Sijil pelayan tidak boleh diperiksa.</translation> @@ -454,6 +455,7 @@ <translation id="6355080345576803305">Pembatalan sesi awam</translation> <translation id="6358450015545214790">Apakah maksudnya?</translation> <translation id="6387478394221739770">Berminat dengan ciri Chrome baharu yang hebat? Cuba saluran beta kami di chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium kehabisan memori semasa cuba memaparkan halaman web ini.</translation> <translation id="641480858134062906"><ph name="URL" /> gagal untuk muatkan</translation> <translation id="6417515091412812850">Tidak dapat memeriksa sama ada sijil telah dibatalkan.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> enggan menyambung.</translation> @@ -631,7 +633,6 @@ <translation id="8647750283161643317">Tetapkan semula semua kepada lalai</translation> <translation id="8680787084697685621">Butiran log masuk akaun sudah lapuk.</translation> <translation id="8703575177326907206">Sambungan anda ke <ph name="DOMAIN" /> tidak disulitkan.</translation> -<translation id="8713130696108419660">Tandatangan parap tidak elok</translation> <translation id="8725066075913043281">Cuba lagi</translation> <translation id="8728672262656704056">Anda menggunakan mod inkognito</translation> <translation id="8730621377337864115">Selesai</translation>
diff --git a/components/strings/components_strings_nl.xtb b/components/strings/components_strings_nl.xtb index efcb218..1751aefb 100644 --- a/components/strings/components_strings_nl.xtb +++ b/components/strings/components_strings_nl.xtb
@@ -168,6 +168,7 @@ <translation id="284702764277384724">Het servercertificaat op <ph name="HOST_NAME" /> lijkt vals te zijn.</translation> <translation id="2889159643044928134">Niet opnieuw laden</translation> <translation id="2896499918916051536">Deze plug-in wordt niet ondersteund.</translation> +<translation id="2900469785430194048">Google Chrome beschikt over onvoldoende geheugen om deze webpagina weer te geven.</translation> <translation id="2909946352844186028">Er is een netwerkwijziging gedetecteerd.</translation> <translation id="2915500479781995473">De server kan niet bewijzen dat dit <ph name="DOMAIN" /> is. Het beveiligingscertificaat van de server is verlopen. Dit kan worden veroorzaakt door een verkeerde configuratie of een aanvaller die je verbinding onderschept. De klok van je computer is momenteel ingesteld op <ph name="CURRENT_TIME" />. Klopt dat? Zo niet, dan moet je de klok van het systeem corrigeren en deze pagina vernieuwen.</translation> <translation id="2922350208395188000">Het servercertificaat kan niet worden gecontroleerd.</translation> @@ -446,6 +447,7 @@ <translation id="6355080345576803305">Overschrijving voor openbare sessie</translation> <translation id="6358450015545214790">Wat betekent dit?</translation> <translation id="6387478394221739770">Ben je geïnteresseerd in nieuwe, coole Chrome-functies? Probeer ons bèta-kanaal op chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium beschikt over onvoldoende geheugen om deze webpagina weer te geven.</translation> <translation id="641480858134062906">Kan <ph name="URL" /> niet laden</translation> <translation id="6417515091412812850">Kan niet controleren of het certificaat is ingetrokken.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> heeft de verbinding geweigerd.</translation> @@ -623,7 +625,6 @@ <translation id="8647750283161643317">Alle standaardinstellingen herstellen</translation> <translation id="8680787084697685621">De inloggegevens voor het account zijn verouderd.</translation> <translation id="8703575177326907206">Je verbinding met <ph name="DOMAIN" /> is niet gecodeerd.</translation> -<translation id="8713130696108419660">Onjuiste eerste handtekening</translation> <translation id="8725066075913043281">Opnieuw proberen</translation> <translation id="8728672262656704056">Je bent incognito</translation> <translation id="8730621377337864115">Gereed</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index 4f11d5c..1b80fac 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Tjenersertifikatet på <ph name="HOST_NAME" /> ser ut til å være forfalsket.</translation> <translation id="2889159643044928134">Ikke last inn på nytt</translation> <translation id="2896499918916051536">Dette programtillegget støttes ikke.</translation> +<translation id="2900469785430194048">Google Chrome gikk tom for minne under forsøket på å vise denne nettsiden.</translation> <translation id="2909946352844186028">En nettverksendring ble oppdaget.</translation> <translation id="2915500479781995473">Denne tjeneren kunne ikke bevise at den er <ph name="DOMAIN" />. Tjenerens sikkerhetssertifikat er utløpt. Dette kan være forårsaket av en feilkonfigurering eller en angriper som avskjærer tilkoblingen din. Datamaskinens klokke er for øyeblikket satt til <ph name="CURRENT_TIME" />. Ser det riktig ut? Hvis det ikke gjør det, bør du korrigere systemets klokke og deretter laste inn denne siden på nytt.</translation> <translation id="2922350208395188000">Tjenerens sertifikat kan ikke kontrolleres.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Offentlig økt-overstyring</translation> <translation id="6358450015545214790">Hva innebærer dette?</translation> <translation id="6387478394221739770">Interessert i nye kule Chrome-funksjoner? Prøv betakanalen vår på chrome.com/beta</translation> +<translation id="6389758589412724634">Chromium gikk tom for minne under forsøket på å vise denne nettsiden.</translation> <translation id="641480858134062906">Fikk ikke lastet inn <ph name="URL" /></translation> <translation id="6417515091412812850">Kan ikke kontrollere hvorvidt sertifikatet har blitt tilbakekalt.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> avviste tilkoblingsforsøket.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Tilbakestill alle til standard</translation> <translation id="8680787084697685621">Kontoens påloggingsdetaljer er utdaterte.</translation> <translation id="8703575177326907206">Tilkoblingen til <ph name="DOMAIN" /> er ikke kryptert.</translation> -<translation id="8713130696108419660">Feil innledende signatur</translation> <translation id="8725066075913043281">Prøv igjen</translation> <translation id="8728672262656704056">Du er nå i inkognitomodus</translation> <translation id="8730621377337864115">Ferdig</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb index 635c2dd..67c432e6 100644 --- a/components/strings/components_strings_pl.xtb +++ b/components/strings/components_strings_pl.xtb
@@ -119,7 +119,7 @@ <translation id="2317259163369394535"><ph name="DOMAIN" /> wymaga nazwy użytkownika i hasła.</translation> <translation id="2328300916057834155">Zignorowano nieprawidłową zakładkę w indeksie <ph name="ENTRY_INDEX" /></translation> <translation id="2354001756790975382">Inne zakładki</translation> -<translation id="2359808026110333948">Kontynuuj</translation> +<translation id="2359808026110333948">Dalej</translation> <translation id="2365563543831475020">Raport o awarii utworzony w dniu: <ph name="CRASH_TIME" /> nie został przesłany</translation> <translation id="2367567093518048410">Poziom</translation> <translation id="237718015863234333">Brak dostępnych alternatywnych interfejsów</translation> @@ -170,6 +170,7 @@ <translation id="284702764277384724">Certyfikat serwera <ph name="HOST_NAME" /> wydaje się sfałszowany.</translation> <translation id="2889159643044928134">Nie ładuj ponownie</translation> <translation id="2896499918916051536">Ta wtyczka nie jest obsługiwana.</translation> +<translation id="2900469785430194048">Podczas próby wyświetlenia tej strony w Google Chrome zabrakło pamięci.</translation> <translation id="2909946352844186028">Wykryto zmianę sieci.</translation> <translation id="2915500479781995473">Ten serwer nie mógł udowodnić, że należy do <ph name="DOMAIN" />. Jego certyfikat bezpieczeństwa wygasł. Może to być spowodowane błędną konfiguracją lub przechwyceniem połączenia przez atakującego. Zegar Twojego komputera jest obecnie ustawiony na <ph name="CURRENT_TIME" />. Czy to poprawny czas? Jeśli nie, ustaw go, a następnie odśwież stronę.</translation> <translation id="2922350208395188000">Nie można sprawdzić certyfikatu serwera.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Zastąpienie sesji publicznej</translation> <translation id="6358450015545214790">Co to oznacza?</translation> <translation id="6387478394221739770">Interesują Cię nowe, przydatne funkcje Chrome? Wypróbuj wersję beta ze strony chrome.com/beta.</translation> +<translation id="6389758589412724634">Podczas próby wyświetlenia tej strony w Chromium zabrakło pamięci.</translation> <translation id="641480858134062906">Nie można załadować adresu <ph name="URL" /></translation> <translation id="6417515091412812850">Nie można sprawdzić, czy certyfikat został unieważniony.</translation> <translation id="6433595998831338502">Serwer <ph name="HOST_NAME" /> odrzucił połączenie.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Przywróć wszystkie ustawienia domyślne</translation> <translation id="8680787084697685621">Dane logowania na konto są nieaktualne.</translation> <translation id="8703575177326907206">Połączenie z witryną <ph name="DOMAIN" /> nie jest szyfrowane.</translation> -<translation id="8713130696108419660">Błędny podpis wstępny</translation> <translation id="8725066075913043281">Spróbuj ponownie</translation> <translation id="8728672262656704056">Jesteś w trybie incognito</translation> <translation id="8730621377337864115">Gotowe</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb index 2611424..63412a8 100644 --- a/components/strings/components_strings_pt-BR.xtb +++ b/components/strings/components_strings_pt-BR.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">O certificado do servidor em <ph name="HOST_NAME" /> parece ser falsificado.</translation> <translation id="2889159643044928134">Não atualizar</translation> <translation id="2896499918916051536">Este plug-in não é compatível.</translation> +<translation id="2900469785430194048">O Google Chrome ficou sem memória ao tentar exibir essa página da Web.</translation> <translation id="2909946352844186028">Foi detectada uma alteração na rede.</translation> <translation id="2915500479781995473">Este servidor não conseguiu provar que é <ph name="DOMAIN" />. O certificado de segurança do servidor expirou. Isso pode ser causado por uma configuração incorreta ou pela interceptação da sua conexão por um invasor. O relógio do seu computador está definido para <ph name="CURRENT_TIME" /> no momento. Ele está certo? Caso não esteja, corrija o relógio do seu sistema e depois recarregue esta página.</translation> <translation id="2922350208395188000">O certificado do servidor não pode ser verificado.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Modificação de sessão pública</translation> <translation id="6358450015545214790">O que são essas informações?</translation> <translation id="6387478394221739770">Interessado em novos recursos interessantes do Google Chrome? Veja nosso Canal Beta em chrome.com/beta.</translation> +<translation id="6389758589412724634">O Chromium ficou sem memória ao tentar exibir essa página da Web.</translation> <translation id="641480858134062906">Falha ao carregar <ph name="URL" /></translation> <translation id="6417515091412812850">Não foi possível verificar se o certificado foi revogado</translation> <translation id="6433595998831338502">A conexão com <ph name="HOST_NAME" /> foi recusada.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Redefinir tudo para o padrão</translation> <translation id="8680787084697685621">Os detalhes de login da conta estão desatualizados.</translation> <translation id="8703575177326907206">Sua conexão com <ph name="DOMAIN" /> não está criptografada.</translation> -<translation id="8713130696108419660">Assinatura inicial inválida</translation> <translation id="8725066075913043281">Tentar novamente</translation> <translation id="8728672262656704056">Você entrou no modo de navegação anônima</translation> <translation id="8730621377337864115">Concluído</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index aba6b35..a08d4f4 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">O certificado do servidor de <ph name="HOST_NAME" /> parece ser uma falsificação.</translation> <translation id="2889159643044928134">Não atualizar</translation> <translation id="2896499918916051536">Este plug-in não é compatível.</translation> +<translation id="2900469785430194048">O Google Chrome ficou sem memória ao tentar apresentar esta página Web.</translation> <translation id="2909946352844186028">Foi detetada uma alteração de rede.</translation> <translation id="2915500479781995473">Este servidor não conseguir provar que é o domínio <ph name="DOMAIN" />; o respetivo certificado de segurança expirou. Isto pode ser o resultado de uma configuração incorreta ou de um atacante a intercetar a sua ligação. Atualmente, o relógio do computador está definido para as <ph name="CURRENT_TIME" />. Esta hora parece-lhe correta? Em caso negativo, corrija o relógio do sistema e, em seguida, atualize esta página.</translation> <translation id="2922350208395188000">Não é possível verificar o certificado do servidor.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Substituição da sessão pública</translation> <translation id="6358450015545214790">O que significam?</translation> <translation id="6387478394221739770">Está interessado nas novas e fantásticas funcionalidades do Chrome? Experimente o nosso canal beta em chrome.com/beta.</translation> +<translation id="6389758589412724634">O Chromium ficou sem memória ao tentar apresentar esta página Web.</translation> <translation id="641480858134062906">Falha ao carregar <ph name="URL" /></translation> <translation id="6417515091412812850">Não é possível verificar se o certificado foi revogado.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> recusou estabelecer ligação.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Repor todas as predefinições</translation> <translation id="8680787084697685621">Os detalhes de início de sessão na conta estão desactualizados.</translation> <translation id="8703575177326907206">A sua ligação a <ph name="DOMAIN" /> não está encriptada.</translation> -<translation id="8713130696108419660">Rubrica incorreta</translation> <translation id="8725066075913043281">Tentar novamente</translation> <translation id="8728672262656704056">Está anónimo</translation> <translation id="8730621377337864115">Concluído</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb index c7b665a..e7ede369 100644 --- a/components/strings/components_strings_ro.xtb +++ b/components/strings/components_strings_ro.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Se pare că certificatul de server pentru <ph name="HOST_NAME" /> este un fals.</translation> <translation id="2889159643044928134">Nu reîncărca</translation> <translation id="2896499918916051536">Acest plugin nu este acceptat.</translation> +<translation id="2900469785430194048">Google Chrome nu a avut suficientă memorie la afișarea paginii web.</translation> <translation id="2909946352844186028">A fost detectată o schimbare a rețelei.</translation> <translation id="2915500479781995473">Acest server nu a putut dovedi că este <ph name="DOMAIN" />; certificatul său de securitate a expirat. Cauza poate fi o configurare greșită sau interceptarea conexiunii de către un atacator. În prezent, ceasul computerului este setat la <ph name="CURRENT_TIME" />. Este corect? Dacă nu, trebuie să corectezi ora sistemului, apoi să actualizezi pagina.</translation> <translation id="2922350208395188000">Certificatul serverului nu poate fi verificat.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Modificarea sesiunii publice</translation> <translation id="6358450015545214790">Ce înseamnă acestea?</translation> <translation id="6387478394221739770">Doriți să utilizați funcții Chrome noi și interesante? Încercați canalul nostru beta de la chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium nu a avut suficientă memorie la afișarea paginii web.</translation> <translation id="641480858134062906">Adresa <ph name="URL" /> nu s-a încărcat</translation> <translation id="6417515091412812850">Nu se poate verifica dacă certificatul a fost revocat.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> a refuzat conexiunea.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Resetați-le pe toate la valorile prestabilite</translation> <translation id="8680787084697685621">Datele de conectare la cont au expirat.</translation> <translation id="8703575177326907206">Conexiunea la <ph name="DOMAIN" /> nu este criptată.</translation> -<translation id="8713130696108419660">Semnătură inițială incorectă</translation> <translation id="8725066075913043281">Încearcă din nou</translation> <translation id="8728672262656704056">Ați trecut în modul incognito</translation> <translation id="8730621377337864115">Terminat</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index cf16c711..80d0874 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Возможно, сертификат сервера <ph name="HOST_NAME" /> фальсифицирован.</translation> <translation id="2889159643044928134">Не обновлять</translation> <translation id="2896499918916051536">Плагин не поддерживается.</translation> +<translation id="2900469785430194048">Chrome не хватает памяти для показа этой страницы.</translation> <translation id="2909946352844186028">Похоже, вы подключились к другой сети.</translation> <translation id="2915500479781995473">Не удалось подтвердить, что это сервер <ph name="DOMAIN" />. Срок действия его сертификата безопасности истек. Возможно, сервер настроен неправильно или кто-то пытается перехватить ваши данные. Обратите внимание, что на компьютере установлено время <ph name="CURRENT_TIME" />. Если оно неправильное, измените его и обновите страницу.</translation> <translation id="2922350208395188000">Не удается проверить сертификат сервера.</translation> @@ -452,6 +453,7 @@ <translation id="6355080345576803305">Сеанс общего доступа (переопределено)</translation> <translation id="6358450015545214790">Что это значит?</translation> <translation id="6387478394221739770">Хотите быть в курсе новинок Chrome? Выберите бета-канал на странице "chrome.com/beta".</translation> +<translation id="6389758589412724634">Chromium не хватает памяти для показа этой страницы.</translation> <translation id="641480858134062906">Невозможно отобразить страницу <ph name="URL" /></translation> <translation id="6417515091412812850">Не удается проверить, был ли отозван сертификат.</translation> <translation id="6433595998831338502">Сайт <ph name="HOST_NAME" /> не позволяет установить соединение.</translation> @@ -629,7 +631,6 @@ <translation id="8647750283161643317">Восстановить настройки по умолчанию</translation> <translation id="8680787084697685621">Данные для входа в аккаунт устарели.</translation> <translation id="8703575177326907206">Соединение с <ph name="DOMAIN" /> не зашифровано.</translation> -<translation id="8713130696108419660">Недопустимая начальная подпись</translation> <translation id="8725066075913043281">Повторить попытку</translation> <translation id="8728672262656704056">Вы перешли в режим инкогнито</translation> <translation id="8730621377337864115">Готово</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb index 1f5c543..851fcf7 100644 --- a/components/strings/components_strings_sk.xtb +++ b/components/strings/components_strings_sk.xtb
@@ -168,6 +168,7 @@ <translation id="284702764277384724">Zdá sa, že certifikát servera na webe <ph name="HOST_NAME" /> je falošný.</translation> <translation id="2889159643044928134">Nenačítať znova</translation> <translation id="2896499918916051536">Tento doplnok nie je podporovaný</translation> +<translation id="2900469785430194048">Pri pokuse o zobrazenie tejto webovej stránky došlo miesto v pamäti prehliadača Google Chrome.</translation> <translation id="2909946352844186028">Zistila sa zmena siete.</translation> <translation id="2915500479781995473">Tento server nedokázal potvrdiť, že ide o doménu <ph name="DOMAIN" />, pretože vypršala platnosť bezpečnostného certifikátu. Môže to byť následok nesprávnej konfigurácie alebo napadnutia vášho pripojenia útočníkom. Hodiny vášho počítača sú momentálne nastavené na <ph name="CURRENT_TIME" />. Je tento čas správny? Ak nie, opravte čas na hodinách systému a potom obnovte túto stránku.</translation> <translation id="2922350208395188000">Certifikát servera sa nedá overiť.</translation> @@ -446,6 +447,7 @@ <translation id="6355080345576803305">Prepísanie verejnej relácie</translation> <translation id="6358450015545214790">Čo znamenajú tieto položky?</translation> <translation id="6387478394221739770">Máte záujem o skvelé nové funkcie prehliadača Chrome? Vyskúšajte verziu beta na stránke chrome.com/beta.</translation> +<translation id="6389758589412724634">Pri pokuse o zobrazenie tejto webovej stránky došlo miesto v pamäti prehliadača Google Chromium.</translation> <translation id="641480858134062906">Adresu <ph name="URL" /> sa nepodarilo načítať</translation> <translation id="6417515091412812850">Nie je možné skontrolovať, či bol certifikát odmietnutý.</translation> <translation id="6433595998831338502">Web <ph name="HOST_NAME" /> zamietol pripojenie.</translation> @@ -623,7 +625,6 @@ <translation id="8647750283161643317">Obnoviť predvolené nastavenia všetkých experimentov</translation> <translation id="8680787084697685621">Informácie o prihlásení do účtu sú neaktuálne.</translation> <translation id="8703575177326907206">Vaše pripojenie k doméne <ph name="DOMAIN" /> sa nešifruje.</translation> -<translation id="8713130696108419660">Nesprávny počiatočný podpis</translation> <translation id="8725066075913043281">Skúsiť znova</translation> <translation id="8728672262656704056">Ste v režime inkognito</translation> <translation id="8730621377337864115">Hotovo</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index dab64ed..d5e3d88 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Videti je, da je potrdilo strežnika na <ph name="HOST_NAME" /> ponarejeno.</translation> <translation id="2889159643044928134">Ne naloži znova</translation> <translation id="2896499918916051536">Ta vtičnik ni podprt.</translation> +<translation id="2900469785430194048">Google Chromu je med poskusom prikazovanja te spletne strani zmanjkalo pomnilnika.</translation> <translation id="2909946352844186028">Zaznana je bila sprememba omrežja.</translation> <translation id="2915500479781995473">Strežniku ni uspelo dokazati, da je <ph name="DOMAIN" />; njegovo varnostno potrdilo je poteklo. Razlog za to je lahko napačna konfiguracija ali napadalčevo prestrezanje povezave. Ura v računalniku je trenutno nastavljena na <ph name="CURRENT_TIME" />. Je to pravilno? Če ni, popravite uro v sistemu in osvežite stran. </translation> @@ -454,6 +455,7 @@ <translation id="6355080345576803305">Preglasitev javne seje</translation> <translation id="6358450015545214790">Več o teh nastavitvah</translation> <translation id="6387478394221739770">Vas zanimajo super nove funkcije Chroma? Preskusite naš kanal za različice beta na chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromiumu je med poskusom prikazovanja te spletne strani zmanjkalo pomnilnika.</translation> <translation id="641480858134062906">Nalaganje <ph name="URL" /> ni uspelo</translation> <translation id="6417515091412812850">Ni mogoče preveriti, ali je bilo potrdilo preklicano.</translation> <translation id="6433595998831338502">Spletno mesto <ph name="HOST_NAME" /> ni dovolilo povezave.</translation> @@ -631,7 +633,6 @@ <translation id="8647750283161643317">Ponastavi vse na privzete</translation> <translation id="8680787084697685621">Podrobnosti prijave v račun so zastarele.</translation> <translation id="8703575177326907206">Vaša povezava z <ph name="DOMAIN" /> ni kodirana.</translation> -<translation id="8713130696108419660">Napačen začetni podpis</translation> <translation id="8725066075913043281">Poskusite znova</translation> <translation id="8728672262656704056">Uporabljate način brez beleženja zgodovine</translation> <translation id="8730621377337864115">Končano</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index e1050c4..0b1d5f5 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Изгледа да је сертификат сервера на хосту <ph name="HOST_NAME" /> фалсификат.</translation> <translation id="2889159643044928134">Не учитавај поново</translation> <translation id="2896499918916051536">Ова додатна компонента није подржана.</translation> +<translation id="2900469785430194048">Google Chrome-у је понестало меморије док је покушавао да прикаже ову веб-страницу.</translation> <translation id="2909946352844186028">Откривена је промена на мрежи.</translation> <translation id="2915500479781995473">Овај сервер не може да докаже да је <ph name="DOMAIN" />; његов безбедносни сертификат је истекао. Узрок томе је можда погрешна конфигурација или нападач који је прекинуо везу. Сат рачунара је тренутно подешен на <ph name="CURRENT_TIME" />. Да ли вам то делује тачно? Ако не делује, треба да исправите сат система и освежите ову страницу.</translation> <translation id="2922350208395188000">Није могуће проверити сертификат сервера.</translation> @@ -452,6 +453,7 @@ <translation id="6355080345576803305">Замена јавне сесије</translation> <translation id="6358450015545214790">Шта ово значи?</translation> <translation id="6387478394221739770">Интересују вас нове занимљиве Chrome функције? Испробајте бета канал на chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium-у је понестало меморије док је покушавао да прикаже ову веб-страницу.</translation> <translation id="641480858134062906">Није успело учитавање странице <ph name="URL" /></translation> <translation id="6417515091412812850">Није могуће проверити да ли је сертификат опозван.</translation> <translation id="6433595998831338502">Хост <ph name="HOST_NAME" /> је одбио повезивање.</translation> @@ -629,7 +631,6 @@ <translation id="8647750283161643317">Врати све на подразумевано</translation> <translation id="8680787084697685621">Детаљи за пријављивање на налог су застарели.</translation> <translation id="8703575177326907206">Ваша веза са доменом <ph name="DOMAIN" /> није шифрована.</translation> -<translation id="8713130696108419660">Неисправан потпис иницијалима</translation> <translation id="8725066075913043281">Покушајте поново</translation> <translation id="8728672262656704056">Прешли сте у режим Без архивирања</translation> <translation id="8730621377337864115">Готово</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb index 23b2d8e..8c6122a 100644 --- a/components/strings/components_strings_sv.xtb +++ b/components/strings/components_strings_sv.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Servercertifikatet på <ph name="HOST_NAME" /> verkar vara falskt.</translation> <translation id="2889159643044928134">Läs inte in sidan igen</translation> <translation id="2896499918916051536">Det här pluginprogrammet stöds inte.</translation> +<translation id="2900469785430194048">Minnet tog slut när den här webbsidan skulle visas i Google Chrome.</translation> <translation id="2909946352844186028">En nätverksförändring upptäcktes.</translation> <translation id="2915500479781995473">Servern kunde inte bevisa att den är <ph name="DOMAIN" /> eftersom dess säkerhetscertifikat har upphört att gälla. Detta kan bero på en felaktig inställning eller att en angripare har manipulerat anslutningen. Klockan på datorn är för närvarande inställd på <ph name="CURRENT_TIME" />. Stämmer det inte? Korrigera systemets klocka och uppdatera sedan sidan.</translation> <translation id="2922350208395188000">Servercertifikatet kan inte kontrolleras.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Åsidosätt offentlig session</translation> <translation id="6358450015545214790">Vad innebär dessa?</translation> <translation id="6387478394221739770">Är du intresserad av häftiga nya funktioner i Chrome? Pröva vår betakanal på chrome.com/beta.</translation> +<translation id="6389758589412724634">Minnet tog slut när den här webbsidan skulle visas i Chromium.</translation> <translation id="641480858134062906"><ph name="URL" /> kunde inte laddas</translation> <translation id="6417515091412812850">Det gick inte att kontrollera om certifikatet har återkallats.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> avvisade anslutningen.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Återställ alla till standardvärden</translation> <translation id="8680787084697685621">Inloggningsuppgifterna för kontot är inte aktuella.</translation> <translation id="8703575177326907206">Din anslutning till <ph name="DOMAIN" /> är inte krypterad.</translation> -<translation id="8713130696108419660">Dålig initial signatur</translation> <translation id="8725066075913043281">Försök igen</translation> <translation id="8728672262656704056">Du surfar inkognito.</translation> <translation id="8730621377337864115">Klart</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index 39937ad0..2582de7 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Cheti cha seva kilchopo kwenye <ph name="HOST_NAME" /> kinaonekana ghushi.</translation> <translation id="2889159643044928134">Usipakie Upya</translation> <translation id="2896499918916051536">Programu-jalizi hii haitumiki.</translation> +<translation id="2900469785430194048">Nafasi ya kuhifadhi kwenye Google Chrome iliisha ilipokuwa ikijaribu kuonyesha ukurasa huu wa wavuti.</translation> <translation id="2909946352844186028">Mabadiliko ya mtandao yamegunduliwa.</translation> <translation id="2915500479781995473">Seva hii haikuweza kuthibitisha kuwa ni <ph name="DOMAIN" />; cheti chake cha usalama kilikwisha muda. Hii inaweza kusababishwa na usanidi usiofaa au mvamizi kuingilia muunganisho wako. Saa ya kompyuta yako imewekwa kwenye saa <ph name="CURRENT_TIME" /> kwa sasa. Hiyo ni sawa? Ikiwa si sawa, unapaswa kurekebisha mfumo wako wa saa kisha uonyeshe upya ukurasa huu.</translation> <translation id="2922350208395188000">Cheti cha seva hakiwezi kukaguliwa.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Kipindi cha umma kimebatilishwa</translation> <translation id="6358450015545214790">Je, hii inamaanisha nini?</translation> <translation id="6387478394221739770">Unavutiwa na vipengee vipya vizuri vya Chrome? Jaribu kituo chetu cha beta katika chrome.com/beta.</translation> +<translation id="6389758589412724634">Nafasi ya kuhifadhi kwenye Chromium iliisha ilipokuwa ikijaribu kuonyesha ukurasa huu wa wavuti.</translation> <translation id="641480858134062906"><ph name="URL" /> ilishindwa kupakia</translation> <translation id="6417515091412812850">Haiwezi kukagua ikiwa cheti kimebatilishwa.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> imekataa kuunganisha.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Weka upya zote kwa chaguo-msingi</translation> <translation id="8680787084697685621">Maelezo ya kuingia kwenye akaunti yamechina.</translation> <translation id="8703575177326907206">Muunganisho wako kwa <ph name="DOMAIN" /> haujasimbwa.</translation> -<translation id="8713130696108419660">Sahihi mbaya ya mwanzo</translation> <translation id="8725066075913043281">Jaribu tena</translation> <translation id="8728672262656704056">Unavinjari katika hali fiche.</translation> <translation id="8730621377337864115">Nimemaliza</translation>
diff --git a/components/strings/components_strings_ta.xtb b/components/strings/components_strings_ta.xtb index fd4c3f1e..0f212ebc 100644 --- a/components/strings/components_strings_ta.xtb +++ b/components/strings/components_strings_ta.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> இல் உள்ள சேவையகச் சான்றிதழ் போலியானது போல் தெரிகிறது.</translation> <translation id="2889159643044928134">மீண்டும் ஏற்ற வேண்டாம்</translation> <translation id="2896499918916051536">செருகுநிரல் ஆதரிக்கவில்லை.</translation> +<translation id="2900469785430194048">நினைவகப் பற்றாக்குறையினால், Google Chrome இந்த இணையப்பக்கத்தைக் காட்டவில்லை.</translation> <translation id="2909946352844186028">பிணைய மாற்றம் கண்டறியப்பட்டது.</translation> <translation id="2915500479781995473">இது <ph name="DOMAIN" /> தான் என்பதை இந்தச் சேவையகம் உறுதிப்படுத்தவில்லை; இதன் பாதுகாப்புச் சான்றிதழ் காலாவதியாகிவிட்டது. இது தவறான உள்ளமைவால் ஏற்பட்டிருக்கலாம் அல்லது தீங்கிழைப்பவர் உங்கள் இணைப்பில் குறுக்கிட்டிருக்கலாம். உங்கள் கணினியின் கடிகாரம் இப்போது <ph name="CURRENT_TIME" />க்கு அமைக்கப்பட்டுள்ளது. இது சரியாக உள்ளதா? தவறு எனில், உங்கள் கணினியின் கடிகாரத்தைச் சரிசெய்து, இந்தப் பக்கத்தைப் புதுப்பிக்கவும்.</translation> <translation id="2922350208395188000">சேவையகச் சான்றிதழை சோதிக்க முடியவில்லை.</translation> @@ -449,6 +450,7 @@ <translation id="6355080345576803305">பொது அமர்வு மேலெழுதப்பட்டது</translation> <translation id="6358450015545214790">இவற்றின் பொருள் என்ன?</translation> <translation id="6387478394221739770">புதிய Chrome அம்சங்களில் ஆர்வம் உள்ளதா? chrome.com/beta இல் எங்களுடைய பீட்டா அலைவரிசையை முயற்சிக்கவும்.</translation> +<translation id="6389758589412724634">நினைவகப் பற்றாக்குறையினால், Chromium இந்த இணையப்பக்கத்தைக் காட்டவில்லை.</translation> <translation id="641480858134062906"><ph name="URL" /> நினவேறுவதில் தோல்வியடைந்தது</translation> <translation id="6417515091412812850">சான்றிதழ் திரும்பப்பெறப்பட்டதா என்று சோதிக்க முடியவில்லை.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> இணைக்க மறுத்தது.</translation> @@ -626,7 +628,6 @@ <translation id="8647750283161643317">எல்லாவற்றையும் இயல்புநிலைக்கு மீட்டமை</translation> <translation id="8680787084697685621">கணக்கு உள்நுழைவு விவரங்கள் காலாவதியாகிவிட்டன.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> க்கான உங்கள் இணைப்பு குறியாக்கம் செய்யப்படவில்லை.</translation> -<translation id="8713130696108419660">தொடக்க விசையின் கையொப்பம் தவறானது</translation> <translation id="8725066075913043281">மீண்டும் முயற்சிக்கவும்</translation> <translation id="8728672262656704056">மறைநிலைக்குச் சென்றுவிட்டீர்கள்</translation> <translation id="8730621377337864115">முடிந்தது</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index d656951..799d75f 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" />లో సర్వర్ ప్రమాణపత్రం నకిలీదిగా కనిపిస్తోంది.</translation> <translation id="2889159643044928134">మళ్లీ లోడ్ చేయవద్దు</translation> <translation id="2896499918916051536">ఈ ప్లగిన్కు మద్దతు లేదు.</translation> +<translation id="2900469785430194048">Google Chrome ఈ వెబ్పేజీని ప్రదర్శించడానికి ప్రయత్నిస్తున్నప్పుడు మెమరీ అయిపోయింది.</translation> <translation id="2909946352844186028">నెట్వర్క్ మార్పు గుర్తించబడింది.</translation> <translation id="2915500479781995473">ఈ సర్వర్ <ph name="DOMAIN" /> అని నిరూపించుకోలేకపోయింది; దీని భద్రతా ప్రమాణపత్రం గడువు ముగిసింది. ఇది తప్పుగా కాన్ఫిగర్ చేయడం వలన లేదా దాడిచేసే వ్యక్తి మీ కనెక్షన్కి అంతరాయం కలిగించడం వలన జరిగి ఉండవచ్చు. మీ కంప్యూటర్ గడియారం ప్రస్తుతం <ph name="CURRENT_TIME" />కి సెట్ చేయబడింది. అది సరిగ్గా ఉందా? లేకపోతే, మీరు మీ సిస్టమ్ గడియారాన్ని సరిచేసి, ఆపై ఈ పేజీని రిఫ్రెష్ చేయండి.</translation> <translation id="2922350208395188000">సర్వర్ యొక్క ప్రమాణపత్రం తనిఖీ చెయ్యబడదు.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">పబ్లిక్ సెషన్ భర్తీ</translation> <translation id="6358450015545214790">దీని అర్ధం ఏమిటి?</translation> <translation id="6387478394221739770">అద్భుతమైన క్రొత్త Chrome లక్షణాల పట్ల ఆసక్తిగా ఉన్నారా? chrome.com/betaలో మా బీటా ఛానెల్ను ప్రయత్నించండి.</translation> +<translation id="6389758589412724634">Chromium ఈ వెబ్పేజీని ప్రదర్శించడానికి ప్రయత్నిస్తున్నప్పుడు మెమరీ అయిపోయింది.</translation> <translation id="641480858134062906"><ph name="URL" /> లోడ్ చెయ్యడం విఫలమైంది</translation> <translation id="6417515091412812850">ప్రమాణపత్రం రద్దు చెయ్యబడిందా అని తనిఖీ చెయ్యడం సాధ్యం కాలేదు.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> కనెక్ట్ కావడానికి నిరాకరించింది.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">అన్నింటినీ డిఫాల్ట్కు రీసెట్ చేయి</translation> <translation id="8680787084697685621">ఖాతా సైన్-ఇన్ వివరాల గడువు తేదీ ముగిసింది.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" />కు మీ కనెక్షన్ గుప్తీకరించబడలేదు.</translation> -<translation id="8713130696108419660">చెల్లని ప్రారంభ సంతకం</translation> <translation id="8725066075913043281">మళ్ళీ ప్రయత్నించండి</translation> <translation id="8728672262656704056">మీరు అజ్ఞాతంగా ఉన్నారు</translation> <translation id="8730621377337864115">పూర్తయింది</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb index effdd89bb..2de4984 100644 --- a/components/strings/components_strings_th.xtb +++ b/components/strings/components_strings_th.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">ใบรับรองเซิร์ฟเวอร์ที่ <ph name="HOST_NAME" /> ดูเหมือนเป็นของปลอม</translation> <translation id="2889159643044928134">อย่าโหลดซ้ำ</translation> <translation id="2896499918916051536">ไม่สนับสนุนปลั๊กอินนี้</translation> +<translation id="2900469785430194048">Google Chrome หน่วยความจำเต็มเมื่อพยายามแสดงหน้าเว็บนี้</translation> <translation id="2909946352844186028">ตรวจพบการเปลี่ยนแปลงเครือข่าย</translation> <translation id="2915500479781995473">เซิร์ฟเวอร์นี้ไม่สามารถพิสูจน์ได้ว่าเป็น <ph name="DOMAIN" /> เนื่องจากใบรับรองความปลอดภัยได้หมดอายุแล้ว โดยอาจมีสาเหตุมาจากการกำหนดค่าผิดหรือผู้บุกรุกที่ขัดขวางการเชื่อมต่อ ขณะนี้นาฬิกาในคอมพิวเตอร์ของคุณตั้งเวลาไว้ที่ <ph name="CURRENT_TIME" /> หากไม่ถูกต้อง โปรดตั้งนาฬิกาของระบบให้ถูกต้อง แล้วรีเฟรชหน้านี้อีกครั้ง</translation> <translation id="2922350208395188000">ไม่สามารถตรวจสอบใบรับรองของเซิร์ฟเวอร์</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">การลบล้างเซสชันสาธารณะ</translation> <translation id="6358450015545214790">นี่หมายถึงอะไร</translation> <translation id="6387478394221739770">หากสนใจในคุณลักษณะสุดเจ๋งของ Chrome ใหม่ ลองใช้เวอร์ชันเบต้าของเราที่ chrome.com/beta</translation> +<translation id="6389758589412724634">Chromium หน่วยความจำเต็มเมื่อพยายามแสดงหน้าเว็บนี้</translation> <translation id="641480858134062906"><ph name="URL" /> ไม่สามารถโหลดได้</translation> <translation id="6417515091412812850">ไม่สามารถตรวจสอบว่าใบรับรองถูกเพิกถอนหรือไม่</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> ปฏิเสธการเชื่อมต่อ</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">รีเซ็ตทั้งหมดเป็นค่าเริ่มต้น</translation> <translation id="8680787084697685621">รายละเอียดการลงชื่อเข้าใช้บัญชีเก่าเกินไป</translation> <translation id="8703575177326907206">การเชื่อมต่อของคุณไปยัง <ph name="DOMAIN" /> ไม่ได้รับการเข้ารหัส</translation> -<translation id="8713130696108419660">ลายเซ็นแรกเริ่มไม่ถูกต้อง</translation> <translation id="8725066075913043281">ลองอีกครั้ง</translation> <translation id="8728672262656704056">คุณได้เข้าสู่โหมดไม่ระบุตัวตนแล้ว</translation> <translation id="8730621377337864115">เสร็จสิ้น</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index cfe9a19..2e24a38 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> ana makinesindeki sunucu sertifikası sahte görünüyor.</translation> <translation id="2889159643044928134">Yeniden Yükleme</translation> <translation id="2896499918916051536">Bu eklenti desteklenmiyor.</translation> +<translation id="2900469785430194048">Bu web sayfası görüntülenmeye çalışılırken Google Chrome'da bellek kalmadı.</translation> <translation id="2909946352844186028">Bir ağ değişikliği algılandı.</translation> <translation id="2915500479781995473">Bu sunucu <ph name="DOMAIN" /> olduğunu kanıtlayamadı. Güvenlik sertifikasının süresi dolmuş. Bu durum, bir yanlış yapılandırmadan veya bağlantınıza müdahale eden bir saldırgandan kaynaklanıyor olabilir. Bilgisayarınızın saati şu anda <ph name="CURRENT_TIME" /> değerine ayarlı. Saat doğru mu? Değilse sistem saatinizi düzeltmeniz ve ardından bu sayfayı yenilemeniz gerekir.</translation> <translation id="2922350208395188000">Sunucunun sertifikası kontrol edilemiyor.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Herkese açık oturumu geçersiz kılma</translation> <translation id="6358450015545214790">Bunlar ne anlama geliyor?</translation> <translation id="6387478394221739770">Chrome'daki etkileyici, yeni özellikler ilginizi çekiyor mu? chrome.com/beta adresinden beta kanalımızı deneyin.</translation> +<translation id="6389758589412724634">Bu web sayfası görüntülenmeye çalışılırken Chromium'da bellek kalmadı.</translation> <translation id="641480858134062906"><ph name="URL" /> yüklenemedi</translation> <translation id="6417515091412812850">Sertifikanın iptal edilip edilmediği kontrol edilemiyor.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> bağlanmayı reddetti.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Tümünü varsayılan değerlere sıfırla</translation> <translation id="8680787084697685621">Hesap oturum açma ayrıntıları eski.</translation> <translation id="8703575177326907206"><ph name="DOMAIN" /> bağlantınız şifrelenmedi.</translation> -<translation id="8713130696108419660">Başlangıç anahtarlı imza bozuk</translation> <translation id="8725066075913043281">Yeniden dene</translation> <translation id="8728672262656704056">Gizli moda geçtiniz</translation> <translation id="8730621377337864115">Bitti</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb index 20ca2cc..e5b34b1a 100644 --- a/components/strings/components_strings_uk.xtb +++ b/components/strings/components_strings_uk.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Схоже, сертифікат сервера на хості <ph name="HOST_NAME" /> підроблено.</translation> <translation id="2889159643044928134">Не оновлювати</translation> <translation id="2896499918916051536">Цей плагін не підтримується.</translation> +<translation id="2900469785430194048">Недостатньо пам’яті Google Chrome, щоб показати цю веб-сторінку.</translation> <translation id="2909946352844186028">Виявлено зміну в мережі.</translation> <translation id="2915500479781995473">Серверу не вдалося підтвердити, що це <ph name="DOMAIN" />. Термін дії сертифіката безпеки цього домену закінчився. Можливі причини: неправильна конфігурація або перехоплення вашого з’єднання зловмисником. На годиннику вашого комп’ютера зараз <ph name="CURRENT_TIME" />. Якщо дата неправильна, налаштуйте системний годинник і оновіть цю сторінку.</translation> <translation id="2922350208395188000">Сертифікат сервера неможливо перевірити.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Заміна загальнодоступного сеансу</translation> <translation id="6358450015545214790">Що це означає?</translation> <translation id="6387478394221739770">Хочете спробувати нові цікаві функції Chrome? Завантажте бета-версію зі сторінки chrome.com/beta.</translation> +<translation id="6389758589412724634">Недостатньо пам’яті Chromium, щоб показати цю веб-сторінку.</translation> <translation id="641480858134062906">Не вдалося завантажити <ph name="URL" /></translation> <translation id="6417515091412812850">Неможливо перевірити, чи цей сертифікат було відкликано.</translation> <translation id="6433595998831338502">Хост <ph name="HOST_NAME" /> відхилив запит на з’єднання.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Скинути все до налаштувань за умовчанням</translation> <translation id="8680787084697685621">Дані для входу в обліковий запис застаріли.</translation> <translation id="8703575177326907206">Ваше з’єднання з <ph name="DOMAIN" /> не зашифровано.</translation> -<translation id="8713130696108419660">Недійсний початковий підпис</translation> <translation id="8725066075913043281">Повторити спробу</translation> <translation id="8728672262656704056">Ви перейшли в режим анонімного перегляду</translation> <translation id="8730621377337864115">Готово</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index ecd1549..d4d63d5 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724">Có vẻ như chứng chỉ máy chủ tại <ph name="HOST_NAME" /> là giả mạo.</translation> <translation id="2889159643044928134">Không tải lại</translation> <translation id="2896499918916051536">Plugin này không được hỗ trợ.</translation> +<translation id="2900469785430194048">Google Chrome đã hết bộ nhớ khi cố gắng hiển thị trang web này.</translation> <translation id="2909946352844186028">Đã phát hiện thấy thay đổi mạng.</translation> <translation id="2915500479781995473">Máy chủ này không chứng minh được rằng đó là <ph name="DOMAIN" />; chứng chỉ bảo mật của máy chủ này đã hết hạn. Điều này có thể do định cấu hình sai hoặc có kẻ tấn công chặn kết nối của bạn. Đồng hồ trên máy tính của bạn hiện được đặt là <ph name="CURRENT_TIME" />. Giờ này có đúng không? Nếu không đúng, bạn phải sửa lại giờ hệ thống rồi làm mới trang này.</translation> <translation id="2922350208395188000">Không thể kiểm tra chứng chỉ của máy chủ.</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">Ghi đè phiên công khai</translation> <translation id="6358450015545214790">Những phần này có ý nghĩa gì?</translation> <translation id="6387478394221739770">Bạn quan tâm đến các tính năng mới thú vị của Chrome? Hãy dùng thử kênh thử nghiệm beta của chúng tôi tại chrome.com/beta.</translation> +<translation id="6389758589412724634">Chromium đã hết bộ nhớ khi cố gắng hiển thị trang web này.</translation> <translation id="641480858134062906">Không tải được <ph name="URL" /></translation> <translation id="6417515091412812850">Không thể kiểm tra liệu chứng chỉ đã bị thu hồi hay chưa.</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> đã từ chối kết nối.</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">Đặt lại tất cả về mặc định</translation> <translation id="8680787084697685621">Chi tiết đăng nhập tài khoản đã lỗi thời.</translation> <translation id="8703575177326907206">Kết nối của bạn đến <ph name="DOMAIN" /> không được mã hóa.</translation> -<translation id="8713130696108419660">Chữ ký ban đầu không hợp lệ</translation> <translation id="8725066075913043281">Thử lại</translation> <translation id="8728672262656704056">Bạn đã truy cập ẩn danh</translation> <translation id="8730621377337864115">Hoàn tất</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index c09b7bc..7285c26 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -61,7 +61,7 @@ <translation id="1644574205037202324">历史记录</translation> <translation id="1645368109819982629">协议不受支持</translation> <translation id="1655462015569774233">{1,plural, =1{此服务器无法证明它是 <ph name="DOMAIN" />;其安全证书已在昨天过期。出现此问题的原因可能是配置有误,或有攻击者拦截了您的连接。计算机的时钟目前已设为 <ph name="CURRENT_DATE" />,该设置是否正确?如果不正确,请更正系统的时钟,然后刷新此页面。}other{此服务器无法证明它是 <ph name="DOMAIN" />;其安全证书已在 # 天前过期。出现此问题的原因可能是配置有误,或有攻击者拦截了您的连接。计算机的时钟目前已设为 <ph name="CURRENT_DATE" />,该设置是否正确?如果不正确,请更正系统的时钟,然后刷新此页面。}}</translation> -<translation id="1676269943528358898"><ph name="SITE" /> 通常会使用加密技术来保护您的信息。Google Chrome 此次尝试连接到 <ph name="SITE" /> 时,此网站发回了异常的错误凭据。这可能是因为有攻击程序在试图冒充 <ph name="SITE" />,或 Wi-Fi 登录屏幕中断了此次连接。请放心,您的信息仍然是安全的,因为 Google Chrome 尚未进行任何数据交换便停止了连接。</translation> +<translation id="1676269943528358898"><ph name="SITE" /> 通常会使用加密技术来保护您的信息。Google Chrome 此次尝试连接到 <ph name="SITE" /> 时,此网站发回了异常的错误凭据。这可能是因为有攻击者在试图冒充 <ph name="SITE" />,或 Wi-Fi 登录屏幕中断了此次连接。请放心,您的信息仍然是安全的,因为 Google Chrome 尚未进行任何数据交换便停止了连接。</translation> <translation id="168841957122794586">服务器证书包含弱加密密钥。</translation> <translation id="1701955595840307032">获取推荐内容</translation> <translation id="1706954506755087368">{1,plural, =1{此服务器无法证明它是 <ph name="DOMAIN" />;其安全证书明天才会生效。出现此问题的原因可能是配置有误,或有攻击者拦截了您的连接。}other{此服务器无法证明它是 <ph name="DOMAIN" />;其安全证书 # 天后才会生效。出现此问题的原因可能是配置有误,或有攻击者拦截了您的连接。}}</translation> @@ -169,6 +169,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> 上的服务器证书似乎是伪造的。</translation> <translation id="2889159643044928134">不重新加载</translation> <translation id="2896499918916051536">不支持该插件。</translation> +<translation id="2900469785430194048">Google Chrome 在尝试显示此网页时内存不足。</translation> <translation id="2909946352844186028">检测到了网络变化。</translation> <translation id="2915500479781995473">此服务器无法证明它是<ph name="DOMAIN" />;其安全证书已过期。出现此问题的原因可能是配置有误或您的连接被拦截了。计算机的时钟目前已设为<ph name="CURRENT_TIME" />,该设置是否正确?如果不正确,请更正系统的时钟,然后刷新此页面。</translation> <translation id="2922350208395188000">无法核实服务器证书。</translation> @@ -448,6 +449,7 @@ <translation id="6355080345576803305">覆盖公用自助终端</translation> <translation id="6358450015545214790">这分别意味着什么?</translation> <translation id="6387478394221739770">想试试超酷的 Chrome 新功能?欢迎访问 chrome.com/beta,试用我们的测试版!</translation> +<translation id="6389758589412724634">Chromium 在尝试显示此网页时内存不足。</translation> <translation id="641480858134062906">无法加载 <ph name="URL" /></translation> <translation id="6417515091412812850">无法检查证书是否已吊销。</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> 拒绝了我们的连接请求。</translation> @@ -625,7 +627,6 @@ <translation id="8647750283161643317">全部重置为默认值</translation> <translation id="8680787084697685621">帐户登录详细信息已过期。</translation> <translation id="8703575177326907206">您与 <ph name="DOMAIN" /> 的连接未加密。</translation> -<translation id="8713130696108419660">初始签名错误</translation> <translation id="8725066075913043281">重试</translation> <translation id="8728672262656704056">您已进入隐身模式</translation> <translation id="8730621377337864115">完成</translation> @@ -664,7 +665,7 @@ <translation id="9050666287014529139">密码</translation> <translation id="9065203028668620118">修改</translation> <translation id="9092364396508701805"><ph name="HOST_NAME" /> 网页无法正常运作</translation> -<translation id="9103872766612412690"><ph name="SITE" /> 通常会使用加密技术来保护您的信息。Chromium 此次尝试连接到 <ph name="SITE" /> 时,此网站发回了异常的错误凭据。这可能是因为有攻击程序在试图冒充 <ph name="SITE" />,或 Wi-Fi 登录屏幕中断了此次连接。请放心,您的信息仍然是安全的,因为 Chromium 尚未进行任何数据交换便停止了连接。</translation> +<translation id="9103872766612412690"><ph name="SITE" /> 通常会使用加密技术来保护您的信息。Chromium 此次尝试连接到 <ph name="SITE" /> 时,此网站发回了异常的错误凭据。这可能是因为有攻击者在试图冒充 <ph name="SITE" />,或 Wi-Fi 登录屏幕中断了此次连接。请放心,您的信息仍然是安全的,因为 Chromium 尚未进行任何数据交换便停止了连接。</translation> <translation id="9137013805542155359">显示原始网页</translation> <translation id="9148507642005240123">撤消修改(&U)</translation> <translation id="9157595877708044936">正在设置...</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb index ba517a7..8d9578d 100644 --- a/components/strings/components_strings_zh-TW.xtb +++ b/components/strings/components_strings_zh-TW.xtb
@@ -170,6 +170,7 @@ <translation id="284702764277384724"><ph name="HOST_NAME" /> 疑似使用偽造的伺服器憑證。</translation> <translation id="2889159643044928134">不要重新載入</translation> <translation id="2896499918916051536">系統不支援這個外掛程式。</translation> +<translation id="2900469785430194048">Google Chrome 嘗試顯示這個網頁時用盡了記憶體。</translation> <translation id="2909946352844186028">系統偵測到網路變更。</translation> <translation id="2915500479781995473">伺服器無法證明其屬於 <ph name="DOMAIN" /> 網域;其安全性憑證已過期。這可能是因為設定錯誤,或有攻擊者攔截您的連線所致。您電腦時鐘目前設定的時間是 <ph name="CURRENT_TIME" />,是否正確?如果設定有誤,請更正您系統的時鐘,再重新整理這個頁面。</translation> <translation id="2922350208395188000">無法檢查伺服器憑證。</translation> @@ -453,6 +454,7 @@ <translation id="6355080345576803305">公開工作階段覆寫</translation> <translation id="6358450015545214790">我需要進一步資訊</translation> <translation id="6387478394221739770">想搶先試用酷炫的 Chrome 新功能嗎?請前往 chrome.com/beta 安裝測試版。</translation> +<translation id="6389758589412724634">Chromium 嘗試顯示這個網頁時用盡了記憶體。</translation> <translation id="641480858134062906">無法載入 <ph name="URL" /></translation> <translation id="6417515091412812850">無法檢查憑證是否已遭撤銷。</translation> <translation id="6433595998831338502"><ph name="HOST_NAME" /> 拒絕連線。</translation> @@ -630,7 +632,6 @@ <translation id="8647750283161643317">全部重設為預設值</translation> <translation id="8680787084697685621">帳戶登入詳細資料已過期。</translation> <translation id="8703575177326907206">您到 <ph name="DOMAIN" /> 的連線未加密。</translation> -<translation id="8713130696108419660">初始簽名錯誤</translation> <translation id="8725066075913043281">再試一次</translation> <translation id="8728672262656704056">您已啟用無痕模式。</translation> <translation id="8730621377337864115">完成</translation>
diff --git a/content/app/sandbox_helper_win.cc b/content/app/sandbox_helper_win.cc index 6e06e5c4..3791888e 100644 --- a/content/app/sandbox_helper_win.cc +++ b/content/app/sandbox_helper_win.cc
@@ -19,6 +19,9 @@ sandbox::MITIGATION_DEP | sandbox::MITIGATION_DEP_NO_ATL_THUNK | sandbox::MITIGATION_HARDEN_TOKEN_IL_POLICY); + // Note: these mitigations are "post-startup". Some mitigations that need + // to be enabled sooner (e.g. MITIGATION_EXTENSION_POINT_DISABLE) are done + // so in Chrome_ELF. } }
diff --git a/content/browser/accessibility/accessibility_tree_formatter_win.cc b/content/browser/accessibility/accessibility_tree_formatter_win.cc index 2a926018..a0d782e 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_win.cc +++ b/content/browser/accessibility/accessibility_tree_formatter_win.cc
@@ -283,9 +283,10 @@ dict->SetInteger("n_relations", n_relations); LONG group_level, similar_items_in_group, position_in_group; - if (SUCCEEDED(ax_object->get_groupPosition(&group_level, - &similar_items_in_group, - &position_in_group))) { + // |GetGroupPosition| returns S_FALSE when no grouping information is + // available so avoid using |SUCCEEDED|. + if (ax_object->get_groupPosition(&group_level, &similar_items_in_group, + &position_in_group) == S_OK) { dict->SetInteger("group_level", group_level); dict->SetInteger("similar_items_in_group", similar_items_in_group); dict->SetInteger("position_in_group", position_in_group);
diff --git a/content/browser/accessibility/browser_accessibility_win.cc b/content/browser/accessibility/browser_accessibility_win.cc index 85e100f..b260045 100644 --- a/content/browser/accessibility/browser_accessibility_win.cc +++ b/content/browser/accessibility/browser_accessibility_win.cc
@@ -896,9 +896,12 @@ if (!group_level || !similar_items_in_group || !position_in_group) return E_INVALIDARG; - *group_level = 0; + *group_level = GetIntAttribute(ui::AX_ATTR_HIERARCHICAL_LEVEL); *similar_items_in_group = GetIntAttribute(ui::AX_ATTR_SET_SIZE); *position_in_group = GetIntAttribute(ui::AX_ATTR_POS_IN_SET); + + if (*group_level == *similar_items_in_group == *position_in_group == 0) + return S_FALSE; return S_OK; } @@ -3406,10 +3409,7 @@ StringAttributeToIA2(ui::AX_ATTR_HTML_TAG, "tag"); StringAttributeToIA2(ui::AX_ATTR_ROLE, "xml-roles"); - // Expose "level" attribute for headings, trees, etc. IntAttributeToIA2(ui::AX_ATTR_HIERARCHICAL_LEVEL, "level"); - - // Expose the set size and position in set. IntAttributeToIA2(ui::AX_ATTR_SET_SIZE, "setsize"); IntAttributeToIA2(ui::AX_ATTR_POS_IN_SET, "posinset");
diff --git a/content/browser/bad_message.cc b/content/browser/bad_message.cc index 183b46e7..9e2910f 100644 --- a/content/browser/bad_message.cc +++ b/content/browser/bad_message.cc
@@ -4,13 +4,11 @@ #include "content/browser/bad_message.h" -#include "base/bind.h" #include "base/debug/crash_logging.h" #include "base/logging.h" #include "base/metrics/sparse_histogram.h" #include "base/strings/string_number_conversions.h" #include "content/public/browser/browser_message_filter.h" -#include "content/public/browser/browser_thread.h" #include "content/public/browser/render_process_host.h" namespace content { @@ -25,14 +23,6 @@ base::IntToString(reason)); } -void ReceivedBadMessageOnUIThread(int render_process_id, - BadMessageReason reason) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - RenderProcessHost* host = RenderProcessHost::FromID(render_process_id); - if (host) - ReceivedBadMessage(host, reason); -} - } // namespace void ReceivedBadMessage(RenderProcessHost* host, BadMessageReason reason) { @@ -40,17 +30,6 @@ host->ShutdownForBadMessage(); } -void ReceivedBadMessage(int render_process_id, BadMessageReason reason) { - if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { - BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&ReceivedBadMessageOnUIThread, render_process_id, reason)); - return; - } - ReceivedBadMessageOnUIThread(render_process_id, reason); -} - void ReceivedBadMessage(BrowserMessageFilter* filter, BadMessageReason reason) { LogBadMessage(reason); filter->ShutdownForBadMessage();
diff --git a/content/browser/bad_message.h b/content/browser/bad_message.h index 35d8279..c35dfa12 100644 --- a/content/browser/bad_message.h +++ b/content/browser/bad_message.h
@@ -132,8 +132,8 @@ RDHI_WRONG_STORAGE_PARTITION = 107, RDH_INVALID_REQUEST_ID = 108, BDH_SERVICE_NOT_ALLOWED_FOR_ORIGIN = 109, - WSI_UNEXPECTED_ADD_CHANNEL_REQUEST = 110, - WSI_UNEXPECTED_SEND_FRAME = 111, + WSH_SEND_BLOB_DURING_BLOB_SEND = 110, + WSH_SEND_FRAME_DURING_BLOB_SEND = 111, RFH_UNEXPECTED_LOAD_START = 112, NMF_INVALID_ARGUMENT = 113, RFH_INVALID_ORIGIN_ON_COMMIT = 114, @@ -149,7 +149,7 @@ DBMF_INVALID_ORIGIN_ON_GET_SPACE = 124, DBMF_INVALID_ORIGIN_ON_MODIFIED = 125, DBMF_INVALID_ORIGIN_ON_CLOSED = 126, - WSI_INVALID_HEADER_VALUE = 127, + WSH_INVALID_HEADER_VALUE = 127, SWDH_SET_HOSTED_VERSION_INVALID_HOST = 128, SWDH_SET_HOSTED_VERSION_PROCESS_MISMATCH = 129, MSDH_INVALID_FRAME_ID = 130, @@ -169,9 +169,6 @@ // and terminates the process for |host|. void ReceivedBadMessage(RenderProcessHost* host, BadMessageReason reason); -// Equivalent to the above, but callable from any thread. -void ReceivedBadMessage(int render_process_id, BadMessageReason reason); - // Called when a browser message filter receives a bad IPC message from a // renderer or other child process. Logs the event, records a histogram metric // for the |reason|, and terminates the process for |filter|.
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc index 78afa47..6744c6a 100644 --- a/content/browser/browser_main_loop.cc +++ b/content/browser/browser_main_loop.cc
@@ -277,16 +277,6 @@ } #endif // defined(USE_GLIB) -#if defined(USE_AURA) -void WaitForMojoShellInitialize() { - // TODO(rockot): Remove this. http://crbug.com/594852. - base::RunLoop wait_loop; - MojoShellConnection::GetForProcess()->SetInitializeHandler( - wait_loop.QuitClosure()); - wait_loop.Run(); -} -#endif // defined(USE_AURA) - void OnStoppedStartupTracing(const base::FilePath& trace_file) { VLOG(0) << "Completed startup tracing to " << trace_file.value(); } @@ -1179,37 +1169,18 @@ int BrowserMainLoop::BrowserThreadsStarted() { TRACE_EVENT0("startup", "BrowserMainLoop::BrowserThreadsStarted"); - // Bring up Mojo IPC and shell as early as possible. + // Bring up Mojo IPC and shell as early as possible. Initializaing mojo + // requires the IO thread to have been initialized first. So this cannot + // happen any earlier than this. + InitializeMojo(); - if (!parsed_command_line_.HasSwitch(switches::kSingleProcess)) { - // Disallow mojo sync calls in the browser process. Note that we allow sync - // calls in single-process mode since renderer IPCs are made from a browser - // thread. - bool sync_call_allowed = false; - MojoResult result = mojo::edk::SetProperty( - MOJO_PROPERTY_TYPE_SYNC_CALL_ALLOWED, &sync_call_allowed); - DCHECK_EQ(MOJO_RESULT_OK, result); - } - - mojo_ipc_support_.reset(new mojo::edk::ScopedIPCSupport( - BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO) - ->task_runner())); - - mojo_shell_context_.reset(new MojoShellContext); #if defined(USE_AURA) - // TODO(rockot): Remove the blocking wait for init. - // http://crbug.com/594852. - if (shell::ShellIsRemote() && MojoShellConnection::GetForProcess()) { + if (shell::ShellIsRemote()) { base::CommandLine::ForCurrentProcess()->AppendSwitch( switches::kIsRunningInMash); - WaitForMojoShellInitialize(); } #endif -#if defined(OS_MACOSX) - mojo::edk::SetMachPortProvider(MachBroker::GetInstance()); -#endif // defined(OS_MACOSX) - indexed_db_thread_.reset(new base::Thread("IndexedDB")); indexed_db_thread_->Start(); @@ -1425,6 +1396,29 @@ #endif } +void BrowserMainLoop::InitializeMojo() { + if (!parsed_command_line_.HasSwitch(switches::kSingleProcess)) { + // Disallow mojo sync calls in the browser process. Note that we allow sync + // calls in single-process mode since renderer IPCs are made from a browser + // thread. + bool sync_call_allowed = false; + MojoResult result = mojo::edk::SetProperty( + MOJO_PROPERTY_TYPE_SYNC_CALL_ALLOWED, &sync_call_allowed); + DCHECK_EQ(MOJO_RESULT_OK, result); + } + + mojo_ipc_support_.reset(new mojo::edk::ScopedIPCSupport( + BrowserThread::UnsafeGetMessageLoopForThread(BrowserThread::IO) + ->task_runner())); + + mojo_shell_context_.reset(new MojoShellContext); +#if defined(OS_MACOSX) + mojo::edk::SetMachPortProvider(MachBroker::GetInstance()); +#endif // defined(OS_MACOSX) + if (parts_) + parts_->MojoShellConnectionStarted(MojoShellConnection::GetForProcess()); +} + base::FilePath BrowserMainLoop::GetStartupTraceFileName( const base::CommandLine& command_line) const { base::FilePath trace_file;
diff --git a/content/browser/browser_main_loop.h b/content/browser/browser_main_loop.h index d05d176e..fc7569b7 100644 --- a/content/browser/browser_main_loop.h +++ b/content/browser/browser_main_loop.h
@@ -175,6 +175,7 @@ void MainMessageLoopRun(); + void InitializeMojo(); base::FilePath GetStartupTraceFileName( const base::CommandLine& command_line) const; void InitStartupTracingForDuration(const base::CommandLine& command_line);
diff --git a/content/browser/frame_host/navigation_controller_impl_browsertest.cc b/content/browser/frame_host/navigation_controller_impl_browsertest.cc index 4594946..9dfab1a 100644 --- a/content/browser/frame_host/navigation_controller_impl_browsertest.cc +++ b/content/browser/frame_host/navigation_controller_impl_browsertest.cc
@@ -479,15 +479,14 @@ return value; } -// Similar to the ones from content_browser_test_utils. -bool NavigateToURLAndReplace(Shell* shell, const GURL& url) { +// Does a renderer-initiated location.replace navigation to |url|, replacing the +// current entry. +bool RendererLocationReplace(Shell* shell, const GURL& url) { WebContents* web_contents = shell->web_contents(); WaitForLoadStop(web_contents); TestNavigationObserver same_tab_observer(web_contents, 1); - NavigationController::LoadURLParams params(url); - params.should_replace_current_entry = true; - web_contents->GetController().LoadURLWithParams(params); - web_contents->Focus(); + EXPECT_TRUE( + ExecuteScript(shell, "window.location.replace('" + url.spec() + "');")); same_tab_observer.Wait(); if (!IsLastCommittedEntryOfPageType(web_contents, PAGE_TYPE_NORMAL)) return false; @@ -507,7 +506,7 @@ EXPECT_EQ(1, controller.GetEntryCount()); EXPECT_EQ(1, RendererHistoryLength(shell())); - EXPECT_TRUE(NavigateToURLAndReplace(shell(), GURL("data:text/html,page1a"))); + EXPECT_TRUE(RendererLocationReplace(shell(), GURL("data:text/html,page1a"))); EXPECT_EQ(1, controller.GetEntryCount()); EXPECT_EQ(1, RendererHistoryLength(shell())); @@ -527,7 +526,7 @@ EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); EXPECT_TRUE(controller.CanGoForward()); - EXPECT_TRUE(NavigateToURLAndReplace(shell(), GURL("data:text/html,page1b"))); + EXPECT_TRUE(RendererLocationReplace(shell(), GURL("data:text/html,page1b"))); EXPECT_EQ(3, controller.GetEntryCount()); EXPECT_EQ(3, RendererHistoryLength(shell())); EXPECT_TRUE(controller.CanGoForward()); @@ -581,7 +580,7 @@ EXPECT_NE(-1, shell()->web_contents()->GetMaxPageID()); // Now navigate and replace the current entry. - NavigateToURLAndReplace(shell(), page_url); + RendererLocationReplace(shell(), page_url); EXPECT_EQ(1, controller.GetEntryCount()); // Page ID should be updated. @@ -975,7 +974,7 @@ // See https://crbug.com/596707. { FrameNavigateParamsCapturer capturer(root); - NavigateToURLAndReplace(shell(), error_url); + RendererLocationReplace(shell(), error_url); capturer.Wait(); EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); NavigationEntry* entry = controller.GetLastCommittedEntry(); @@ -993,7 +992,7 @@ // above.) { FrameNavigateParamsCapturer capturer(root); - NavigateToURLAndReplace(shell(), error_url); + RendererLocationReplace(shell(), error_url); capturer.Wait(); EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); NavigationEntry* entry = controller.GetLastCommittedEntry();
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc index ec402d5f..1a55641 100644 --- a/content/browser/frame_host/render_frame_host_impl.cc +++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -49,7 +49,6 @@ #include "content/browser/renderer_host/render_widget_host_impl.h" #include "content/browser/renderer_host/render_widget_host_view_base.h" #include "content/browser/wake_lock/wake_lock_service_context.h" -#include "content/browser/websockets/websocket_manager.h" #include "content/browser/webui/web_ui_controller_factory_registry.h" #include "content/common/accessibility_messages.h" #include "content/common/frame_messages.h" @@ -2124,14 +2123,6 @@ GetInterfaceRegistry()->AddInterface<media::mojom::ServiceFactory>(this); - // This is to support usage of WebSockets in cases in which there is an - // associated RenderFrame. This is important for showing the correct security - // state of the page and also honoring user override of bad certificates. - GetInterfaceRegistry()->AddInterface( - base::Bind(&WebSocketManager::CreateWebSocket, - process_->GetID(), - routing_id_)); - #if defined(ENABLE_WEBVR) const base::CommandLine& browser_command_line = *base::CommandLine::ForCurrentProcess();
diff --git a/content/browser/frame_host/render_frame_message_filter.cc b/content/browser/frame_host/render_frame_message_filter.cc index 97769836..5db2491 100644 --- a/content/browser/frame_host/render_frame_message_filter.cc +++ b/content/browser/frame_host/render_frame_message_filter.cc
@@ -15,6 +15,7 @@ #include "content/browser/download/download_stats.h" #include "content/browser/frame_host/render_frame_host_impl.h" #include "content/browser/gpu/gpu_data_manager_impl.h" +#include "content/browser/host_zoom_map_impl.h" #include "content/browser/renderer_host/render_widget_helper.h" #include "content/browser/resource_context_impl.h" #include "content/common/content_constants_internal.h" @@ -25,6 +26,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/download_manager.h" #include "content/public/browser/download_url_parameters.h" +#include "content/public/browser/storage_partition.h" #include "content/public/common/content_constants.h" #include "content/public/common/content_switches.h" #include "gpu/GLES2/gl2extchromium.h" @@ -221,7 +223,13 @@ resource_context_(browser_context->GetResourceContext()), render_widget_helper_(render_widget_helper), incognito_(browser_context->IsOffTheRecord()), - render_process_id_(render_process_id) { + render_process_id_(render_process_id), + host_zoom_map_impl_(render_process_id + ? static_cast<const HostZoomMapImpl*>( + RenderProcessHost::FromID(render_process_id) + ->GetStoragePartition() + ->GetHostZoomMap()) + : nullptr) { } RenderFrameMessageFilter::~RenderFrameMessageFilter() { @@ -448,6 +456,19 @@ render_frame_id, url, first_party_for_cookies, callback)); } +void RenderFrameMessageFilter::GetHostZoomLevel( + int32_t render_frame_id, + const GURL& url, + const GetHostZoomLevelCallback& callback) { + // We need to make sure this is serviced directly on the IO thread so that it + // does not get out of order with the resource request in AsyncResourceHandler + // which lives on the IO thread. + DCHECK_CURRENTLY_ON(BrowserThread::IO); + double zoom_level = host_zoom_map_impl_->GetZoomLevelForView( + url, render_process_id_, render_frame_id); + callback.Run(zoom_level); +} + #if defined(ENABLE_PLUGINS) void RenderFrameMessageFilter::OnGetPlugins(
diff --git a/content/browser/frame_host/render_frame_message_filter.h b/content/browser/frame_host/render_frame_message_filter.h index d576df03..e351629 100644 --- a/content/browser/frame_host/render_frame_message_filter.h +++ b/content/browser/frame_host/render_frame_message_filter.h
@@ -31,6 +31,7 @@ namespace content { class BrowserContext; +class HostZoomMapImpl; class PluginServiceImpl; struct Referrer; class RenderWidgetHelper; @@ -117,7 +118,9 @@ const GURL& url, const GURL& first_party_for_cookies, const GetCookiesCallback& callback) override; - + void GetHostZoomLevel(int32_t render_frame_id, + const GURL& url, + const GetHostZoomLevelCallback& callback) override; #if defined(ENABLE_PLUGINS) void OnGetPlugins(bool refresh, IPC::Message* reply_msg); @@ -173,6 +176,8 @@ bool incognito_; const int render_process_id_; + + const HostZoomMapImpl* host_zoom_map_impl_; }; } // namespace content
diff --git a/content/browser/host_zoom_map_impl.h b/content/browser/host_zoom_map_impl.h index ea323f3..ad4c07e 100644 --- a/content/browser/host_zoom_map_impl.h +++ b/content/browser/host_zoom_map_impl.h
@@ -149,8 +149,6 @@ // Page scale factor data for each renderer. ViewPageScaleFactorsAreOne view_page_scale_factors_are_one_; - // Don't expect more than a couple of tabs that are using a temporary zoom - // level, so vector is fine for now. TemporaryZoomLevels temporary_zoom_levels_; // Used around accesses to |host_zoom_levels_|, |default_zoom_level_|,
diff --git a/content/browser/loader/DEPS b/content/browser/loader/DEPS index 40e244e0..7921ba10 100644 --- a/content/browser/loader/DEPS +++ b/content/browser/loader/DEPS
@@ -23,7 +23,6 @@ "+content/public/common/resource_response.h", # TODO: these all have to be removed. - "+content/browser/host_zoom_map_impl.h", "+content/public/common/content_features.h", # TODO: To be replaced by mojo. @@ -189,6 +188,7 @@ "+content/public/browser/resource_controller.h", "+content/public/browser/resource_dispatcher_host_login_delegate.h", "+content/public/common/resource_response.h", + "+content/public/common/resource_type.h", # TODO: these all have to be removed. "+content/browser/appcache/appcache_interceptor.h",
diff --git a/content/browser/loader/async_resource_handler.cc b/content/browser/loader/async_resource_handler.cc index 19e0868..6be0add 100644 --- a/content/browser/loader/async_resource_handler.cc +++ b/content/browser/loader/async_resource_handler.cc
@@ -17,7 +17,6 @@ #include "base/metrics/histogram_macros.h" #include "base/strings/string_number_conversions.h" #include "base/time/time.h" -#include "content/browser/host_zoom_map_impl.h" #include "content/browser/loader/netlog_observer.h" #include "content/browser/loader/resource_buffer.h" #include "content/browser/loader/resource_dispatcher_host_impl.h" @@ -357,21 +356,6 @@ NetLogObserver::PopulateResponseInfo(request(), response); - const HostZoomMapImpl* host_zoom_map = - static_cast<const HostZoomMapImpl*>(info->filter()->GetHostZoomMap()); - - if (info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME && host_zoom_map) { - const GURL& request_url = request()->url(); - int render_process_id = info->GetChildID(); - int render_view_id = info->GetRouteID(); - - double zoom_level = host_zoom_map->GetZoomLevelForView( - request_url, render_process_id, render_view_id); - - info->filter()->Send(new ViewMsg_SetZoomLevelForLoadingURL( - render_view_id, request_url, zoom_level)); - } - // If the parent handler downloaded the resource to a file, grant the child // read permissions on it. if (!response->head.download_file_path.empty()) {
diff --git a/content/browser/loader/async_resource_handler_unittest.cc b/content/browser/loader/async_resource_handler_unittest.cc index 7117631f..90b253f 100644 --- a/content/browser/loader/async_resource_handler_unittest.cc +++ b/content/browser/loader/async_resource_handler_unittest.cc
@@ -97,7 +97,6 @@ nullptr, nullptr, nullptr, - nullptr, base::Bind(&RecordingResourceMessageFilter::GetContexts, base::Unretained(this))), resource_context_(resource_context),
diff --git a/content/browser/loader/async_revalidation_manager_unittest.cc b/content/browser/loader/async_revalidation_manager_unittest.cc index 392760d..bed7412 100644 --- a/content/browser/loader/async_revalidation_manager_unittest.cc +++ b/content/browser/loader/async_revalidation_manager_unittest.cc
@@ -212,7 +212,6 @@ nullptr, nullptr, nullptr, - nullptr, base::Bind(&BlackholeFilter::GetContexts, base::Unretained(this))), resource_context_(resource_context) { ChildProcessSecurityPolicyImpl::GetInstance()->Add(child_id());
diff --git a/content/browser/loader/resource_dispatcher_host_unittest.cc b/content/browser/loader/resource_dispatcher_host_unittest.cc index a1b1f7b..74df61c 100644 --- a/content/browser/loader/resource_dispatcher_host_unittest.cc +++ b/content/browser/loader/resource_dispatcher_host_unittest.cc
@@ -242,7 +242,6 @@ NULL, NULL, NULL, - NULL, base::Bind(&TestFilterSpecifyingChild::GetContexts, base::Unretained(this))), resource_context_(resource_context),
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc index c7d0b42..98938e6 100644 --- a/content/browser/loader/resource_loader.cc +++ b/content/browser/loader/resource_loader.cc
@@ -32,6 +32,7 @@ #include "content/public/common/content_switches.h" #include "content/public/common/process_type.h" #include "content/public/common/resource_response.h" +#include "content/public/common/resource_type.h" #include "content/public/common/security_style.h" #include "net/base/io_buffer.h" #include "net/base/load_flags.h" @@ -90,7 +91,9 @@ response->head.effective_connection_type = net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; - if (info->IsMainFrame()) { + + if (info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME) { + DCHECK(info->IsMainFrame()); net::NetworkQualityEstimator* estimator = request->context()->network_quality_estimator(); if (estimator) {
diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc index 5ffd0294..3662078d 100644 --- a/content/browser/loader/resource_loader_unittest.cc +++ b/content/browser/loader/resource_loader_unittest.cc
@@ -28,6 +28,7 @@ #include "content/public/browser/resource_request_info.h" #include "content/public/common/content_paths.h" #include "content/public/common/resource_response.h" +#include "content/public/common/resource_type.h" #include "content/public/test/mock_resource_context.h" #include "content/public/test/test_browser_context.h" #include "content/public/test/test_browser_thread_bundle.h" @@ -589,19 +590,22 @@ // Replaces loader_ with a new one for |request|. void SetUpResourceLoader(std::unique_ptr<net::URLRequest> request, - bool is_main_frame) { + ResourceType resource_type, + bool belongs_to_main_frame) { raw_ptr_to_request_ = request.get(); - ResourceType resource_type = - is_main_frame ? RESOURCE_TYPE_MAIN_FRAME : RESOURCE_TYPE_SUB_FRAME; + // A request marked as a main frame request must also belong to a main + // frame. + ASSERT_TRUE((resource_type != RESOURCE_TYPE_MAIN_FRAME) || + belongs_to_main_frame); RenderFrameHost* rfh = web_contents_->GetMainFrame(); ResourceRequestInfo::AllocateForTesting( request.get(), resource_type, &resource_context_, rfh->GetProcess()->GetID(), rfh->GetRenderViewHost()->GetRoutingID(), - rfh->GetRoutingID(), is_main_frame, false /* parent_is_main_frame */, - true /* allow_download */, false /* is_async */, - false /* is_using_lofi_ */); + rfh->GetRoutingID(), belongs_to_main_frame, + false /* parent_is_main_frame */, true /* allow_download */, + false /* is_async */, false /* is_using_lofi_ */); std::unique_ptr<ResourceHandlerStub> resource_handler( new ResourceHandlerStub(request.get())); raw_ptr_resource_handler_ = resource_handler.get(); @@ -623,7 +627,7 @@ std::unique_ptr<net::URLRequest> request( resource_context_.GetRequestContext()->CreateRequest( test_url(), net::DEFAULT_PRIORITY, nullptr /* delegate */)); - SetUpResourceLoader(std::move(request), true); + SetUpResourceLoader(std::move(request), RESOURCE_TYPE_MAIN_FRAME, true); } void TearDown() override { @@ -1112,7 +1116,7 @@ std::unique_ptr<net::URLRequest> request( resource_context_.GetRequestContext()->CreateRequest( test_https_url(), net::DEFAULT_PRIORITY, nullptr /* delegate */)); - SetUpResourceLoader(std::move(request), true); + SetUpResourceLoader(std::move(request), RESOURCE_TYPE_MAIN_FRAME, true); // Send the request and wait until it completes. loader_->StartRequest(); @@ -1151,7 +1155,7 @@ resource_context_.GetRequestContext()->CreateRequest( test_https_redirect_url(), net::DEFAULT_PRIORITY, nullptr /* delegate */)); - SetUpResourceLoader(std::move(request), true); + SetUpResourceLoader(std::move(request), RESOURCE_TYPE_MAIN_FRAME, true); // Send the request and wait until it completes. loader_->StartRequest(); @@ -1186,7 +1190,8 @@ class EffectiveConnectionTypeResourceLoaderTest : public ResourceLoaderTest { public: void VerifyEffectiveConnectionType( - bool is_main_frame, + ResourceType resource_type, + bool belongs_to_main_frame, net::EffectiveConnectionType set_type, net::EffectiveConnectionType expected_type) { network_quality_estimator()->set_effective_connection_type(set_type); @@ -1195,7 +1200,8 @@ std::unique_ptr<net::URLRequest> request( resource_context_.GetRequestContext()->CreateRequest( test_url(), net::DEFAULT_PRIORITY, nullptr /* delegate */)); - SetUpResourceLoader(std::move(request), is_main_frame); + SetUpResourceLoader(std::move(request), resource_type, + belongs_to_main_frame); // Send the request and wait until it completes. loader_->StartRequest(); @@ -1210,20 +1216,31 @@ // Tests that the effective connection type is set on main frame requests. TEST_F(EffectiveConnectionTypeResourceLoaderTest, Slow2G) { - VerifyEffectiveConnectionType(true, net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G, + VerifyEffectiveConnectionType(RESOURCE_TYPE_MAIN_FRAME, true, + net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G, net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G); } // Tests that the effective connection type is set on main frame requests. TEST_F(EffectiveConnectionTypeResourceLoaderTest, 3G) { - VerifyEffectiveConnectionType(true, net::EFFECTIVE_CONNECTION_TYPE_3G, + VerifyEffectiveConnectionType(RESOURCE_TYPE_MAIN_FRAME, true, + net::EFFECTIVE_CONNECTION_TYPE_3G, net::EFFECTIVE_CONNECTION_TYPE_3G); } +// Tests that the effective connection type is not set on requests that belong +// to main frame. +TEST_F(EffectiveConnectionTypeResourceLoaderTest, BelongsToMainFrame) { + VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, true, + net::EFFECTIVE_CONNECTION_TYPE_3G, + net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); +} + // Tests that the effective connection type is not set on non-main frame // requests. -TEST_F(EffectiveConnectionTypeResourceLoaderTest, NotAMainFrame) { - VerifyEffectiveConnectionType(false, net::EFFECTIVE_CONNECTION_TYPE_3G, +TEST_F(EffectiveConnectionTypeResourceLoaderTest, DoesNotBelongToMainFrame) { + VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, false, + net::EFFECTIVE_CONNECTION_TYPE_3G, net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); }
diff --git a/content/browser/loader/resource_message_filter.cc b/content/browser/loader/resource_message_filter.cc index eb1993b59..958b7d0 100644 --- a/content/browser/loader/resource_message_filter.cc +++ b/content/browser/loader/resource_message_filter.cc
@@ -6,7 +6,6 @@ #include "content/browser/appcache/chrome_appcache_service.h" #include "content/browser/blob_storage/chrome_blob_storage_context.h" -#include "content/browser/host_zoom_level_context.h" #include "content/browser/loader/resource_dispatcher_host_impl.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" #include "content/common/resource_messages.h" @@ -22,7 +21,6 @@ ChromeBlobStorageContext* blob_storage_context, storage::FileSystemContext* file_system_context, ServiceWorkerContextWrapper* service_worker_context, - HostZoomLevelContext* host_zoom_level_context, const GetContextsCallback& get_contexts_callback) : BrowserMessageFilter(ResourceMsgStart), child_id_(child_id), @@ -31,7 +29,6 @@ blob_storage_context_(blob_storage_context), file_system_context_(file_system_context), service_worker_context_(service_worker_context), - host_zoom_level_context_(host_zoom_level_context), get_contexts_callback_(get_contexts_callback), weak_ptr_factory_(this) { } @@ -57,12 +54,6 @@ request_context); } -const HostZoomMap* ResourceMessageFilter::GetHostZoomMap() const { - if (host_zoom_level_context_.get()) - return host_zoom_level_context_->GetHostZoomMap(); - return NULL; -} - base::WeakPtr<ResourceMessageFilter> ResourceMessageFilter::GetWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); }
diff --git a/content/browser/loader/resource_message_filter.h b/content/browser/loader/resource_message_filter.h index 44937a0b..a6f25c0 100644 --- a/content/browser/loader/resource_message_filter.h +++ b/content/browser/loader/resource_message_filter.h
@@ -10,7 +10,6 @@ #include "base/callback_forward.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" -#include "content/browser/host_zoom_level_context.h" #include "content/common/content_export.h" #include "content/public/browser/browser_message_filter.h" #include "content/public/common/resource_type.h" @@ -52,7 +51,6 @@ ChromeBlobStorageContext* blob_storage_context, storage::FileSystemContext* file_system_context, ServiceWorkerContextWrapper* service_worker_context, - HostZoomLevelContext* host_zoom_level_context, const GetContextsCallback& get_contexts_callback); // BrowserMessageFilter implementation. @@ -82,10 +80,6 @@ return service_worker_context_.get(); } - // Returns a raw pointer to the HostZoomLevelContext's associated HostZoomMap, - // or NULL if no context is present. - const HostZoomMap* GetHostZoomMap() const; - int child_id() const { return child_id_; } int process_type() const { return process_type_; } @@ -105,7 +99,6 @@ scoped_refptr<ChromeBlobStorageContext> blob_storage_context_; scoped_refptr<storage::FileSystemContext> file_system_context_; scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_; - scoped_refptr<HostZoomLevelContext> host_zoom_level_context_; GetContextsCallback get_contexts_callback_;
diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc index cf7e7cd..62649a2 100644 --- a/content/browser/renderer_host/input/input_router_impl.cc +++ b/content/browser/renderer_host/input/input_router_impl.cc
@@ -79,7 +79,6 @@ frame_tree_node_id_(-1), select_message_pending_(false), move_caret_pending_(false), - mouse_move_pending_(false), current_ack_source_(ACK_SOURCE_NONE), flush_requested_(false), active_renderer_fling_count_(0), @@ -188,21 +187,8 @@ // TouchpadTapSuppressionController. void InputRouterImpl::SendMouseEventImmediately( const MouseEventWithLatencyInfo& mouse_event) { - // Avoid spamming the renderer with mouse move events. It is important - // to note that WM_MOUSEMOVE events are anyways synthetic, but since our - // thread is able to rapidly consume WM_MOUSEMOVE events, we may get way - // more WM_MOUSEMOVE events than we wish to send to the renderer. - if (mouse_event.event.type == WebInputEvent::MouseMove) { - if (mouse_move_pending_) { - if (!next_mouse_move_) - next_mouse_move_.reset(new MouseEventWithLatencyInfo(mouse_event)); - else - next_mouse_move_->CoalesceWith(mouse_event); - return; - } - mouse_move_pending_ = true; - current_mouse_move_ = mouse_event; - } + if (mouse_event.event.type == blink::WebInputEvent::MouseMove) + mouse_move_queue_.push_back(mouse_event); FilterAndSendWebInputEvent(mouse_event.event, mouse_event.latency); } @@ -243,7 +229,7 @@ bool InputRouterImpl::HasPendingEvents() const { return !touch_event_queue_.empty() || !gesture_event_queue_.empty() || - !key_queue_.empty() || mouse_move_pending_ || + !key_queue_.empty() || !mouse_move_queue_.empty() || wheel_event_queue_.has_pending() || select_message_pending_ || move_caret_pending_ || active_renderer_fling_count_ > 0; } @@ -370,9 +356,6 @@ "step", "SendInputEventUI", "frameTreeNodeId", frame_tree_node_id_); - // Any input event cancels a pending mouse move event. - next_mouse_move_.reset(); - OfferToHandlers(input_event, latency_info); } @@ -408,7 +391,6 @@ case INPUT_EVENT_ACK_STATE_CONSUMED: case INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS: // Send the ACK and early exit. - next_mouse_move_.reset(); ProcessInputEventAck( input_event.type, filter_ack, latency_info, WebInputEventTraits::GetUniqueTouchEventId(input_event), CLIENT); @@ -597,17 +579,13 @@ if (type != WebInputEvent::MouseMove) return; - current_mouse_move_.latency.AddNewLatencyFrom(latency); - ack_handler_->OnMouseEventAck(current_mouse_move_, ack_result); - - DCHECK(mouse_move_pending_); - mouse_move_pending_ = false; - - if (next_mouse_move_) { - DCHECK(next_mouse_move_->event.type == WebInputEvent::MouseMove); - std::unique_ptr<MouseEventWithLatencyInfo> next_mouse_move = - std::move(next_mouse_move_); - SendMouseEvent(*next_mouse_move); + if (mouse_move_queue_.empty()) { + ack_handler_->OnUnexpectedEventAck(InputAckHandler::UNEXPECTED_ACK); + } else { + MouseEventWithLatencyInfo front_item = mouse_move_queue_.front(); + front_item.latency.AddNewLatencyFrom(latency); + mouse_move_queue_.pop_front(); + ack_handler_->OnMouseEventAck(front_item, ack_result); } }
diff --git a/content/browser/renderer_host/input/input_router_impl.h b/content/browser/renderer_host/input/input_router_impl.h index 39fe708..ca6f48f 100644 --- a/content/browser/renderer_host/input/input_router_impl.h +++ b/content/browser/renderer_host/input/input_router_impl.h
@@ -213,20 +213,16 @@ // message ack. std::deque<IPC::Message*> pending_select_messages_; - // (Similar to |mouse_move_pending_|.) True while waiting for MoveCaret_ACK. + // True while waiting for MoveCaret_ACK. bool move_caret_pending_; - // (Similar to |next_mouse_move_|.) The next MoveCaret to send, if any. + // The next MoveCaret to send, if any. std::unique_ptr<IPC::Message> next_move_caret_; - // True if a mouse move event was sent to the render view and we are waiting - // for a corresponding InputHostMsg_HandleInputEvent_ACK message. - bool mouse_move_pending_; - - // The next mouse move event to send (only non-null while mouse_move_pending_ - // is true). - std::unique_ptr<MouseEventWithLatencyInfo> next_mouse_move_; - MouseEventWithLatencyInfo current_mouse_move_; + // A queue of the mouse move events sent to the renderer. Similar + // to |key_queue_|. + typedef std::deque<MouseEventWithLatencyInfo> MouseMoveQueue; + MouseMoveQueue mouse_move_queue_; // A queue of keyboard events. We can't trust data from the renderer so we // stuff key events into a queue and pop them out on ACK, feeding our copy
diff --git a/content/browser/renderer_host/input/main_thread_event_queue_browsertest.cc b/content/browser/renderer_host/input/main_thread_event_queue_browsertest.cc new file mode 100644 index 0000000..97319f0 --- /dev/null +++ b/content/browser/renderer_host/input/main_thread_event_queue_browsertest.cc
@@ -0,0 +1,197 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <utility> + +#include "base/auto_reset.h" +#include "base/bind.h" +#include "base/command_line.h" +#include "base/macros.h" +#include "base/run_loop.h" +#include "base/strings/utf_string_conversions.h" +#include "build/build_config.h" +#include "content/browser/renderer_host/input/synthetic_smooth_scroll_gesture.h" +#include "content/browser/renderer_host/render_widget_host_impl.h" +#include "content/browser/renderer_host/render_widget_host_view_base.h" +#include "content/browser/web_contents/web_contents_impl.h" +#include "content/common/input/synthetic_web_input_event_builders.h" +#include "content/common/input_messages.h" +#include "content/public/browser/render_view_host.h" +#include "content/public/browser/render_widget_host_view.h" +#include "content/public/common/content_switches.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" +#include "content/public/test/test_utils.h" +#include "content/shell/browser/shell.h" +#include "third_party/WebKit/public/web/WebInputEvent.h" +#include "ui/events/event_switches.h" +#include "ui/events/latency_info.h" + +using blink::WebInputEvent; + +namespace { + +const char kJankyPageURL[] = + "data:text/html;charset=utf-8," + "<!DOCTYPE html>" + "<meta name='viewport' content='width=device-width'/>" + "<style>" + "html, body {" + " margin: 0;" + "}" + ".spacer { height: 10000px; }" + "</style>" + "<div class=spacer></div>" + "<script>" + " function jank(millis)" + " {" + " var end = performance.now() + millis;" + " while(performance.now() < end) {};" + " window.mouseMoveCount = 0;" + " window.touchMoveCount = 0;" + " }" + " window.mouseMoveCount = 0;" + " window.touchMoveCount = 0;" + " document.addEventListener('mousemove', function(e) {" + " window.mouseMoveCount++;" + " window.lastMouseMoveEvent = e;" + " });" + " document.addEventListener('touchmove', function (e) {" + " window.touchMoveCount++;" + " window.lastTouchMoveEvent = e;" + " }, {passive: true});" + " document.addEventListener('click', function(e) { jank(500); });" + " document.title='ready';" + "</script>"; + +} // namespace + +namespace content { + +class MainThreadEventQueueBrowserTest : public ContentBrowserTest { + public: + MainThreadEventQueueBrowserTest() {} + ~MainThreadEventQueueBrowserTest() override {} + + RenderWidgetHostImpl* GetWidgetHost() { + return RenderWidgetHostImpl::From( + shell()->web_contents()->GetRenderViewHost()->GetWidget()); + } + + void OnSyntheticGestureCompleted(SyntheticGesture::Result result) { + EXPECT_EQ(SyntheticGesture::GESTURE_FINISHED, result); + } + + protected: + void LoadURL(const char* page_data) { + const GURL data_url(page_data); + NavigateToURL(shell(), data_url); + + RenderWidgetHostImpl* host = GetWidgetHost(); + host->GetView()->SetSize(gfx::Size(400, 400)); + + base::string16 ready_title(base::ASCIIToUTF16("ready")); + TitleWatcher watcher(shell()->web_contents(), ready_title); + ignore_result(watcher.WaitAndGetTitle()); + + MainThreadFrameObserver main_thread_sync(host); + main_thread_sync.Wait(); + } + + int ExecuteScriptAndExtractInt(const std::string& script) { + int value = 0; + EXPECT_TRUE(content::ExecuteScriptAndExtractInt( + shell(), "domAutomationController.send(" + script + ")", &value)); + return value; + } + + void DoMouseMove() { + // Send a click event to cause some jankiness. This is done via a click + // event as ExecuteScript is synchronous. + SimulateMouseClick(shell()->web_contents(), 0, + blink::WebPointerProperties::ButtonLeft); + scoped_refptr<InputMsgWatcher> input_msg_watcher( + new InputMsgWatcher(GetWidgetHost(), blink::WebInputEvent::MouseMove)); + GetWidgetHost()->ForwardMouseEvent(SyntheticWebMouseEventBuilder::Build( + blink::WebInputEvent::MouseMove, 10, 10, 0)); + GetWidgetHost()->ForwardMouseEvent(SyntheticWebMouseEventBuilder::Build( + blink::WebInputEvent::MouseMove, 15, 15, 0)); + GetWidgetHost()->ForwardMouseEvent(SyntheticWebMouseEventBuilder::Build( + blink::WebInputEvent::MouseMove, 20, 25, 0)); + + // Runs until we get the InputMsgAck callback. + EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, input_msg_watcher->WaitForAck()); + + int mouse_move_count = 0; + while (mouse_move_count <= 0) + mouse_move_count = ExecuteScriptAndExtractInt("window.mouseMoveCount"); + EXPECT_EQ(1, mouse_move_count); + + int last_mouse_x = + ExecuteScriptAndExtractInt("window.lastMouseMoveEvent.x"); + int last_mouse_y = + ExecuteScriptAndExtractInt("window.lastMouseMoveEvent.y"); + EXPECT_EQ(20, last_mouse_x); + EXPECT_EQ(25, last_mouse_y); + } + + void DoTouchMove() { + SyntheticWebTouchEvent kEvents[4]; + kEvents[0].PressPoint(10, 10); + kEvents[1].PressPoint(10, 10); + kEvents[1].MovePoint(0, 20, 20); + kEvents[2].PressPoint(10, 10); + kEvents[2].MovePoint(0, 30, 30); + kEvents[3].PressPoint(10, 10); + kEvents[3].MovePoint(0, 35, 40); + + // Send a click event to cause some jankiness. This is done via a click + // event as ExecuteScript is synchronous. + SimulateMouseClick(shell()->web_contents(), 0, + blink::WebPointerProperties::ButtonLeft); + scoped_refptr<InputMsgWatcher> input_msg_watcher( + new InputMsgWatcher(GetWidgetHost(), blink::WebInputEvent::TouchMove)); + + for (const auto& event : kEvents) + GetWidgetHost()->ForwardEmulatedTouchEvent(event); + + // Runs until we get the InputMsgAck callback. + EXPECT_EQ(INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING, + input_msg_watcher->WaitForAck()); + + int touch_move_count = 0; + while (touch_move_count <= 0) + touch_move_count = ExecuteScriptAndExtractInt("window.touchMoveCount"); + EXPECT_EQ(1, touch_move_count); + + int last_touch_x = ExecuteScriptAndExtractInt( + "window.lastTouchMoveEvent.touches[0].pageX"); + int last_touch_y = ExecuteScriptAndExtractInt( + "window.lastTouchMoveEvent.touches[0].pageY"); + EXPECT_EQ(35, last_touch_x); + EXPECT_EQ(40, last_touch_y); + } + + private: + DISALLOW_COPY_AND_ASSIGN(MainThreadEventQueueBrowserTest); +}; + +IN_PROC_BROWSER_TEST_F(MainThreadEventQueueBrowserTest, MouseMove) { + LoadURL(kJankyPageURL); + DoMouseMove(); +} + +// Disabled on MacOS because it doesn't support touch input. +#if defined(OS_MACOSX) +#define MAYBE_TouchMove DISABLED_TouchMove +#else +#define MAYBE_TouchMove TouchMove +#endif +IN_PROC_BROWSER_TEST_F(MainThreadEventQueueBrowserTest, MAYBE_TouchMove) { + LoadURL(kJankyPageURL); + DoTouchMove(); +} + +} // namespace content
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index dfc93645..a411c91 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -111,6 +111,7 @@ #include "content/browser/renderer_host/render_widget_helper.h" #include "content/browser/renderer_host/render_widget_host_impl.h" #include "content/browser/renderer_host/text_input_client_message_filter.h" +#include "content/browser/renderer_host/websocket_dispatcher_host.h" #include "content/browser/resolve_proxy_msg_helper.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" #include "content/browser/service_worker/service_worker_dispatcher_host.h" @@ -120,7 +121,6 @@ #include "content/browser/storage_partition_impl.h" #include "content/browser/streams/stream_context.h" #include "content/browser/tracing/trace_message_filter.h" -#include "content/browser/websockets/websocket_manager.h" #include "content/browser/webui/web_ui_controller_factory_registry.h" #include "content/common/child_process_host_impl.h" #include "content/common/child_process_messages.h" @@ -964,7 +964,6 @@ blob_storage_context.get(), storage_partition_impl_->GetFileSystemContext(), storage_partition_impl_->GetServiceWorkerContext(), - storage_partition_impl_->GetHostZoomLevelContext(), get_contexts_callback); AddFilter(resource_message_filter); @@ -1035,6 +1034,15 @@ AddFilter(new BrowserCdmManager(GetID(), NULL)); #endif + WebSocketDispatcherHost::GetRequestContextCallback + websocket_request_context_callback( + base::Bind(&GetRequestContext, request_context, media_request_context, + RESOURCE_TYPE_SUB_RESOURCE)); + + AddFilter(new WebSocketDispatcherHost( + GetID(), websocket_request_context_callback, blob_storage_context.get(), + storage_partition_impl_)); + message_port_message_filter_ = new MessagePortMessageFilter( base::Bind(&RenderWidgetHelper::GetNextRoutingID, base::Unretained(widget_helper_.get()))); @@ -1161,12 +1169,6 @@ registry->AddInterface(base::Bind(&DeviceOrientationHost::Create)); registry->AddInterface(base::Bind(&DeviceOrientationAbsoluteHost::Create)); - // This is to support usage of WebSockets in cases in which there is no - // associated RenderFrame (e.g., Shared Workers). - registry->AddInterface( - base::Bind(&WebSocketManager::CreateWebSocket, GetID(), MSG_ROUTING_NONE), - ui_task_runner); - GetContentClient()->browser()->ExposeInterfacesToRenderer(registry.get(), this);
diff --git a/content/browser/renderer_host/websocket_blob_sender.cc b/content/browser/renderer_host/websocket_blob_sender.cc new file mode 100644 index 0000000..89bb151 --- /dev/null +++ b/content/browser/renderer_host/websocket_blob_sender.cc
@@ -0,0 +1,284 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/renderer_host/websocket_blob_sender.h" + +#include <algorithm> +#include <ostream> +#include <utility> + +#include "base/bind.h" +#include "base/bind_helpers.h" +#include "base/callback_helpers.h" +#include "base/logging.h" +#include "base/numerics/safe_conversions.h" +#include "content/browser/renderer_host/websocket_dispatcher_host.h" +#include "content/browser/renderer_host/websocket_host.h" +#include "net/base/io_buffer.h" +#include "net/base/net_errors.h" +#include "net/websockets/websocket_channel.h" +#include "net/websockets/websocket_frame.h" +#include "storage/browser/blob/blob_data_handle.h" +#include "storage/browser/blob/blob_reader.h" +#include "storage/browser/blob/blob_storage_context.h" + +namespace content { + +namespace { + +using storage::BlobReader; +using storage::BlobDataHandle; +using storage::BlobStorageContext; + +// This must be smaller than the send quota high water mark or this class will +// never send anything. +const int kMinimumNonFinalFrameSize = 8 * 1024; + +// The IOBuffer has a fixed size for simplicity. +const size_t kBufferSize = 128 * 1024; + +} // namespace + +// This is needed to make DCHECK_EQ(), etc. compile. +std::ostream& operator<<(std::ostream& os, WebSocketBlobSender::State state) { + static const char* const kStateStrings[] = { + "NONE", + "READ_SIZE", + "READ_SIZE_COMPLETE", + "WAIT_FOR_QUOTA", + "WAIT_FOR_QUOTA_COMPLETE", + "READ", + "READ_COMPLETE", + }; + if (state < WebSocketBlobSender::State::NONE || + state > WebSocketBlobSender::State::READ_COMPLETE) { + return os << "Bad State (" << static_cast<int>(state) << ")"; + } + return os << kStateStrings[static_cast<int>(state)]; +} + +WebSocketBlobSender::WebSocketBlobSender(std::unique_ptr<Channel> channel) + : channel_(std::move(channel)) {} + +WebSocketBlobSender::~WebSocketBlobSender() {} + +int WebSocketBlobSender::Start( + const std::string& uuid, + uint64_t expected_size, + BlobStorageContext* context, + storage::FileSystemContext* file_system_context, + base::SingleThreadTaskRunner* file_task_runner, + net::WebSocketEventInterface::ChannelState* channel_state, + const net::CompletionCallback& callback) { + DCHECK(context); + DCHECK(channel_state); + DCHECK(!reader_); + std::unique_ptr<storage::BlobDataHandle> data_handle( + context->GetBlobDataFromUUID(uuid)); + if (!data_handle) + return net::ERR_INVALID_HANDLE; + reader_ = data_handle->CreateReader(file_system_context, file_task_runner); + expected_size_ = expected_size; + next_state_ = State::READ_SIZE; + int rv = DoLoop(net::OK, channel_state); + if (*channel_state == net::WebSocketEventInterface::CHANNEL_ALIVE && + rv == net::ERR_IO_PENDING) { + callback_ = callback; + } + return rv; +} + +void WebSocketBlobSender::OnNewSendQuota() { + if (next_state_ == State::WAIT_FOR_QUOTA) + DoLoopAsync(net::OK); + // |this| may be deleted. +} + +uint64_t WebSocketBlobSender::ActualSize() const { + return reader_->total_size(); +} + +void WebSocketBlobSender::OnReadComplete(int rv) { + DCHECK_EQ(State::READ_COMPLETE, next_state_); + DoLoopAsync(rv); + // |this| may be deleted. +} + +void WebSocketBlobSender::OnSizeCalculated(int rv) { + DCHECK_EQ(State::READ_SIZE_COMPLETE, next_state_); + DoLoopAsync(rv); + // |this| may be deleted. +} + +int WebSocketBlobSender::DoLoop(int result, + Channel::ChannelState* channel_state) { + DCHECK_NE(State::NONE, next_state_); + int rv = result; + do { + State state = next_state_; + next_state_ = State::NONE; + switch (state) { + case State::READ_SIZE: + DCHECK_EQ(net::OK, rv); + rv = DoReadSize(); + break; + + case State::READ_SIZE_COMPLETE: + rv = DoReadSizeComplete(rv); + break; + + case State::WAIT_FOR_QUOTA: + DCHECK_EQ(net::OK, rv); + rv = DoWaitForQuota(); + break; + + case State::WAIT_FOR_QUOTA_COMPLETE: + DCHECK_EQ(net::OK, rv); + rv = DoWaitForQuotaComplete(); + break; + + case State::READ: + DCHECK_EQ(net::OK, rv); + rv = DoRead(); + break; + + case State::READ_COMPLETE: + rv = DoReadComplete(rv, channel_state); + break; + + default: + NOTREACHED(); + break; + } + } while (*channel_state != net::WebSocketEventInterface::CHANNEL_DELETED && + rv != net::ERR_IO_PENDING && next_state_ != State::NONE); + return rv; +} + +void WebSocketBlobSender::DoLoopAsync(int result) { + Channel::ChannelState channel_state = + net::WebSocketEventInterface::CHANNEL_ALIVE; + int rv = DoLoop(result, &channel_state); + if (channel_state == net::WebSocketEventInterface::CHANNEL_ALIVE && + rv != net::ERR_IO_PENDING) { + ResetAndReturn(&callback_).Run(rv); + } + // |this| may be deleted. +} + +int WebSocketBlobSender::DoReadSize() { + next_state_ = State::READ_SIZE_COMPLETE; + // This use of base::Unretained() is safe because BlobReader cannot call the + // callback after it has been destroyed, and it is owned by this object. + BlobReader::Status status = reader_->CalculateSize(base::Bind( + &WebSocketBlobSender::OnSizeCalculated, base::Unretained(this))); + switch (status) { + case BlobReader::Status::NET_ERROR: + return reader_->net_error(); + + case BlobReader::Status::IO_PENDING: + return net::ERR_IO_PENDING; + + case BlobReader::Status::DONE: + return net::OK; + } + NOTREACHED(); + return net::ERR_UNEXPECTED; +} + +int WebSocketBlobSender::DoReadSizeComplete(int result) { + if (result < 0) + return result; + if (reader_->total_size() != expected_size_) + return net::ERR_UPLOAD_FILE_CHANGED; + bytes_left_ = expected_size_; + // The result of the call to std::min() must fit inside a size_t because + // kBufferSize is type size_t. + size_t buffer_size = static_cast<size_t>( + std::min(bytes_left_, base::strict_cast<uint64_t>(kBufferSize))); + buffer_ = new net::IOBuffer(buffer_size); + next_state_ = State::WAIT_FOR_QUOTA; + return net::OK; +} + +// The WAIT_FOR_QUOTA state has a self-edge; it will wait in this state until +// there is enough quota to send some data. +int WebSocketBlobSender::DoWaitForQuota() { + size_t quota = channel_->GetSendQuota(); + if (kMinimumNonFinalFrameSize <= quota || bytes_left_ <= quota) { + next_state_ = State::WAIT_FOR_QUOTA_COMPLETE; + return net::OK; + } + next_state_ = State::WAIT_FOR_QUOTA; + return net::ERR_IO_PENDING; +} + +// State::WAIT_FOR_QUOTA_COMPLETE exists just to give the state machine the +// expected shape. It should be mostly optimised out. +int WebSocketBlobSender::DoWaitForQuotaComplete() { + next_state_ = State::READ; + return net::OK; +} + +int WebSocketBlobSender::DoRead() { + next_state_ = State::READ_COMPLETE; + size_t quota = channel_->GetSendQuota(); + // |desired_bytes| must fit in a size_t because |quota| is of type + // size_t and so cannot be larger than its maximum value. + size_t desired_bytes = + static_cast<size_t>(std::min(bytes_left_, static_cast<uint64_t>(quota))); + + // For simplicity this method only reads as many bytes as are currently + // needed. + size_t bytes_to_read = std::min(desired_bytes, kBufferSize); + int bytes_read = 0; + DCHECK(reader_); + DCHECK(buffer_); + + // This use of base::Unretained is safe because the BlobReader object won't + // call the callback after it has been destroyed, and it belongs to this + // object. + BlobReader::Status status = reader_->Read( + buffer_.get(), bytes_to_read, &bytes_read, + base::Bind(&WebSocketBlobSender::OnReadComplete, base::Unretained(this))); + + switch (status) { + case BlobReader::Status::NET_ERROR: + return reader_->net_error(); + + case BlobReader::Status::IO_PENDING: + return net::ERR_IO_PENDING; + + case BlobReader::Status::DONE: + return bytes_read; + } + NOTREACHED(); + return net::ERR_UNEXPECTED; +} + +int WebSocketBlobSender::DoReadComplete(int result, + Channel::ChannelState* channel_state) { + if (result < 0) + return result; + DCHECK_GE(channel_->GetSendQuota(), static_cast<size_t>(result)); + uint64_t bytes_read = static_cast<uint64_t>(result); + DCHECK_GE(bytes_left_, bytes_read); + bytes_left_ -= bytes_read; + bool fin = bytes_left_ == 0; + std::vector<char> data(buffer_->data(), buffer_->data() + bytes_read); + DCHECK(fin || data.size() > 0u) << "Non-final frames should be non-empty"; + *channel_state = channel_->SendFrame(fin, data); + if (*channel_state == net::WebSocketEventInterface::CHANNEL_DELETED) { + // |this| is deleted. + return net::ERR_CONNECTION_RESET; + } + + // It is important not to set next_state_ until after the call to SendFrame() + // because SendFrame() will sometimes call OnNewSendQuota() synchronously. + if (!fin) + next_state_ = State::WAIT_FOR_QUOTA; + return net::OK; +} + +} // namespace content
diff --git a/content/browser/renderer_host/websocket_blob_sender.h b/content/browser/renderer_host/websocket_blob_sender.h new file mode 100644 index 0000000..d8131ad --- /dev/null +++ b/content/browser/renderer_host/websocket_blob_sender.h
@@ -0,0 +1,140 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_BROWSER_RENDERER_HOST_WEBSOCKET_BLOB_SENDER_H_ +#define CONTENT_BROWSER_RENDERER_HOST_WEBSOCKET_BLOB_SENDER_H_ + +#include <stddef.h> +#include <stdint.h> + +#include <iosfwd> +#include <memory> +#include <string> +#include <vector> + +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "content/common/content_export.h" +#include "net/base/completion_callback.h" +#include "net/websockets/websocket_event_interface.h" + +namespace base { +class SingleThreadTaskRunner; +} + +namespace net { +class IOBuffer; +} + +namespace storage { +class BlobReader; +class BlobStorageContext; +class FileSystemContext; +} + +namespace content { + +class WebSocketHost; + +// Read the contents of a Blob and write it to a WebSocket. Single-use: a new +// object must be created each time a Blob is sent. Destroying the object +// cancels all pending operations. +class CONTENT_EXPORT WebSocketBlobSender final { + public: + // An abstraction of the WebSocketChannel this object will send frames to. + class Channel { + public: + using ChannelState = net::WebSocketEventInterface::ChannelState; + + Channel() {} + virtual ~Channel() {} + + // The currently available quota for sending. It must not decrease without + // SendFrame() being called. + virtual size_t GetSendQuota() const = 0; + + // Send a binary frame. |fin| is true for the final frame of the message. + // |data| is the contents of the frame. data.size() must be less than + // GetSendQuota(). If this call returns CHANNEL_DELETED, WebSocketBlobSender + // will assume that it has been deleted and return without calling any + // callbacks or accessing any other member data. + virtual ChannelState SendFrame(bool fin, const std::vector<char>& data) = 0; + + private: + DISALLOW_COPY_AND_ASSIGN(Channel); + }; + + // |channel| will be destroyed when this object is. + explicit WebSocketBlobSender(std::unique_ptr<Channel> channel); + ~WebSocketBlobSender(); + + // Checks that the blob identified by |uuid| exists, has the size + // |expected_size| and then starts sending it via |channel_|. Returns + // ERR_IO_PENDING to indicate that |callback| will be called later with the + // result. net::OK indicates synchronous success. Any other net error code + // indicates synchronous failure. This method may result in the destruction of + // the channel, in which case |*channel_state| will be set to CHANNEL_DELETED. + int Start(const std::string& uuid, + uint64_t expected_size, + storage::BlobStorageContext* context, + storage::FileSystemContext* file_system_context, + base::SingleThreadTaskRunner* file_task_runner, + net::WebSocketEventInterface::ChannelState* channel_state, + const net::CompletionCallback& callback); + + // Sends more data if the object was waiting for quota and the new value of + // GetSendQuota() is large enough. + void OnNewSendQuota(); + + uint64_t expected_size() const { return expected_size_; } + + // ActualSize() should only be called after completion: ie. Start() returned a + // value other than ERR_IO_PENDING or |callback_| has been called. + uint64_t ActualSize() const; + + private: + // State proceeds through READ_SIZE and READ_SIZE_COMPLETE, then + // loops WAIT_FOR_QUOTA -> WAIT_FOR_QUOTA_COMPLETE -> READ + // -> READ_COMPLETE -> WAIT_FOR_QUOTA until the Blob is completely + // sent. + enum class State { + NONE = 0, + READ_SIZE, + READ_SIZE_COMPLETE, + WAIT_FOR_QUOTA, + WAIT_FOR_QUOTA_COMPLETE, + READ, + READ_COMPLETE, + }; + + // This is needed to make DCHECK_EQ(), etc. compile. + friend std::ostream& operator<<(std::ostream& os, State state); + + void OnReadComplete(int rv); + void OnSizeCalculated(int rv); + // |channel_state| should point to CHANNEL_ALIVE when called. If it is + // CHANNEL_DELETED on return, the object has been deleted. + int DoLoop(int result, Channel::ChannelState* channel_state); + void DoLoopAsync(int result); + int DoReadSize(); + int DoReadSizeComplete(int result); + int DoWaitForQuota(); + int DoWaitForQuotaComplete(); + int DoRead(); + int DoReadComplete(int result, Channel::ChannelState* channel_state); + + State next_state_ = State::NONE; + uint64_t expected_size_ = 0; + uint64_t bytes_left_ = 0; + net::CompletionCallback callback_; + scoped_refptr<net::IOBuffer> buffer_; + std::unique_ptr<storage::BlobReader> reader_; + const std::unique_ptr<Channel> channel_; + + DISALLOW_COPY_AND_ASSIGN(WebSocketBlobSender); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_RENDERER_HOST_WEBSOCKET_BLOB_SENDER_H_
diff --git a/content/browser/renderer_host/websocket_blob_sender_unittest.cc b/content/browser/renderer_host/websocket_blob_sender_unittest.cc new file mode 100644 index 0000000..590c914b --- /dev/null +++ b/content/browser/renderer_host/websocket_blob_sender_unittest.cc
@@ -0,0 +1,450 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/renderer_host/websocket_blob_sender.h" + +#include <string.h> + +#include "base/bind.h" +#include "base/bind_helpers.h" +#include "base/callback.h" +#include "base/files/file.h" +#include "base/files/file_path.h" +#include "base/files/file_util.h" +#include "base/files/scoped_temp_dir.h" +#include "base/location.h" +#include "base/memory/ptr_util.h" +#include "base/memory/weak_ptr.h" +#include "base/message_loop/message_loop.h" +#include "base/run_loop.h" +#include "base/single_thread_task_runner.h" +#include "base/task_runner.h" +#include "base/threading/thread_task_runner_handle.h" +#include "base/time/time.h" +#include "content/browser/blob_storage/chrome_blob_storage_context.h" +#include "content/public/browser/blob_handle.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/storage_partition.h" +#include "content/public/test/test_browser_context.h" +#include "content/public/test/test_browser_thread_bundle.h" +#include "net/base/completion_callback.h" +#include "net/base/net_errors.h" +#include "net/base/test_completion_callback.h" +#include "storage/common/fileapi/file_system_types.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" + +namespace content { + +namespace { + +const char kDummyUrl[] = "http://www.example.com/"; +const char kBanana[] = "banana"; + +// This is small so that the tests do not waste too much time just copying bytes +// around. But it has to be larger than kMinimumNonFinalFrameSize defined in +// websocket_blob_sender.cc. +const size_t kInitialQuota = 16 * 1024; + +using net::TestCompletionCallback; + +// A fake channel for testing. Records the contents of the message that was sent +// through it. Quota is restricted, and is refreshed asynchronously in response +// to calls to SendFrame(). +class FakeChannel : public WebSocketBlobSender::Channel { + public: + // |notify_new_quota| will be run asynchronously on the current MessageLoop + // every time GetSendQuota() increases. + FakeChannel() : weak_factory_(this) {} + + // This method must be called before SendFrame() is. + void set_notify_new_quota(const base::Closure& notify_new_quota) { + notify_new_quota_ = notify_new_quota; + } + + size_t GetSendQuota() const override { return current_send_quota_; } + + ChannelState SendFrame(bool fin, const std::vector<char>& data) override { + ++frames_sent_; + EXPECT_FALSE(got_fin_); + if (fin) + got_fin_ = true; + EXPECT_LE(data.size(), current_send_quota_); + message_.insert(message_.end(), data.begin(), data.end()); + current_send_quota_ -= data.size(); + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, + base::Bind(&FakeChannel::RefreshQuota, weak_factory_.GetWeakPtr())); + return net::WebSocketEventInterface::CHANNEL_ALIVE; + } + + bool got_fin() const { return got_fin_; } + + int frames_sent() const { return frames_sent_; } + + const std::vector<char>& message() const { return message_; } + + private: + void RefreshQuota() { + if (current_send_quota_ == kInitialQuota) + return; + current_send_quota_ = kInitialQuota; + DCHECK(!notify_new_quota_.is_null()); + notify_new_quota_.Run(); + } + + base::Closure notify_new_quota_; + size_t current_send_quota_ = kInitialQuota; + int frames_sent_ = 0; + bool got_fin_ = false; + std::vector<char> message_; + base::WeakPtrFactory<FakeChannel> weak_factory_; +}; + +class WebSocketBlobSenderTest : public ::testing::Test { + protected: + // The Windows implementation of net::FileStream::Context requires a real IO + // MessageLoop. + WebSocketBlobSenderTest() + : threads_(TestBrowserThreadBundle::IO_MAINLOOP), + chrome_blob_storage_context_( + ChromeBlobStorageContext::GetFor(&browser_context_)), + fake_channel_(nullptr), + sender_() {} + ~WebSocketBlobSenderTest() override {} + + void SetUp() override { + // ChromeBlobStorageContext::GetFor() does some work asynchronously. + base::RunLoop().RunUntilIdle(); + SetUpSender(); + } + + // This method can be overriden to use a different channel implementation. + virtual void SetUpSender() { + fake_channel_ = new FakeChannel; + sender_.reset(new WebSocketBlobSender(base::WrapUnique(fake_channel_))); + fake_channel_->set_notify_new_quota(base::Bind( + &WebSocketBlobSender::OnNewSendQuota, base::Unretained(sender_.get()))); + } + + storage::BlobStorageContext* context() { + return chrome_blob_storage_context_->context(); + } + + storage::FileSystemContext* GetFileSystemContext() { + StoragePartition* partition = BrowserContext::GetStoragePartitionForSite( + &browser_context_, GURL(kDummyUrl)); + return partition->GetFileSystemContext(); + } + + // |string| is copied. + std::unique_ptr<BlobHandle> CreateMemoryBackedBlob(const char* string) { + std::unique_ptr<BlobHandle> handle = + chrome_blob_storage_context_->CreateMemoryBackedBlob(string, + strlen(string)); + EXPECT_TRUE(handle); + return handle; + } + + // Call sender_.Start() with the other parameters filled in appropriately for + // this test fixture. + int Start(const std::string& uuid, + uint64_t expected_size, + const net::CompletionCallback& callback) { + net::WebSocketEventInterface::ChannelState channel_state = + net::WebSocketEventInterface::CHANNEL_ALIVE; + return sender_->Start( + uuid, expected_size, context(), GetFileSystemContext(), + BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE).get(), + &channel_state, callback); + } + + void NotCalledCallbackImpl(int rv) { + ADD_FAILURE() + << "Callback that should not be called was called with argument " << rv; + } + + net::CompletionCallback NotCalled() { + return base::Bind(&WebSocketBlobSenderTest::NotCalledCallbackImpl, + base::Unretained(this)); + } + + void ExpectOkAndQuit(base::RunLoop* run_loop, int result) { + EXPECT_EQ(net::OK, result); + run_loop->Quit(); + } + + net::CompletionCallback ExpectOkAndQuitCallback(base::RunLoop* run_loop) { + return base::Bind(&WebSocketBlobSenderTest::ExpectOkAndQuit, + base::Unretained(this), run_loop); + } + + TestBrowserThreadBundle threads_; + TestBrowserContext browser_context_; + scoped_refptr<ChromeBlobStorageContext> chrome_blob_storage_context_; + // |fake_channel_| is owned by |sender_|. + FakeChannel* fake_channel_; + std::unique_ptr<WebSocketBlobSender> sender_; +}; + +TEST_F(WebSocketBlobSenderTest, Construction) {} + +TEST_F(WebSocketBlobSenderTest, EmptyBlob) { + std::unique_ptr<BlobHandle> handle = CreateMemoryBackedBlob(""); + + // The APIs allow for this to be asynchronous but that is unlikely in + // practice. + int result = Start(handle->GetUUID(), UINT64_C(0), NotCalled()); + // If this fails with result == -1, someone has changed the code to be + // asynchronous and this test should be adapted to match. + EXPECT_EQ(net::OK, result); + EXPECT_TRUE(fake_channel_->got_fin()); + EXPECT_EQ(0U, fake_channel_->message().size()); +} + +TEST_F(WebSocketBlobSenderTest, SmallBlob) { + std::unique_ptr<BlobHandle> handle = CreateMemoryBackedBlob(kBanana); + + EXPECT_EQ(net::OK, Start(handle->GetUUID(), UINT64_C(6), NotCalled())); + EXPECT_TRUE(fake_channel_->got_fin()); + EXPECT_EQ(1, fake_channel_->frames_sent()); + EXPECT_EQ(std::vector<char>(kBanana, kBanana + 6), fake_channel_->message()); +} + +TEST_F(WebSocketBlobSenderTest, SizeMismatch) { + std::unique_ptr<BlobHandle> handle = CreateMemoryBackedBlob(kBanana); + + EXPECT_EQ(net::ERR_UPLOAD_FILE_CHANGED, + Start(handle->GetUUID(), UINT64_C(5), NotCalled())); + EXPECT_EQ(0, fake_channel_->frames_sent()); +} + +TEST_F(WebSocketBlobSenderTest, InvalidUUID) { + EXPECT_EQ(net::ERR_INVALID_HANDLE, + Start("sandwich", UINT64_C(0), NotCalled())); +} + +TEST_F(WebSocketBlobSenderTest, LargeMessage) { + std::string message(kInitialQuota + 10, 'a'); + std::unique_ptr<BlobHandle> handle = CreateMemoryBackedBlob(message.c_str()); + + base::RunLoop run_loop; + int rv = Start(handle->GetUUID(), message.size(), + ExpectOkAndQuitCallback(&run_loop)); + EXPECT_EQ(net::ERR_IO_PENDING, rv); + EXPECT_EQ(1, fake_channel_->frames_sent()); + run_loop.Run(); + EXPECT_EQ(2, fake_channel_->frames_sent()); + EXPECT_TRUE(fake_channel_->got_fin()); + std::vector<char> expected_message(message.begin(), message.end()); + EXPECT_EQ(expected_message, fake_channel_->message()); +} + +// A message exactly equal to the available quota should be sent in one frame. +TEST_F(WebSocketBlobSenderTest, ExactSizeMessage) { + std::string message(kInitialQuota, 'a'); + std::unique_ptr<BlobHandle> handle = CreateMemoryBackedBlob(message.c_str()); + + EXPECT_EQ(net::OK, Start(handle->GetUUID(), message.size(), NotCalled())); + EXPECT_EQ(1, fake_channel_->frames_sent()); + EXPECT_TRUE(fake_channel_->got_fin()); + std::vector<char> expected_message(message.begin(), message.end()); + EXPECT_EQ(expected_message, fake_channel_->message()); +} + +// If the connection is closed while sending a message, the WebSocketBlobSender +// object will be destroyed. It needs to handle this case without error. +TEST_F(WebSocketBlobSenderTest, AbortedSend) { + std::string message(kInitialQuota + 10, 'a'); + std::unique_ptr<BlobHandle> handle = CreateMemoryBackedBlob(message.c_str()); + + int rv = Start(handle->GetUUID(), message.size(), NotCalled()); + EXPECT_EQ(net::ERR_IO_PENDING, rv); + sender_.reset(); +} + +// Invalid file-backed blob. +TEST_F(WebSocketBlobSenderTest, InvalidFileBackedBlob) { + base::FilePath path(FILE_PATH_LITERAL( + "WebSocketBlobSentTest.InvalidFileBackedBlob.NonExistentFile")); + std::unique_ptr<BlobHandle> handle = + chrome_blob_storage_context_->CreateFileBackedBlob(path, 0u, 32u, + base::Time::Now()); + EXPECT_TRUE(handle); + + TestCompletionCallback callback; + int rv = + callback.GetResult(Start(handle->GetUUID(), 5u, callback.callback())); + EXPECT_EQ(net::ERR_FILE_NOT_FOUND, rv); +} + +// A test fixture that does the additional work necessary to create working +// file-backed blobs. +class WebSocketFileBackedBlobSenderTest : public WebSocketBlobSenderTest { + protected: + void SetUp() override { + WebSocketBlobSenderTest::SetUp(); + // temp_dir_ is recursively deleted on destruction. + ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); + } + + void CreateFile(const std::string& contents, + const base::FilePath& path, + base::File::Info* info) { + ASSERT_EQ(contents.size(), static_cast<size_t>(base::WriteFile( + path, contents.data(), contents.size()))); + ASSERT_TRUE(base::GetFileInfo(path, info)); + } + + std::unique_ptr<BlobHandle> CreateFileBackedBlob( + const std::string& contents) { + base::FilePath path = temp_dir_.path().AppendASCII("blob.dat"); + base::File::Info info; + CreateFile(contents, path, &info); + if (HasFatalFailure()) + return nullptr; + return chrome_blob_storage_context_->CreateFileBackedBlob( + path, 0u, contents.size(), info.last_modified); + } + + base::ScopedTempDir temp_dir_; +}; + +TEST_F(WebSocketFileBackedBlobSenderTest, EmptyBlob) { + std::unique_ptr<BlobHandle> handle = CreateFileBackedBlob(""); + ASSERT_TRUE(handle); + + TestCompletionCallback callback; + int result = callback.GetResult( + Start(handle->GetUUID(), UINT64_C(0), callback.callback())); + EXPECT_EQ(net::OK, result); + EXPECT_TRUE(fake_channel_->got_fin()); + EXPECT_EQ(0U, fake_channel_->message().size()); +} + +TEST_F(WebSocketFileBackedBlobSenderTest, SizeMismatch) { + std::unique_ptr<BlobHandle> handle = CreateFileBackedBlob(kBanana); + ASSERT_TRUE(handle); + + TestCompletionCallback callback; + int result = Start(handle->GetUUID(), UINT64_C(8), callback.callback()); + // This test explicitly aims to test the asynchronous code path, otherwise it + // would be identical to the other SizeMismatch test above. + EXPECT_EQ(net::ERR_IO_PENDING, result); + EXPECT_EQ(net::ERR_UPLOAD_FILE_CHANGED, callback.WaitForResult()); + EXPECT_EQ(0, fake_channel_->frames_sent()); +} + +TEST_F(WebSocketFileBackedBlobSenderTest, LargeMessage) { + std::string message = "the green potato had lunch with the angry cat. "; + while (message.size() <= kInitialQuota) { + message = message + message; + } + std::unique_ptr<BlobHandle> handle = CreateFileBackedBlob(message); + ASSERT_TRUE(handle); + + TestCompletionCallback callback; + int result = Start(handle->GetUUID(), message.size(), callback.callback()); + EXPECT_EQ(net::OK, callback.GetResult(result)); + std::vector<char> expected_message(message.begin(), message.end()); + EXPECT_EQ(expected_message, fake_channel_->message()); +} + +// The WebSocketBlobSender needs to handle a connection close while doing file +// IO cleanly. +TEST_F(WebSocketFileBackedBlobSenderTest, Aborted) { + std::unique_ptr<BlobHandle> handle = CreateFileBackedBlob(kBanana); + + int rv = Start(handle->GetUUID(), UINT64_C(6), NotCalled()); + EXPECT_EQ(net::ERR_IO_PENDING, rv); + sender_.reset(); +} + +class DeletingFakeChannel : public WebSocketBlobSender::Channel { + public: + explicit DeletingFakeChannel( + std::unique_ptr<WebSocketBlobSender>* sender_to_delete) + : sender_(sender_to_delete) {} + + size_t GetSendQuota() const override { return kInitialQuota; } + + ChannelState SendFrame(bool fin, const std::vector<char>& data) override { + sender_->reset(); + // |this| is deleted here. + return net::WebSocketEventInterface::CHANNEL_DELETED; + } + + private: + std::unique_ptr<WebSocketBlobSender>* sender_; +}; + +class WebSocketBlobSenderDeletingTest : public WebSocketBlobSenderTest { + protected: + void SetUpSender() override { + sender_.reset(new WebSocketBlobSender( + base::WrapUnique(new DeletingFakeChannel(&sender_)))); + } +}; + +// This test only does something useful when run under AddressSanitizer or a +// similar tool that can detect use-after-free bugs. +TEST_F(WebSocketBlobSenderDeletingTest, SenderDeleted) { + std::unique_ptr<BlobHandle> handle = CreateMemoryBackedBlob(kBanana); + + EXPECT_EQ(net::ERR_CONNECTION_RESET, + Start(handle->GetUUID(), UINT64_C(6), NotCalled())); + EXPECT_FALSE(sender_); +} + +// SendFrame() calls OnSendNewQuota() synchronously while filling the operating +// system's socket write buffer. The purpose of this Channel implementation is +// to verify that the synchronous case works correctly. +class SynchronousFakeChannel : public WebSocketBlobSender::Channel { + public: + // This method must be called before SendFrame() is. + void set_notify_new_quota(const base::Closure& notify_new_quota) { + notify_new_quota_ = notify_new_quota; + } + + size_t GetSendQuota() const override { return kInitialQuota; } + + ChannelState SendFrame(bool fin, const std::vector<char>& data) override { + message_.insert(message_.end(), data.begin(), data.end()); + notify_new_quota_.Run(); + return net::WebSocketEventInterface::CHANNEL_ALIVE; + } + + const std::vector<char>& message() const { return message_; } + + private: + base::Closure notify_new_quota_; + std::vector<char> message_; +}; + +class WebSocketBlobSenderSynchronousTest : public WebSocketBlobSenderTest { + protected: + void SetUpSender() override { + synchronous_fake_channel_ = new SynchronousFakeChannel; + sender_.reset( + new WebSocketBlobSender(base::WrapUnique(synchronous_fake_channel_))); + synchronous_fake_channel_->set_notify_new_quota(base::Bind( + &WebSocketBlobSender::OnNewSendQuota, base::Unretained(sender_.get()))); + } + + SynchronousFakeChannel* synchronous_fake_channel_ = nullptr; +}; + +TEST_F(WebSocketBlobSenderSynchronousTest, LargeMessage) { + std::string message(kInitialQuota + 10, 'a'); + std::unique_ptr<BlobHandle> handle = CreateMemoryBackedBlob(message.c_str()); + + int rv = Start(handle->GetUUID(), message.size(), NotCalled()); + EXPECT_EQ(net::OK, rv); + std::vector<char> expected_message(message.begin(), message.end()); + EXPECT_EQ(expected_message, synchronous_fake_channel_->message()); +} + +} // namespace + +} // namespace content
diff --git a/content/browser/renderer_host/websocket_dispatcher_host.cc b/content/browser/renderer_host/websocket_dispatcher_host.cc new file mode 100644 index 0000000..b20f54c --- /dev/null +++ b/content/browser/renderer_host/websocket_dispatcher_host.cc
@@ -0,0 +1,310 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/renderer_host/websocket_dispatcher_host.h" + +#include <stddef.h> + +#include <algorithm> +#include <string> +#include <vector> + +#include "base/callback.h" +#include "base/logging.h" +#include "base/numerics/safe_conversions.h" +#include "base/rand_util.h" +#include "base/stl_util.h" +#include "content/browser/blob_storage/chrome_blob_storage_context.h" +#include "content/browser/child_process_security_policy_impl.h" +#include "content/browser/renderer_host/websocket_host.h" +#include "content/common/websocket_messages.h" + +namespace content { + +namespace { + +// Many methods defined in this file return a WebSocketHostState enum +// value. Make WebSocketHostState visible at file scope so it doesn't have to be +// fully-qualified every time. +typedef WebSocketDispatcherHost::WebSocketHostState WebSocketHostState; + +// Max number of pending connections per WebSocketDispatcherHost +// used for per-renderer WebSocket throttling. +const int kMaxPendingWebSocketConnections = 255; + +} // namespace + +WebSocketDispatcherHost::WebSocketDispatcherHost( + int process_id, + const GetRequestContextCallback& get_context_callback, + ChromeBlobStorageContext* blob_storage_context, + StoragePartition* storage_partition) + : BrowserMessageFilter(WebSocketMsgStart), + process_id_(process_id), + get_context_callback_(get_context_callback), + websocket_host_factory_( + base::Bind(&WebSocketDispatcherHost::CreateWebSocketHost, + base::Unretained(this))), + num_pending_connections_(0), + num_current_succeeded_connections_(0), + num_previous_succeeded_connections_(0), + num_current_failed_connections_(0), + num_previous_failed_connections_(0), + blob_storage_context_(blob_storage_context), + storage_partition_(storage_partition) {} + +WebSocketDispatcherHost::WebSocketDispatcherHost( + int process_id, + const GetRequestContextCallback& get_context_callback, + const WebSocketHostFactory& websocket_host_factory) + : BrowserMessageFilter(WebSocketMsgStart), + process_id_(process_id), + get_context_callback_(get_context_callback), + websocket_host_factory_(websocket_host_factory), + num_pending_connections_(0), + num_current_succeeded_connections_(0), + num_previous_succeeded_connections_(0), + num_current_failed_connections_(0), + num_previous_failed_connections_(0), + storage_partition_(nullptr) {} + +WebSocketHost* WebSocketDispatcherHost::CreateWebSocketHost( + int routing_id, + base::TimeDelta delay) { + return new WebSocketHost( + routing_id, this, get_context_callback_.Run(), delay); +} + +bool WebSocketDispatcherHost::OnMessageReceived(const IPC::Message& message) { + switch (message.type()) { + case WebSocketHostMsg_AddChannelRequest::ID: + case WebSocketHostMsg_SendBlob::ID: + case WebSocketMsg_SendFrame::ID: + case WebSocketMsg_FlowControl::ID: + case WebSocketMsg_DropChannel::ID: + break; + + default: + // Every message that has not been handled by a previous filter passes + // through here, so it is good to pass them on as efficiently as possible. + return false; + } + + int routing_id = message.routing_id(); + WebSocketHost* host = GetHost(routing_id); + if (message.type() == WebSocketHostMsg_AddChannelRequest::ID) { + if (host) { + DVLOG(1) << "routing_id=" << routing_id << " already in use."; + // The websocket multiplexing spec says to should drop the physical + // connection in this case, but there isn't a real physical connection + // to the renderer, and killing the renderer for this would seem to be a + // little extreme. So for now just ignore the bogus request. + return true; // We handled the message (by ignoring it). + } + if (num_pending_connections_ >= kMaxPendingWebSocketConnections) { + if (!Send(new WebSocketMsg_NotifyFailure( + routing_id, + "Error in connection establishment: " + "net::ERR_INSUFFICIENT_RESOURCES"))) { + DVLOG(1) << "Sending of message type " + << "WebSocketMsg_NotifyFailure failed."; + } + return true; + } + host = websocket_host_factory_.Run(routing_id, CalculateDelay()); + hosts_.insert(WebSocketHostTable::value_type(routing_id, host)); + ++num_pending_connections_; + if (!throttling_period_timer_.IsRunning()) + throttling_period_timer_.Start( + FROM_HERE, + base::TimeDelta::FromMinutes(2), + this, + &WebSocketDispatcherHost::ThrottlingPeriodTimerCallback); + } + if (!host) { + DVLOG(1) << "Received invalid routing ID " << routing_id + << " from renderer."; + return true; // We handled the message (by ignoring it). + } + return host->OnMessageReceived(message); +} + +bool WebSocketDispatcherHost::CanReadRawCookies() const { + ChildProcessSecurityPolicyImpl* policy = + ChildProcessSecurityPolicyImpl::GetInstance(); + return policy->CanReadRawCookies(process_id_); +} + +storage::BlobStorageContext* WebSocketDispatcherHost::blob_storage_context() + const { + DCHECK(blob_storage_context_); + return blob_storage_context_->context(); +} + +WebSocketHost* WebSocketDispatcherHost::GetHost(int routing_id) const { + WebSocketHostTable::const_iterator it = hosts_.find(routing_id); + return it == hosts_.end() ? NULL : it->second; +} + +WebSocketHostState WebSocketDispatcherHost::SendOrDrop(IPC::Message* message) { + const uint32_t message_type = message->type(); + const int32_t message_routing_id = message->routing_id(); + if (!Send(message)) { + message = NULL; + DVLOG(1) << "Sending of message type " << message_type + << " failed. Dropping channel."; + DeleteWebSocketHost(message_routing_id); + return WEBSOCKET_HOST_DELETED; + } + return WEBSOCKET_HOST_ALIVE; +} + +WebSocketHostState WebSocketDispatcherHost::SendAddChannelResponse( + int routing_id, + const std::string& selected_protocol, + const std::string& extensions) { + // Update throttling counters (success). + WebSocketHost* host = GetHost(routing_id); + DCHECK(host); + host->OnHandshakeSucceeded(); + --num_pending_connections_; + DCHECK_GE(num_pending_connections_, 0); + ++num_current_succeeded_connections_; + + return SendOrDrop(new WebSocketMsg_AddChannelResponse( + routing_id, selected_protocol, extensions)); +} + +WebSocketHostState WebSocketDispatcherHost::SendFrame( + int routing_id, + bool fin, + WebSocketMessageType type, + const std::vector<char>& data) { + return SendOrDrop(new WebSocketMsg_SendFrame(routing_id, fin, type, data)); +} + +WebSocketHostState WebSocketDispatcherHost::SendFlowControl(int routing_id, + int64_t quota) { + return SendOrDrop(new WebSocketMsg_FlowControl(routing_id, quota)); +} + +WebSocketHostState WebSocketDispatcherHost::NotifyClosingHandshake( + int routing_id) { + return SendOrDrop(new WebSocketMsg_NotifyClosing(routing_id)); +} + +WebSocketHostState WebSocketDispatcherHost::NotifyStartOpeningHandshake( + int routing_id, const WebSocketHandshakeRequest& request) { + return SendOrDrop(new WebSocketMsg_NotifyStartOpeningHandshake( + routing_id, request)); +} + +WebSocketHostState WebSocketDispatcherHost::NotifyFinishOpeningHandshake( + int routing_id, const WebSocketHandshakeResponse& response) { + return SendOrDrop(new WebSocketMsg_NotifyFinishOpeningHandshake( + routing_id, response)); +} + +WebSocketHostState WebSocketDispatcherHost::NotifyFailure( + int routing_id, + const std::string& message) { + if (SendOrDrop(new WebSocketMsg_NotifyFailure( + routing_id, message)) == WEBSOCKET_HOST_DELETED) { + return WEBSOCKET_HOST_DELETED; + } + DeleteWebSocketHost(routing_id); + return WEBSOCKET_HOST_DELETED; +} + +WebSocketHostState WebSocketDispatcherHost::BlobSendComplete(int routing_id) { + return SendOrDrop(new WebSocketMsg_BlobSendComplete(routing_id)); +} + +WebSocketHostState WebSocketDispatcherHost::DoDropChannel( + int routing_id, + bool was_clean, + uint16_t code, + const std::string& reason) { + if (SendOrDrop( + new WebSocketMsg_DropChannel(routing_id, was_clean, code, reason)) == + WEBSOCKET_HOST_DELETED) + return WEBSOCKET_HOST_DELETED; + DeleteWebSocketHost(routing_id); + return WEBSOCKET_HOST_DELETED; +} + +WebSocketDispatcherHost::~WebSocketDispatcherHost() { + std::vector<WebSocketHost*> hosts; + for (base::hash_map<int, WebSocketHost*>::const_iterator i = hosts_.begin(); + i != hosts_.end(); ++i) { + // In order to avoid changing the container while iterating, we copy + // the hosts. + hosts.push_back(i->second); + } + + for (size_t i = 0; i < hosts.size(); ++i) { + // Note that some calls to GoAway could fail. In that case hosts[i] will be + // deleted and removed from |hosts_| in |DoDropChannel|. + hosts[i]->GoAway(); + hosts[i] = NULL; + } + + STLDeleteContainerPairSecondPointers(hosts_.begin(), hosts_.end()); +} + +void WebSocketDispatcherHost::DeleteWebSocketHost(int routing_id) { + WebSocketHostTable::iterator it = hosts_.find(routing_id); + DCHECK(it != hosts_.end()); + DCHECK(it->second); + if (!it->second->handshake_succeeded()) { + // Update throttling counters (failure). + --num_pending_connections_; + DCHECK_GE(num_pending_connections_, 0); + ++num_current_failed_connections_; + } + + delete it->second; + hosts_.erase(it); + + DCHECK_LE(base::checked_cast<size_t>(num_pending_connections_), + hosts_.size()); +} + +int64_t WebSocketDispatcherHost::num_failed_connections() const { + return num_previous_failed_connections_ + + num_current_failed_connections_; +} + +int64_t WebSocketDispatcherHost::num_succeeded_connections() const { + return num_previous_succeeded_connections_ + + num_current_succeeded_connections_; +} + +// Calculate delay as described in +// the per-renderer WebSocket throttling design doc: +// https://docs.google.com/document/d/1aw2oN5PKfk-1gLnBrlv1OwLA8K3-ykM2ckwX2lubTg4/edit?usp=sharing +base::TimeDelta WebSocketDispatcherHost::CalculateDelay() const { + int64_t f = num_failed_connections(); + int64_t s = num_succeeded_connections(); + int p = num_pending_connections(); + return base::TimeDelta::FromMilliseconds( + base::RandInt(1000, 5000) * + (1 << std::min(p + f / (s + 1), INT64_C(16))) / 65536); +} + +void WebSocketDispatcherHost::ThrottlingPeriodTimerCallback() { + num_previous_failed_connections_ = num_current_failed_connections_; + num_current_failed_connections_ = 0; + + num_previous_succeeded_connections_ = num_current_succeeded_connections_; + num_current_succeeded_connections_ = 0; + + if (num_pending_connections_ == 0 && + num_previous_failed_connections_ == 0 && + num_previous_succeeded_connections_ == 0) { + throttling_period_timer_.Stop(); + } +} + +} // namespace content
diff --git a/content/browser/renderer_host/websocket_dispatcher_host.h b/content/browser/renderer_host/websocket_dispatcher_host.h new file mode 100644 index 0000000..5d5c804 --- /dev/null +++ b/content/browser/renderer_host/websocket_dispatcher_host.h
@@ -0,0 +1,212 @@ +// Copyright 2013 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_BROWSER_RENDERER_HOST_WEBSOCKET_DISPATCHER_HOST_H_ +#define CONTENT_BROWSER_RENDERER_HOST_WEBSOCKET_DISPATCHER_HOST_H_ + +#include <stdint.h> +#include <string> +#include <vector> + +#include "base/callback.h" +#include "base/compiler_specific.h" +#include "base/containers/hash_tables.h" +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "base/time/time.h" +#include "base/timer/timer.h" +#include "content/common/content_export.h" +#include "content/common/websocket.h" +#include "content/public/browser/browser_message_filter.h" + +namespace net { +class URLRequestContext; +} // namespace net + +namespace storage { +class BlobStorageContext; +} + +namespace content { + +class ChromeBlobStorageContext; +class StoragePartition; +struct WebSocketHandshakeRequest; +struct WebSocketHandshakeResponse; +class WebSocketHost; + +// Creates a WebSocketHost object for each WebSocket channel, and dispatches +// WebSocketMsg_* messages sent from renderer to the appropriate WebSocketHost. +class CONTENT_EXPORT WebSocketDispatcherHost : public BrowserMessageFilter { + public: + typedef base::Callback<net::URLRequestContext*()> GetRequestContextCallback; + + // Given a routing_id and delay, WebSocketHostFactory returns a new + // instance of WebSocketHost or its subclass. + typedef base::Callback<WebSocketHost*(int, base::TimeDelta)> + WebSocketHostFactory; + + // Return value for methods that may delete the WebSocketHost. This enum is + // binary-compatible with net::WebSocketEventInterface::ChannelState, to make + // conversion cheap. By using a separate enum including net/ header files can + // be avoided. + enum WebSocketHostState { + WEBSOCKET_HOST_ALIVE, + WEBSOCKET_HOST_DELETED + }; + + WebSocketDispatcherHost(int process_id, + const GetRequestContextCallback& get_context_callback, + ChromeBlobStorageContext* blob_storage_context, + StoragePartition* storage_partition); + + // BrowserMessageFilter: + bool OnMessageReceived(const IPC::Message& message) override; + + // The following methods are used by WebSocketHost::EventInterface to send + // IPCs from the browser to the renderer or child process. Any of them may + // return WEBSOCKET_HOST_DELETED and delete the WebSocketHost on failure, + // leading to the WebSocketChannel and EventInterface also being deleted. + + // Sends a WebSocketMsg_AddChannelResponse IPC. + WebSocketHostState SendAddChannelResponse( + int routing_id, + const std::string& selected_protocol, + const std::string& extensions) WARN_UNUSED_RESULT; + + // Sends a WebSocketMsg_SendFrame IPC. + WebSocketHostState SendFrame(int routing_id, + bool fin, + WebSocketMessageType type, + const std::vector<char>& data); + + // Sends a WebSocketMsg_FlowControl IPC. + WebSocketHostState SendFlowControl(int routing_id, + int64_t quota) WARN_UNUSED_RESULT; + + // Sends a WebSocketMsg_NotifyClosing IPC + WebSocketHostState NotifyClosingHandshake(int routing_id) WARN_UNUSED_RESULT; + + // Sends a WebSocketMsg_NotifyStartOpeningHandshake IPC. + WebSocketHostState NotifyStartOpeningHandshake( + int routing_id, + const WebSocketHandshakeRequest& request) WARN_UNUSED_RESULT; + + // Sends a WebSocketMsg_NotifyFinishOpeningHandshake IPC. + WebSocketHostState NotifyFinishOpeningHandshake( + int routing_id, + const WebSocketHandshakeResponse& response) WARN_UNUSED_RESULT; + + // Sends a WebSocketMsg_NotifyFailure IPC and deletes and unregisters the + // channel. + WebSocketHostState NotifyFailure( + int routing_id, + const std::string& message) WARN_UNUSED_RESULT; + + WebSocketHostState BlobSendComplete(int routing_id); + + // Sends a WebSocketMsg_DropChannel IPC and deletes and unregisters the + // channel. + WebSocketHostState DoDropChannel(int routing_id, + bool was_clean, + uint16_t code, + const std::string& reason) + WARN_UNUSED_RESULT; + + // Returns whether the associated renderer process can read raw cookies. + bool CanReadRawCookies() const; + + int render_process_id() const { return process_id_; } + + // Returns a BlobStorageContext associated with this object's render process. + // The pointer will be valid for as long this object is. + storage::BlobStorageContext* blob_storage_context() const; + + // Returns the StoragePartition associated with this render process. + StoragePartition* storage_partition() const { return storage_partition_; } + + protected: + // For testing. Specify a factory method that creates mock version of + // WebSocketHost. + WebSocketDispatcherHost(int process_id, + const GetRequestContextCallback& get_context_callback, + const WebSocketHostFactory& websocket_host_factory); + + int num_pending_connections() const { return num_pending_connections_; } + + // The number of handshakes that failed/succeeded in the current and + // previous time period, respectively. + int64_t num_failed_connections() const; + int64_t num_succeeded_connections() const; + + ~WebSocketDispatcherHost() override; + + private: + typedef base::hash_map<int, WebSocketHost*> WebSocketHostTable; + + WebSocketHost* CreateWebSocketHost(int routing_id, base::TimeDelta delay); + + // Looks up a WebSocketHost object by |routing_id|. Returns the object if one + // is found, or NULL otherwise. + WebSocketHost* GetHost(int routing_id) const; + + // Sends the passed in IPC::Message via the BrowserMessageFilter::Send() + // method. If sending the IPC fails, assumes that this connection is no + // longer useable, calls DeleteWebSocketHost(), and returns + // WEBSOCKET_HOST_DELETED. The behaviour is the same for all message types. + WebSocketHostState SendOrDrop(IPC::Message* message) WARN_UNUSED_RESULT; + + // Deletes the WebSocketHost object associated with the given |routing_id| and + // removes it from the |hosts_| table. + void DeleteWebSocketHost(int routing_id); + + // Calculates the delay for per-renderer WebSocket throttling. + base::TimeDelta CalculateDelay() const; + + // Rotates the counts of successful and failed connections for current + // and previous time periods. Called every two minutes while the counts + // are non-zero. + void ThrottlingPeriodTimerCallback(); + + // Table of WebSocketHost objects, owned by this object, indexed by + // routing_id. + WebSocketHostTable hosts_; + + // The the process ID of the associated renderer process. + const int process_id_; + + // A callback which returns the appropriate net::URLRequestContext for us to + // use. + GetRequestContextCallback get_context_callback_; + + WebSocketHostFactory websocket_host_factory_; + + // Timer and counters for per-renderer WebSocket throttling. + base::RepeatingTimer throttling_period_timer_; + + // The current number of pending connections. + int num_pending_connections_; + + // The number of handshakes that failed in the current and previous time + // period. + int64_t num_current_succeeded_connections_; + int64_t num_previous_succeeded_connections_; + + // The number of handshakes that succeeded in the current and previous time + // period. + int64_t num_current_failed_connections_; + int64_t num_previous_failed_connections_; + + // Needed to read from blobs for browser-side blob sending. + const scoped_refptr<const ChromeBlobStorageContext> blob_storage_context_; + + // Needed to access to the StoragePartition for browser-side blob sending. + StoragePartition* const storage_partition_; + + DISALLOW_COPY_AND_ASSIGN(WebSocketDispatcherHost); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_RENDERER_HOST_WEBSOCKET_DISPATCHER_HOST_H_
diff --git a/content/browser/renderer_host/websocket_dispatcher_host_unittest.cc b/content/browser/renderer_host/websocket_dispatcher_host_unittest.cc new file mode 100644 index 0000000..4fd1f5c --- /dev/null +++ b/content/browser/renderer_host/websocket_dispatcher_host_unittest.cc
@@ -0,0 +1,468 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/renderer_host/websocket_dispatcher_host.h" + +#include <algorithm> +#include <vector> + +#include "base/bind.h" +#include "base/bind_helpers.h" +#include "base/memory/ref_counted.h" +#include "base/memory/weak_ptr.h" +#include "base/message_loop/message_loop.h" +#include "content/browser/renderer_host/websocket_host.h" +#include "content/common/websocket.h" +#include "content/common/websocket_messages.h" +#include "ipc/ipc_message.h" +#include "net/websockets/websocket_errors.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" +#include "url/origin.h" + +namespace content { +namespace { + +// This number is unlikely to occur by chance. +static const int kMagicRenderProcessId = 506116062; + +class WebSocketDispatcherHostTest; + +// A mock of WebsocketHost which records received messages. +class MockWebSocketHost : public WebSocketHost { + public: + MockWebSocketHost(int routing_id, + WebSocketDispatcherHost* dispatcher, + net::URLRequestContext* url_request_context, + base::TimeDelta delay, + WebSocketDispatcherHostTest* owner); + + ~MockWebSocketHost() override {} + + bool OnMessageReceived(const IPC::Message& message) override { + received_messages_.push_back(message); + switch (message.type()) { + case WebSocketMsg_DropChannel::ID: + // Needed for PerRendererThrottlingFailedHandshakes, because without + // calling WebSocketHost::OnMessageReceived() (and thus + // WebSocketHost::OnDropChannel()), the connection stays pending and + // we cannot test per-renderer throttling with failed connections. + return WebSocketHost::OnMessageReceived(message); + + default: + return true; + } + } + + void GoAway() override; + + std::vector<IPC::Message> received_messages_; + base::WeakPtr<WebSocketDispatcherHostTest> owner_; + base::TimeDelta delay_; +}; + +class TestingWebSocketDispatcherHost : public WebSocketDispatcherHost { + public: + TestingWebSocketDispatcherHost( + int process_id, + const GetRequestContextCallback& get_context_callback, + const WebSocketHostFactory& websocket_host_factory) + : WebSocketDispatcherHost(process_id, + get_context_callback, + websocket_host_factory) {} + + // This is needed because BrowserMessageFilter::Send() tries post the task to + // the IO thread, which doesn't exist in the context of these tests. + bool Send(IPC::Message* message) override { + delete message; + return true; + } + + using WebSocketDispatcherHost::num_pending_connections; + using WebSocketDispatcherHost::num_failed_connections; + using WebSocketDispatcherHost::num_succeeded_connections; + + private: + ~TestingWebSocketDispatcherHost() override {} +}; + +class WebSocketDispatcherHostTest : public ::testing::Test { + public: + WebSocketDispatcherHostTest() + : next_routing_id_(123), + weak_ptr_factory_(this) { + dispatcher_host_ = new TestingWebSocketDispatcherHost( + kMagicRenderProcessId, + base::Bind(&WebSocketDispatcherHostTest::OnGetRequestContext, + base::Unretained(this)), + base::Bind(&WebSocketDispatcherHostTest::CreateWebSocketHost, + base::Unretained(this))); + } + + ~WebSocketDispatcherHostTest() override { + // We need to invalidate the issued WeakPtrs at the beginning of the + // destructor in order not to access destructed member variables. + weak_ptr_factory_.InvalidateWeakPtrs(); + } + + void GoAway(int routing_id) { + gone_hosts_.push_back(routing_id); + } + + base::WeakPtr<WebSocketDispatcherHostTest> GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); + } + + protected: + // Adds |n| connections. Returns true if succeeded. + bool AddMultipleChannels(int number_of_channels) { + for (int i = 0; i < number_of_channels; ++i) { + int routing_id = next_routing_id_++; + + WebSocketHostMsg_AddChannelRequest_Params params; + params.socket_url = GURL("ws://example.com/test"); + params.origin = url::Origin(GURL("http://example.com")); + params.first_party_for_cookies = GURL("http://example.com"); + params.user_agent_override = ""; + params.render_frame_id = -3; + + WebSocketHostMsg_AddChannelRequest message(routing_id, params); + if (!dispatcher_host_->OnMessageReceived(message)) + return false; + } + + return true; + } + + // Adds and cancels |n| connections. Returns true if succeeded. + bool AddAndCancelMultipleChannels(int number_of_channels) { + for (int i = 0; i < number_of_channels; ++i) { + int routing_id = next_routing_id_++; + + WebSocketHostMsg_AddChannelRequest_Params params; + params.socket_url = GURL("ws://example.com/test"); + params.origin = url::Origin(GURL("http://example.com")); + params.first_party_for_cookies = GURL("http://example.com"); + params.user_agent_override = ""; + params.render_frame_id = -3; + + WebSocketHostMsg_AddChannelRequest messageAddChannelRequest( + routing_id, params); + if (!dispatcher_host_->OnMessageReceived(messageAddChannelRequest)) + return false; + + WebSocketMsg_DropChannel messageDropChannel( + routing_id, false, net::kWebSocketErrorAbnormalClosure, ""); + if (!dispatcher_host_->OnMessageReceived(messageDropChannel)) + return false; + } + + return true; + } + + scoped_refptr<TestingWebSocketDispatcherHost> dispatcher_host_; + + // Stores allocated MockWebSocketHost instances. Doesn't take ownership of + // them. + std::vector<MockWebSocketHost*> mock_hosts_; + std::vector<int> gone_hosts_; + + private: + net::URLRequestContext* OnGetRequestContext() { + return NULL; + } + + WebSocketHost* CreateWebSocketHost(int routing_id, base::TimeDelta delay) { + MockWebSocketHost* host = new MockWebSocketHost( + routing_id, dispatcher_host_.get(), NULL, delay, this); + mock_hosts_.push_back(host); + return host; + } + + base::MessageLoop message_loop_; + + int next_routing_id_; + + base::WeakPtrFactory<WebSocketDispatcherHostTest> weak_ptr_factory_; +}; + +MockWebSocketHost::MockWebSocketHost( + int routing_id, + WebSocketDispatcherHost* dispatcher, + net::URLRequestContext* url_request_context, + base::TimeDelta delay, + WebSocketDispatcherHostTest* owner) + : WebSocketHost(routing_id, dispatcher, url_request_context, delay), + owner_(owner->GetWeakPtr()), + delay_(delay) {} + +void MockWebSocketHost::GoAway() { + if (owner_) + owner_->GoAway(routing_id()); +} + +TEST_F(WebSocketDispatcherHostTest, Construct) { + // Do nothing. +} + +TEST_F(WebSocketDispatcherHostTest, UnrelatedMessage) { + IPC::Message message; + EXPECT_FALSE(dispatcher_host_->OnMessageReceived(message)); +} + +TEST_F(WebSocketDispatcherHostTest, RenderProcessIdGetter) { + EXPECT_EQ(kMagicRenderProcessId, dispatcher_host_->render_process_id()); +} + +TEST_F(WebSocketDispatcherHostTest, AddChannelRequest) { + int routing_id = 123; + std::vector<std::string> requested_protocols; + requested_protocols.push_back("hello"); + + WebSocketHostMsg_AddChannelRequest_Params params; + params.socket_url = GURL("ws://example.com/test"); + params.requested_protocols = requested_protocols; + params.origin = url::Origin(GURL("http://example.com")); + params.first_party_for_cookies = GURL("http://example.com"); + params.user_agent_override = ""; + params.render_frame_id = -2; + + WebSocketHostMsg_AddChannelRequest message(routing_id, params); + + ASSERT_TRUE(dispatcher_host_->OnMessageReceived(message)); + + ASSERT_EQ(1U, mock_hosts_.size()); + MockWebSocketHost* host = mock_hosts_[0]; + + ASSERT_EQ(1U, host->received_messages_.size()); + const IPC::Message& forwarded_message = host->received_messages_[0]; + EXPECT_EQ(WebSocketHostMsg_AddChannelRequest::ID, forwarded_message.type()); + EXPECT_EQ(routing_id, forwarded_message.routing_id()); +} + +TEST_F(WebSocketDispatcherHostTest, SendFrameButNoHostYet) { + int routing_id = 123; + std::vector<char> data; + WebSocketMsg_SendFrame message( + routing_id, true, WEB_SOCKET_MESSAGE_TYPE_TEXT, data); + + // Expected to be ignored. + EXPECT_TRUE(dispatcher_host_->OnMessageReceived(message)); + + EXPECT_EQ(0U, mock_hosts_.size()); +} + +TEST_F(WebSocketDispatcherHostTest, SendFrame) { + int routing_id = 123; + + std::vector<std::string> requested_protocols; + requested_protocols.push_back("hello"); + + WebSocketHostMsg_AddChannelRequest_Params params; + params.socket_url = GURL("ws://example.com/test"); + params.requested_protocols = requested_protocols; + params.origin = url::Origin(GURL("http://example.com")); + params.first_party_for_cookies = GURL("http://example.com"); + params.user_agent_override = ""; + params.render_frame_id = -2; + + WebSocketHostMsg_AddChannelRequest add_channel_message(routing_id, params); + + ASSERT_TRUE(dispatcher_host_->OnMessageReceived(add_channel_message)); + + std::vector<char> data; + WebSocketMsg_SendFrame send_frame_message( + routing_id, true, WEB_SOCKET_MESSAGE_TYPE_TEXT, data); + + EXPECT_TRUE(dispatcher_host_->OnMessageReceived(send_frame_message)); + + ASSERT_EQ(1U, mock_hosts_.size()); + MockWebSocketHost* host = mock_hosts_[0]; + + ASSERT_EQ(2U, host->received_messages_.size()); + { + const IPC::Message& forwarded_message = host->received_messages_[0]; + EXPECT_EQ(WebSocketHostMsg_AddChannelRequest::ID, forwarded_message.type()); + EXPECT_EQ(routing_id, forwarded_message.routing_id()); + } + { + const IPC::Message& forwarded_message = host->received_messages_[1]; + EXPECT_EQ(WebSocketMsg_SendFrame::ID, forwarded_message.type()); + EXPECT_EQ(routing_id, forwarded_message.routing_id()); + } +} + +TEST_F(WebSocketDispatcherHostTest, Destruct) { + WebSocketHostMsg_AddChannelRequest_Params params1; + params1.socket_url = GURL("ws://example.com/test"); + params1.requested_protocols = std::vector<std::string>(); + params1.origin = url::Origin(GURL("http://example.com")); + params1.first_party_for_cookies = GURL("http://example.com"); + params1.user_agent_override = ""; + params1.render_frame_id = -1; + + WebSocketHostMsg_AddChannelRequest message1(123, params1); + + WebSocketHostMsg_AddChannelRequest_Params params2; + params2.socket_url = GURL("ws://example.com/test2"); + params2.requested_protocols = std::vector<std::string>(); + params2.origin = url::Origin(GURL("http://example.com")); + params2.first_party_for_cookies = GURL("http://example.com"); + params2.user_agent_override = ""; + params2.render_frame_id = -1; + + WebSocketHostMsg_AddChannelRequest message2(456, params2); + + ASSERT_TRUE(dispatcher_host_->OnMessageReceived(message1)); + ASSERT_TRUE(dispatcher_host_->OnMessageReceived(message2)); + + ASSERT_EQ(2u, mock_hosts_.size()); + + mock_hosts_.clear(); + dispatcher_host_ = NULL; + + ASSERT_EQ(2u, gone_hosts_.size()); + // The gone_hosts_ ordering is not predictable because it depends on the + // hash_map ordering. + std::sort(gone_hosts_.begin(), gone_hosts_.end()); + EXPECT_EQ(123, gone_hosts_[0]); + EXPECT_EQ(456, gone_hosts_[1]); +} + +TEST_F(WebSocketDispatcherHostTest, DelayFor4thPendingConnectionIsZero) { + ASSERT_TRUE(AddMultipleChannels(4)); + + EXPECT_EQ(4, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(0, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); + + ASSERT_EQ(4U, mock_hosts_.size()); + EXPECT_EQ(base::TimeDelta(), mock_hosts_[3]->delay_); +} + +TEST_F(WebSocketDispatcherHostTest, DelayFor8thPendingConnectionIsNonZero) { + ASSERT_TRUE(AddMultipleChannels(8)); + + EXPECT_EQ(8, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(0, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); + + ASSERT_EQ(8U, mock_hosts_.size()); + EXPECT_LT(base::TimeDelta(), mock_hosts_[7]->delay_); +} + +TEST_F(WebSocketDispatcherHostTest, DelayFor17thPendingConnection) { + ASSERT_TRUE(AddMultipleChannels(17)); + + EXPECT_EQ(17, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(0, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); + + ASSERT_EQ(17U, mock_hosts_.size()); + EXPECT_LE(base::TimeDelta::FromMilliseconds(1000), mock_hosts_[16]->delay_); + EXPECT_GE(base::TimeDelta::FromMilliseconds(5000), mock_hosts_[16]->delay_); +} + +// The 256th connection is rejected by per-renderer WebSocket throttling. +// This is not counted as a failure. +TEST_F(WebSocketDispatcherHostTest, Rejects256thPendingConnection) { + ASSERT_TRUE(AddMultipleChannels(256)); + + EXPECT_EQ(255, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(0, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); + + ASSERT_EQ(255U, mock_hosts_.size()); +} + +TEST_F(WebSocketDispatcherHostTest, DelayIsZeroAfter3FailedConnections) { + ASSERT_TRUE(AddAndCancelMultipleChannels(3)); + + EXPECT_EQ(0, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(3, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); + + ASSERT_TRUE(AddMultipleChannels(1)); + + ASSERT_EQ(4U, mock_hosts_.size()); + EXPECT_EQ(base::TimeDelta(), mock_hosts_[3]->delay_); +} + +TEST_F(WebSocketDispatcherHostTest, DelayIsNonZeroAfter7FailedConnections) { + ASSERT_TRUE(AddAndCancelMultipleChannels(7)); + + EXPECT_EQ(0, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(7, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); + + ASSERT_TRUE(AddMultipleChannels(1)); + + ASSERT_EQ(8U, mock_hosts_.size()); + EXPECT_LT(base::TimeDelta(), mock_hosts_[7]->delay_); +} + +TEST_F(WebSocketDispatcherHostTest, DelayAfter16FailedConnections) { + ASSERT_TRUE(AddAndCancelMultipleChannels(16)); + + EXPECT_EQ(0, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(16, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); + + ASSERT_TRUE(AddMultipleChannels(1)); + + ASSERT_EQ(17U, mock_hosts_.size()); + EXPECT_LE(base::TimeDelta::FromMilliseconds(1000), mock_hosts_[16]->delay_); + EXPECT_GE(base::TimeDelta::FromMilliseconds(5000), mock_hosts_[16]->delay_); +} + +TEST_F(WebSocketDispatcherHostTest, NotRejectedAfter255FailedConnections) { + ASSERT_TRUE(AddAndCancelMultipleChannels(255)); + + EXPECT_EQ(0, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(255, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); + + ASSERT_TRUE(AddMultipleChannels(1)); + + EXPECT_EQ(1, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(255, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); +} + +// This is a regression test for https://crrev.com/998173003/. +TEST_F(WebSocketDispatcherHostTest, InvalidScheme) { + int routing_id = 123; + + std::vector<std::string> requested_protocols; + requested_protocols.push_back("hello"); + + WebSocketHostMsg_AddChannelRequest_Params params; + params.socket_url = GURL("http://example.com/test"); + params.requested_protocols = requested_protocols; + params.origin = url::Origin(GURL("http://example.com")); + params.first_party_for_cookies = GURL("http://example.com"); + params.user_agent_override = ""; + params.render_frame_id = -2; + + WebSocketHostMsg_AddChannelRequest message(routing_id, params); + + ASSERT_TRUE(dispatcher_host_->OnMessageReceived(message)); + + ASSERT_EQ(1U, mock_hosts_.size()); + MockWebSocketHost* host = mock_hosts_[0]; + + // Tests that WebSocketHost::OnMessageReceived() doesn't cause a crash and + // the connection with an invalid scheme fails here. + // We call WebSocketHost::OnMessageReceived() here explicitly because + // MockWebSocketHost does not call WebSocketHost::OnMessageReceived() for + // WebSocketHostMsg_AddChannelRequest. + host->WebSocketHost::OnMessageReceived(message); + + EXPECT_EQ(0, dispatcher_host_->num_pending_connections()); + EXPECT_EQ(1, dispatcher_host_->num_failed_connections()); + EXPECT_EQ(0, dispatcher_host_->num_succeeded_connections()); +} + +} // namespace +} // namespace content
diff --git a/content/browser/renderer_host/websocket_host.cc b/content/browser/renderer_host/websocket_host.cc new file mode 100644 index 0000000..513789a --- /dev/null +++ b/content/browser/renderer_host/websocket_host.cc
@@ -0,0 +1,606 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/browser/renderer_host/websocket_host.h" + +#include <inttypes.h> + +#include <utility> + +#include "base/bind.h" +#include "base/bind_helpers.h" +#include "base/location.h" +#include "base/logging.h" +#include "base/macros.h" +#include "base/memory/ptr_util.h" +#include "base/single_thread_task_runner.h" +#include "base/strings/string_util.h" +#include "base/strings/stringprintf.h" +#include "base/threading/thread_task_runner_handle.h" +#include "content/browser/bad_message.h" +#include "content/browser/renderer_host/websocket_blob_sender.h" +#include "content/browser/renderer_host/websocket_dispatcher_host.h" +#include "content/browser/ssl/ssl_error_handler.h" +#include "content/browser/ssl/ssl_manager.h" +#include "content/common/websocket_messages.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/render_frame_host.h" +#include "content/public/browser/storage_partition.h" +#include "ipc/ipc_message_macros.h" +#include "net/base/net_errors.h" +#include "net/http/http_request_headers.h" +#include "net/http/http_response_headers.h" +#include "net/http/http_util.h" +#include "net/ssl/ssl_info.h" +#include "net/websockets/websocket_channel.h" +#include "net/websockets/websocket_errors.h" +#include "net/websockets/websocket_event_interface.h" +#include "net/websockets/websocket_frame.h" // for WebSocketFrameHeader::OpCode +#include "net/websockets/websocket_handshake_request_info.h" +#include "net/websockets/websocket_handshake_response_info.h" +#include "url/origin.h" + +namespace content { + +namespace { + +typedef net::WebSocketEventInterface::ChannelState ChannelState; + +// Convert a content::WebSocketMessageType to a +// net::WebSocketFrameHeader::OpCode +net::WebSocketFrameHeader::OpCode MessageTypeToOpCode( + WebSocketMessageType type) { + DCHECK(type == WEB_SOCKET_MESSAGE_TYPE_CONTINUATION || + type == WEB_SOCKET_MESSAGE_TYPE_TEXT || + type == WEB_SOCKET_MESSAGE_TYPE_BINARY); + typedef net::WebSocketFrameHeader::OpCode OpCode; + // These compile asserts verify that the same underlying values are used for + // both types, so we can simply cast between them. + static_assert(static_cast<OpCode>(WEB_SOCKET_MESSAGE_TYPE_CONTINUATION) == + net::WebSocketFrameHeader::kOpCodeContinuation, + "enum values must match for opcode continuation"); + static_assert(static_cast<OpCode>(WEB_SOCKET_MESSAGE_TYPE_TEXT) == + net::WebSocketFrameHeader::kOpCodeText, + "enum values must match for opcode text"); + static_assert(static_cast<OpCode>(WEB_SOCKET_MESSAGE_TYPE_BINARY) == + net::WebSocketFrameHeader::kOpCodeBinary, + "enum values must match for opcode binary"); + return static_cast<OpCode>(type); +} + +WebSocketMessageType OpCodeToMessageType( + net::WebSocketFrameHeader::OpCode opCode) { + DCHECK(opCode == net::WebSocketFrameHeader::kOpCodeContinuation || + opCode == net::WebSocketFrameHeader::kOpCodeText || + opCode == net::WebSocketFrameHeader::kOpCodeBinary); + // This cast is guaranteed valid by the static_assert() statements above. + return static_cast<WebSocketMessageType>(opCode); +} + +ChannelState StateCast(WebSocketDispatcherHost::WebSocketHostState host_state) { + const WebSocketDispatcherHost::WebSocketHostState WEBSOCKET_HOST_ALIVE = + WebSocketDispatcherHost::WEBSOCKET_HOST_ALIVE; + const WebSocketDispatcherHost::WebSocketHostState WEBSOCKET_HOST_DELETED = + WebSocketDispatcherHost::WEBSOCKET_HOST_DELETED; + + DCHECK(host_state == WEBSOCKET_HOST_ALIVE || + host_state == WEBSOCKET_HOST_DELETED); + // These compile asserts verify that we can get away with using static_cast<> + // for the conversion. + static_assert(static_cast<ChannelState>(WEBSOCKET_HOST_ALIVE) == + net::WebSocketEventInterface::CHANNEL_ALIVE, + "enum values must match for state_alive"); + static_assert(static_cast<ChannelState>(WEBSOCKET_HOST_DELETED) == + net::WebSocketEventInterface::CHANNEL_DELETED, + "enum values must match for state_deleted"); + return static_cast<ChannelState>(host_state); +} + +// Implementation of WebSocketBlobSender::Channel +class SendChannelImpl final : public WebSocketBlobSender::Channel { + public: + explicit SendChannelImpl(net::WebSocketChannel* channel) + : channel_(channel) {} + + // Implementation of WebSocketBlobSender::Channel + size_t GetSendQuota() const override { + return static_cast<size_t>(channel_->current_send_quota()); + } + + ChannelState SendFrame(bool fin, const std::vector<char>& data) override { + int opcode = first_frame_ ? net::WebSocketFrameHeader::kOpCodeBinary + : net::WebSocketFrameHeader::kOpCodeContinuation; + first_frame_ = false; + return channel_->SendFrame(fin, opcode, data); + } + + private: + net::WebSocketChannel* channel_; + bool first_frame_ = true; + + DISALLOW_COPY_AND_ASSIGN(SendChannelImpl); +}; + +} // namespace + +// Implementation of net::WebSocketEventInterface. Receives events from our +// WebSocketChannel object. Each event is translated to an IPC and sent to the +// renderer or child process via WebSocketDispatcherHost. +class WebSocketHost::WebSocketEventHandler final + : public net::WebSocketEventInterface { + public: + WebSocketEventHandler(WebSocketDispatcherHost* dispatcher, + WebSocketHost* host, + int routing_id, + int render_frame_id); + ~WebSocketEventHandler() override; + + // net::WebSocketEventInterface implementation + + ChannelState OnAddChannelResponse(const std::string& selected_subprotocol, + const std::string& extensions) override; + ChannelState OnDataFrame(bool fin, + WebSocketMessageType type, + const std::vector<char>& data) override; + ChannelState OnClosingHandshake() override; + ChannelState OnFlowControl(int64_t quota) override; + ChannelState OnDropChannel(bool was_clean, + uint16_t code, + const std::string& reason) override; + ChannelState OnFailChannel(const std::string& message) override; + ChannelState OnStartOpeningHandshake( + std::unique_ptr<net::WebSocketHandshakeRequestInfo> request) override; + ChannelState OnFinishOpeningHandshake( + std::unique_ptr<net::WebSocketHandshakeResponseInfo> response) override; + ChannelState OnSSLCertificateError( + std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> + callbacks, + const GURL& url, + const net::SSLInfo& ssl_info, + bool fatal) override; + + private: + class SSLErrorHandlerDelegate final : public SSLErrorHandler::Delegate { + public: + SSLErrorHandlerDelegate( + std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> + callbacks); + ~SSLErrorHandlerDelegate() override; + + base::WeakPtr<SSLErrorHandler::Delegate> GetWeakPtr(); + + // SSLErrorHandler::Delegate methods + void CancelSSLRequest(int error, const net::SSLInfo* ssl_info) override; + void ContinueSSLRequest() override; + + private: + std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> callbacks_; + base::WeakPtrFactory<SSLErrorHandlerDelegate> weak_ptr_factory_; + + DISALLOW_COPY_AND_ASSIGN(SSLErrorHandlerDelegate); + }; + + WebSocketDispatcherHost* const dispatcher_; + WebSocketHost* const host_; + const int routing_id_; + const int render_frame_id_; + std::unique_ptr<SSLErrorHandlerDelegate> ssl_error_handler_delegate_; + + DISALLOW_COPY_AND_ASSIGN(WebSocketEventHandler); +}; + +WebSocketHost::WebSocketEventHandler::WebSocketEventHandler( + WebSocketDispatcherHost* dispatcher, + WebSocketHost* host, + int routing_id, + int render_frame_id) + : dispatcher_(dispatcher), + host_(host), + routing_id_(routing_id), + render_frame_id_(render_frame_id) {} + +WebSocketHost::WebSocketEventHandler::~WebSocketEventHandler() { + DVLOG(1) << "WebSocketEventHandler destroyed routing_id=" << routing_id_; +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnAddChannelResponse( + const std::string& selected_protocol, + const std::string& extensions) { + DVLOG(3) << "WebSocketEventHandler::OnAddChannelResponse" + << " routing_id=" << routing_id_ + << " selected_protocol=\"" << selected_protocol << "\"" + << " extensions=\"" << extensions << "\""; + + return StateCast(dispatcher_->SendAddChannelResponse( + routing_id_, selected_protocol, extensions)); +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnDataFrame( + bool fin, + net::WebSocketFrameHeader::OpCode type, + const std::vector<char>& data) { + DVLOG(3) << "WebSocketEventHandler::OnDataFrame" + << " routing_id=" << routing_id_ << " fin=" << fin + << " type=" << type << " data is " << data.size() << " bytes"; + + return StateCast(dispatcher_->SendFrame(routing_id_, fin, + OpCodeToMessageType(type), data)); +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnClosingHandshake() { + DVLOG(3) << "WebSocketEventHandler::OnClosingHandshake" + << " routing_id=" << routing_id_; + + return StateCast(dispatcher_->NotifyClosingHandshake(routing_id_)); +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnFlowControl( + int64_t quota) { + DVLOG(3) << "WebSocketEventHandler::OnFlowControl" + << " routing_id=" << routing_id_ << " quota=" << quota; + + if (host_->blob_sender_) + host_->blob_sender_->OnNewSendQuota(); + return StateCast(dispatcher_->SendFlowControl(routing_id_, quota)); +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnDropChannel( + bool was_clean, + uint16_t code, + const std::string& reason) { + DVLOG(3) << "WebSocketEventHandler::OnDropChannel" + << " routing_id=" << routing_id_ << " was_clean=" << was_clean + << " code=" << code << " reason=\"" << reason << "\""; + + return StateCast( + dispatcher_->DoDropChannel(routing_id_, was_clean, code, reason)); +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnFailChannel( + const std::string& message) { + DVLOG(3) << "WebSocketEventHandler::OnFailChannel" + << " routing_id=" << routing_id_ << " message=\"" << message << "\""; + + return StateCast(dispatcher_->NotifyFailure(routing_id_, message)); +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnStartOpeningHandshake( + std::unique_ptr<net::WebSocketHandshakeRequestInfo> request) { + bool should_send = dispatcher_->CanReadRawCookies(); + DVLOG(3) << "WebSocketEventHandler::OnStartOpeningHandshake " + << "should_send=" << should_send; + + if (!should_send) + return WebSocketEventInterface::CHANNEL_ALIVE; + + WebSocketHandshakeRequest request_to_pass; + request_to_pass.url.Swap(&request->url); + net::HttpRequestHeaders::Iterator it(request->headers); + while (it.GetNext()) + request_to_pass.headers.push_back(std::make_pair(it.name(), it.value())); + request_to_pass.headers_text = + base::StringPrintf("GET %s HTTP/1.1\r\n", + request_to_pass.url.spec().c_str()) + + request->headers.ToString(); + request_to_pass.request_time = request->request_time; + + return StateCast( + dispatcher_->NotifyStartOpeningHandshake(routing_id_, request_to_pass)); +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnFinishOpeningHandshake( + std::unique_ptr<net::WebSocketHandshakeResponseInfo> response) { + bool should_send = dispatcher_->CanReadRawCookies(); + DVLOG(3) << "WebSocketEventHandler::OnFinishOpeningHandshake " + << "should_send=" << should_send; + + if (!should_send) + return WebSocketEventInterface::CHANNEL_ALIVE; + + WebSocketHandshakeResponse response_to_pass; + response_to_pass.url.Swap(&response->url); + response_to_pass.status_code = response->status_code; + response_to_pass.status_text.swap(response->status_text); + size_t iter = 0; + std::string name, value; + while (response->headers->EnumerateHeaderLines(&iter, &name, &value)) + response_to_pass.headers.push_back(std::make_pair(name, value)); + response_to_pass.headers_text = + net::HttpUtil::ConvertHeadersBackToHTTPResponse( + response->headers->raw_headers()); + response_to_pass.response_time = response->response_time; + + return StateCast( + dispatcher_->NotifyFinishOpeningHandshake(routing_id_, response_to_pass)); +} + +ChannelState WebSocketHost::WebSocketEventHandler::OnSSLCertificateError( + std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> callbacks, + const GURL& url, + const net::SSLInfo& ssl_info, + bool fatal) { + DVLOG(3) << "WebSocketEventHandler::OnSSLCertificateError" + << " routing_id=" << routing_id_ << " url=" << url.spec() + << " cert_status=" << ssl_info.cert_status << " fatal=" << fatal; + ssl_error_handler_delegate_.reset( + new SSLErrorHandlerDelegate(std::move(callbacks))); + SSLManager::OnSSLCertificateSubresourceError( + ssl_error_handler_delegate_->GetWeakPtr(), url, + dispatcher_->render_process_id(), render_frame_id_, ssl_info, fatal); + // The above method is always asynchronous. + return WebSocketEventInterface::CHANNEL_ALIVE; +} + +WebSocketHost::WebSocketEventHandler::SSLErrorHandlerDelegate:: + SSLErrorHandlerDelegate( + std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> + callbacks) + : callbacks_(std::move(callbacks)), weak_ptr_factory_(this) {} + +WebSocketHost::WebSocketEventHandler::SSLErrorHandlerDelegate:: + ~SSLErrorHandlerDelegate() {} + +base::WeakPtr<SSLErrorHandler::Delegate> +WebSocketHost::WebSocketEventHandler::SSLErrorHandlerDelegate::GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); +} + +void WebSocketHost::WebSocketEventHandler::SSLErrorHandlerDelegate:: + CancelSSLRequest(int error, const net::SSLInfo* ssl_info) { + DVLOG(3) << "SSLErrorHandlerDelegate::CancelSSLRequest" + << " error=" << error + << " cert_status=" << (ssl_info ? ssl_info->cert_status + : static_cast<net::CertStatus>(-1)); + callbacks_->CancelSSLRequest(error, ssl_info); +} + +void WebSocketHost::WebSocketEventHandler::SSLErrorHandlerDelegate:: + ContinueSSLRequest() { + DVLOG(3) << "SSLErrorHandlerDelegate::ContinueSSLRequest"; + callbacks_->ContinueSSLRequest(); +} + +WebSocketHost::WebSocketHost(int routing_id, + WebSocketDispatcherHost* dispatcher, + net::URLRequestContext* url_request_context, + base::TimeDelta delay) + : dispatcher_(dispatcher), + url_request_context_(url_request_context), + routing_id_(routing_id), + delay_(delay), + pending_flow_control_quota_(0), + handshake_succeeded_(false), + weak_ptr_factory_(this) { + DVLOG(1) << "WebSocketHost: created routing_id=" << routing_id; +} + +WebSocketHost::~WebSocketHost() {} + +void WebSocketHost::GoAway() { + OnDropChannel(false, static_cast<uint16_t>(net::kWebSocketErrorGoingAway), + ""); +} + +bool WebSocketHost::OnMessageReceived(const IPC::Message& message) { + bool handled = true; + IPC_BEGIN_MESSAGE_MAP(WebSocketHost, message) + IPC_MESSAGE_HANDLER(WebSocketHostMsg_AddChannelRequest, OnAddChannelRequest) + IPC_MESSAGE_HANDLER(WebSocketHostMsg_SendBlob, OnSendBlob) + IPC_MESSAGE_HANDLER(WebSocketMsg_SendFrame, OnSendFrame) + IPC_MESSAGE_HANDLER(WebSocketMsg_FlowControl, OnFlowControl) + IPC_MESSAGE_HANDLER(WebSocketMsg_DropChannel, OnDropChannel) + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + return handled; +} + +void WebSocketHost::OnAddChannelRequest( + const WebSocketHostMsg_AddChannelRequest_Params& params) { + DVLOG(3) << "WebSocketHost::OnAddChannelRequest" + << " routing_id=" << routing_id_ << " socket_url=\"" + << params.socket_url << "\" requested_protocols=\"" + << base::JoinString(params.requested_protocols, ", ") + << "\" origin=\"" << params.origin + << "\" first_party_for_cookies=\"" + << params.first_party_for_cookies << "\" user_agent_override=\"" + << params.user_agent_override + << "\""; + + DCHECK(!channel_); + if (delay_ > base::TimeDelta()) { + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, + base::Bind(&WebSocketHost::AddChannel, weak_ptr_factory_.GetWeakPtr(), + params.socket_url, params.requested_protocols, + params.origin, params.first_party_for_cookies, + params.user_agent_override, params.render_frame_id), + delay_); + } else { + AddChannel( + params.socket_url, params.requested_protocols, params.origin, + params.first_party_for_cookies, params.user_agent_override, + params.render_frame_id); + } + // |this| may have been deleted here. +} + +void WebSocketHost::AddChannel( + const GURL& socket_url, + const std::vector<std::string>& requested_protocols, + const url::Origin& origin, + const GURL& first_party_for_cookies, + const std::string& user_agent_override, + int render_frame_id) { + DVLOG(3) << "WebSocketHost::AddChannel" + << " routing_id=" << routing_id_ << " socket_url=\"" << socket_url + << "\" requested_protocols=\"" + << base::JoinString(requested_protocols, ", ") << "\" origin=\"" + << origin << "\" first_party_for_cookies=\"" + << first_party_for_cookies << "\" user_agent_override=\"" + << user_agent_override << "\""; + + DCHECK(!channel_); + + std::unique_ptr<net::WebSocketEventInterface> event_interface( + new WebSocketEventHandler(dispatcher_, this, routing_id_, + render_frame_id)); + channel_.reset(new net::WebSocketChannel(std::move(event_interface), + url_request_context_)); + + if (pending_flow_control_quota_ > 0) { + // channel_->SendFlowControl(pending_flow_control_quota_) must be called + // after channel_->SendAddChannelRequest() below. + // We post OnFlowControl() here using |weak_ptr_factory_| instead of + // calling SendFlowControl directly, because |this| may have been deleted + // after channel_->SendAddChannelRequest(). + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::Bind(&WebSocketHost::OnFlowControl, + weak_ptr_factory_.GetWeakPtr(), + pending_flow_control_quota_)); + pending_flow_control_quota_ = 0; + } + + std::string additional_headers; + if (user_agent_override != "") { + if (!net::HttpUtil::IsValidHeaderValue(user_agent_override)) { + bad_message::ReceivedBadMessage( + dispatcher_, bad_message::WSH_INVALID_HEADER_VALUE); + return; + } + additional_headers = base::StringPrintf("%s:%s", + net::HttpRequestHeaders::kUserAgent, + user_agent_override.c_str()); + } + channel_->SendAddChannelRequest( + socket_url, requested_protocols, origin, first_party_for_cookies, + additional_headers); + // |this| may have been deleted here. +} + +void WebSocketHost::OnSendBlob(const std::string& uuid, + uint64_t expected_size) { + DVLOG(3) << "WebSocketHost::OnSendBlob" + << " routing_id=" << routing_id_ << " uuid=" << uuid + << " expected_size=" << expected_size; + + DCHECK(channel_); + if (blob_sender_) { + bad_message::ReceivedBadMessage( + dispatcher_, bad_message::WSH_SEND_BLOB_DURING_BLOB_SEND); + return; + } + blob_sender_.reset(new WebSocketBlobSender( + base::WrapUnique(new SendChannelImpl(channel_.get())))); + StoragePartition* partition = dispatcher_->storage_partition(); + storage::FileSystemContext* file_system_context = + partition->GetFileSystemContext(); + + net::WebSocketEventInterface::ChannelState channel_state = + net::WebSocketEventInterface::CHANNEL_ALIVE; + + // This use of base::Unretained is safe because the WebSocketBlobSender object + // is owned by this object and will not call it back after destruction. + int rv = blob_sender_->Start( + uuid, expected_size, dispatcher_->blob_storage_context(), + file_system_context, + BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE).get(), + &channel_state, + base::Bind(&WebSocketHost::BlobSendComplete, base::Unretained(this))); + if (channel_state == net::WebSocketEventInterface::CHANNEL_ALIVE && + rv != net::ERR_IO_PENDING) + BlobSendComplete(rv); + // |this| may be destroyed here. +} + +void WebSocketHost::OnSendFrame(bool fin, + WebSocketMessageType type, + const std::vector<char>& data) { + DVLOG(3) << "WebSocketHost::OnSendFrame" + << " routing_id=" << routing_id_ << " fin=" << fin + << " type=" << type << " data is " << data.size() << " bytes"; + + DCHECK(channel_); + if (blob_sender_) { + bad_message::ReceivedBadMessage( + dispatcher_, bad_message::WSH_SEND_FRAME_DURING_BLOB_SEND); + return; + } + channel_->SendFrame(fin, MessageTypeToOpCode(type), data); +} + +void WebSocketHost::OnFlowControl(int64_t quota) { + DVLOG(3) << "WebSocketHost::OnFlowControl" + << " routing_id=" << routing_id_ << " quota=" << quota; + + if (!channel_) { + // WebSocketChannel is not yet created due to the delay introduced by + // per-renderer WebSocket throttling. + // SendFlowControl() is called after WebSocketChannel is created. + pending_flow_control_quota_ += quota; + return; + } + + ignore_result(channel_->SendFlowControl(quota)); +} + +void WebSocketHost::OnDropChannel(bool was_clean, + uint16_t code, + const std::string& reason) { + DVLOG(3) << "WebSocketHost::OnDropChannel" + << " routing_id=" << routing_id_ << " was_clean=" << was_clean + << " code=" << code << " reason=\"" << reason << "\""; + + if (!channel_) { + // WebSocketChannel is not yet created due to the delay introduced by + // per-renderer WebSocket throttling. + WebSocketDispatcherHost::WebSocketHostState result = + dispatcher_->DoDropChannel(routing_id_, false, + net::kWebSocketErrorAbnormalClosure, ""); + DCHECK_EQ(WebSocketDispatcherHost::WEBSOCKET_HOST_DELETED, result); + return; + } + + blob_sender_.reset(); + // TODO(yhirano): Handle |was_clean| appropriately. + ignore_result(channel_->StartClosingHandshake(code, reason)); +} + +void WebSocketHost::BlobSendComplete(int result) { + DVLOG(3) << "WebSocketHost::BlobSendComplete" + << " routing_id=" << routing_id_ + << " result=" << net::ErrorToString(result); + + // All paths through this method must reset blob_sender_, so take ownership + // at the beginning. + std::unique_ptr<WebSocketBlobSender> blob_sender(std::move(blob_sender_)); + switch (result) { + case net::OK: + ignore_result(dispatcher_->BlobSendComplete(routing_id_)); + // |this| may be destroyed here. + return; + + case net::ERR_UPLOAD_FILE_CHANGED: { + uint64_t expected_size = blob_sender->expected_size(); + uint64_t actual_size = blob_sender->ActualSize(); + if (expected_size != actual_size) { + ignore_result(dispatcher_->NotifyFailure( + routing_id_, + base::StringPrintf("Blob size mismatch; renderer size = %" PRIu64 + ", browser size = %" PRIu64, + expected_size, actual_size))); + // |this| is destroyed here. + return; + } // else fallthrough + } + + default: + ignore_result(dispatcher_->NotifyFailure( + routing_id_, + "Failed to load Blob: error code = " + net::ErrorToString(result))); + // |this| is destroyed here. + return; + } +} + +} // namespace content
diff --git a/content/browser/renderer_host/websocket_host.h b/content/browser/renderer_host/websocket_host.h new file mode 100644 index 0000000..3488ef0 --- /dev/null +++ b/content/browser/renderer_host/websocket_host.h
@@ -0,0 +1,126 @@ +// Copyright 2013 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_BROWSER_RENDERER_HOST_WEBSOCKET_HOST_H_ +#define CONTENT_BROWSER_RENDERER_HOST_WEBSOCKET_HOST_H_ + +#include <stdint.h> + +#include <memory> +#include <string> +#include <vector> + +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "base/time/time.h" +#include "content/common/content_export.h" +#include "content/common/websocket.h" + +class GURL; +struct WebSocketHostMsg_AddChannelRequest_Params; + +namespace url { +class Origin; +} // namespace url + +namespace net { +class WebSocketChannel; +class URLRequestContext; +} // namespace net + +namespace IPC { +class Message; +} // namespace IPC + +namespace content { + +class WebSocketBlobSender; +class WebSocketDispatcherHost; + +// Host of net::WebSocketChannel. The lifetime of an instance of this class is +// completely controlled by the WebSocketDispatcherHost object. +class CONTENT_EXPORT WebSocketHost { + public: + WebSocketHost(int routing_id, + WebSocketDispatcherHost* dispatcher, + net::URLRequestContext* url_request_context, + base::TimeDelta delay); + virtual ~WebSocketHost(); + + // The renderer process is going away. + // This function is virtual for testing. + virtual void GoAway(); + + // General message dispatch. WebSocketDispatcherHost::OnMessageReceived + // delegates to this method after looking up the |routing_id|. + virtual bool OnMessageReceived(const IPC::Message& message); + + int routing_id() const { return routing_id_; } + + bool handshake_succeeded() const { return handshake_succeeded_; } + void OnHandshakeSucceeded() { handshake_succeeded_ = true; } + + private: + class WebSocketEventHandler; + + // Handlers for each message type, dispatched by OnMessageReceived(), as + // defined in content/common/websocket_messages.h + + void OnAddChannelRequest( + const WebSocketHostMsg_AddChannelRequest_Params& request); + + void AddChannel(const GURL& socket_url, + const std::vector<std::string>& requested_protocols, + const url::Origin& origin, + const GURL& first_party_for_cookies, + const std::string& user_agent_override, + int render_frame_id); + + void OnSendBlob(const std::string& uuid, uint64_t expected_size); + + void OnSendFrame(bool fin, + WebSocketMessageType type, + const std::vector<char>& data); + + void OnFlowControl(int64_t quota); + + void OnDropChannel(bool was_clean, uint16_t code, const std::string& reason); + + void BlobSendComplete(int result); + + // non-NULL if and only if this object is currently in "blob sending mode". + std::unique_ptr<WebSocketBlobSender> blob_sender_; + + // The channel we use to send events to the network. + std::unique_ptr<net::WebSocketChannel> channel_; + + // The WebSocketHostDispatcher that created this object. + WebSocketDispatcherHost* const dispatcher_; + + // The URL request context for the channel. + net::URLRequestContext* const url_request_context_; + + // The ID used to route messages. + const int routing_id_; + + // Delay used for per-renderer WebSocket throttling. + base::TimeDelta delay_; + + // SendFlowControl() is delayed when OnFlowControl() is called before + // AddChannel() is called. + // Zero indicates there is no pending SendFlowControl(). + int64_t pending_flow_control_quota_; + + // handshake_succeeded_ is set and used by WebSocketDispatcherHost + // to manage counters for per-renderer WebSocket throttling. + bool handshake_succeeded_; + + base::WeakPtrFactory<WebSocketHost> weak_ptr_factory_; + + DISALLOW_COPY_AND_ASSIGN(WebSocketHost); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_RENDERER_HOST_WEBSOCKET_HOST_H_
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc index d66879da..add5865 100644 --- a/content/browser/service_worker/service_worker_browsertest.cc +++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -1115,8 +1115,11 @@ EXPECT_EQ("cache_name", response2.cache_storage_cache_name); } +// Disabled because console_listener->OnReportConsoleMessageOnUI() will be +// called before WaitForConsoleMessages() is called to set the expected number +// of messages. https://crbug.com/635599 IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest, - FetchEvent_respondWithRejection) { + DISABLED_FetchEvent_respondWithRejection) { ServiceWorkerFetchEventResult result; ServiceWorkerResponse response; std::unique_ptr<storage::BlobDataHandle> blob_data_handle;
diff --git a/content/browser/site_instance_impl_unittest.cc b/content/browser/site_instance_impl_unittest.cc index be2a3eea..895d9f7 100644 --- a/content/browser/site_instance_impl_unittest.cc +++ b/content/browser/site_instance_impl_unittest.cc
@@ -122,23 +122,22 @@ // calls StoragePartitionImplMap::PostCreateInitialization(), which posts // a task to the IO thread to create the AppCacheDatabase. Since the // message loop is not running, the AppCacheDatabase ends up getting - // created when DrainMessageLoops() gets called at the end of a test case. + // created when DrainMessageLoop() gets called at the end of a test case. // Immediately after, the test case ends and the AppCacheDatabase gets - // scheduled for deletion. Here, call DrainMessageLoops() again so the + // scheduled for deletion. Here, call DrainMessageLoop() again so the // AppCacheDatabase actually gets deleted. - DrainMessageLoops(); + DrainMessageLoop(); } void set_privileged_process_id(int process_id) { browser_client_.set_privileged_process_id(process_id); } - void DrainMessageLoops() { + void DrainMessageLoop() { // We don't just do this in TearDown() because we create TestBrowserContext // objects in each test, which will be destructed before // TearDown() is called. base::RunLoop().RunUntilIdle(); - message_loop_.RunUntilIdle(); } SiteInstanceTestBrowserClient* browser_client() { return &browser_client_; } @@ -206,7 +205,7 @@ // Make sure that we flush any messages related to the above WebContentsImpl // destruction. - DrainMessageLoops(); + DrainMessageLoop(); EXPECT_EQ(1, browser_client()->GetAndClearSiteInstanceDeleteCount()); EXPECT_EQ(1, browser_client()->GetAndClearBrowsingInstanceDeleteCount()); @@ -244,7 +243,7 @@ EXPECT_EQ(1, browser_client()->GetAndClearSiteInstanceDeleteCount()); EXPECT_EQ(1, browser_client()->GetAndClearBrowsingInstanceDeleteCount()); - DrainMessageLoops(); + DrainMessageLoop(); } // Test to ensure GetProcess returns and creates processes correctly. @@ -264,7 +263,7 @@ EXPECT_TRUE(host2.get() != nullptr); EXPECT_NE(host1.get(), host2.get()); - DrainMessageLoops(); + DrainMessageLoop(); } // Test to ensure SetSite and site() work properly. @@ -278,7 +277,7 @@ EXPECT_TRUE(instance->HasSite()); - DrainMessageLoops(); + DrainMessageLoop(); } // Test to ensure GetSiteForURL properly returns sites for URLs. @@ -381,7 +380,7 @@ site_url = SiteInstanceImpl::GetSiteForURL(nullptr, test_url); EXPECT_EQ(test_url, site_url); - DrainMessageLoops(); + DrainMessageLoop(); } // Test of distinguishing URLs from different sites. Most of this logic is @@ -422,7 +421,7 @@ EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, url_blank, url_foo_https)); EXPECT_FALSE(SiteInstance::IsSameWebSite(nullptr, url_blank, url_foo_port)); - DrainMessageLoops(); + DrainMessageLoop(); } // Test to ensure that there is only one SiteInstance per site in a given @@ -494,7 +493,7 @@ // browsing_instances will be deleted when their SiteInstances are deleted. // The processes will be unregistered when the RPH scoped_ptrs go away. - DrainMessageLoops(); + DrainMessageLoop(); } // Test to ensure that there is only one RenderProcessHost per site for an @@ -574,7 +573,7 @@ // browsing_instances will be deleted when their SiteInstances are deleted. // The processes will be unregistered when the RPH scoped_ptrs go away. - DrainMessageLoops(); + DrainMessageLoop(); } static scoped_refptr<SiteInstanceImpl> CreateSiteInstance( @@ -640,7 +639,7 @@ EXPECT_NE(webui1_instance->GetProcess(), hosts[i]); } - DrainMessageLoops(); + DrainMessageLoop(); // Disable the process limit override. RenderProcessHost::SetMaxRendererProcessCount(0u); @@ -702,7 +701,7 @@ EXPECT_TRUE( webui_instance2->HasWrongProcessForURL(GURL("http://google.com"))); - DrainMessageLoops(); + DrainMessageLoop(); } // Test to ensure that HasWrongProcessForURL behaves properly even when @@ -734,7 +733,7 @@ EXPECT_TRUE(instance->HasWrongProcessForURL(GURL("chrome://gpu"))); - DrainMessageLoops(); + DrainMessageLoop(); } // Test that we do not reuse a process in process-per-site mode if it has the @@ -774,7 +773,7 @@ EXPECT_TRUE(instance2->HasProcess()); EXPECT_NE(host.get(), host2.get()); - DrainMessageLoops(); + DrainMessageLoop(); } // Test that we do not register processes with empty sites for process-per-site @@ -795,7 +794,7 @@ EXPECT_FALSE(RenderProcessHostImpl::GetProcessHostForSite( browser_context.get(), GURL())); - DrainMessageLoops(); + DrainMessageLoop(); } TEST_F(SiteInstanceTest, DefaultSubframeSiteInstance) {
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc index 8212564..5ec546b 100644 --- a/content/browser/site_per_process_browsertest.cc +++ b/content/browser/site_per_process_browsertest.cc
@@ -6382,39 +6382,6 @@ EXPECT_FALSE(mixed_child->has_committed_real_load()); } -// Test that subresources with certificate errors that are redundant -// with the main page do not get reported to the browser. That is, if -// https://redundant.test frames https://a.com which frames -// https://redundant.test which loads an image with certificate errors, -// the browser doesn't care and doesn't need to know about the image's -// certificate errors because they are redundant with the main page -// load. -IN_PROC_BROWSER_TEST_F(SitePerProcessIgnoreCertErrorsBrowserTest, - SubresourceWithRedundantCertificateErrors) { - net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS); - https_server.ServeFilesFromSourceDirectory("content/test/data"); - ASSERT_TRUE(https_server.Start()); - SetupCrossSiteRedirector(&https_server); - - GURL url(https_server.GetURL( - "redundant.test", "/mixed-content/redundant-cert-error-in-iframe.html")); - EXPECT_TRUE(NavigateToURL(shell(), url)); - - NavigationEntry* entry = - shell()->web_contents()->GetController().GetLastCommittedEntry(); - ASSERT_TRUE(entry); - - // The main page was loaded with certificate errors. - EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN, - entry->GetSSL().security_style); - - // The image that the iframe loaded had certificate errors also, but - // they were redundant with the main resource, so the page should not - // be marked as displaying insecure content. - EXPECT_FALSE(entry->GetSSL().content_status & - SSLStatus::DISPLAYED_INSECURE_CONTENT); -} - // Test that subresources with certificate errors that are NOT redundant // with the main page DO get reported to the browser. That is, if // https://nonredundant.test frames https://a.com which loads an image
diff --git a/content/browser/ssl/ssl_policy.cc b/content/browser/ssl/ssl_policy.cc index a45e135..b962c593 100644 --- a/content/browser/ssl/ssl_policy.cc +++ b/content/browser/ssl/ssl_policy.cc
@@ -259,10 +259,4 @@ entry->GetURL(), entry->GetSSL().cert_id, entry->GetSSL().cert_status); } -void SSLPolicy::OriginRanInsecureContent(const std::string& origin, int pid) { - GURL parsed_origin(origin); - if (parsed_origin.SchemeIsCryptographic()) - backend_->HostRanInsecureContent(parsed_origin.host(), pid); -} - } // namespace content
diff --git a/content/browser/ssl/ssl_policy.h b/content/browser/ssl/ssl_policy.h index 8df01a1..93bd861 100644 --- a/content/browser/ssl/ssl_policy.h +++ b/content/browser/ssl/ssl_policy.h
@@ -83,9 +83,6 @@ // it with the default style for its URL. void InitializeEntryIfNeeded(NavigationEntryImpl* entry); - // Mark |origin| as having run insecure content in the process with ID |pid|. - void OriginRanInsecureContent(const std::string& origin, int pid); - // The backend we use to enact our decisions. SSLPolicyBackend* backend_;
diff --git a/content/browser/websockets/websocket_impl.cc b/content/browser/websockets/websocket_impl.cc deleted file mode 100644 index d391005..0000000 --- a/content/browser/websockets/websocket_impl.cc +++ /dev/null
@@ -1,536 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/browser/websockets/websocket_impl.h" - -#include <inttypes.h> - -#include <utility> - -#include "base/bind.h" -#include "base/bind_helpers.h" -#include "base/location.h" -#include "base/logging.h" -#include "base/macros.h" -#include "base/memory/ptr_util.h" -#include "base/single_thread_task_runner.h" -#include "base/strings/string_util.h" -#include "base/strings/stringprintf.h" -#include "base/threading/thread_task_runner_handle.h" -#include "content/browser/bad_message.h" -#include "content/browser/child_process_security_policy_impl.h" -#include "content/browser/ssl/ssl_error_handler.h" -#include "content/browser/ssl/ssl_manager.h" -#include "content/public/browser/storage_partition.h" -#include "ipc/ipc_message.h" -#include "net/base/net_errors.h" -#include "net/http/http_request_headers.h" -#include "net/http/http_response_headers.h" -#include "net/http/http_util.h" -#include "net/ssl/ssl_info.h" -#include "net/url_request/url_request_context_getter.h" -#include "net/websockets/websocket_channel.h" -#include "net/websockets/websocket_errors.h" -#include "net/websockets/websocket_event_interface.h" -#include "net/websockets/websocket_frame.h" // for WebSocketFrameHeader::OpCode -#include "net/websockets/websocket_handshake_request_info.h" -#include "net/websockets/websocket_handshake_response_info.h" -#include "url/origin.h" - -namespace content { -namespace { - -typedef net::WebSocketEventInterface::ChannelState ChannelState; - -// Convert a mojom::WebSocketMessageType to a -// net::WebSocketFrameHeader::OpCode -net::WebSocketFrameHeader::OpCode MessageTypeToOpCode( - mojom::WebSocketMessageType type) { - DCHECK(type == mojom::WebSocketMessageType::CONTINUATION || - type == mojom::WebSocketMessageType::TEXT || - type == mojom::WebSocketMessageType::BINARY); - typedef net::WebSocketFrameHeader::OpCode OpCode; - // These compile asserts verify that the same underlying values are used for - // both types, so we can simply cast between them. - static_assert( - static_cast<OpCode>(mojom::WebSocketMessageType::CONTINUATION) == - net::WebSocketFrameHeader::kOpCodeContinuation, - "enum values must match for opcode continuation"); - static_assert( - static_cast<OpCode>(mojom::WebSocketMessageType::TEXT) == - net::WebSocketFrameHeader::kOpCodeText, - "enum values must match for opcode text"); - static_assert( - static_cast<OpCode>(mojom::WebSocketMessageType::BINARY) == - net::WebSocketFrameHeader::kOpCodeBinary, - "enum values must match for opcode binary"); - return static_cast<OpCode>(type); -} - -mojom::WebSocketMessageType OpCodeToMessageType( - net::WebSocketFrameHeader::OpCode opCode) { - DCHECK(opCode == net::WebSocketFrameHeader::kOpCodeContinuation || - opCode == net::WebSocketFrameHeader::kOpCodeText || - opCode == net::WebSocketFrameHeader::kOpCodeBinary); - // This cast is guaranteed valid by the static_assert() statements above. - return static_cast<mojom::WebSocketMessageType>(opCode); -} - -} // namespace - -// Implementation of net::WebSocketEventInterface. Receives events from our -// WebSocketChannel object. -class WebSocketImpl::WebSocketEventHandler final - : public net::WebSocketEventInterface { - public: - explicit WebSocketEventHandler(WebSocketImpl* impl); - ~WebSocketEventHandler() override; - - // net::WebSocketEventInterface implementation - - ChannelState OnAddChannelResponse(const std::string& selected_subprotocol, - const std::string& extensions) override; - ChannelState OnDataFrame(bool fin, - WebSocketMessageType type, - const std::vector<char>& data) override; - ChannelState OnClosingHandshake() override; - ChannelState OnFlowControl(int64_t quota) override; - ChannelState OnDropChannel(bool was_clean, - uint16_t code, - const std::string& reason) override; - ChannelState OnFailChannel(const std::string& message) override; - ChannelState OnStartOpeningHandshake( - std::unique_ptr<net::WebSocketHandshakeRequestInfo> request) override; - ChannelState OnFinishOpeningHandshake( - std::unique_ptr<net::WebSocketHandshakeResponseInfo> response) override; - ChannelState OnSSLCertificateError( - std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> - callbacks, - const GURL& url, - const net::SSLInfo& ssl_info, - bool fatal) override; - - private: - class SSLErrorHandlerDelegate final : public SSLErrorHandler::Delegate { - public: - SSLErrorHandlerDelegate( - std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> - callbacks); - ~SSLErrorHandlerDelegate() override; - - base::WeakPtr<SSLErrorHandler::Delegate> GetWeakPtr(); - - // SSLErrorHandler::Delegate methods - void CancelSSLRequest(int error, const net::SSLInfo* ssl_info) override; - void ContinueSSLRequest() override; - - private: - std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> callbacks_; - base::WeakPtrFactory<SSLErrorHandlerDelegate> weak_ptr_factory_; - - DISALLOW_COPY_AND_ASSIGN(SSLErrorHandlerDelegate); - }; - - WebSocketImpl* const impl_; - std::unique_ptr<SSLErrorHandlerDelegate> ssl_error_handler_delegate_; - - DISALLOW_COPY_AND_ASSIGN(WebSocketEventHandler); -}; - -WebSocketImpl::WebSocketEventHandler::WebSocketEventHandler(WebSocketImpl* impl) - : impl_(impl) { - DVLOG(1) << "WebSocketEventHandler created @" - << reinterpret_cast<void*>(this); -} - -WebSocketImpl::WebSocketEventHandler::~WebSocketEventHandler() { - DVLOG(1) << "WebSocketEventHandler destroyed @" - << reinterpret_cast<void*>(this); -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnAddChannelResponse( - const std::string& selected_protocol, - const std::string& extensions) { - DVLOG(3) << "WebSocketEventHandler::OnAddChannelResponse @" - << reinterpret_cast<void*>(this) - << " selected_protocol=\"" << selected_protocol << "\"" - << " extensions=\"" << extensions << "\""; - - impl_->delegate_->OnReceivedResponseFromServer(impl_); - - impl_->client_->OnAddChannelResponse(selected_protocol, extensions); - - return net::WebSocketEventInterface::CHANNEL_ALIVE; -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnDataFrame( - bool fin, - net::WebSocketFrameHeader::OpCode type, - const std::vector<char>& data) { - DVLOG(3) << "WebSocketEventHandler::OnDataFrame @" - << reinterpret_cast<void*>(this) - << " fin=" << fin - << " type=" << type << " data is " << data.size() << " bytes"; - - // TODO(darin): Avoid this copy. - mojo::Array<uint8_t> data_to_pass(data.size()); - std::copy(data.begin(), data.end(), data_to_pass.begin()); - - impl_->client_->OnDataFrame(fin, OpCodeToMessageType(type), - std::move(data_to_pass)); - - return net::WebSocketEventInterface::CHANNEL_ALIVE; -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnClosingHandshake() { - DVLOG(3) << "WebSocketEventHandler::OnClosingHandshake @" - << reinterpret_cast<void*>(this); - - impl_->client_->OnClosingHandshake(); - - return net::WebSocketEventInterface::CHANNEL_ALIVE; -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnFlowControl( - int64_t quota) { - DVLOG(3) << "WebSocketEventHandler::OnFlowControl @" - << reinterpret_cast<void*>(this) - << " quota=" << quota; - - impl_->client_->OnFlowControl(quota); - - return net::WebSocketEventInterface::CHANNEL_ALIVE; -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnDropChannel( - bool was_clean, - uint16_t code, - const std::string& reason) { - DVLOG(3) << "WebSocketEventHandler::OnDropChannel @" - << reinterpret_cast<void*>(this) - << " was_clean=" << was_clean << " code=" << code - << " reason=\"" << reason << "\""; - - impl_->client_->OnDropChannel(was_clean, code, reason); - - // net::WebSocketChannel requires that we delete it at this point. - impl_->channel_.reset(); - - return net::WebSocketEventInterface::CHANNEL_DELETED; -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnFailChannel( - const std::string& message) { - DVLOG(3) << "WebSocketEventHandler::OnFailChannel @" - << reinterpret_cast<void*>(this) << " message=\"" << message << "\""; - - impl_->client_->OnFailChannel(message); - - // net::WebSocketChannel requires that we delete it at this point. - impl_->channel_.reset(); - - return net::WebSocketEventInterface::CHANNEL_DELETED; -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnStartOpeningHandshake( - std::unique_ptr<net::WebSocketHandshakeRequestInfo> request) { - bool should_send = - ChildProcessSecurityPolicyImpl::GetInstance()->CanReadRawCookies( - impl_->delegate_->GetClientProcessId()); - - DVLOG(3) << "WebSocketEventHandler::OnStartOpeningHandshake @" - << reinterpret_cast<void*>(this) << " should_send=" << should_send; - - if (!should_send) - return WebSocketEventInterface::CHANNEL_ALIVE; - - mojom::WebSocketHandshakeRequestPtr request_to_pass( - mojom::WebSocketHandshakeRequest::New()); - request_to_pass->url.Swap(&request->url); - net::HttpRequestHeaders::Iterator it(request->headers); - while (it.GetNext()) { - mojom::HttpHeaderPtr header(mojom::HttpHeader::New()); - header->name = it.name(); - header->value = it.value(); - request_to_pass->headers.push_back(std::move(header)); - } - request_to_pass->headers_text = - base::StringPrintf("GET %s HTTP/1.1\r\n", - request_to_pass->url.spec().c_str()) + - request->headers.ToString(); - - impl_->client_->OnStartOpeningHandshake(std::move(request_to_pass)); - - return WebSocketEventInterface::CHANNEL_ALIVE; -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnFinishOpeningHandshake( - std::unique_ptr<net::WebSocketHandshakeResponseInfo> response) { - bool should_send = - ChildProcessSecurityPolicyImpl::GetInstance()->CanReadRawCookies( - impl_->delegate_->GetClientProcessId()); - - DVLOG(3) << "WebSocketEventHandler::OnFinishOpeningHandshake " - << reinterpret_cast<void*>(this) << " should_send=" << should_send; - - if (!should_send) - return WebSocketEventInterface::CHANNEL_ALIVE; - - mojom::WebSocketHandshakeResponsePtr response_to_pass( - mojom::WebSocketHandshakeResponse::New()); - response_to_pass->url.Swap(&response->url); - response_to_pass->status_code = response->status_code; - response_to_pass->status_text = response->status_text; - size_t iter = 0; - std::string name, value; - while (response->headers->EnumerateHeaderLines(&iter, &name, &value)) { - mojom::HttpHeaderPtr header(mojom::HttpHeader::New()); - header->name = name; - header->value = value; - response_to_pass->headers.push_back(std::move(header)); - } - response_to_pass->headers_text = - net::HttpUtil::ConvertHeadersBackToHTTPResponse( - response->headers->raw_headers()); - - impl_->client_->OnFinishOpeningHandshake(std::move(response_to_pass)); - - return WebSocketEventInterface::CHANNEL_ALIVE; -} - -ChannelState WebSocketImpl::WebSocketEventHandler::OnSSLCertificateError( - std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> callbacks, - const GURL& url, - const net::SSLInfo& ssl_info, - bool fatal) { - DVLOG(3) << "WebSocketEventHandler::OnSSLCertificateError" - << reinterpret_cast<void*>(this) << " url=" << url.spec() - << " cert_status=" << ssl_info.cert_status << " fatal=" << fatal; - ssl_error_handler_delegate_.reset( - new SSLErrorHandlerDelegate(std::move(callbacks))); - SSLManager::OnSSLCertificateSubresourceError( - ssl_error_handler_delegate_->GetWeakPtr(), - url, - impl_->delegate_->GetClientProcessId(), - impl_->frame_id_, - ssl_info, - fatal); - // The above method is always asynchronous. - return WebSocketEventInterface::CHANNEL_ALIVE; -} - -WebSocketImpl::WebSocketEventHandler::SSLErrorHandlerDelegate:: - SSLErrorHandlerDelegate( - std::unique_ptr<net::WebSocketEventInterface::SSLErrorCallbacks> - callbacks) - : callbacks_(std::move(callbacks)), weak_ptr_factory_(this) {} - -WebSocketImpl::WebSocketEventHandler::SSLErrorHandlerDelegate:: - ~SSLErrorHandlerDelegate() {} - -base::WeakPtr<SSLErrorHandler::Delegate> -WebSocketImpl::WebSocketEventHandler::SSLErrorHandlerDelegate::GetWeakPtr() { - return weak_ptr_factory_.GetWeakPtr(); -} - -void WebSocketImpl::WebSocketEventHandler::SSLErrorHandlerDelegate:: - CancelSSLRequest(int error, const net::SSLInfo* ssl_info) { - DVLOG(3) << "SSLErrorHandlerDelegate::CancelSSLRequest" - << " error=" << error - << " cert_status=" << (ssl_info ? ssl_info->cert_status - : static_cast<net::CertStatus>(-1)); - callbacks_->CancelSSLRequest(error, ssl_info); -} - -void WebSocketImpl::WebSocketEventHandler::SSLErrorHandlerDelegate:: - ContinueSSLRequest() { - DVLOG(3) << "SSLErrorHandlerDelegate::ContinueSSLRequest"; - callbacks_->ContinueSSLRequest(); -} - -WebSocketImpl::WebSocketImpl( - Delegate* delegate, - mojom::WebSocketRequest request, - int frame_id, - base::TimeDelta delay) - : delegate_(delegate), - binding_(this, std::move(request)), - delay_(delay), - pending_flow_control_quota_(0), - frame_id_(frame_id), - handshake_succeeded_(false), - weak_ptr_factory_(this) { - binding_.set_connection_error_handler( - base::Bind(&WebSocketImpl::OnConnectionError, base::Unretained(this))); -} - -WebSocketImpl::~WebSocketImpl() {} - -void WebSocketImpl::GoAway() { - StartClosingHandshake(static_cast<uint16_t>(net::kWebSocketErrorGoingAway), - ""); -} - -void WebSocketImpl::AddChannelRequest( - const GURL& socket_url, - mojo::Array<mojo::String> requested_protocols_mojo, - const url::Origin& origin, - const GURL& first_party_for_cookies, - const mojo::String& user_agent_override, - mojom::WebSocketClientPtr client) { - // Convert to STL types. - std::vector<std::string> requested_protocols( - requested_protocols_mojo.begin(), - requested_protocols_mojo.end()); - - DVLOG(3) << "WebSocketImpl::AddChannelRequest @" - << reinterpret_cast<void*>(this) - << " socket_url=\"" << socket_url << "\" requested_protocols=\"" - << base::JoinString(requested_protocols, ", ") - << "\" origin=\"" << origin - << "\" first_party_for_cookies=\"" << first_party_for_cookies - << "\" user_agent_override=\"" << user_agent_override - << "\""; - - if (client_ || !client) { - bad_message::ReceivedBadMessage( - delegate_->GetClientProcessId(), - bad_message::WSI_UNEXPECTED_ADD_CHANNEL_REQUEST); - return; - } - - client_ = std::move(client); - - DCHECK(!channel_); - if (delay_ > base::TimeDelta()) { - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, - base::Bind(&WebSocketImpl::AddChannel, - weak_ptr_factory_.GetWeakPtr(), - socket_url, - requested_protocols, - origin, - first_party_for_cookies, - user_agent_override), - delay_); - } else { - AddChannel(socket_url, requested_protocols, origin, first_party_for_cookies, - user_agent_override); - } -} - -void WebSocketImpl::SendFrame(bool fin, mojom::WebSocketMessageType type, - mojo::Array<uint8_t> data) { - DVLOG(3) << "WebSocketImpl::SendFrame @" - << reinterpret_cast<void*>(this) << " fin=" << fin - << " type=" << type << " data is " << data.size() << " bytes"; - - if (!channel_) { - // The client should not be sending us frames until after we've informed - // it that the channel has been opened (OnAddChannelResponse). - if (handshake_succeeded_) { - DVLOG(1) << "Dropping frame sent to closed websocket"; - } else { - bad_message::ReceivedBadMessage( - delegate_->GetClientProcessId(), - bad_message::WSI_UNEXPECTED_SEND_FRAME); - } - return; - } - - // TODO(darin): Avoid this copy. - std::vector<char> data_to_pass(data.size()); - std::copy(data.begin(), data.end(), data_to_pass.begin()); - - channel_->SendFrame(fin, MessageTypeToOpCode(type), data_to_pass); -} - -void WebSocketImpl::SendFlowControl(int64_t quota) { - DVLOG(3) << "WebSocketImpl::OnFlowControl @" - << reinterpret_cast<void*>(this) << " quota=" << quota; - - if (!channel_) { - // WebSocketChannel is not yet created due to the delay introduced by - // per-renderer WebSocket throttling. - // SendFlowControl() is called after WebSocketChannel is created. - pending_flow_control_quota_ += quota; - return; - } - - ignore_result(channel_->SendFlowControl(quota)); -} - -void WebSocketImpl::StartClosingHandshake(uint16_t code, - const mojo::String& reason) { - DVLOG(3) << "WebSocketImpl::StartClosingHandshake @" - << reinterpret_cast<void*>(this) - << " code=" << code << " reason=\"" << reason << "\""; - - if (!channel_) { - // WebSocketChannel is not yet created due to the delay introduced by - // per-renderer WebSocket throttling. - if (client_) - client_->OnDropChannel(false, net::kWebSocketErrorAbnormalClosure, ""); - return; - } - - ignore_result(channel_->StartClosingHandshake(code, reason)); -} - -void WebSocketImpl::OnConnectionError() { - DVLOG(3) << "WebSocketImpl::OnConnectionError @" - << reinterpret_cast<void*>(this); - - delegate_->OnLostConnectionToClient(this); -} - -void WebSocketImpl::AddChannel( - const GURL& socket_url, - const std::vector<std::string>& requested_protocols, - const url::Origin& origin, - const GURL& first_party_for_cookies, - const std::string& user_agent_override) { - DVLOG(3) << "WebSocketImpl::AddChannel @" - << reinterpret_cast<void*>(this) - << " socket_url=\"" << socket_url - << "\" requested_protocols=\"" - << base::JoinString(requested_protocols, ", ") - << "\" origin=\"" << origin - << "\" first_party_for_cookies=\"" << first_party_for_cookies - << "\" user_agent_override=\"" << user_agent_override - << "\""; - - DCHECK(!channel_); - - StoragePartition* partition = delegate_->GetStoragePartition(); - - std::unique_ptr<net::WebSocketEventInterface> event_interface( - new WebSocketEventHandler(this)); - channel_.reset( - new net::WebSocketChannel( - std::move(event_interface), - partition->GetURLRequestContext()->GetURLRequestContext())); - - int64_t quota = pending_flow_control_quota_; - pending_flow_control_quota_ = 0; - - std::string additional_headers; - if (!user_agent_override.empty()) { - if (!net::HttpUtil::IsValidHeaderValue(user_agent_override)) { - bad_message::ReceivedBadMessage( - delegate_->GetClientProcessId(), - bad_message::WSI_INVALID_HEADER_VALUE); - return; - } - additional_headers = base::StringPrintf("%s:%s", - net::HttpRequestHeaders::kUserAgent, - user_agent_override.c_str()); - } - channel_->SendAddChannelRequest(socket_url, requested_protocols, origin, - first_party_for_cookies, additional_headers); - if (quota > 0) - SendFlowControl(quota); -} - -} // namespace content
diff --git a/content/browser/websockets/websocket_impl.h b/content/browser/websockets/websocket_impl.h deleted file mode 100644 index fa3b5d8..0000000 --- a/content/browser/websockets/websocket_impl.h +++ /dev/null
@@ -1,112 +0,0 @@ -// Copyright 2013 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_BROWSER_WEBSOCKETS_WEBSOCKET_IMPL_H_ -#define CONTENT_BROWSER_WEBSOCKETS_WEBSOCKET_IMPL_H_ - -#include <stdint.h> - -#include <memory> -#include <string> -#include <vector> - -#include "base/macros.h" -#include "base/memory/weak_ptr.h" -#include "base/time/time.h" -#include "content/common/content_export.h" -#include "content/common/websocket.mojom.h" -#include "mojo/public/cpp/bindings/binding.h" - -class GURL; - -namespace url { -class Origin; -} // namespace url - -namespace net { -class WebSocketChannel; -} // namespace net - -namespace content { -class StoragePartition; - -// Host of net::WebSocketChannel. -class CONTENT_EXPORT WebSocketImpl - : NON_EXPORTED_BASE(public mojom::WebSocket) { - public: - class Delegate { - public: - virtual ~Delegate() {} - virtual int GetClientProcessId() = 0; - virtual StoragePartition* GetStoragePartition() = 0; - virtual void OnReceivedResponseFromServer(WebSocketImpl* impl) = 0; - virtual void OnLostConnectionToClient(WebSocketImpl* impl) = 0; - }; - - WebSocketImpl(Delegate* delegate, - mojom::WebSocketRequest request, - int frame_id, - base::TimeDelta delay); - ~WebSocketImpl() override; - - // The renderer process is going away. - // This function is virtual for testing. - virtual void GoAway(); - - // mojom::WebSocket methods: - void AddChannelRequest(const GURL& url, - mojo::Array<mojo::String> requested_protocols, - const url::Origin& origin, - const GURL& first_party_for_cookies, - const mojo::String& user_agent_override, - mojom::WebSocketClientPtr client) override; - void SendFrame(bool fin, mojom::WebSocketMessageType type, - mojo::Array<uint8_t> data) override; - void SendFlowControl(int64_t quota) override; - void StartClosingHandshake(uint16_t code, - const mojo::String& reason) override; - - bool handshake_succeeded() const { return handshake_succeeded_; } - void OnHandshakeSucceeded() { handshake_succeeded_ = true; } - - protected: - class WebSocketEventHandler; - - void OnConnectionError(); - void AddChannel(const GURL& socket_url, - const std::vector<std::string>& requested_protocols, - const url::Origin& origin, - const GURL& first_party_for_cookies, - const std::string& user_agent_override); - - Delegate* delegate_; - mojo::Binding<mojom::WebSocket> binding_; - - mojom::WebSocketClientPtr client_; - - // The channel we use to send events to the network. - std::unique_ptr<net::WebSocketChannel> channel_; - - // Delay used for per-renderer WebSocket throttling. - base::TimeDelta delay_; - - // SendFlowControl() is delayed when OnFlowControl() is called before - // AddChannel() is called. - // Zero indicates there is no pending SendFlowControl(). - int64_t pending_flow_control_quota_; - - int frame_id_; - - // handshake_succeeded_ is set and used by WebSocketManager to manage - // counters for per-renderer WebSocket throttling. - bool handshake_succeeded_; - - base::WeakPtrFactory<WebSocketImpl> weak_ptr_factory_; - - DISALLOW_COPY_AND_ASSIGN(WebSocketImpl); -}; - -} // namespace content - -#endif // CONTENT_BROWSER_WEBSOCKETS_WEBSOCKET_IMPL_H_
diff --git a/content/browser/websockets/websocket_manager.cc b/content/browser/websockets/websocket_manager.cc deleted file mode 100644 index 586a6977..0000000 --- a/content/browser/websockets/websocket_manager.cc +++ /dev/null
@@ -1,176 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/browser/websockets/websocket_manager.h" - -#include <algorithm> -#include <string> -#include <vector> - -#include "base/callback.h" -#include "base/logging.h" -#include "base/numerics/safe_conversions.h" -#include "base/rand_util.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/render_process_host.h" -#include "services/shell/public/cpp/interface_registry.h" - -namespace content { - -namespace { - -const char kWebSocketManagerKeyName[] = "web_socket_manager"; - -// Max number of pending connections per WebSocketManager used for per-renderer -// WebSocket throttling. -const int kMaxPendingWebSocketConnections = 255; - -} // namespace - -class WebSocketManager::Handle : public base::SupportsUserData::Data { - public: - explicit Handle(WebSocketManager* manager) : manager_(manager) {} - ~Handle() override { - BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, manager_); - } - WebSocketManager* manager() const { return manager_; } - private: - WebSocketManager* manager_; -}; - -// static -void WebSocketManager::CreateWebSocket(int process_id, int frame_id, - mojom::WebSocketRequest request) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - - RenderProcessHost* host = RenderProcessHost::FromID(process_id); - CHECK(host); - - Handle* handle = - static_cast<Handle*>(host->GetUserData(kWebSocketManagerKeyName)); - if (!handle) { - handle = new Handle( - new WebSocketManager(process_id, host->GetStoragePartition())); - host->SetUserData(kWebSocketManagerKeyName, handle); - } - - BrowserThread::PostTask( - BrowserThread::IO, - FROM_HERE, - base::Bind(&WebSocketManager::DoCreateWebSocket, - base::Unretained(handle->manager()), - frame_id, - base::Passed(&request))); -} - -WebSocketManager::WebSocketManager(int process_id, - StoragePartition* storage_partition) - : process_id_(process_id), - storage_partition_(storage_partition), - num_pending_connections_(0), - num_current_succeeded_connections_(0), - num_previous_succeeded_connections_(0), - num_current_failed_connections_(0), - num_previous_failed_connections_(0) {} - -WebSocketManager::~WebSocketManager() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - - for (auto impl : impls_) { - impl->GoAway(); - delete impl; - } -} - -void WebSocketManager::DoCreateWebSocket(int frame_id, - mojom::WebSocketRequest request) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - - if (num_pending_connections_ >= kMaxPendingWebSocketConnections) { - // Too many websockets! By returning here, we let |request| die, which - // will be observed by the client as Mojo connection error. - return; - } - - // Keep all WebSocketImpls alive until either the client drops its - // connection (see OnLostConnectionToClient) or we need to shutdown. - - impls_.insert(CreateWebSocketImpl(this, std::move(request), frame_id, - CalculateDelay())); - ++num_pending_connections_; - - if (!throttling_period_timer_.IsRunning()) { - throttling_period_timer_.Start( - FROM_HERE, - base::TimeDelta::FromMinutes(2), - this, - &WebSocketManager::ThrottlingPeriodTimerCallback); - } -} - -// Calculate delay as described in the per-renderer WebSocket throttling -// design doc: https://goo.gl/tldFNn -base::TimeDelta WebSocketManager::CalculateDelay() const { - int64_t f = num_previous_failed_connections_ + - num_current_failed_connections_; - int64_t s = num_previous_succeeded_connections_ + - num_current_succeeded_connections_; - int p = num_pending_connections_; - return base::TimeDelta::FromMilliseconds( - base::RandInt(1000, 5000) * - (1 << std::min(p + f / (s + 1), INT64_C(16))) / 65536); -} - -void WebSocketManager::ThrottlingPeriodTimerCallback() { - num_previous_failed_connections_ = num_current_failed_connections_; - num_current_failed_connections_ = 0; - - num_previous_succeeded_connections_ = num_current_succeeded_connections_; - num_current_succeeded_connections_ = 0; - - if (num_pending_connections_ == 0 && - num_previous_failed_connections_ == 0 && - num_previous_succeeded_connections_ == 0) { - throttling_period_timer_.Stop(); - } -} - -WebSocketImpl* WebSocketManager::CreateWebSocketImpl( - WebSocketImpl::Delegate* delegate, - mojom::WebSocketRequest request, - int frame_id, - base::TimeDelta delay) { - return new WebSocketImpl(delegate, std::move(request), frame_id, delay); -} - -int WebSocketManager::GetClientProcessId() { - return process_id_; -} - -StoragePartition* WebSocketManager::GetStoragePartition() { - return storage_partition_; -} - -void WebSocketManager::OnReceivedResponseFromServer(WebSocketImpl* impl) { - // The server accepted this WebSocket connection. - impl->OnHandshakeSucceeded(); - --num_pending_connections_; - DCHECK_GE(num_pending_connections_, 0); - ++num_current_succeeded_connections_; -} - -void WebSocketManager::OnLostConnectionToClient(WebSocketImpl* impl) { - // The client is no longer interested in this WebSocket. - if (!impl->handshake_succeeded()) { - // Update throttling counters (failure). - --num_pending_connections_; - DCHECK_GE(num_pending_connections_, 0); - ++num_current_failed_connections_; - } - impl->GoAway(); - impls_.erase(impl); - delete impl; -} - -} // namespace content
diff --git a/content/browser/websockets/websocket_manager.h b/content/browser/websockets/websocket_manager.h deleted file mode 100644 index 4047e435..0000000 --- a/content/browser/websockets/websocket_manager.h +++ /dev/null
@@ -1,86 +0,0 @@ -// Copyright 2013 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_BROWSER_WEBSOCKETS_WEBSOCKET_MANAGER_H_ -#define CONTENT_BROWSER_WEBSOCKETS_WEBSOCKET_MANAGER_H_ - -#include <set> - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "base/timer/timer.h" -#include "content/browser/websockets/websocket_impl.h" -#include "content/common/content_export.h" - -namespace shell { -class InterfaceRegistry; -} // namespace shell - -namespace content { -class StoragePartition; - -// The WebSocketManager is a per child process instance that manages the -// lifecycle of WebSocketImpl objects. It is responsible for creating -// WebSocketImpl objects for each WebSocketRequest and throttling the number of -// WebSocketImpl objects in use. -class CONTENT_EXPORT WebSocketManager - : NON_EXPORTED_BASE(public WebSocketImpl::Delegate) { - public: - // Called on the UI thread: - static void CreateWebSocket(int process_id, int frame_id, - mojom::WebSocketRequest request); - - protected: - class Handle; - friend class base::DeleteHelper<WebSocketManager>; - - // Called on the UI thread: - WebSocketManager(int process_id, StoragePartition* storage_partition); - - // All other methods must run on the IO thread. - - ~WebSocketManager() override; - void DoCreateWebSocket(int frame_id, mojom::WebSocketRequest request); - base::TimeDelta CalculateDelay() const; - void ThrottlingPeriodTimerCallback(); - - // This is virtual to support testing. - virtual WebSocketImpl* CreateWebSocketImpl(WebSocketImpl::Delegate* delegate, - mojom::WebSocketRequest request, - int frame_id, - base::TimeDelta delay); - - // WebSocketImpl::Delegate methods: - int GetClientProcessId() override; - StoragePartition* GetStoragePartition() override; - void OnReceivedResponseFromServer(WebSocketImpl* impl) override; - void OnLostConnectionToClient(WebSocketImpl* impl) override; - - int process_id_; - StoragePartition* storage_partition_; - - std::set<WebSocketImpl*> impls_; - - // Timer and counters for per-renderer WebSocket throttling. - base::RepeatingTimer throttling_period_timer_; - - // The current number of pending connections. - int num_pending_connections_; - - // The number of handshakes that failed in the current and previous time - // period. - int64_t num_current_succeeded_connections_; - int64_t num_previous_succeeded_connections_; - - // The number of handshakes that succeeded in the current and previous time - // period. - int64_t num_current_failed_connections_; - int64_t num_previous_failed_connections_; - - DISALLOW_COPY_AND_ASSIGN(WebSocketManager); -}; - -} // namespace content - -#endif // CONTENT_BROWSER_WEBSOCKETS_WEBSOCKET_MANAGER_H_
diff --git a/content/browser/websockets/websocket_manager_unittest.cc b/content/browser/websockets/websocket_manager_unittest.cc deleted file mode 100644 index fc5f94f..0000000 --- a/content/browser/websockets/websocket_manager_unittest.cc +++ /dev/null
@@ -1,242 +0,0 @@ -// Copyright 2013 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 <algorithm> -#include <memory> -#include <vector> - -#include "content/browser/websockets/websocket_manager.h" -#include "content/public/test/test_browser_thread_bundle.h" -#include "ipc/ipc_message.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "url/gurl.h" -#include "url/origin.h" - -namespace content { -namespace { - -// This number is unlikely to occur by chance. -static const int kMagicRenderProcessId = 506116062; - -class TestWebSocketImpl : public WebSocketImpl { - public: - TestWebSocketImpl(Delegate* delegate, - mojom::WebSocketRequest request, - int frame_id, - base::TimeDelta delay) - : WebSocketImpl(delegate, std::move(request), frame_id, delay) {} - - base::TimeDelta delay() const { return delay_; } - - void SimulateConnectionError() { - OnConnectionError(); - } -}; - -class TestWebSocketManager : public WebSocketManager { - public: - TestWebSocketManager() - : WebSocketManager(kMagicRenderProcessId, nullptr) {} - - const std::vector<TestWebSocketImpl*>& sockets() const { - return sockets_; - } - - int num_pending_connections() const { - return num_pending_connections_; - } - int64_t num_failed_connections() const { - return num_current_failed_connections_ + num_previous_failed_connections_; - } - int64_t num_succeeded_connections() const { - return num_current_succeeded_connections_ + - num_previous_succeeded_connections_; - } - - void DoCreateWebSocket(mojom::WebSocketRequest request) { - WebSocketManager::DoCreateWebSocket(MSG_ROUTING_NONE, std::move(request)); - } - - private: - WebSocketImpl* CreateWebSocketImpl(WebSocketImpl::Delegate* delegate, - mojom::WebSocketRequest request, - int frame_id, - base::TimeDelta delay) override { - TestWebSocketImpl* impl = - new TestWebSocketImpl(delegate, std::move(request), frame_id, delay); - // We keep a vector of sockets here to track their creation order. - sockets_.push_back(impl); - return impl; - } - - void OnLostConnectionToClient(WebSocketImpl* impl) override { - auto it = std::find(sockets_.begin(), sockets_.end(), - static_cast<TestWebSocketImpl*>(impl)); - ASSERT_TRUE(it != sockets_.end()); - sockets_.erase(it); - - WebSocketManager::OnLostConnectionToClient(impl); - } - - std::vector<TestWebSocketImpl*> sockets_; -}; - -class WebSocketManagerTest : public ::testing::Test { - public: - WebSocketManagerTest() - : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) { - websocket_manager_.reset(new TestWebSocketManager()); - } - - void AddMultipleChannels(int number_of_channels) { - for (int i = 0; i < number_of_channels; ++i) { - mojom::WebSocketPtr websocket; - websocket_manager_->DoCreateWebSocket(mojo::GetProxy(&websocket)); - } - } - - void AddAndCancelMultipleChannels(int number_of_channels) { - for (int i = 0; i < number_of_channels; ++i) { - mojom::WebSocketPtr websocket; - websocket_manager_->DoCreateWebSocket(mojo::GetProxy(&websocket)); - websocket_manager_->sockets().back()->SimulateConnectionError(); - } - } - - TestWebSocketManager* websocket_manager() { return websocket_manager_.get(); } - - private: - TestBrowserThreadBundle thread_bundle_; - std::unique_ptr<TestWebSocketManager> websocket_manager_; -}; - -TEST_F(WebSocketManagerTest, Construct) { - // Do nothing. -} - -TEST_F(WebSocketManagerTest, CreateWebSocket) { - mojom::WebSocketPtr websocket; - - websocket_manager()->DoCreateWebSocket(mojo::GetProxy(&websocket)); - - EXPECT_EQ(1U, websocket_manager()->sockets().size()); -} - -TEST_F(WebSocketManagerTest, SendFrameButNotConnectedYet) { - mojom::WebSocketPtr websocket; - - websocket_manager()->DoCreateWebSocket(mojo::GetProxy(&websocket)); - - // This should not crash. - mojo::Array<uint8_t> data; - websocket->SendFrame( - true, mojom::WebSocketMessageType::TEXT, std::move(data)); -} - -TEST_F(WebSocketManagerTest, DelayFor4thPendingConnectionIsZero) { - AddMultipleChannels(4); - - EXPECT_EQ(4, websocket_manager()->num_pending_connections()); - EXPECT_EQ(0, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); - - ASSERT_EQ(4U, websocket_manager()->sockets().size()); - EXPECT_EQ(base::TimeDelta(), websocket_manager()->sockets()[3]->delay()); -} - -TEST_F(WebSocketManagerTest, DelayFor8thPendingConnectionIsNonZero) { - AddMultipleChannels(8); - - EXPECT_EQ(8, websocket_manager()->num_pending_connections()); - EXPECT_EQ(0, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); - - ASSERT_EQ(8U, websocket_manager()->sockets().size()); - EXPECT_LT(base::TimeDelta(), websocket_manager()->sockets()[7]->delay()); -} - -TEST_F(WebSocketManagerTest, DelayFor17thPendingConnection) { - AddMultipleChannels(17); - - EXPECT_EQ(17, websocket_manager()->num_pending_connections()); - EXPECT_EQ(0, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); - - ASSERT_EQ(17U, websocket_manager()->sockets().size()); - EXPECT_LE(base::TimeDelta::FromMilliseconds(1000), - websocket_manager()->sockets()[16]->delay()); - EXPECT_GE(base::TimeDelta::FromMilliseconds(5000), - websocket_manager()->sockets()[16]->delay()); -} - -// The 256th connection is rejected by per-renderer WebSocket throttling. -// This is not counted as a failure. -TEST_F(WebSocketManagerTest, Rejects256thPendingConnection) { - AddMultipleChannels(256); - - EXPECT_EQ(255, websocket_manager()->num_pending_connections()); - EXPECT_EQ(0, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); - - ASSERT_EQ(255U, websocket_manager()->sockets().size()); -} - -TEST_F(WebSocketManagerTest, DelayIsZeroAfter3FailedConnections) { - AddAndCancelMultipleChannels(3); - - EXPECT_EQ(0, websocket_manager()->num_pending_connections()); - EXPECT_EQ(3, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); - - AddMultipleChannels(1); - - ASSERT_EQ(1U, websocket_manager()->sockets().size()); - EXPECT_EQ(base::TimeDelta(), websocket_manager()->sockets()[0]->delay()); -} - -TEST_F(WebSocketManagerTest, DelayIsNonZeroAfter7FailedConnections) { - AddAndCancelMultipleChannels(7); - - EXPECT_EQ(0, websocket_manager()->num_pending_connections()); - EXPECT_EQ(7, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); - - AddMultipleChannels(1); - - ASSERT_EQ(1U, websocket_manager()->sockets().size()); - EXPECT_LT(base::TimeDelta(), websocket_manager()->sockets()[0]->delay()); -} - -TEST_F(WebSocketManagerTest, DelayAfter16FailedConnections) { - AddAndCancelMultipleChannels(16); - - EXPECT_EQ(0, websocket_manager()->num_pending_connections()); - EXPECT_EQ(16, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); - - AddMultipleChannels(1); - - ASSERT_EQ(1U, websocket_manager()->sockets().size()); - EXPECT_LE(base::TimeDelta::FromMilliseconds(1000), - websocket_manager()->sockets()[0]->delay()); - EXPECT_GE(base::TimeDelta::FromMilliseconds(5000), - websocket_manager()->sockets()[0]->delay()); -} - -TEST_F(WebSocketManagerTest, NotRejectedAfter255FailedConnections) { - AddAndCancelMultipleChannels(255); - - EXPECT_EQ(0, websocket_manager()->num_pending_connections()); - EXPECT_EQ(255, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); - - AddMultipleChannels(1); - - EXPECT_EQ(1, websocket_manager()->num_pending_connections()); - EXPECT_EQ(255, websocket_manager()->num_failed_connections()); - EXPECT_EQ(0, websocket_manager()->num_succeeded_connections()); -} - -} // namespace -} // namespace content
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn index 1466965a..f39db3a8 100644 --- a/content/child/BUILD.gn +++ b/content/child/BUILD.gn
@@ -87,6 +87,10 @@ deps += [ "//third_party/android_tools:cpu_features" ] } + if (is_win) { + libs = [ "dwrite.lib" ] + } + if (enable_plugins) { deps += [ "//ppapi/proxy",
diff --git a/content/child/OWNERS b/content/child/OWNERS index f04dee2..3d62269f 100644 --- a/content/child/OWNERS +++ b/content/child/OWNERS
@@ -4,6 +4,11 @@ # AppCache per-file appcache*=michaeln@chromium.org +# WebSocket +per-file *websocket*=ricea@chromium.org +per-file *websocket*=tyoshino@chromium.org +per-file *websocket*=yhirano@chromium.org + # WebSQL per-file database_*=jsbell@chromium.org per-file database_*=michaeln@chromium.org
diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc index 936edc5c..ba47d22d 100644 --- a/content/child/blink_platform_impl.cc +++ b/content/child/blink_platform_impl.cc
@@ -49,6 +49,7 @@ #include "content/child/thread_safe_sender.h" #include "content/child/web_url_loader_impl.h" #include "content/child/web_url_request_util.h" +#include "content/child/websocket_bridge.h" #include "content/child/worker_thread_registry.h" #include "content/public/common/content_client.h" #include "net/base/data_url.h" @@ -409,6 +410,10 @@ BlinkPlatformImpl::~BlinkPlatformImpl() { } +blink::WebSocketHandle* BlinkPlatformImpl::createWebSocketHandle() { + return new WebSocketBridge; +} + WebString BlinkPlatformImpl::userAgent() { return blink::WebString::fromUTF8(GetContentClient()->GetUserAgent()); }
diff --git a/content/child/blink_platform_impl.h b/content/child/blink_platform_impl.h index 59c3a004..1ee9106 100644 --- a/content/child/blink_platform_impl.h +++ b/content/child/blink_platform_impl.h
@@ -83,6 +83,7 @@ size_t maxDecodedImageBytes() override; uint32_t getUniqueIdForProcess() override; + blink::WebSocketHandle* createWebSocketHandle() override; blink::WebString userAgent() override; blink::WebData parseDataURL(const blink::WebURL& url, blink::WebString& mimetype,
diff --git a/content/child/child_thread_impl.cc b/content/child/child_thread_impl.cc index 6f73603..e4e008bb 100644 --- a/content/child/child_thread_impl.cc +++ b/content/child/child_thread_impl.cc
@@ -49,6 +49,8 @@ #include "content/child/resource_dispatcher.h" #include "content/child/service_worker/service_worker_message_filter.h" #include "content/child/thread_safe_sender.h" +#include "content/child/websocket_dispatcher.h" +#include "content/child/websocket_message_filter.h" #include "content/common/child_process_messages.h" #include "content/common/in_process_child_thread_params.h" #include "content/common/mojo/constants.h" @@ -468,6 +470,7 @@ resource_dispatcher_.reset(new ResourceDispatcher( this, message_loop()->task_runner())); + websocket_dispatcher_.reset(new WebSocketDispatcher); file_system_dispatcher_.reset(new FileSystemDispatcher()); histogram_message_filter_ = new ChildHistogramMessageFilter(); @@ -485,12 +488,16 @@ new NotificationDispatcher(thread_safe_sender_.get()); push_dispatcher_ = new PushDispatcher(thread_safe_sender_.get()); + websocket_message_filter_ = + new WebSocketMessageFilter(websocket_dispatcher_.get()); + channel_->AddFilter(histogram_message_filter_.get()); channel_->AddFilter(resource_message_filter_.get()); channel_->AddFilter(quota_message_filter_->GetFilter()); channel_->AddFilter(notification_dispatcher_->GetFilter()); channel_->AddFilter(push_dispatcher_->GetFilter()); channel_->AddFilter(service_worker_message_filter_->GetFilter()); + channel_->AddFilter(websocket_message_filter_.get()); if (!IsInBrowserProcess()) { // In single process mode, browser-side tracing and memory will cover the
diff --git a/content/child/child_thread_impl.h b/content/child/child_thread_impl.h index 94bd0ba..ae2fa20 100644 --- a/content/child/child_thread_impl.h +++ b/content/child/child_thread_impl.h
@@ -64,6 +64,8 @@ class QuotaMessageFilter; class ResourceDispatcher; class ThreadSafeSender; +class WebSocketDispatcher; +class WebSocketMessageFilter; struct RequestInfo; // The main thread of a child process derives from this class. @@ -137,6 +139,10 @@ return resource_dispatcher_.get(); } + WebSocketDispatcher* websocket_dispatcher() const { + return websocket_dispatcher_.get(); + } + FileSystemDispatcher* file_system_dispatcher() const { return file_system_dispatcher_.get(); } @@ -180,6 +186,10 @@ return resource_message_filter_.get(); } + WebSocketMessageFilter* websocket_message_filter() const { + return websocket_message_filter_.get(); + } + base::MessageLoop* message_loop() const { return message_loop_; } // Returns the one child thread. Can only be called on the main thread. @@ -266,6 +276,8 @@ // Handles resource loads for this process. std::unique_ptr<ResourceDispatcher> resource_dispatcher_; + std::unique_ptr<WebSocketDispatcher> websocket_dispatcher_; + // The OnChannelError() callback was invoked - the channel is dead, don't // attempt to communicate. bool on_channel_error_called_; @@ -284,6 +296,8 @@ scoped_refptr<QuotaMessageFilter> quota_message_filter_; + scoped_refptr<WebSocketMessageFilter> websocket_message_filter_; + scoped_refptr<NotificationDispatcher> notification_dispatcher_; scoped_refptr<PushDispatcher> push_dispatcher_;
diff --git a/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc b/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc index c1d59d2..5708d60 100644 --- a/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc +++ b/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc
@@ -33,33 +33,13 @@ // Windows-only DirectWrite support. These warm up the DirectWrite paths // before sandbox lock down to allow Skia access to the Font Manager service. void CreateDirectWriteFactory(IDWriteFactory** factory) { - typedef decltype(DWriteCreateFactory)* DWriteCreateFactoryProc; - HMODULE dwrite_dll = LoadLibraryW(L"dwrite.dll"); - // TODO(scottmg): Temporary code to track crash in http://crbug.com/387867. - if (!dwrite_dll) { - DWORD load_library_get_last_error = GetLastError(); - base::debug::Alias(&dwrite_dll); - base::debug::Alias(&load_library_get_last_error); - CHECK(false); - } - // This shouldn't be necessary, but not having this causes breakage in // content_browsertests, and possibly other high-stress cases. PatchServiceManagerCalls(); - DWriteCreateFactoryProc dwrite_create_factory_proc = - reinterpret_cast<DWriteCreateFactoryProc>( - GetProcAddress(dwrite_dll, "DWriteCreateFactory")); - // TODO(scottmg): Temporary code to track crash in http://crbug.com/387867. - if (!dwrite_create_factory_proc) { - DWORD get_proc_address_get_last_error = GetLastError(); - base::debug::Alias(&dwrite_create_factory_proc); - base::debug::Alias(&get_proc_address_get_last_error); - CHECK(false); - } - CHECK(SUCCEEDED(dwrite_create_factory_proc( - DWRITE_FACTORY_TYPE_ISOLATED, __uuidof(IDWriteFactory), - reinterpret_cast<IUnknown**>(factory)))); + CHECK(SUCCEEDED(DWriteCreateFactory(DWRITE_FACTORY_TYPE_ISOLATED, + __uuidof(IDWriteFactory), + reinterpret_cast<IUnknown**>(factory)))); } } // namespace
diff --git a/content/child/dwrite_font_proxy/dwrite_font_proxy_win_unittest.cc b/content/child/dwrite_font_proxy/dwrite_font_proxy_win_unittest.cc index 3e4bfc5c..2fb66ba 100644 --- a/content/child/dwrite_font_proxy/dwrite_font_proxy_win_unittest.cc +++ b/content/child/dwrite_font_proxy/dwrite_font_proxy_win_unittest.cc
@@ -24,27 +24,9 @@ namespace { -void CreateDWriteFactory(IUnknown** factory) { - using DWriteCreateFactoryProc = decltype(DWriteCreateFactory)*; - HMODULE dwrite_dll = LoadLibraryW(L"dwrite.dll"); - if (!dwrite_dll) - return; - - DWriteCreateFactoryProc dwrite_create_factory_proc = - reinterpret_cast<DWriteCreateFactoryProc>( - GetProcAddress(dwrite_dll, "DWriteCreateFactory")); - if (!dwrite_create_factory_proc) - return; - - dwrite_create_factory_proc(DWRITE_FACTORY_TYPE_SHARED, - __uuidof(IDWriteFactory), factory); -} - class DWriteFontProxyUnitTest : public testing::Test { public: DWriteFontProxyUnitTest() { - if (!factory) - return; fake_collection_ = new FakeFontCollection(); SetupFonts(fake_collection_.get()); mswr::MakeAndInitialize<DWriteFontCollectionProxy>( @@ -71,7 +53,8 @@ } static void SetUpTestCase() { - CreateDWriteFactory(&factory); + DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), + &factory); std::vector<base::char16> font_path; font_path.resize(MAX_PATH); @@ -96,9 +79,6 @@ mswr::ComPtr<IDWriteFactory> DWriteFontProxyUnitTest::factory; TEST_F(DWriteFontProxyUnitTest, GetFontFamilyCount) { - if (!factory) - return; - UINT32 family_count = collection_->GetFontFamilyCount(); EXPECT_EQ(3u, family_count); @@ -114,8 +94,6 @@ TEST_F(DWriteFontProxyUnitTest, FindFamilyNameShouldFindFamily) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -133,8 +111,6 @@ TEST_F(DWriteFontProxyUnitTest, FindFamilyNameShouldReturnUINTMAXWhenNotFound) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -150,8 +126,6 @@ TEST_F(DWriteFontProxyUnitTest, FindFamilyNameShouldNotSendDuplicateIPC) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -167,8 +141,6 @@ TEST_F(DWriteFontProxyUnitTest, GetFontFamilyShouldCreateFamily) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -214,8 +186,6 @@ TEST_F(DWriteFontProxyUnitTest, GetFamilyNames) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -253,8 +223,6 @@ TEST_F(DWriteFontProxyUnitTest, GetFontCollection) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -275,8 +243,6 @@ TEST_F(DWriteFontProxyUnitTest, GetFamilyNamesShouldNotIPCAfterLoadingFamily) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -295,8 +261,6 @@ TEST_F(DWriteFontProxyUnitTest, GetFontFamilyShouldNotCreateFamilyWhenIndexIsInvalid) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -312,8 +276,6 @@ TEST_F(DWriteFontProxyUnitTest, LoadingFontFamily) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE; @@ -348,8 +310,6 @@ TEST_F(DWriteFontProxyUnitTest, GetFontFromFontFaceShouldFindFont) { HRESULT hr; - if (!factory) - return; UINT32 index = UINT_MAX; BOOL exists = FALSE;
diff --git a/content/child/dwrite_font_proxy/font_fallback_win_unittest.cc b/content/child/dwrite_font_proxy/font_fallback_win_unittest.cc index b5faca2..7bc539b 100644 --- a/content/child/dwrite_font_proxy/font_fallback_win_unittest.cc +++ b/content/child/dwrite_font_proxy/font_fallback_win_unittest.cc
@@ -25,7 +25,8 @@ class FontFallbackUnitTest : public testing::Test { public: FontFallbackUnitTest() { - CreateDWriteFactory(&factory_); + DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), + &factory_); factory_->CreateNumberSubstitution(DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE, L"en-us", true /* ignoreUserOverride */, @@ -47,22 +48,6 @@ &collection_, factory_.Get(), fake_collection_->GetSender()); } - void CreateDWriteFactory(IUnknown** factory) { - using DWriteCreateFactoryProc = decltype(DWriteCreateFactory)*; - HMODULE dwrite_dll = LoadLibraryW(L"dwrite.dll"); - if (!dwrite_dll) - return; - - DWriteCreateFactoryProc dwrite_create_factory_proc = - reinterpret_cast<DWriteCreateFactoryProc>( - GetProcAddress(dwrite_dll, "DWriteCreateFactory")); - if (!dwrite_create_factory_proc) - return; - - dwrite_create_factory_proc(DWRITE_FACTORY_TYPE_SHARED, - __uuidof(IDWriteFactory), factory); - } - scoped_refptr<FakeFontCollection> fake_collection_; mswr::ComPtr<IDWriteFactory> factory_; mswr::ComPtr<DWriteFontCollectionProxy> collection_;
diff --git a/content/child/websocket_bridge.cc b/content/child/websocket_bridge.cc new file mode 100644 index 0000000..bd94b42 --- /dev/null +++ b/content/child/websocket_bridge.cc
@@ -0,0 +1,304 @@ +// Copyright 2013 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/child/websocket_bridge.h" + +#include <stdint.h> +#include <string> +#include <utility> +#include <vector> + +#include "base/logging.h" +#include "base/strings/string_util.h" +#include "content/child/child_thread_impl.h" +#include "content/child/websocket_dispatcher.h" +#include "content/common/websocket.h" +#include "content/common/websocket_messages.h" +#include "ipc/ipc_message.h" +#include "ipc/ipc_message_macros.h" +#include "third_party/WebKit/public/platform/WebSecurityOrigin.h" +#include "third_party/WebKit/public/platform/WebString.h" +#include "third_party/WebKit/public/platform/WebURL.h" +#include "third_party/WebKit/public/platform/WebVector.h" +#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandle.h" +#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandleClient.h" +#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandshakeRequestInfo.h" +#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandshakeResponseInfo.h" +#include "url/gurl.h" +#include "url/origin.h" + +using blink::WebSecurityOrigin; +using blink::WebSocketHandle; +using blink::WebSocketHandleClient; +using blink::WebString; +using blink::WebURL; +using blink::WebVector; + +namespace content { + +namespace { + +const unsigned short kAbnormalShutdownOpCode = 1006; + +} // namespace + +WebSocketBridge::WebSocketBridge() + : channel_id_(kInvalidChannelId), + render_frame_id_(MSG_ROUTING_NONE), + client_(NULL) {} + +WebSocketBridge::~WebSocketBridge() { + if (channel_id_ != kInvalidChannelId) { + // The connection is abruptly disconnected by the renderer without + // closing handshake. + ChildThreadImpl::current()->Send( + new WebSocketMsg_DropChannel(channel_id_, + false, + kAbnormalShutdownOpCode, + std::string())); + } + Disconnect(); +} + +bool WebSocketBridge::OnMessageReceived(const IPC::Message& msg) { + bool handled = true; + IPC_BEGIN_MESSAGE_MAP(WebSocketBridge, msg) + IPC_MESSAGE_HANDLER(WebSocketMsg_AddChannelResponse, DidConnect) + IPC_MESSAGE_HANDLER(WebSocketMsg_NotifyStartOpeningHandshake, + DidStartOpeningHandshake) + IPC_MESSAGE_HANDLER(WebSocketMsg_NotifyFinishOpeningHandshake, + DidFinishOpeningHandshake) + IPC_MESSAGE_HANDLER(WebSocketMsg_NotifyFailure, DidFail) + IPC_MESSAGE_HANDLER(WebSocketMsg_SendFrame, DidReceiveData) + IPC_MESSAGE_HANDLER(WebSocketMsg_FlowControl, DidReceiveFlowControl) + IPC_MESSAGE_HANDLER(WebSocketMsg_DropChannel, DidClose) + IPC_MESSAGE_HANDLER(WebSocketMsg_NotifyClosing, + DidStartClosingHandshake) + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + return handled; +} + +void WebSocketBridge::DidConnect(const std::string& selected_protocol, + const std::string& extensions) { + WebSocketHandleClient* client = client_; + DVLOG(1) << "WebSocketBridge::DidConnect(" + << selected_protocol << ", " + << extensions << ")"; + if (!client) + return; + + WebString protocol_to_pass = WebString::fromUTF8(selected_protocol); + WebString extensions_to_pass = WebString::fromUTF8(extensions); + client->didConnect(this, protocol_to_pass, extensions_to_pass); + // |this| can be deleted here. +} + +void WebSocketBridge::DidStartOpeningHandshake( + const WebSocketHandshakeRequest& request) { + DVLOG(1) << "WebSocketBridge::DidStartOpeningHandshake(" + << request.url << ")"; + // All strings are already encoded to ASCII in the browser. + blink::WebSocketHandshakeRequestInfo request_to_pass; + request_to_pass.setURL(WebURL(request.url)); + for (size_t i = 0; i < request.headers.size(); ++i) { + const std::pair<std::string, std::string>& header = request.headers[i]; + request_to_pass.addHeaderField(WebString::fromLatin1(header.first), + WebString::fromLatin1(header.second)); + } + request_to_pass.setHeadersText(WebString::fromLatin1(request.headers_text)); + client_->didStartOpeningHandshake(this, request_to_pass); +} + +void WebSocketBridge::DidFinishOpeningHandshake( + const WebSocketHandshakeResponse& response) { + DVLOG(1) << "WebSocketBridge::DidFinishOpeningHandshake(" + << response.url << ")"; + // All strings are already encoded to ASCII in the browser. + blink::WebSocketHandshakeResponseInfo response_to_pass; + response_to_pass.setStatusCode(response.status_code); + response_to_pass.setStatusText(WebString::fromLatin1(response.status_text)); + for (size_t i = 0; i < response.headers.size(); ++i) { + const std::pair<std::string, std::string>& header = response.headers[i]; + response_to_pass.addHeaderField(WebString::fromLatin1(header.first), + WebString::fromLatin1(header.second)); + } + response_to_pass.setHeadersText(WebString::fromLatin1(response.headers_text)); + client_->didFinishOpeningHandshake(this, response_to_pass); +} + +void WebSocketBridge::DidFail(const std::string& message) { + DVLOG(1) << "WebSocketBridge::DidFail(" << message << ")"; + WebSocketHandleClient* client = client_; + Disconnect(); + if (!client) + return; + + WebString message_to_pass = WebString::fromUTF8(message); + client->didFail(this, message_to_pass); + // |this| can be deleted here. +} + +void WebSocketBridge::DidReceiveData(bool fin, + WebSocketMessageType type, + const std::vector<char>& data) { + DVLOG(1) << "WebSocketBridge::DidReceiveData(" + << fin << ", " + << type << ", " + << "(data size = " << data.size() << "))"; + if (!client_) + return; + + WebSocketHandle::MessageType type_to_pass = + WebSocketHandle::MessageTypeContinuation; + switch (type) { + case WEB_SOCKET_MESSAGE_TYPE_CONTINUATION: + type_to_pass = WebSocketHandle::MessageTypeContinuation; + break; + case WEB_SOCKET_MESSAGE_TYPE_TEXT: + type_to_pass = WebSocketHandle::MessageTypeText; + break; + case WEB_SOCKET_MESSAGE_TYPE_BINARY: + type_to_pass = WebSocketHandle::MessageTypeBinary; + break; + } + const char* data_to_pass = data.empty() ? NULL : &data[0]; + client_->didReceiveData(this, fin, type_to_pass, data_to_pass, data.size()); + // |this| can be deleted here. +} + +void WebSocketBridge::DidReceiveFlowControl(int64_t quota) { + DVLOG(1) << "WebSocketBridge::DidReceiveFlowControl(" << quota << ")"; + if (!client_) + return; + + client_->didReceiveFlowControl(this, quota); + // |this| can be deleted here. +} + +void WebSocketBridge::DidClose(bool was_clean, + unsigned short code, + const std::string& reason) { + DVLOG(1) << "WebSocketBridge::DidClose(" + << was_clean << ", " + << code << ", " + << reason << ")"; + WebSocketHandleClient* client = client_; + Disconnect(); + if (!client) + return; + + WebString reason_to_pass = WebString::fromUTF8(reason); + client->didClose(this, was_clean, code, reason_to_pass); + // |this| can be deleted here. +} + +void WebSocketBridge::DidStartClosingHandshake() { + DVLOG(1) << "WebSocketBridge::DidStartClosingHandshake()"; + if (!client_) + return; + + client_->didStartClosingHandshake(this); + // |this| can be deleted here. +} + +void WebSocketBridge::connect(const WebURL& url, + const WebVector<WebString>& protocols, + const WebSecurityOrigin& origin, + const WebURL& first_party_for_cookies, + const WebString& user_agent_override, + WebSocketHandleClient* client) { + DCHECK_EQ(kInvalidChannelId, channel_id_); + WebSocketDispatcher* dispatcher = + ChildThreadImpl::current()->websocket_dispatcher(); + channel_id_ = dispatcher->AddBridge(this); + client_ = client; + + std::vector<std::string> protocols_to_pass; + for (size_t i = 0; i < protocols.size(); ++i) + protocols_to_pass.push_back(protocols[i].utf8()); + + DVLOG(1) << "Bridge#" << channel_id_ << " Connect(" << url << ", (" + << base::JoinString(protocols_to_pass, ", ") << "), " + << origin.toString().utf8() << ")"; + + WebSocketHostMsg_AddChannelRequest_Params params; + params.socket_url = url; + params.requested_protocols = protocols_to_pass; + params.origin = origin; + params.first_party_for_cookies = first_party_for_cookies; + params.user_agent_override = user_agent_override.latin1(); + params.render_frame_id = render_frame_id_; + + // Headers (ie: User-Agent) are ISO Latin 1. + ChildThreadImpl::current()->Send(new WebSocketHostMsg_AddChannelRequest( + channel_id_, params)); +} + +void WebSocketBridge::send(bool fin, + WebSocketHandle::MessageType type, + const char* data, + size_t size) { + if (channel_id_ == kInvalidChannelId) + return; + + WebSocketMessageType type_to_pass = WEB_SOCKET_MESSAGE_TYPE_CONTINUATION; + switch (type) { + case WebSocketHandle::MessageTypeContinuation: + type_to_pass = WEB_SOCKET_MESSAGE_TYPE_CONTINUATION; + break; + case WebSocketHandle::MessageTypeText: + type_to_pass = WEB_SOCKET_MESSAGE_TYPE_TEXT; + break; + case WebSocketHandle::MessageTypeBinary: + type_to_pass = WEB_SOCKET_MESSAGE_TYPE_BINARY; + break; + } + + DVLOG(1) << "Bridge #" << channel_id_ << " Send(" + << fin << ", " << type_to_pass << ", " + << "(data size = " << size << "))"; + + ChildThreadImpl::current()->Send( + new WebSocketMsg_SendFrame(channel_id_, + fin, + type_to_pass, + std::vector<char>(data, data + size))); +} + +void WebSocketBridge::flowControl(int64_t quota) { + if (channel_id_ == kInvalidChannelId) + return; + + DVLOG(1) << "Bridge #" << channel_id_ << " FlowControl(" << quota << ")"; + + ChildThreadImpl::current()->Send( + new WebSocketMsg_FlowControl(channel_id_, quota)); +} + +void WebSocketBridge::close(unsigned short code, + const WebString& reason) { + if (channel_id_ == kInvalidChannelId) + return; + + std::string reason_to_pass = reason.utf8(); + DVLOG(1) << "Bridge #" << channel_id_ << " Close(" + << code << ", " << reason_to_pass << ")"; + // This method is for closing handshake and hence |was_clean| shall be true. + ChildThreadImpl::current()->Send( + new WebSocketMsg_DropChannel(channel_id_, true, code, reason_to_pass)); +} + +void WebSocketBridge::Disconnect() { + if (channel_id_ == kInvalidChannelId) + return; + WebSocketDispatcher* dispatcher = + ChildThreadImpl::current()->websocket_dispatcher(); + dispatcher->RemoveBridge(channel_id_); + + channel_id_ = kInvalidChannelId; + client_ = NULL; +} + +} // namespace content
diff --git a/content/child/websocket_bridge.h b/content/child/websocket_bridge.h new file mode 100644 index 0000000..d8ccc2b --- /dev/null +++ b/content/child/websocket_bridge.h
@@ -0,0 +1,77 @@ +// Copyright 2013 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_CHILD_WEBSOCKET_BRIDGE_H_ +#define CONTENT_CHILD_WEBSOCKET_BRIDGE_H_ + +#include <stddef.h> +#include <stdint.h> +#include <string> +#include <vector> + +#include "content/common/websocket.h" +#include "ipc/ipc_message.h" +#include "third_party/WebKit/public/platform/WebVector.h" +#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandle.h" + +namespace blink { +class WebSecurityOrigin; +class WebString; +class WebURL; +} // namespace blink + +namespace content { + +class WebSocketBridge : public blink::WebSocketHandle { + public: + WebSocketBridge(); + + // Handles an IPC message from the browser process. + bool OnMessageReceived(const IPC::Message& message); + + // WebSocketHandle functions. + void connect(const blink::WebURL& url, + const blink::WebVector<blink::WebString>& protocols, + const blink::WebSecurityOrigin& origin, + const blink::WebURL& first_party_for_cookies, + const blink::WebString& user_agent_override, + blink::WebSocketHandleClient* client) override; + void send(bool fin, + WebSocketHandle::MessageType type, + const char* data, + size_t size) override; + void flowControl(int64_t quota) override; + void close(unsigned short code, const blink::WebString& reason) override; + + void Disconnect(); + + void set_render_frame_id(int id) { + render_frame_id_ = id; + } + + private: + ~WebSocketBridge() override; + + void DidConnect(const std::string& selected_protocol, + const std::string& extensions); + void DidStartOpeningHandshake(const WebSocketHandshakeRequest& request); + void DidFinishOpeningHandshake(const WebSocketHandshakeResponse& response); + void DidFail(const std::string& message); + void DidReceiveData(bool fin, + WebSocketMessageType type, + const std::vector<char>& data); + void DidReceiveFlowControl(int64_t quota); + void DidClose(bool was_clean, unsigned short code, const std::string& reason); + void DidStartClosingHandshake(); + + int channel_id_; + int render_frame_id_; + blink::WebSocketHandleClient* client_; + + static const int kInvalidChannelId = -1; +}; + +} // namespace content + +#endif // CONTENT_CHILD_WEBSOCKET_BRIDGE_H_
diff --git a/content/child/websocket_dispatcher.cc b/content/child/websocket_dispatcher.cc new file mode 100644 index 0000000..13535eb --- /dev/null +++ b/content/child/websocket_dispatcher.cc
@@ -0,0 +1,74 @@ +// Copyright 2013 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/child/websocket_dispatcher.h" + +#include <stdint.h> +#include <map> + +#include "base/logging.h" +#include "content/child/websocket_bridge.h" +#include "content/common/websocket_messages.h" +#include "ipc/ipc_message.h" +#include "url/gurl.h" + +namespace content { + +WebSocketDispatcher::WebSocketDispatcher() + : channel_id_max_(0), + weak_ptr_factory_(this) {} + +WebSocketDispatcher::~WebSocketDispatcher() {} + +bool WebSocketDispatcher::CanHandleMessage(const IPC::Message& msg) { + switch (msg.type()) { + case WebSocketMsg_AddChannelResponse::ID: + case WebSocketMsg_NotifyStartOpeningHandshake::ID: + case WebSocketMsg_NotifyFinishOpeningHandshake::ID: + case WebSocketMsg_NotifyFailure::ID: + case WebSocketMsg_SendFrame::ID: + case WebSocketMsg_FlowControl::ID: + case WebSocketMsg_DropChannel::ID: + case WebSocketMsg_NotifyClosing::ID: + return true; + default: + return false; + } +} + +int WebSocketDispatcher::AddBridge(WebSocketBridge* bridge) { + ++channel_id_max_; + bridges_.insert(std::make_pair(channel_id_max_, bridge)); + return channel_id_max_; +} + +void WebSocketDispatcher::RemoveBridge(int channel_id) { + std::map<int, WebSocketBridge*>::iterator iter = bridges_.find(channel_id); + if (iter == bridges_.end()) { + DVLOG(1) << "Remove a non-existent bridge(" << channel_id << ")"; + return; + } + bridges_.erase(iter); +} + +bool WebSocketDispatcher::OnMessageReceived(const IPC::Message& msg) { + if (!CanHandleMessage(msg)) + return false; + WebSocketBridge* bridge = GetBridge(msg.routing_id(), msg.type()); + if (!bridge) + return true; + return bridge->OnMessageReceived(msg); +} + +WebSocketBridge* WebSocketDispatcher::GetBridge(int channel_id, uint32_t type) { + std::map<int, WebSocketBridge*>::iterator iter = bridges_.find(channel_id); + if (iter == bridges_.end()) { + DVLOG(1) << "No bridge for channel_id=" << channel_id + << ", type=" << type; + return NULL; + } + return iter->second; +} + +} // namespace content
diff --git a/content/child/websocket_dispatcher.h b/content/child/websocket_dispatcher.h new file mode 100644 index 0000000..bd2fd50 --- /dev/null +++ b/content/child/websocket_dispatcher.h
@@ -0,0 +1,56 @@ +// Copyright 2013 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_CHILD_WEBSOCKET_DISPATCHER_H_ +#define CONTENT_CHILD_WEBSOCKET_DISPATCHER_H_ + +#include <stdint.h> +#include <map> +#include <string> +#include <vector> + +#include "base/compiler_specific.h" +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "ipc/ipc_listener.h" + +namespace content { + +class WebSocketBridge; + +// Dispatches WebSocket related messages sent to a child process from the +// main browser process. There is one instance per child process. Messages +// are dispatched on the main child thread. The ChildThread class +// creates an instance of WebSocketDispatcher and delegates calls to it. +class WebSocketDispatcher : public IPC::Listener { + public: + WebSocketDispatcher(); + ~WebSocketDispatcher() override; + + static bool CanHandleMessage(const IPC::Message& msg); + + // Returns a unique channel id + int AddBridge(WebSocketBridge* bridge); + void RemoveBridge(int channel_id); + + // IPC::Listener implementation. + bool OnMessageReceived(const IPC::Message& msg) override; + + base::WeakPtr<WebSocketDispatcher> GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); + } + + private: + WebSocketBridge* GetBridge(int channel_id, uint32_t type); + + std::map<int, WebSocketBridge*> bridges_; + int channel_id_max_; + base::WeakPtrFactory<WebSocketDispatcher> weak_ptr_factory_; + + DISALLOW_COPY_AND_ASSIGN(WebSocketDispatcher); +}; + +} // namespace content + +#endif // CONTENT_CHILD_WEBSOCKET_DISPATCHER_H_
diff --git a/content/child/websocket_message_filter.cc b/content/child/websocket_message_filter.cc new file mode 100644 index 0000000..b2e54c0 --- /dev/null +++ b/content/child/websocket_message_filter.cc
@@ -0,0 +1,36 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/child/websocket_message_filter.h" + +#include "base/bind.h" +#include "base/single_thread_task_runner.h" +#include "content/child/websocket_dispatcher.h" +#include "ipc/ipc_message.h" + +namespace content { + +WebSocketMessageFilter::WebSocketMessageFilter( + WebSocketDispatcher* websocket_dispatcher) + : websocket_dispatcher_(websocket_dispatcher->GetWeakPtr()) {} + +WebSocketMessageFilter::~WebSocketMessageFilter() {} + +bool WebSocketMessageFilter::OnMessageReceived(const IPC::Message& message) { + if (!WebSocketDispatcher::CanHandleMessage(message)) + return false; + loading_task_runner_->PostTask(FROM_HERE, base::Bind( + &WebSocketMessageFilter::OnMessageReceivedOnMainThread, + this, message)); + return true; +} + +void WebSocketMessageFilter::OnMessageReceivedOnMainThread( + const IPC::Message& message) { + if (!websocket_dispatcher_.get()) + return; + websocket_dispatcher_->OnMessageReceived(message); +} + +} // namespace content
diff --git a/content/child/websocket_message_filter.h b/content/child/websocket_message_filter.h new file mode 100644 index 0000000..00efbb2 --- /dev/null +++ b/content/child/websocket_message_filter.h
@@ -0,0 +1,50 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_CHILD_WEBSOCKET_MESSAGE_FILTER_H_ +#define CONTENT_CHILD_WEBSOCKET_MESSAGE_FILTER_H_ + +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "base/memory/weak_ptr.h" +#include "ipc/message_filter.h" + +namespace base { +class SingleThreadTaskRunner; +} + +namespace content { + +class WebSocketDispatcher; + +// Delegates IPC messages to a WebSocketDispatcher on the loading task queue +// instead of the default task queue. +class WebSocketMessageFilter : public IPC::MessageFilter { + public: + explicit WebSocketMessageFilter(WebSocketDispatcher* websocket_dispatcher); + + // IPC::MessageFilter implementation. + bool OnMessageReceived(const IPC::Message& message) override; + + void SetLoadingTaskRunner( + scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner) { + loading_task_runner_ = loading_task_runner; + } + + private: + ~WebSocketMessageFilter() override; + void OnMessageReceivedOnMainThread(const IPC::Message& message); + + scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner_; + + // This actual object is owned by a ChildThreadImpl and is derefed only on the + // main thread. + base::WeakPtr<WebSocketDispatcher> websocket_dispatcher_; + + DISALLOW_COPY_AND_ASSIGN(WebSocketMessageFilter); +}; + +} // namespace content + +#endif // CONTENT_CHILD_WEBSOCKET_MESSAGE_FILTER_H_
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn index d92200de..528dac7c 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn
@@ -234,10 +234,7 @@ } mojom("mojo_bindings") { - # This interface is internal to content. However, this is not exported from - # the content component shared library. Code in content but outside of the - # content component (content/test or content/shell) should link to this - # directly. + # This interface is internal to content. visibility = [ "//content/*" ] sources = [ @@ -249,7 +246,6 @@ "render_widget_window_tree_client_factory.mojom", "service_worker/embedded_worker_setup.mojom", "storage_partition_service.mojom", - "websocket.mojom", ] import_dirs = [ "//mojo/services" ] @@ -267,4 +263,8 @@ ] use_new_wrapper_types = false + + export_class_attribute = "CONTENT_EXPORT" + export_define = "CONTENT_IMPLEMENTATION=1" + export_header = "content/common/content_export.h" }
diff --git a/content/common/content_message_generator.h b/content/common/content_message_generator.h index 7b8c0c8..e436f93 100644 --- a/content/common/content_message_generator.h +++ b/content/common/content_message_generator.h
@@ -52,6 +52,7 @@ #include "content/common/text_input_client_messages.h" #include "content/common/utility_messages.h" #include "content/common/view_messages.h" +#include "content/common/websocket_messages.h" #include "content/common/worker_messages.h" #if defined(ENABLE_WEBRTC)
diff --git a/content/common/input/input_event_dispatch_type.h b/content/common/input/input_event_dispatch_type.h index ea802ff..5f3234c 100644 --- a/content/common/input/input_event_dispatch_type.h +++ b/content/common/input/input_event_dispatch_type.h
@@ -15,10 +15,7 @@ DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN, // Dispatch a non-blocking event. Sender will not receive an ACK. DISPATCH_TYPE_NON_BLOCKING, - // Dispatch a non-blocking event and notify main thread as well. This type - // should only be sent from the compositor to main thread. - DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, - DISPATCH_TYPE_MAX = DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN + DISPATCH_TYPE_MAX = DISPATCH_TYPE_NON_BLOCKING }; } // namespace content
diff --git a/content/common/render_frame_message_filter.mojom b/content/common/render_frame_message_filter.mojom index 5bbf05e..279a12d 100644 --- a/content/common/render_frame_message_filter.mojom +++ b/content/common/render_frame_message_filter.mojom
@@ -17,4 +17,8 @@ [Sync] GetCookies(int32 render_frame_id, url.mojom.Url url, url.mojom.Url first_party_for_cookies) => (string cookies); + + // Retrieves the zoom level for the given URL. + GetHostZoomLevel(int32 render_frame_id, url.mojom.Url url) + => (double zoom_level); };
diff --git a/content/common/sandbox_win.cc b/content/common/sandbox_win.cc index e3b8f7d..2cd1e9c3 100644 --- a/content/common/sandbox_win.cc +++ b/content/common/sandbox_win.cc
@@ -31,6 +31,7 @@ #include "base/win/windows_version.h" #include "content/common/content_switches_internal.h" #include "content/public/common/content_client.h" +#include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" #include "content/public/common/sandbox_init.h" #include "content/public/common/sandboxed_process_launcher_delegate.h" @@ -724,8 +725,10 @@ sandbox::MITIGATION_IMAGE_LOAD_NO_REMOTE | sandbox::MITIGATION_IMAGE_LOAD_NO_LOW_LABEL; - sandbox::ResultCode result = sandbox::SBOX_ERROR_GENERIC; + if (base::FeatureList::IsEnabled(features::kWinSboxDisableExtensionPoints)) + mitigations |= sandbox::MITIGATION_EXTENSION_POINT_DISABLE; + sandbox::ResultCode result = sandbox::SBOX_ERROR_GENERIC; result = policy->SetProcessMitigations(mitigations); if (result != sandbox::SBOX_ALL_OK)
diff --git a/content/common/view_messages.h b/content/common/view_messages.h index 562ec44..02896b3 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h
@@ -623,13 +623,6 @@ IPC_MESSAGE_ROUTED1(ViewMsg_Zoom, content::PageZoom /* function */) -// Set the zoom level for a particular url that the renderer is in the -// process of loading. This will be stored, to be used if the load commits -// and ignored otherwise. -IPC_MESSAGE_ROUTED2(ViewMsg_SetZoomLevelForLoadingURL, - GURL /* url */, - double /* zoom_level */) - // Change encoding of page in the renderer. IPC_MESSAGE_ROUTED1(ViewMsg_SetPageEncoding, std::string /*new encoding name*/)
diff --git a/content/common/websocket.cc b/content/common/websocket.cc new file mode 100644 index 0000000..b1d57611 --- /dev/null +++ b/content/common/websocket.cc
@@ -0,0 +1,18 @@ +// Copyright 2013 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/common/websocket.h" + +namespace content { + +WebSocketHandshakeRequest::WebSocketHandshakeRequest() {} + +WebSocketHandshakeRequest::~WebSocketHandshakeRequest() {} + +WebSocketHandshakeResponse::WebSocketHandshakeResponse() + : status_code(0) {} + +WebSocketHandshakeResponse::~WebSocketHandshakeResponse() {} + +} // namespace content
diff --git a/content/common/websocket.h b/content/common/websocket.h new file mode 100644 index 0000000..324e9a10 --- /dev/null +++ b/content/common/websocket.h
@@ -0,0 +1,64 @@ +// Copyright 2013 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_WEBSOCKET_H_ +#define CONTENT_COMMON_WEBSOCKET_H_ + +#include <string> +#include <utility> +#include <vector> + +#include "base/strings/string_split.h" +#include "base/time/time.h" +#include "url/gurl.h" + +namespace content { + +// WebSocket data message types sent between the browser and renderer processes. +enum WebSocketMessageType { + WEB_SOCKET_MESSAGE_TYPE_CONTINUATION = 0x0, + WEB_SOCKET_MESSAGE_TYPE_TEXT = 0x1, + WEB_SOCKET_MESSAGE_TYPE_BINARY = 0x2, + WEB_SOCKET_MESSAGE_TYPE_LAST = WEB_SOCKET_MESSAGE_TYPE_BINARY +}; + +// Opening handshake request information which will be shown in the inspector. +// All string data should be encoded to ASCII in the browser process. +struct WebSocketHandshakeRequest { + WebSocketHandshakeRequest(); + ~WebSocketHandshakeRequest(); + + // The request URL + GURL url; + // Additional HTTP request headers + base::StringPairs headers; + // HTTP request headers raw string + std::string headers_text; + // The time that this request is sent + base::Time request_time; +}; + +// Opening handshake response information which will be shown in the inspector. +// All string data should be encoded to ASCII in the browser process. +struct WebSocketHandshakeResponse { + WebSocketHandshakeResponse(); + ~WebSocketHandshakeResponse(); + + // The request URL + GURL url; + // HTTP status code + int status_code; + // HTTP status text + std::string status_text; + // Additional HTTP response headers + base::StringPairs headers; + // HTTP response headers raw string + std::string headers_text; + // The time that this response arrives + base::Time response_time; +}; + +} // namespace content + +#endif // CONTENT_COMMON_WEBSOCKET_H_
diff --git a/content/common/websocket.mojom b/content/common/websocket.mojom deleted file mode 100644 index 120f4e96..0000000 --- a/content/common/websocket.mojom +++ /dev/null
@@ -1,138 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -module content.mojom; - -import "url/mojo/origin.mojom"; -import "url/mojo/url.mojom"; - -enum WebSocketMessageType { - CONTINUATION, - TEXT, - BINARY, - LAST = BINARY -}; - -// TODO(darin): Move to a more general location. -struct HttpHeader { - string name; - string value; -}; - -// TODO(darin): Remove redundancy b/w |headers| and |headers_text|. - -struct WebSocketHandshakeRequest { - url.mojom.Url url; - array<HttpHeader> headers; - string headers_text; -}; - -struct WebSocketHandshakeResponse { - url.mojom.Url url; - int32 status_code; - string status_text; - array<HttpHeader> headers; - string headers_text; -}; - -interface WebSocketClient { - OnFailChannel(string reason); - - // Notify the renderer that the browser has started an opening handshake. - // This message is for showing the request in the inspector and - // can be omitted if the inspector is not active. - OnStartOpeningHandshake(WebSocketHandshakeRequest request); - - // Notify the renderer that the browser has finished an opening handshake. - // This message precedes AddChannelResponse. - // This message is for showing the response in the inspector and - // can be omitted if the inspector is not active. - OnFinishOpeningHandshake(WebSocketHandshakeResponse response); - - // Response to an AddChannelRequest. |selected_protocol| is the sub-protocol - // the server selected, or empty if no sub-protocol was selected. - // |extensions| is the list of extensions negotiated for the connection. - OnAddChannelResponse(string selected_protocol, string extensions); - - // Receive a non-control frame from the remote server. - // - |fin| indicates that this frame is the last in the current message. - // - |type| is the type of the message. On the first frame of a message, it - // must be set to either WebSocketMessageType.TEXT or - // WebSocketMessageType.BINARY. On subsequent frames, it must be set to - // WebSocketMessageType.CONTINUATION, and the type is the same as that of - // the first message. If |type| is WebSocketMessageType.TEXT, then the - // concatenation of the |data| from every frame in the message must be valid - // UTF-8. If |fin| is not set, |data| must be non-empty. - OnDataFrame(bool fin, WebSocketMessageType type, array<uint8> data); - - // Add |quota| tokens of send quota for the channel. |quota| must be a - // positive integer. Both the browser and the renderer set send quota for the - // other side, and check that quota has not been exceeded when receiving - // messages. Both sides start a new channel with a quota of 0, and must wait - // for a FlowControl message before calling SendFrame. The total available - // quota on one side must never exceed 0x7FFFFFFFFFFFFFFF tokens. - OnFlowControl(int64 quota); - - // Drop the channel. - // - // When sent by the renderer, this will cause a Close message will be sent and - // the TCP/IP connection will be closed. - // - // When sent by the browser, this indicates that a Close has been received, - // the connection was closed, or a network or protocol error occurred. - // - // - |code| is one of the reason codes specified in RFC6455. - // - |reason|, if non-empty, is a UTF-8 encoded string which may be useful - // for debugging but is not necessarily human-readable, as supplied by the - // server in the Close message. - // - If |was_clean| is false, then the WebSocket connection was not closed - // cleanly. - OnDropChannel(bool was_clean, uint16 code, string reason); - - // Notify the renderer that a closing handshake has been initiated by the - // server, so that it can set the Javascript readyState to CLOSING. - OnClosingHandshake(); -}; - -interface WebSocket { - // Open new WebSocket connection to |socket_url|. |requested_protocols| is a - // list of tokens identifying sub-protocols the renderer would like to use, - // as described in RFC6455 "Subprotocols Using the WebSocket Protocol". - AddChannelRequest(url.mojom.Url url, - array<string> requested_protocols, - url.mojom.Origin origin, - url.mojom.Url first_party_for_cookies, - string user_agent_override, - WebSocketClient client); - - // Send a non-control frame to the remote server. - // - |fin| indicates that this frame is the last in the current message. - // - |type| is the type of the message. On the first frame of a message, it - // must be set to either WebSocketMessageType.TEXT or - // WebSocketMessageType.BINARY. On subsequent frames, it must be set to - // WebSocketMessageType.CONTINUATION, and the type is the same as that of - // the first message. If |type| is WebSocketMessageType.TEXT, then the - // concatenation of the |data| from every frame in the message must be valid - // UTF-8. If |fin| is not set, |data| must be non-empty. - SendFrame(bool fin, WebSocketMessageType type, array<uint8> data); - - // Add |quota| tokens of send quota for the channel. |quota| must be a - // positive integer. Both the browser and the renderer set send quota for the - // other side, and check that quota has not been exceeded when receiving - // messages. Both sides start a new channel with a quota of 0, and must wait - // for a FlowControl message before calling SendFrame. The total available - // quota on one side must never exceed 0x7FFFFFFFFFFFFFFF tokens. - SendFlowControl(int64 quota); - - // Close the channel gracefully. - // - // When sent by the renderer, this will cause a Close message will be sent and - // the TCP/IP connection will be closed. - // - // - |code| is one of the reason codes specified in RFC6455. - // - |reason|, if non-empty, is a UTF-8 encoded string which may be useful for - // debugging but is not necessarily human-readable, as supplied by the - // server in the Close message. - StartClosingHandshake(uint16 code, string reason); -};
diff --git a/content/common/websocket_messages.h b/content/common/websocket_messages.h new file mode 100644 index 0000000..ce250780b --- /dev/null +++ b/content/common/websocket_messages.h
@@ -0,0 +1,201 @@ +// Copyright 2013 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. + +// Multiply-included message file, hence no include guard. + +// This file defines the IPCs for the browser-side implementation of +// WebSockets. +// +// This IPC interface was originally desined based on the WebSocket +// multiplexing draft spec, +// http://tools.ietf.org/html/draft-ietf-hybi-websocket-multiplexing-09. So, +// some of them are given names correspond to the concepts defined in the spec. +// +// A WebSocketBridge object in the renderer and the corresponding WebSocketHost +// object in the browser are associated using an identifier named channel ID. +// The channel id is chosen by the renderer for a new channel. While the +// channel id is unique per-renderer, the browser may have multiple renderers +// using the same channel id. +// +// There're WebSocketDispatcherHost objects for each renderer. Each of +// WebSocketDispatcherHost holds a channel id to WebSocketHost map. +// +// Received messages are routed to the corresponding object by +// WebSocketDispatcher in the renderer and WebSocketDispatcherHost in the +// browser using the channel ID. +// +// The channel ID value is stored in the routing ID member which is available +// when we use the IPC_MESSAGE_ROUTED macro though it's unintended use. + +#include <stdint.h> + +#include <string> +#include <vector> + +#include "content/common/content_export.h" +#include "content/common/websocket.h" +#include "ipc/ipc_message_macros.h" +#include "url/gurl.h" +#include "url/origin.h" + +#undef IPC_MESSAGE_EXPORT +#define IPC_MESSAGE_EXPORT CONTENT_EXPORT +#define IPC_MESSAGE_START WebSocketMsgStart + +IPC_ENUM_TRAITS_MAX_VALUE(content::WebSocketMessageType, + content::WEB_SOCKET_MESSAGE_TYPE_LAST) + +IPC_STRUCT_BEGIN(WebSocketHostMsg_AddChannelRequest_Params) + IPC_STRUCT_MEMBER(GURL, socket_url) + IPC_STRUCT_MEMBER(std::vector<std::string>, requested_protocols) + IPC_STRUCT_MEMBER(url::Origin, origin) + IPC_STRUCT_MEMBER(GURL, first_party_for_cookies) + IPC_STRUCT_MEMBER(std::string, user_agent_override) + IPC_STRUCT_MEMBER(int, render_frame_id) +IPC_STRUCT_END() + +IPC_STRUCT_TRAITS_BEGIN(content::WebSocketHandshakeRequest) + IPC_STRUCT_TRAITS_MEMBER(url) + IPC_STRUCT_TRAITS_MEMBER(headers) + IPC_STRUCT_TRAITS_MEMBER(headers_text) + IPC_STRUCT_TRAITS_MEMBER(request_time) +IPC_STRUCT_TRAITS_END() + +IPC_STRUCT_TRAITS_BEGIN(content::WebSocketHandshakeResponse) + IPC_STRUCT_TRAITS_MEMBER(url) + IPC_STRUCT_TRAITS_MEMBER(status_code) + IPC_STRUCT_TRAITS_MEMBER(status_text) + IPC_STRUCT_TRAITS_MEMBER(headers) + IPC_STRUCT_TRAITS_MEMBER(headers_text) + IPC_STRUCT_TRAITS_MEMBER(response_time) +IPC_STRUCT_TRAITS_END() + +// WebSocket messages sent from the renderer to the browser. + +// Open new WebSocket connection to |socket_url|. |requested_protocols| is a +// list of tokens identifying sub-protocols the renderer would like to use, as +// described in RFC6455 "Subprotocols Using the WebSocket Protocol". +IPC_MESSAGE_ROUTED1(WebSocketHostMsg_AddChannelRequest, + WebSocketHostMsg_AddChannelRequest_Params) + +// Send a complete binary WebSocket message consisting of the Blob identified by +// |uuid|. The message will be split into frames as necessary. |expected_size| +// must match the browser's idea of the size of the Blob to prevent flow control +// from becoming desynchronised. If it does not match the connection will be +// terminated with a WebSocketMsg_NotifyFailure message. On success, the browser +// will have consumed |expected_size| bytes of flow control send quota and the +// renderer needs to subtract that from its running total of flow control send +// quota. See the design doc at +// https://docs.google.com/document/d/1CDiXB9pBumhFVVfmIn1CRI6v6byxyqWu2urEE9xp714/edit +// SendFrame or SendBlob IPCs must not be sent by the renderer until the +// BlobSendComplete message has been received from the browser. The renderer +// should retain a reference to the Blob until either a BlobSendComplete or +// NotifyFailure IPC is received. +IPC_MESSAGE_ROUTED2(WebSocketHostMsg_SendBlob, + std::string /* uuid */, + uint64_t /* expected_size */) + +// WebSocket messages sent from the browser to the renderer. + +// Respond to an AddChannelRequest. |selected_protocol| is the sub-protocol the +// server selected, or empty if no sub-protocol was selected. |extensions| is +// the list of extensions negotiated for the connection. +IPC_MESSAGE_ROUTED2(WebSocketMsg_AddChannelResponse, + std::string /* selected_protocol */, + std::string /* extensions */) + +// Notify the renderer that the browser has started an opening handshake. +// This message is for showing the request in the inspector and +// can be omitted if the inspector is not active. +IPC_MESSAGE_ROUTED1(WebSocketMsg_NotifyStartOpeningHandshake, + content::WebSocketHandshakeRequest /* request */) + +// Notify the renderer that the browser has finished an opening handshake. +// This message precedes AddChannelResponse. +// This message is for showing the response in the inspector and +// can be omitted if the inspector is not active. +IPC_MESSAGE_ROUTED1(WebSocketMsg_NotifyFinishOpeningHandshake, + content::WebSocketHandshakeResponse /* response */) + +// Notify the renderer that either: +// - the connection open request (WebSocketHostMsg_AddChannelRequest) failed. +// - the browser is required to fail the connection +// (see RFC6455 7.1.7 for details). +// +// When the renderer process receives this messages it does the following: +// 1. Fire an error event. +// 2. Show |message| to the inspector. +// 3. Close the channel immediately uncleanly, as if it received +// DropChannel(was_clean = false, code = 1006, reason = ""). +// |message| will be shown in the inspector and won't be passed to the script. +// TODO(yhirano): Find the way to pass |message| directly to the inspector +// process. +IPC_MESSAGE_ROUTED1(WebSocketMsg_NotifyFailure, + std::string /* message */) + +// Indicates tbat the current Blob has finished sending. The renderer can +// release its reference on the Blob, and may now use SendFrame or SendBlob to +// send more messages. +IPC_MESSAGE_ROUTED0(WebSocketMsg_BlobSendComplete) + +// WebSocket messages that can be sent in either direction. + +// Send a non-control frame to the channel. +// - If the sender is the renderer, it will be sent to the remote server. +// - If the sender is the browser, it comes from the remote server. +// +// - |fin| indicates that this frame is the last in the current message. +// - |type| is the type of the message. On the first frame of a message, it +// must be set to either WEB_SOCKET_MESSAGE_TYPE_TEXT or +// WEB_SOCKET_MESSAGE_TYPE_BINARY. On subsequent frames, it must be set to +// WEB_SOCKET_MESSAGE_TYPE_CONTINUATION, and the type is the same as that of +// the first message. If |type| is WEB_SOCKET_MESSAGE_TYPE_TEXT, then the +// concatenation of the |data| from every frame in the message must be valid +// UTF-8. If |fin| is not set, |data| must be non-empty. +IPC_MESSAGE_ROUTED3(WebSocketMsg_SendFrame, + bool /* fin */, + content::WebSocketMessageType /* type */, + std::vector<char> /* data */) + +// Add |quota| tokens of send quota for the channel. |quota| must be a positive +// integer. Both the browser and the renderer set send quota for the other +// side, and check that quota has not been exceeded when receiving messages. +// Both sides start a new channel with a quota of 0, and must wait for a +// FlowControl message before calling SendFrame. The total available quota on +// one side must never exceed 0x7FFFFFFFFFFFFFFF tokens. +// +// During "blob sending mode", ie. between the renderer sending a +// WebSocketHostMsg_SendBlob IPC and receiving a WebSocketMsg_BlobSendComplete +// IPC, quota is used up in the browser process to send the blob, but +// FlowControl IPCs for that quota are still sent to the renderer. The render +// process needs to take into account that quota equal to the size of the Blob +// has already been used when calculating how much send quota it has left after +// receiving BlobSendComplete. +IPC_MESSAGE_ROUTED1(WebSocketMsg_FlowControl, int64_t /* quota */) + +// Drop the channel. +// +// When sent by the renderer, this will cause a Close message will be sent and +// the TCP/IP connection will be closed. +// +// When sent by the browser, this indicates that a Close has been received, the +// connection was closed, or a network or protocol error occurred. +// +// - |code| is one of the reason codes specified in RFC6455. +// - |reason|, if non-empty, is a UTF-8 encoded string which may be useful for +// debugging but is not necessarily human-readable, as supplied by the server +// in the Close message. +// - If |was_clean| is false on a message from the browser, then the WebSocket +// connection was not closed cleanly. If |was_clean| is false on a message +// from the renderer, then the connection should be closed immediately without +// a closing handshake and the renderer cannot accept any new messages on this +// connection. +IPC_MESSAGE_ROUTED3(WebSocketMsg_DropChannel, + bool /* was_clean */, + unsigned short /* code */, + std::string /* reason */) + +// Notify the renderer that a closing handshake has been initiated by the +// server, so that it can set the Javascript readyState to CLOSING. +IPC_MESSAGE_ROUTED0(WebSocketMsg_NotifyClosing)
diff --git a/content/content_browser.gypi b/content/content_browser.gypi index dc7b855..4fd4b67 100644 --- a/content/content_browser.gypi +++ b/content/content_browser.gypi
@@ -1333,6 +1333,12 @@ 'browser/renderer_host/web_input_event_aurawin.cc', 'browser/renderer_host/webmenurunner_mac.h', 'browser/renderer_host/webmenurunner_mac.mm', + 'browser/renderer_host/websocket_blob_sender.cc', + 'browser/renderer_host/websocket_blob_sender.h', + 'browser/renderer_host/websocket_dispatcher_host.cc', + 'browser/renderer_host/websocket_dispatcher_host.h', + 'browser/renderer_host/websocket_host.cc', + 'browser/renderer_host/websocket_host.h', 'browser/resolve_proxy_msg_helper.cc', 'browser/resolve_proxy_msg_helper.h', 'browser/resource_context_impl.cc', @@ -1568,10 +1574,6 @@ 'browser/webui/web_ui_impl.cc', 'browser/webui/web_ui_impl.h', 'browser/webui/web_ui_message_handler.cc', - 'browser/websockets/websocket_impl.cc', - 'browser/websockets/websocket_impl.h', - 'browser/websockets/websocket_manager.cc', - 'browser/websockets/websocket_manager.h', 'browser/zygote_host/zygote_communication_linux.cc', 'browser/zygote_host/zygote_communication_linux.h', 'browser/zygote_host/zygote_handle_linux.cc',
diff --git a/content/content_child.gypi b/content/content_child.gypi index 8e16e1e..0b6b6c4 100644 --- a/content/content_child.gypi +++ b/content/content_child.gypi
@@ -211,6 +211,12 @@ 'child/webfileutilities_impl.h', 'child/webmessageportchannel_impl.cc', 'child/webmessageportchannel_impl.h', + 'child/websocket_bridge.cc', + 'child/websocket_bridge.h', + 'child/websocket_dispatcher.cc', + 'child/websocket_dispatcher.h', + 'child/websocket_message_filter.cc', + 'child/websocket_message_filter.h', 'child/webthemeengine_impl_android.cc', 'child/webthemeengine_impl_android.h', 'child/webthemeengine_impl_default.cc',
diff --git a/content/content_common.gypi b/content/content_common.gypi index 637d4bdf..c16e64a 100644 --- a/content/content_common.gypi +++ b/content/content_common.gypi
@@ -545,6 +545,9 @@ 'common/utility_messages.h', 'common/view_message_enums.h', 'common/view_messages.h', + 'common/websocket.cc', + 'common/websocket.h', + 'common/websocket_messages.h', 'common/worker_messages.h', 'common/zygote_commands_linux.h', ],
diff --git a/content/content_common_mojo_bindings.gyp b/content/content_common_mojo_bindings.gyp index f15d427..ce0a991 100644 --- a/content/content_common_mojo_bindings.gyp +++ b/content/content_common_mojo_bindings.gyp
@@ -18,7 +18,6 @@ 'common/render_frame_message_filter.mojom', 'common/service_worker/embedded_worker_setup.mojom', 'common/storage_partition_service.mojom', - 'common/websocket.mojom', '../third_party/WebKit/public/platform/modules/bluetooth/web_bluetooth.mojom', ], 'mojom_typemaps': [
diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi index dc433a7..a210e3e 100644 --- a/content/content_renderer.gypi +++ b/content/content_renderer.gypi
@@ -491,8 +491,6 @@ 'renderer/webscrollbarbehavior_impl_mac.mm', 'renderer/websharedworker_proxy.cc', 'renderer/websharedworker_proxy.h', - 'renderer/websockethandle_impl.cc', - 'renderer/websockethandle_impl.h', ], # Put WebRTC-related sources in the plugin+WebRTC section below. 'private_renderer_plugin_sources': [
diff --git a/content/content_tests.gypi b/content/content_tests.gypi index 31d20bd7..7351061 100644 --- a/content/content_tests.gypi +++ b/content/content_tests.gypi
@@ -253,6 +253,7 @@ 'browser/message_port_provider_browsertest.cc', 'browser/net_info_browsertest.cc', 'browser/renderer_host/input/composited_scrolling_browsertest.cc', + 'browser/renderer_host/input/main_thread_event_queue_browsertest.cc', 'browser/renderer_host/input/non_blocking_event_browsertest.cc', 'browser/renderer_host/input/touch_action_browsertest.cc', 'browser/renderer_host/input/touch_input_browsertest.cc', @@ -594,6 +595,8 @@ 'browser/renderer_host/render_widget_host_view_mac_unittest.mm', 'browser/renderer_host/text_input_client_mac_unittest.mm', 'browser/renderer_host/web_input_event_aura_unittest.cc', + 'browser/renderer_host/websocket_blob_sender_unittest.cc', + 'browser/renderer_host/websocket_dispatcher_host_unittest.cc', 'browser/resolve_proxy_msg_helper_unittest.cc', 'browser/service_worker/embedded_worker_instance_unittest.cc', 'browser/service_worker/embedded_worker_test_helper.cc', @@ -638,7 +641,6 @@ 'browser/web_contents/web_contents_view_mac_unittest.mm', 'browser/web_contents/web_drag_dest_mac_unittest.mm', 'browser/web_contents/web_drag_source_mac_unittest.mm', - 'browser/websockets/websocket_manager_unittest.cc', 'browser/webui/url_data_manager_backend_unittest.cc', 'browser/webui/web_ui_data_source_unittest.cc', 'browser/webui/web_ui_message_handler_unittest.cc',
diff --git a/content/public/android/java/strings/translations/android_content_strings_am.xtb b/content/public/android/java/strings/translations/android_content_strings_am.xtb index c838fa9..ed40235 100644 --- a/content/public/android/java/strings/translations/android_content_strings_am.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_am.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">አጋራ</translation> <translation id="6849295950938417341">መገለጫ ሰሪውን ማስጀመር አልተሳካም</translation> <translation id="6965382102122355670">ይሁን</translation> -<translation id="7096034533295549981">ቪዲዮን በመጫን ላይ</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_ar.xtb b/content/public/android/java/strings/translations/android_content_strings_ar.xtb index 08b022cf..56efa168d 100644 --- a/content/public/android/java/strings/translations/android_content_strings_ar.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_ar.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">مشاركة</translation> <translation id="6849295950938417341">أخفق بدء المحلل</translation> <translation id="6965382102122355670">موافق</translation> -<translation id="7096034533295549981">تحميل الفيديو</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_bg.xtb b/content/public/android/java/strings/translations/android_content_strings_bg.xtb index b2d31baa..6159163 100644 --- a/content/public/android/java/strings/translations/android_content_strings_bg.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_bg.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Споделяне</translation> <translation id="6849295950938417341">Стартирането на профайлера не бе успешно</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Клип: Зарежда се</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_ca.xtb b/content/public/android/java/strings/translations/android_content_strings_ca.xtb index 8944185..8c2a5445 100644 --- a/content/public/android/java/strings/translations/android_content_strings_ca.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_ca.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Comparteix</translation> <translation id="6849295950938417341">S'ha produït un error en iniciar el generador de perfils.</translation> <translation id="6965382102122355670">D'acord</translation> -<translation id="7096034533295549981">Carregant vídeo</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_cs.xtb b/content/public/android/java/strings/translations/android_content_strings_cs.xtb index 8ebb89c..86af8e7c 100644 --- a/content/public/android/java/strings/translations/android_content_strings_cs.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_cs.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Sdílet</translation> <translation id="6849295950938417341">Spuštění nástroje profiler se nezdařilo</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Načítání videa</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_da.xtb b/content/public/android/java/strings/translations/android_content_strings_da.xtb index 536ef57..4592581 100644 --- a/content/public/android/java/strings/translations/android_content_strings_da.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_da.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Del</translation> <translation id="6849295950938417341">Profileringsværktøjet kunne ikke startes</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Videoen indlæses</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_de.xtb b/content/public/android/java/strings/translations/android_content_strings_de.xtb index e04fb028..20b58a7b 100644 --- a/content/public/android/java/strings/translations/android_content_strings_de.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_de.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Teilen</translation> <translation id="6849295950938417341">Profiler konnte nicht gestartet werden.</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Video wird geladen</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_el.xtb b/content/public/android/java/strings/translations/android_content_strings_el.xtb index 146c567..47d262f3 100644 --- a/content/public/android/java/strings/translations/android_content_strings_el.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_el.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Κοινή χρήση</translation> <translation id="6849295950938417341">Αποτυχία έναρξης προγράμματος προφίλ</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Φόρτωση βίντεο</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_en-GB.xtb b/content/public/android/java/strings/translations/android_content_strings_en-GB.xtb index ea43966..6d6db83bb 100644 --- a/content/public/android/java/strings/translations/android_content_strings_en-GB.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_en-GB.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Share</translation> <translation id="6849295950938417341">Failed to start profiler</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Loading video</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_es-419.xtb b/content/public/android/java/strings/translations/android_content_strings_es-419.xtb index f34ccdf..a258061 100644 --- a/content/public/android/java/strings/translations/android_content_strings_es-419.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_es-419.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Compartir</translation> <translation id="6849295950938417341">Error al iniciar el generador de perfiles</translation> <translation id="6965382102122355670">Aceptar</translation> -<translation id="7096034533295549981">Cargando video</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_es.xtb b/content/public/android/java/strings/translations/android_content_strings_es.xtb index d5d28b8..0d44fd7 100644 --- a/content/public/android/java/strings/translations/android_content_strings_es.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_es.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Compartir</translation> <translation id="6849295950938417341">No se ha podido iniciar el creador de perfiles</translation> <translation id="6965382102122355670">Aceptar</translation> -<translation id="7096034533295549981">Cargando vídeo</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_fa.xtb b/content/public/android/java/strings/translations/android_content_strings_fa.xtb index 2fbcbed..40bc848d 100644 --- a/content/public/android/java/strings/translations/android_content_strings_fa.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_fa.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">اشتراکگذاری</translation> <translation id="6849295950938417341">نمایهساز اجرا نشد</translation> <translation id="6965382102122355670">تأیید</translation> -<translation id="7096034533295549981">بارگیری ویدیو</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_fi.xtb b/content/public/android/java/strings/translations/android_content_strings_fi.xtb index a74ac38..bb804b1 100644 --- a/content/public/android/java/strings/translations/android_content_strings_fi.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_fi.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Jaa</translation> <translation id="6849295950938417341">Profiiliohjelman käynnistys epäonnistui</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Videota ladataan</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_fil.xtb b/content/public/android/java/strings/translations/android_content_strings_fil.xtb index 53ccfa32..6dd91fb 100644 --- a/content/public/android/java/strings/translations/android_content_strings_fil.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_fil.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Ibahagi</translation> <translation id="6849295950938417341">Nabigong simulan ang profiler</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Naglo-load</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_fr.xtb b/content/public/android/java/strings/translations/android_content_strings_fr.xtb index 6ed31064..a91e2e8d 100644 --- a/content/public/android/java/strings/translations/android_content_strings_fr.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_fr.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Partager</translation> <translation id="6849295950938417341">Échec du démarrage du générateur de profils.</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Chargement vidéo…</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_hi.xtb b/content/public/android/java/strings/translations/android_content_strings_hi.xtb index c0e075b4..40d98dba 100644 --- a/content/public/android/java/strings/translations/android_content_strings_hi.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_hi.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">साझा करें</translation> <translation id="6849295950938417341">प्रोफ़ाइलर प्रारंभ करने में विफल</translation> <translation id="6965382102122355670">ठीक</translation> -<translation id="7096034533295549981">वीडियो लोड हो रहा है</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_hr.xtb b/content/public/android/java/strings/translations/android_content_strings_hr.xtb index d171faaa..23fb4ddb 100644 --- a/content/public/android/java/strings/translations/android_content_strings_hr.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_hr.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Podijeli</translation> <translation id="6849295950938417341">Nije uspjelo pokretanje profilera</translation> <translation id="6965382102122355670">U redu</translation> -<translation id="7096034533295549981">Učitavanje videa</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_hu.xtb b/content/public/android/java/strings/translations/android_content_strings_hu.xtb index 1d0aada..bda731e 100644 --- a/content/public/android/java/strings/translations/android_content_strings_hu.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_hu.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Megosztás</translation> <translation id="6849295950938417341">Nem sikerült elindítani a profilozót</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Videó betöltése</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_id.xtb b/content/public/android/java/strings/translations/android_content_strings_id.xtb index cde924b1..747094e 100644 --- a/content/public/android/java/strings/translations/android_content_strings_id.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_id.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Bagikan</translation> <translation id="6849295950938417341">Gagal memulai profiler</translation> <translation id="6965382102122355670">Oke</translation> -<translation id="7096034533295549981">Memuat video</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_it.xtb b/content/public/android/java/strings/translations/android_content_strings_it.xtb index 44aceed0..e4b5bab2 100644 --- a/content/public/android/java/strings/translations/android_content_strings_it.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_it.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Condividi</translation> <translation id="6849295950938417341">Impossibile avviare profiler</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Caricamento video</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_iw.xtb b/content/public/android/java/strings/translations/android_content_strings_iw.xtb index bc54bf3..4043b83 100644 --- a/content/public/android/java/strings/translations/android_content_strings_iw.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_iw.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">שתף</translation> <translation id="6849295950938417341">נכשלה פתיחת יוצר הפרופילים</translation> <translation id="6965382102122355670">אישור</translation> -<translation id="7096034533295549981">טוען סרטון</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_ja.xtb b/content/public/android/java/strings/translations/android_content_strings_ja.xtb index 49f6de8..fba2c233 100644 --- a/content/public/android/java/strings/translations/android_content_strings_ja.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_ja.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">共有</translation> <translation id="6849295950938417341">プロファイラを開始できませんでした</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">動画を読み込み中</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_ko.xtb b/content/public/android/java/strings/translations/android_content_strings_ko.xtb index 5c2980f..230903d 100644 --- a/content/public/android/java/strings/translations/android_content_strings_ko.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_ko.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">공유</translation> <translation id="6849295950938417341">프로파일러를 시작하지 못했습니다.</translation> <translation id="6965382102122355670">확인</translation> -<translation id="7096034533295549981">동영상 로드 중</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_lt.xtb b/content/public/android/java/strings/translations/android_content_strings_lt.xtb index ad84052..00738560 100644 --- a/content/public/android/java/strings/translations/android_content_strings_lt.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_lt.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Bendrinti</translation> <translation id="6849295950938417341">Paleidžiant profiliavimo priemonę įvyko klaida</translation> <translation id="6965382102122355670">Gerai</translation> -<translation id="7096034533295549981">Įkel. v. įrašas</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_lv.xtb b/content/public/android/java/strings/translations/android_content_strings_lv.xtb index c38b81251..f62d682 100644 --- a/content/public/android/java/strings/translations/android_content_strings_lv.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_lv.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Kopīgot</translation> <translation id="6849295950938417341">Neizdevās startēt profilētāju.</translation> <translation id="6965382102122355670">Labi</translation> -<translation id="7096034533295549981">Video ielāde</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_nl.xtb b/content/public/android/java/strings/translations/android_content_strings_nl.xtb index 2a5fc52..99b49c8 100644 --- a/content/public/android/java/strings/translations/android_content_strings_nl.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_nl.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Delen</translation> <translation id="6849295950938417341">Kan profiler niet starten</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Video laden</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_no.xtb b/content/public/android/java/strings/translations/android_content_strings_no.xtb index 8dd9837b..65f8a4c4 100644 --- a/content/public/android/java/strings/translations/android_content_strings_no.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_no.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Del</translation> <translation id="6849295950938417341">Kunne ikke starte profileringsverktøyet</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Laster inn videoen ...</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_pl.xtb b/content/public/android/java/strings/translations/android_content_strings_pl.xtb index be0e232..d70e6bb 100644 --- a/content/public/android/java/strings/translations/android_content_strings_pl.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_pl.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Udostępnij</translation> <translation id="6849295950938417341">Nie można uruchomić narzędzia do profilowania</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Wczytuję film</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_pt-BR.xtb b/content/public/android/java/strings/translations/android_content_strings_pt-BR.xtb index 02009b2..40e7d82 100644 --- a/content/public/android/java/strings/translations/android_content_strings_pt-BR.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_pt-BR.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Compartilhar</translation> <translation id="6849295950938417341">Falha ao iniciar o profiler</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Carregando vídeo</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_pt-PT.xtb b/content/public/android/java/strings/translations/android_content_strings_pt-PT.xtb index d795900..d22cd709a 100644 --- a/content/public/android/java/strings/translations/android_content_strings_pt-PT.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_pt-PT.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Partilhar</translation> <translation id="6849295950938417341">Falha ao iniciar o gerador de perfis</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">A carregar vídeo</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_ro.xtb b/content/public/android/java/strings/translations/android_content_strings_ro.xtb index ca1cb3f..2b9c4c4 100644 --- a/content/public/android/java/strings/translations/android_content_strings_ro.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_ro.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Trimite</translation> <translation id="6849295950938417341">Instrumentul de creare a profilului nu a putut porni</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Se încarcă video</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_ru.xtb b/content/public/android/java/strings/translations/android_content_strings_ru.xtb index 28ac1b2..dc5867f 100644 --- a/content/public/android/java/strings/translations/android_content_strings_ru.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_ru.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Поделиться</translation> <translation id="6849295950938417341">Не удалось запустить профайлер</translation> <translation id="6965382102122355670">ОК</translation> -<translation id="7096034533295549981">Загрузка видео…</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_sk.xtb b/content/public/android/java/strings/translations/android_content_strings_sk.xtb index 121560b4..6163f40 100644 --- a/content/public/android/java/strings/translations/android_content_strings_sk.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_sk.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Zdieľať</translation> <translation id="6849295950938417341">Spustenie profilovača zlyhalo</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Načítanie videa</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_sl.xtb b/content/public/android/java/strings/translations/android_content_strings_sl.xtb index 529a3d9..d5fe7e5 100644 --- a/content/public/android/java/strings/translations/android_content_strings_sl.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_sl.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Skupna raba</translation> <translation id="6849295950938417341">Orodja za spremljanje delovanja aplikacije ali sistema ni bilo mogoče zagnati</translation> <translation id="6965382102122355670">V redu</translation> -<translation id="7096034533295549981">Nalaganje videa</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_sr.xtb b/content/public/android/java/strings/translations/android_content_strings_sr.xtb index a0db1b94..83067e01 100644 --- a/content/public/android/java/strings/translations/android_content_strings_sr.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_sr.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Дели</translation> <translation id="6849295950938417341">Покретање програма за оптимизацију није успело</translation> <translation id="6965382102122355670">Потврди</translation> -<translation id="7096034533295549981">Учитавање видеа</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_sv.xtb b/content/public/android/java/strings/translations/android_content_strings_sv.xtb index 8a72fa9d..b41bb28 100644 --- a/content/public/android/java/strings/translations/android_content_strings_sv.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_sv.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Dela</translation> <translation id="6849295950938417341">Det gick inte att starta profileraren</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Videon läses in</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_sw.xtb b/content/public/android/java/strings/translations/android_content_strings_sw.xtb index c3c348c3..75877f4 100644 --- a/content/public/android/java/strings/translations/android_content_strings_sw.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_sw.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Shiriki</translation> <translation id="6849295950938417341">Imeshindwa kuanzisha kihoji rejesta</translation> <translation id="6965382102122355670">Sawa</translation> -<translation id="7096034533295549981">Inapakia video</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_th.xtb b/content/public/android/java/strings/translations/android_content_strings_th.xtb index 2b780961..9c2355a 100644 --- a/content/public/android/java/strings/translations/android_content_strings_th.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_th.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">แชร์</translation> <translation id="6849295950938417341">ไม่สามารถเริ่มโปรแกรมโปรไฟล์เลอร์</translation> <translation id="6965382102122355670">ตกลง</translation> -<translation id="7096034533295549981">กำลังโหลดวิดีโอ</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_tr.xtb b/content/public/android/java/strings/translations/android_content_strings_tr.xtb index eb41ae3..9ff154ef 100644 --- a/content/public/android/java/strings/translations/android_content_strings_tr.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_tr.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Paylaş</translation> <translation id="6849295950938417341">Profil düzenleyici başlatılamadı</translation> <translation id="6965382102122355670">Tamam</translation> -<translation id="7096034533295549981">Video yükleniyor</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_uk.xtb b/content/public/android/java/strings/translations/android_content_strings_uk.xtb index 59efccf..bc0de55 100644 --- a/content/public/android/java/strings/translations/android_content_strings_uk.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_uk.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Надіслати</translation> <translation id="6849295950938417341">Помилка запуску профілювальника</translation> <translation id="6965382102122355670">ОК</translation> -<translation id="7096034533295549981">Завантаж. відео</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_vi.xtb b/content/public/android/java/strings/translations/android_content_strings_vi.xtb index dc15384..0aed8cb 100644 --- a/content/public/android/java/strings/translations/android_content_strings_vi.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_vi.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">Chia sẻ</translation> <translation id="6849295950938417341">Không khởi động được profiler</translation> <translation id="6965382102122355670">OK</translation> -<translation id="7096034533295549981">Đang tải video</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_zh-CN.xtb b/content/public/android/java/strings/translations/android_content_strings_zh-CN.xtb index b8c9178..b44b000 100644 --- a/content/public/android/java/strings/translations/android_content_strings_zh-CN.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_zh-CN.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">分享</translation> <translation id="6849295950938417341">无法启动分析器</translation> <translation id="6965382102122355670">确定</translation> -<translation id="7096034533295549981">加载视频</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/android/java/strings/translations/android_content_strings_zh-TW.xtb b/content/public/android/java/strings/translations/android_content_strings_zh-TW.xtb index ecd1afc..ea4a195 100644 --- a/content/public/android/java/strings/translations/android_content_strings_zh-TW.xtb +++ b/content/public/android/java/strings/translations/android_content_strings_zh-TW.xtb
@@ -12,5 +12,4 @@ <translation id="6527303717912515753">分享</translation> <translation id="6849295950938417341">無法啟動分析器</translation> <translation id="6965382102122355670">確定</translation> -<translation id="7096034533295549981">正在載入影片</translation> </translationbundle> \ No newline at end of file
diff --git a/content/public/browser/browser_main_parts.h b/content/public/browser/browser_main_parts.h index 25dcaec..ecdf097 100644 --- a/content/public/browser/browser_main_parts.h +++ b/content/public/browser/browser_main_parts.h
@@ -9,6 +9,8 @@ namespace content { +class MojoShellConnection; + // This class contains different "stages" to be executed by |BrowserMain()|, // Each stage is represented by a single BrowserMainParts method, called from // the corresponding method in |BrowserMainLoop| (e.g., EarlyInitialization()) @@ -70,6 +72,8 @@ // (or 0 if no error). virtual int PreCreateThreads(); + virtual void MojoShellConnectionStarted(MojoShellConnection* connection) {} + // This is called just before the main message loop is run. The // various browser threads have all been created at this point virtual void PreMainMessageLoopRun() {}
diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn index ae955f65..2df12fd 100644 --- a/content/public/common/BUILD.gn +++ b/content/public/common/BUILD.gn
@@ -68,6 +68,24 @@ public_configs = [ ":static_switches_defines" ] } +# This target allows you to use the content_features constants and statically +# link to it, without depending on the rest of content. This is only for use +# without content, or you will get multiply defined symbols. +source_set("static_features") { + public = [ + "content_features.h", + ] + sources = [ + "//content/common/content_export.h", + "content_features.cc", + ] + public_deps = [ + "//base", + ] + + public_configs = [ ":static_switches_defines" ] +} + source_set("common_sources") { # External code should depend on via ":common" above. visibility = [ "//content/*" ]
diff --git a/content/renderer/OWNERS b/content/renderer/OWNERS index ec2f37c..d285f815 100644 --- a/content/renderer/OWNERS +++ b/content/renderer/OWNERS
@@ -11,9 +11,4 @@ # Web Notifications. per-file notification_permission_dispatcher.*=mvanouwerkerk@chromium.org -per-file notification_permission_dispatcher.*=peter@chromium.org - -# WebSocket -per-file *websocket*=ricea@chromium.org -per-file *websocket*=tyoshino@chromium.org -per-file *websocket*=yhirano@chromium.org +per-file notification_permission_dispatcher.*=peter@chromium.org \ No newline at end of file
diff --git a/content/renderer/accessibility/blink_ax_tree_source.cc b/content/renderer/accessibility/blink_ax_tree_source.cc index 5143b969..e405eb7 100644 --- a/content/renderer/accessibility/blink_ax_tree_source.cc +++ b/content/renderer/accessibility/blink_ax_tree_source.cc
@@ -429,11 +429,11 @@ if (!src.url().isEmpty()) dst->AddStringAttribute(ui::AX_ATTR_URL, src.url().string().utf8()); - if (dst->role == ui::AX_ROLE_HEADING) + if (dst->role == ui::AX_ROLE_HEADING && src.headingLevel()) { dst->AddIntAttribute(ui::AX_ATTR_HIERARCHICAL_LEVEL, src.headingLevel()); - else if ((dst->role == ui::AX_ROLE_TREE_ITEM || - dst->role == ui::AX_ROLE_ROW) && - src.hierarchicalLevel() > 0) { + } else if ((dst->role == ui::AX_ROLE_TREE_ITEM || + dst->role == ui::AX_ROLE_ROW) && + src.hierarchicalLevel()) { dst->AddIntAttribute(ui::AX_ATTR_HIERARCHICAL_LEVEL, src.hierarchicalLevel()); }
diff --git a/content/renderer/input/input_event_filter.cc b/content/renderer/input/input_event_filter.cc index 7f7b09f..bb9f6a8 100644 --- a/content/renderer/input/input_event_filter.cc +++ b/content/renderer/input/input_event_filter.cc
@@ -72,7 +72,8 @@ void InputEventFilter::RegisterRoutingID(int routing_id) { base::AutoLock locked(routes_lock_); routes_.insert(routing_id); - route_queues_[routing_id].reset(new MainThreadEventQueue(routing_id, this)); + route_queues_[routing_id] = + new MainThreadEventQueue(routing_id, this, main_task_runner_); } void InputEventFilter::UnregisterRoutingID(int routing_id) { @@ -104,12 +105,17 @@ void InputEventFilter::NotifyInputEventHandled(int routing_id, blink::WebInputEvent::Type type, InputEventAckState ack_result) { - DCHECK(target_task_runner_->BelongsToCurrentThread()); - RouteQueueMap::iterator iter = route_queues_.find(routing_id); - if (iter == route_queues_.end() || !iter->second) - return; + DCHECK(main_task_runner_->BelongsToCurrentThread()); + scoped_refptr<MainThreadEventQueue> queue; + { + base::AutoLock locked(routes_lock_); + RouteQueueMap::iterator iter = route_queues_.find(routing_id); + if (iter == route_queues_.end() || !iter->second) + return; + queue = iter->second; + } - iter->second->EventHandled(type, ack_result); + queue->EventHandled(type, ack_result); } void InputEventFilter::OnFilterAdded(IPC::Sender* sender) { @@ -213,8 +219,6 @@ } void InputEventFilter::SendMessage(std::unique_ptr<IPC::Message> message) { - DCHECK(target_task_runner_->BelongsToCurrentThread()); - io_task_runner_->PostTask( FROM_HERE, base::Bind(&InputEventFilter::SendMessageOnIOThread, this, base::Passed(&message))); @@ -230,17 +234,16 @@ sender_->Send(message.release()); } -void InputEventFilter::SendEventToMainThread( +void InputEventFilter::HandleEventOnMainThread( int routing_id, const blink::WebInputEvent* event, const ui::LatencyInfo& latency_info, InputEventDispatchType dispatch_type) { - TRACE_EVENT_INSTANT0( - "input", "InputEventFilter::ForwardToHandler::SendEventToMainThread", - TRACE_EVENT_SCOPE_THREAD); + TRACE_EVENT_INSTANT0("input", "InputEventFilter::HandlEventOnMainThread", + TRACE_EVENT_SCOPE_THREAD); IPC::Message new_msg = InputMsg_HandleInputEvent(routing_id, event, latency_info, dispatch_type); - main_task_runner_->PostTask(FROM_HERE, base::Bind(main_listener_, new_msg)); + main_listener_.Run(new_msg); } void InputEventFilter::SendInputEventAck(int routing_id,
diff --git a/content/renderer/input/input_event_filter.h b/content/renderer/input/input_event_filter.h index ce49971..55545c5 100644 --- a/content/renderer/input/input_event_filter.h +++ b/content/renderer/input/input_event_filter.h
@@ -78,10 +78,10 @@ bool OnMessageReceived(const IPC::Message& message) override; // MainThreadEventQueueClient methods: - void SendEventToMainThread(int routing_id, - const blink::WebInputEvent* event, - const ui::LatencyInfo& latency, - InputEventDispatchType dispatch_type) override; + void HandleEventOnMainThread(int routing_id, + const blink::WebInputEvent* event, + const ui::LatencyInfo& latency, + InputEventDispatchType dispatch_type) override; // Send an InputEventAck IPC message. |touch_event_id| represents // the unique event id for the original WebTouchEvent and should // be 0 if otherwise. See WebInputEventTraits::GetUniqueTouchEventId. @@ -116,7 +116,7 @@ std::set<int> routes_; using RouteQueueMap = - std::unordered_map<int, std::unique_ptr<MainThreadEventQueue>>; + std::unordered_map<int, scoped_refptr<MainThreadEventQueue>>; RouteQueueMap route_queues_; // Used to intercept overscroll notifications while an event is being
diff --git a/content/renderer/input/input_event_filter_unittest.cc b/content/renderer/input/input_event_filter_unittest.cc index 48d1354..e4ac4b4 100644 --- a/content/renderer/input/input_event_filter_unittest.cc +++ b/content/renderer/input/input_event_filter_unittest.cc
@@ -212,18 +212,18 @@ AddEventsToFilter(filter_.get(), kEvents, arraysize(kEvents)); EXPECT_EQ(arraysize(kEvents), ipc_sink_.message_count()); EXPECT_EQ(2 * arraysize(kEvents), event_recorder_.record_count()); - EXPECT_EQ(arraysize(kEvents), message_recorder_.message_count()); + EXPECT_EQ(1u, message_recorder_.message_count()); - for (size_t i = 0; i < arraysize(kEvents); ++i) { - const IPC::Message& message = message_recorder_.message_at(i); + { + const IPC::Message& message = message_recorder_.message_at(0); ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); InputMsg_HandleInputEvent::Param params; EXPECT_TRUE(InputMsg_HandleInputEvent::Read(&message, ¶ms)); const WebInputEvent* event = std::get<0>(params); - EXPECT_EQ(kEvents[i].size, event->size); - EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); + EXPECT_EQ(kEvents[2].size, event->size); + EXPECT_TRUE(memcmp(&kEvents[2], event, event->size) == 0); } // Now reset everything, and test that DidHandleInputEvent is called. @@ -313,7 +313,7 @@ TEST_F(InputEventFilterTest, NonBlockingWheel) { WebMouseWheelEvent kEvents[4] = { - SyntheticWebMouseWheelEventBuilder::Build(10, 10, 0, 53, 0, false), + SyntheticWebMouseWheelEventBuilder::Build(10, 10, 0, 53, 1, false), SyntheticWebMouseWheelEventBuilder::Build(20, 20, 0, 53, 0, false), SyntheticWebMouseWheelEventBuilder::Build(30, 30, 0, 53, 1, false), SyntheticWebMouseWheelEventBuilder::Build(30, 30, 0, 53, 1, false), @@ -327,27 +327,7 @@ EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); ASSERT_EQ(4u, ipc_sink_.message_count()); - // First event is sent right away. - EXPECT_EQ(1u, message_recorder_.message_count()); - - // Second event was queued; ack the first. - filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::MouseWheel, - INPUT_EVENT_ACK_STATE_CONSUMED); - base::RunLoop().RunUntilIdle(); - ASSERT_EQ(4u, ipc_sink_.message_count()); - EXPECT_EQ(2u, message_recorder_.message_count()); - - // Third event won't be coalesced into the second because modifiers are - // different. - filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::MouseWheel, - INPUT_EVENT_ACK_STATE_CONSUMED); - base::RunLoop().RunUntilIdle(); - EXPECT_EQ(3u, message_recorder_.message_count()); - - // The last events will be coalesced. - filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::MouseWheel, - INPUT_EVENT_ACK_STATE_CONSUMED); - base::RunLoop().RunUntilIdle(); + // All events are handled, one is coalesced. EXPECT_EQ(3u, message_recorder_.message_count()); // First two messages should be identical. @@ -364,7 +344,7 @@ kEvents[i].dispatchType = WebInputEvent::DispatchType::ListenersNonBlockingPassive; EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); - EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, + EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING, dispatch_type); } @@ -384,7 +364,7 @@ EXPECT_EQ(kEvents[2].size, event->size); EXPECT_EQ(kEvents[2].deltaX + kEvents[3].deltaX, event->deltaX); EXPECT_EQ(kEvents[2].deltaY + kEvents[3].deltaY, event->deltaY); - EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, + EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING, dispatch_type); } } @@ -408,27 +388,7 @@ EXPECT_EQ(arraysize(kEvents), event_recorder_.record_count()); ASSERT_EQ(4u, ipc_sink_.message_count()); - // First event is sent right away. - EXPECT_EQ(1u, message_recorder_.message_count()); - - // Second event was queued; ack the first. - filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchStart, - INPUT_EVENT_ACK_STATE_CONSUMED); - base::RunLoop().RunUntilIdle(); - ASSERT_EQ(4u, ipc_sink_.message_count()); - EXPECT_EQ(2u, message_recorder_.message_count()); - - // Third event won't be coalesced into the second because modifiers are - // different. - filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchMove, - INPUT_EVENT_ACK_STATE_CONSUMED); - base::RunLoop().RunUntilIdle(); - EXPECT_EQ(3u, message_recorder_.message_count()); - - // The last events will be coalesced. - filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchMove, - INPUT_EVENT_ACK_STATE_CONSUMED); - base::RunLoop().RunUntilIdle(); + // All events are handled and one set was coalesced. EXPECT_EQ(3u, message_recorder_.message_count()); // First two messages should be identical. @@ -445,7 +405,7 @@ kEvents[i].dispatchType = WebInputEvent::DispatchType::ListenersNonBlockingPassive; EXPECT_TRUE(memcmp(&kEvents[i], event, event->size) == 0); - EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, + EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING, dispatch_type); } @@ -464,7 +424,7 @@ EXPECT_EQ(1u, kEvents[3].touchesLength); EXPECT_EQ(kEvents[3].touches[0].position.x, event->touches[0].position.x); EXPECT_EQ(kEvents[3].touches[0].position.y, event->touches[0].position.y); - EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, + EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING, dispatch_type); } } @@ -488,11 +448,9 @@ EXPECT_EQ(arraysize(kEvents) + arraysize(kBlockingEvents), event_recorder_.record_count()); ASSERT_EQ(3u, event_recorder_.record_count()); + EXPECT_EQ(3u, message_recorder_.message_count()); { - // First event is sent right away. - EXPECT_EQ(1u, message_recorder_.message_count()); - const IPC::Message& message = message_recorder_.message_at(0); ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); InputMsg_HandleInputEvent::Param params; @@ -504,17 +462,11 @@ kEvents[0].dispatchType = WebInputEvent::DispatchType::ListenersNonBlockingPassive; EXPECT_TRUE(memcmp(&kEvents[0], event, event->size) == 0); - EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, + EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING, dispatch_type); } { - // Second event was queued; ack the first. - filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchStart, - INPUT_EVENT_ACK_STATE_CONSUMED); - base::RunLoop().RunUntilIdle(); - EXPECT_EQ(2u, message_recorder_.message_count()); - const IPC::Message& message = message_recorder_.message_at(1); ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); InputMsg_HandleInputEvent::Param params; @@ -526,17 +478,11 @@ kEvents[1].dispatchType = WebInputEvent::DispatchType::ListenersNonBlockingPassive; EXPECT_TRUE(memcmp(&kEvents[1], event, event->size) == 0); - EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN, + EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_NON_BLOCKING, dispatch_type); } { - // Third event should be put in the queue. - filter_->NotifyInputEventHandled(kTestRoutingID, WebInputEvent::TouchEnd, - INPUT_EVENT_ACK_STATE_CONSUMED); - base::RunLoop().RunUntilIdle(); - EXPECT_EQ(3u, message_recorder_.message_count()); - const IPC::Message& message = message_recorder_.message_at(2); ASSERT_EQ(InputMsg_HandleInputEvent::ID, message.type()); InputMsg_HandleInputEvent::Param params; @@ -546,8 +492,7 @@ EXPECT_EQ(kBlockingEvents[0].size, event->size); EXPECT_TRUE(memcmp(&kBlockingEvents[0], event, event->size) == 0); - EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN, - dispatch_type); + EXPECT_EQ(InputEventDispatchType::DISPATCH_TYPE_BLOCKING, dispatch_type); } }
diff --git a/content/renderer/input/input_handler_manager.cc b/content/renderer/input/input_handler_manager.cc index 0821d82..99a22ca 100644 --- a/content/renderer/input/input_handler_manager.cc +++ b/content/renderer/input/input_handler_manager.cc
@@ -189,23 +189,7 @@ int routing_id, blink::WebInputEvent::Type type, InputEventAckState ack_result) { - task_runner_->PostTask( - FROM_HERE, - base::Bind( - &InputHandlerManager::NotifyInputEventHandledOnCompositorThread, - base::Unretained(this), routing_id, type, ack_result)); -} - -void InputHandlerManager::NotifyInputEventHandledOnCompositorThread( - int routing_id, - blink::WebInputEvent::Type handled_type, - InputEventAckState ack_result) { - DCHECK(task_runner_->BelongsToCurrentThread()); - auto it = input_handlers_.find(routing_id); - if (it == input_handlers_.end()) - return; - - client_->NotifyInputEventHandled(routing_id, handled_type, ack_result); + client_->NotifyInputEventHandled(routing_id, type, ack_result); } InputEventAckState InputHandlerManager::HandleInputEvent(
diff --git a/content/renderer/input/input_handler_manager.h b/content/renderer/input/input_handler_manager.h index 1935a2e0..07f564e 100644 --- a/content/renderer/input/input_handler_manager.h +++ b/content/renderer/input/input_handler_manager.h
@@ -111,10 +111,6 @@ const blink::WebGestureEvent& gesture_event, const cc::InputHandlerScrollResult& scroll_result); - void NotifyInputEventHandledOnCompositorThread(int routing_id, - blink::WebInputEvent::Type, - InputEventAckState); - typedef base::ScopedPtrHashMap<int, // routing_id std::unique_ptr<InputHandlerWrapper>> InputHandlerMap;
diff --git a/content/renderer/input/input_handler_manager_client.h b/content/renderer/input/input_handler_manager_client.h index c6e3a70..e3da8965 100644 --- a/content/renderer/input/input_handler_manager_client.h +++ b/content/renderer/input/input_handler_manager_client.h
@@ -42,6 +42,9 @@ // Called from the main thread. virtual void SetBoundHandler(const Handler& handler) = 0; + virtual void NotifyInputEventHandled(int routing_id, + blink::WebInputEvent::Type type, + InputEventAckState ack_result) = 0; // Called from the compositor thread. virtual void RegisterRoutingID(int routing_id) = 0; @@ -50,9 +53,6 @@ const DidOverscrollParams& params) = 0; virtual void DidStartFlinging(int routing_id) = 0; virtual void DidStopFlinging(int routing_id) = 0; - virtual void NotifyInputEventHandled(int routing_id, - blink::WebInputEvent::Type type, - InputEventAckState ack_result) = 0; protected: InputHandlerManagerClient() {}
diff --git a/content/renderer/input/main_thread_event_queue.cc b/content/renderer/input/main_thread_event_queue.cc index 824bb39a..e44c83b8f 100644 --- a/content/renderer/input/main_thread_event_queue.cc +++ b/content/renderer/input/main_thread_event_queue.cc
@@ -26,21 +26,22 @@ void EventWithDispatchType::CoalesceWith(const EventWithDispatchType& other) { // If we are blocking and are coalescing touch, make sure to keep // the touch ids that need to be acked. - if (dispatch_type_ == DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN) { + if (dispatch_type_ == DISPATCH_TYPE_BLOCKING) { // We should only have blocking touch events that need coalescing. - DCHECK(blink::WebInputEvent::isTouchEventType(other.event().type)); eventsToAck_.push_back( WebInputEventTraits::GetUniqueTouchEventId(other.event())); } ScopedWebInputEventWithLatencyInfo::CoalesceWith(other); } -MainThreadEventQueue::MainThreadEventQueue(int routing_id, - MainThreadEventQueueClient* client) +MainThreadEventQueue::MainThreadEventQueue( + int routing_id, + MainThreadEventQueueClient* client, + const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner) : routing_id_(routing_id), client_(client), is_flinging_(false), - sent_notification_to_main_(false) {} + main_task_runner_(main_task_runner) {} MainThreadEventQueue::~MainThreadEventQueue() {} @@ -58,73 +59,86 @@ ack_result == INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING; InputEventDispatchType dispatch_type = - non_blocking ? DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN - : DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN; + non_blocking ? DISPATCH_TYPE_NON_BLOCKING : DISPATCH_TYPE_BLOCKING; bool is_wheel = event->type == blink::WebInputEvent::MouseWheel; bool is_touch = blink::WebInputEvent::isTouchEventType(event->type); - if (is_wheel || is_touch) { - std::unique_ptr<EventWithDispatchType> cloned_event( - new EventWithDispatchType(*event, latency, dispatch_type)); + std::unique_ptr<EventWithDispatchType> cloned_event( + new EventWithDispatchType(*event, latency, dispatch_type)); + if (is_touch) { + blink::WebTouchEvent& touch_event = + static_cast<blink::WebTouchEvent&>(cloned_event->event()); + touch_event.dispatchedDuringFling = is_flinging_; // Adjust the |dispatchType| on the event since the compositor // determined all event listeners are passive. if (non_blocking) { - if (is_wheel) { - static_cast<blink::WebMouseWheelEvent&>(cloned_event->event()) - .dispatchType = blink::WebInputEvent::ListenersNonBlockingPassive; - } else if (is_touch) { - static_cast<blink::WebTouchEvent&>(cloned_event->event()).dispatchType = - blink::WebInputEvent::ListenersNonBlockingPassive; - } + touch_event.dispatchType = + blink::WebInputEvent::ListenersNonBlockingPassive; } - - if (is_touch) { - static_cast<blink::WebTouchEvent&>(cloned_event->event()) - .dispatchedDuringFling = is_flinging_; - } - - if (sent_notification_to_main_) { - events_.Queue(std::move(cloned_event)); - } else { - if (non_blocking) { - sent_notification_to_main_ = true; - client_->SendEventToMainThread(routing_id_, &cloned_event->event(), - latency, dispatch_type); - } else { - // If there is nothing in the event queue and the event is - // blocking pass the |original_dispatch_type| to avoid - // having the main thread call us back as an optimization. - client_->SendEventToMainThread(routing_id_, &cloned_event->event(), - latency, original_dispatch_type); - } - } - } else { - client_->SendEventToMainThread(routing_id_, event, latency, - original_dispatch_type); } + if (is_wheel && non_blocking) { + // Adjust the |dispatchType| on the event since the compositor + // determined all event listeners are passive. + static_cast<blink::WebMouseWheelEvent&>(cloned_event->event()) + .dispatchType = blink::WebInputEvent::ListenersNonBlockingPassive; + } + + QueueEvent(std::move(cloned_event)); // send an ack when we are non-blocking. return non_blocking; } +void MainThreadEventQueue::PopEventOnMainThread() { + { + base::AutoLock lock(event_queue_lock_); + if (!events_.empty()) + in_flight_event_ = events_.Pop(); + } + + if (in_flight_event_) { + InputEventDispatchType dispatch_type = in_flight_event_->dispatchType(); + if (!in_flight_event_->eventsToAck().empty() && + dispatch_type == DISPATCH_TYPE_BLOCKING) { + dispatch_type = DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN; + } + + client_->HandleEventOnMainThread(routing_id_, &in_flight_event_->event(), + in_flight_event_->latencyInfo(), + dispatch_type); + } + + in_flight_event_.reset(); +} + void MainThreadEventQueue::EventHandled(blink::WebInputEvent::Type type, InputEventAckState ack_result) { if (in_flight_event_) { // Send acks for blocking touch events. for (const auto id : in_flight_event_->eventsToAck()) client_->SendInputEventAck(routing_id_, type, ack_result, id); - } - if (!events_.empty()) { - in_flight_event_ = events_.Pop(); - client_->SendEventToMainThread(routing_id_, &in_flight_event_->event(), - in_flight_event_->latencyInfo(), - in_flight_event_->dispatchType()); - } else { - in_flight_event_.reset(); - sent_notification_to_main_ = false; - } + } +} + +void MainThreadEventQueue::SendEventNotificationToMainThread() { + main_task_runner_->PostTask( + FROM_HERE, base::Bind(&MainThreadEventQueue::PopEventOnMainThread, + base::Unretained(this))); +} + +void MainThreadEventQueue::QueueEvent( + std::unique_ptr<EventWithDispatchType> event) { + bool send_notification = false; + { + base::AutoLock lock(event_queue_lock_); + size_t size_before = events_.size(); + events_.Queue(std::move(event)); + send_notification = events_.size() != size_before; + } + if (send_notification) + SendEventNotificationToMainThread(); } } // namespace content
diff --git a/content/renderer/input/main_thread_event_queue.h b/content/renderer/input/main_thread_event_queue.h index 1417771..6b0bd9bd 100644 --- a/content/renderer/input/main_thread_event_queue.h +++ b/content/renderer/input/main_thread_event_queue.h
@@ -42,13 +42,14 @@ class CONTENT_EXPORT MainThreadEventQueueClient { public: - // Send an |event| that was previously queued (possibly + // Handle an |event| that was previously queued (possibly // coalesced with another event) to the |routing_id|'s // channel. Implementors must implement this callback. - virtual void SendEventToMainThread(int routing_id, - const blink::WebInputEvent* event, - const ui::LatencyInfo& latency, - InputEventDispatchType dispatch_type) = 0; + virtual void HandleEventOnMainThread( + int routing_id, + const blink::WebInputEvent* event, + const ui::LatencyInfo& latency, + InputEventDispatchType dispatch_type) = 0; virtual void SendInputEventAck(int routing_id, blink::WebInputEvent::Type type, @@ -56,15 +57,10 @@ uint32_t touch_event_id) = 0; }; -// MainThreadEventQueue implements a series of queues (one touch -// and one mouse wheel) for events that need to be queued between -// the compositor and main threads. When an event is sent -// from the compositor to main it can either be sent directly if no -// outstanding events of that type are in flight; or it needs to -// wait in a queue until the main thread has finished processing -// the in-flight event. This class tracks the state and queues -// for the event types. Methods on this class should only be called -// from the compositor thread. +// MainThreadEventQueue implements a queue for events that need to be +// queued between the compositor and main threads. This queue is managed +// by a lock where events are enqueued by the compositor thread +// and dequeued by the main thread. // // Below some example flows are how the code behaves. // Legend: B=Browser, C=Compositor, M=Main Thread, NB=Non-blocking @@ -73,29 +69,37 @@ // Normal blocking event sent to main thread. // B C M // ---(BL)--> +// (queue) // ---(PT)--> +// (deque) // <-------(ACK)------ // // Non-blocking event sent to main thread. // B C M // ---(NB)--> +// (queue) // ---(PT)--> -// <--(PT)--- +// (deque) // // Non-blocking followed by blocking event sent to main thread. // B C M // ---(NB)--> +// (queue) // ---(PT)--> // ---(BL)--> -// <--(PT)--- // Notify from NB event. -// ---(PT)--> // Release blocking event. -// <--(PT)--- // Notify from BL event. +// (queue) +// ---(PT)--> +// (deque) +// (deque) // <-------(ACK)------ // -class CONTENT_EXPORT MainThreadEventQueue { +class CONTENT_EXPORT MainThreadEventQueue + : public base::RefCountedThreadSafe<MainThreadEventQueue> { public: - MainThreadEventQueue(int routing_id, MainThreadEventQueueClient* client); - ~MainThreadEventQueue(); + MainThreadEventQueue( + int routing_id, + MainThreadEventQueueClient* client, + const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner); // Called once the compositor has handled |event| and indicated that it is // a non-blocking event to be queued to the main thread. @@ -112,13 +116,24 @@ void set_is_flinging(bool is_flinging) { is_flinging_ = is_flinging; } private: + friend class base::RefCountedThreadSafe<MainThreadEventQueue>; + ~MainThreadEventQueue(); + void QueueEvent(std::unique_ptr<EventWithDispatchType> event); + void SendEventNotificationToMainThread(); + void PopEventOnMainThread(); + void SendEventToMainThread(const blink::WebInputEvent* event, + const ui::LatencyInfo& latency, + InputEventDispatchType original_dispatch_type); + friend class MainThreadEventQueueTest; int routing_id_; MainThreadEventQueueClient* client_; WebInputEventQueue<EventWithDispatchType> events_; std::unique_ptr<EventWithDispatchType> in_flight_event_; bool is_flinging_; - bool sent_notification_to_main_; + + base::Lock event_queue_lock_; + scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; DISALLOW_COPY_AND_ASSIGN(MainThreadEventQueue); };
diff --git a/content/renderer/input/main_thread_event_queue_unittest.cc b/content/renderer/input/main_thread_event_queue_unittest.cc index 9cf7b02..5fbf8b0a 100644 --- a/content/renderer/input/main_thread_event_queue_unittest.cc +++ b/content/renderer/input/main_thread_event_queue_unittest.cc
@@ -9,6 +9,7 @@ #include <vector> #include "base/macros.h" +#include "base/test/test_simple_task_runner.h" #include "build/build_config.h" #include "content/common/input/synthetic_web_input_event_builders.h" #include "content/renderer/input/main_thread_event_queue.h" @@ -19,6 +20,16 @@ using blink::WebMouseWheelEvent; using blink::WebTouchEvent; +namespace blink { +bool operator==(const WebMouseWheelEvent& lhs, const WebMouseWheelEvent& rhs) { + return memcmp(&lhs, &rhs, lhs.size) == 0; +} + +bool operator==(const WebTouchEvent& lhs, const WebTouchEvent& rhs) { + return memcmp(&lhs, &rhs, lhs.size) == 0; +} +} // namespace blink + namespace content { namespace { @@ -28,16 +39,19 @@ class MainThreadEventQueueTest : public testing::Test, public MainThreadEventQueueClient { public: - MainThreadEventQueueTest() : queue_(kTestRoutingID, this) {} + MainThreadEventQueueTest() + : main_task_runner_(new base::TestSimpleTaskRunner()), + queue_( + new MainThreadEventQueue(kTestRoutingID, this, main_task_runner_)) { + } - void SendEventToMainThread(int routing_id, - const blink::WebInputEvent* event, - const ui::LatencyInfo& latency, - InputEventDispatchType type) override { - ASSERT_EQ(kTestRoutingID, routing_id); - const unsigned char* eventPtr = - reinterpret_cast<const unsigned char*>(event); - last_event_.assign(eventPtr, eventPtr + event->size); + void HandleEventOnMainThread(int routing_id, + const blink::WebInputEvent* event, + const ui::LatencyInfo& latency, + InputEventDispatchType type) override { + EXPECT_EQ(kTestRoutingID, routing_id); + handled_events_.push_back(WebInputEventTraits::Clone(*event)); + queue_->EventHandled(event->type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); } void SendInputEventAck(int routing_id, @@ -48,14 +62,13 @@ } WebInputEventQueue<EventWithDispatchType>& event_queue() { - return queue_.events_; + return queue_->events_; } - bool eventPendingToMain() const { return queue_.sent_notification_to_main_; } - protected: - MainThreadEventQueue queue_; - std::vector<unsigned char> last_event_; + scoped_refptr<base::TestSimpleTaskRunner> main_task_runner_; + scoped_refptr<MainThreadEventQueue> queue_; + std::vector<ScopedWebInputEvent> handled_events_; std::vector<uint32_t> additional_acked_events_; }; @@ -67,36 +80,46 @@ SyntheticWebMouseWheelEventBuilder::Build(30, 30, 0, 53, 1, false), }; - ASSERT_FALSE(eventPendingToMain()); - queue_.HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - ASSERT_TRUE(eventPendingToMain()); - queue_.HandleEvent(&kEvents[1], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - ASSERT_EQ(kEvents[0].size, last_event_.size()); - kEvents[0].dispatchType = - WebInputEvent::DispatchType::ListenersNonBlockingPassive; - ASSERT_TRUE(memcmp(&last_event_[0], &kEvents[0], kEvents[0].size) == 0); - queue_.EventHandled(blink::WebInputEvent::MouseWheel, - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - ASSERT_EQ(kEvents[1].size, last_event_.size()); - kEvents[1].dispatchType = - WebInputEvent::DispatchType::ListenersNonBlockingPassive; - ASSERT_TRUE(memcmp(&last_event_[0], &kEvents[1], kEvents[1].size) == 0); - ASSERT_TRUE(eventPendingToMain()); - queue_.EventHandled(blink::WebInputEvent::MouseWheel, - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - ASSERT_FALSE(eventPendingToMain()); + EXPECT_FALSE(main_task_runner_->HasPendingTask()); + EXPECT_EQ(0u, event_queue().size()); + queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kEvents[1], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kEvents[2], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kEvents[3], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + EXPECT_EQ(2u, event_queue().size()); + EXPECT_TRUE(main_task_runner_->HasPendingTask()); + main_task_runner_->RunUntilIdle(); + EXPECT_FALSE(main_task_runner_->HasPendingTask()); + EXPECT_EQ(0u, event_queue().size()); + EXPECT_EQ(2u, handled_events_.size()); - // Ensure that coalescing takes place. - queue_.HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - queue_.HandleEvent(&kEvents[2], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - queue_.HandleEvent(&kEvents[3], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - ASSERT_EQ(1u, event_queue().size()); - ASSERT_TRUE(eventPendingToMain()); + { + EXPECT_EQ(kEvents[0].size, handled_events_.at(0)->size); + EXPECT_EQ(kEvents[0].type, handled_events_.at(0)->type); + const WebMouseWheelEvent* last_wheel_event = + static_cast<const WebMouseWheelEvent*>(handled_events_.at(0).get()); + EXPECT_EQ(WebInputEvent::DispatchType::ListenersNonBlockingPassive, + last_wheel_event->dispatchType); + WebMouseWheelEvent coalesced_event = kEvents[0]; + internal::Coalesce(kEvents[1], &coalesced_event); + coalesced_event.dispatchType = + WebInputEvent::DispatchType::ListenersNonBlockingPassive; + EXPECT_EQ(coalesced_event, *last_wheel_event); + } + + { + const WebMouseWheelEvent* last_wheel_event = + static_cast<const WebMouseWheelEvent*>(handled_events_.at(1).get()); + WebMouseWheelEvent coalesced_event = kEvents[2]; + internal::Coalesce(kEvents[3], &coalesced_event); + coalesced_event.dispatchType = + WebInputEvent::DispatchType::ListenersNonBlockingPassive; + EXPECT_EQ(coalesced_event, *last_wheel_event); + } } TEST_F(MainThreadEventQueueTest, NonBlockingTouch) { @@ -109,37 +132,47 @@ kEvents[2].MovePoint(0, 30, 30); kEvents[3].PressPoint(10, 10); kEvents[3].MovePoint(0, 35, 35); + queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kEvents[1], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kEvents[2], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kEvents[3], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - ASSERT_FALSE(eventPendingToMain()); - queue_.HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - ASSERT_TRUE(eventPendingToMain()); - queue_.HandleEvent(&kEvents[1], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - ASSERT_EQ(kEvents[0].size, last_event_.size()); + EXPECT_EQ(3u, event_queue().size()); + EXPECT_TRUE(main_task_runner_->HasPendingTask()); + main_task_runner_->RunUntilIdle(); + EXPECT_FALSE(main_task_runner_->HasPendingTask()); + EXPECT_EQ(0u, event_queue().size()); + EXPECT_EQ(3u, handled_events_.size()); + + EXPECT_EQ(kEvents[0].size, handled_events_.at(0)->size); + EXPECT_EQ(kEvents[0].type, handled_events_.at(0)->type); + const WebTouchEvent* last_touch_event = + static_cast<const WebTouchEvent*>(handled_events_.at(0).get()); kEvents[0].dispatchType = WebInputEvent::DispatchType::ListenersNonBlockingPassive; - ASSERT_TRUE(memcmp(&last_event_[0], &kEvents[0], kEvents[0].size) == 0); - queue_.EventHandled(blink::WebInputEvent::TouchStart, - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - ASSERT_EQ(kEvents[1].size, last_event_.size()); + EXPECT_EQ(kEvents[0], *last_touch_event); + + EXPECT_EQ(kEvents[1].size, handled_events_.at(1)->size); + EXPECT_EQ(kEvents[1].type, handled_events_.at(1)->type); + last_touch_event = + static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); kEvents[1].dispatchType = WebInputEvent::DispatchType::ListenersNonBlockingPassive; - ASSERT_TRUE(memcmp(&last_event_[0], &kEvents[1], kEvents[1].size) == 0); - ASSERT_TRUE(eventPendingToMain()); - queue_.EventHandled(blink::WebInputEvent::TouchMove, - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - ASSERT_FALSE(eventPendingToMain()); + EXPECT_EQ(kEvents[1], *last_touch_event); - // Ensure that coalescing takes place. - queue_.HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - queue_.HandleEvent(&kEvents[2], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - queue_.HandleEvent(&kEvents[3], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - ASSERT_EQ(1u, event_queue().size()); - ASSERT_TRUE(eventPendingToMain()); + EXPECT_EQ(kEvents[2].size, handled_events_.at(1)->size); + EXPECT_EQ(kEvents[2].type, handled_events_.at(2)->type); + last_touch_event = + static_cast<const WebTouchEvent*>(handled_events_.at(2).get()); + WebTouchEvent coalesced_event = kEvents[2]; + internal::Coalesce(kEvents[3], &coalesced_event); + coalesced_event.dispatchType = + WebInputEvent::DispatchType::ListenersNonBlockingPassive; + EXPECT_EQ(coalesced_event, *last_touch_event); } TEST_F(MainThreadEventQueueTest, BlockingTouch) { @@ -151,25 +184,79 @@ kEvents[2].MovePoint(0, 30, 30); kEvents[3].PressPoint(10, 10); kEvents[3].MovePoint(0, 35, 35); - - ASSERT_FALSE(eventPendingToMain()); // Ensure that coalescing takes place. - queue_.HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); - queue_.HandleEvent(&kEvents[1], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - queue_.HandleEvent(&kEvents[2], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - queue_.HandleEvent(&kEvents[3], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, - INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - ASSERT_EQ(1u, event_queue().size()); - ASSERT_TRUE(eventPendingToMain()); - queue_.EventHandled(kEvents[0].type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - ASSERT_EQ(0u, event_queue().size()); - queue_.EventHandled(kEvents[1].type, INPUT_EVENT_ACK_STATE_NOT_CONSUMED); - ASSERT_EQ(2u, additional_acked_events_.size()); - ASSERT_EQ(kEvents[2].uniqueTouchEventId, additional_acked_events_.at(0)); - ASSERT_EQ(kEvents[3].uniqueTouchEventId, additional_acked_events_.at(1)); + queue_->HandleEvent(&kEvents[0], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kEvents[1], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_NOT_CONSUMED); + queue_->HandleEvent(&kEvents[2], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_NOT_CONSUMED); + queue_->HandleEvent(&kEvents[3], ui::LatencyInfo(), DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_NOT_CONSUMED); + EXPECT_EQ(2u, event_queue().size()); + EXPECT_TRUE(main_task_runner_->HasPendingTask()); + main_task_runner_->RunUntilIdle(); + EXPECT_EQ(0u, event_queue().size()); + EXPECT_EQ(2u, additional_acked_events_.size()); + EXPECT_EQ(kEvents[2].uniqueTouchEventId, additional_acked_events_.at(0)); + EXPECT_EQ(kEvents[3].uniqueTouchEventId, additional_acked_events_.at(1)); +} + +TEST_F(MainThreadEventQueueTest, InterleavedEvents) { + WebMouseWheelEvent kWheelEvents[2] = { + SyntheticWebMouseWheelEventBuilder::Build(10, 10, 0, 53, 0, false), + SyntheticWebMouseWheelEventBuilder::Build(20, 20, 0, 53, 0, false), + }; + SyntheticWebTouchEvent kTouchEvents[2]; + kTouchEvents[0].PressPoint(10, 10); + kTouchEvents[0].MovePoint(0, 20, 20); + kTouchEvents[1].PressPoint(10, 10); + kTouchEvents[1].MovePoint(0, 30, 30); + + EXPECT_FALSE(main_task_runner_->HasPendingTask()); + EXPECT_EQ(0u, event_queue().size()); + queue_->HandleEvent(&kWheelEvents[0], ui::LatencyInfo(), + DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kTouchEvents[0], ui::LatencyInfo(), + DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kWheelEvents[1], ui::LatencyInfo(), + DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + queue_->HandleEvent(&kTouchEvents[1], ui::LatencyInfo(), + DISPATCH_TYPE_BLOCKING, + INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING); + EXPECT_EQ(2u, event_queue().size()); + EXPECT_TRUE(main_task_runner_->HasPendingTask()); + main_task_runner_->RunUntilIdle(); + EXPECT_FALSE(main_task_runner_->HasPendingTask()); + EXPECT_EQ(0u, event_queue().size()); + EXPECT_EQ(2u, handled_events_.size()); + { + EXPECT_EQ(kWheelEvents[0].size, handled_events_.at(0)->size); + EXPECT_EQ(kWheelEvents[0].type, handled_events_.at(0)->type); + const WebMouseWheelEvent* last_wheel_event = + static_cast<const WebMouseWheelEvent*>(handled_events_.at(0).get()); + EXPECT_EQ(WebInputEvent::DispatchType::ListenersNonBlockingPassive, + last_wheel_event->dispatchType); + WebMouseWheelEvent coalesced_event = kWheelEvents[0]; + internal::Coalesce(kWheelEvents[1], &coalesced_event); + coalesced_event.dispatchType = + WebInputEvent::DispatchType::ListenersNonBlockingPassive; + EXPECT_EQ(coalesced_event, *last_wheel_event); + } + { + EXPECT_EQ(kTouchEvents[0].size, handled_events_.at(1)->size); + EXPECT_EQ(kTouchEvents[0].type, handled_events_.at(1)->type); + const WebTouchEvent* last_touch_event = + static_cast<const WebTouchEvent*>(handled_events_.at(1).get()); + WebTouchEvent coalesced_event = kTouchEvents[0]; + internal::Coalesce(kTouchEvents[1], &coalesced_event); + coalesced_event.dispatchType = + WebInputEvent::DispatchType::ListenersNonBlockingPassive; + EXPECT_EQ(coalesced_event, *last_touch_event); + } } } // namespace content
diff --git a/content/renderer/input/render_widget_input_handler.cc b/content/renderer/input/render_widget_input_handler.cc index 878f087..ebc894b 100644 --- a/content/renderer/input/render_widget_input_handler.cc +++ b/content/renderer/input/render_widget_input_handler.cc
@@ -420,12 +420,11 @@ TRACE_EVENT_SYNTHETIC_DELAY_END("blink.HandleInputEvent"); - // Note that we can't use handling_event_type_ here since it will be overriden - // by reentrant calls for events after the paused one. + // Note that we can't use handling_event_type_ here since it will be + // overridden by reentrant calls for events after the paused one. bool can_send_ack = !(ignore_ack_for_mouse_move_from_debugger_ && input_event.type == WebInputEvent::MouseMove); - if (dispatch_type == DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN || - dispatch_type == DISPATCH_TYPE_NON_BLOCKING_NOTIFY_MAIN) { + if (dispatch_type == DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN) { // |non_blocking| means it was ack'd already by the InputHandlerProxy // so let the delegate know the event has been handled. delegate_->NotifyInputEventHandled(input_event.type, ack_result);
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 9fb4467f..672e2d8 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -45,6 +45,7 @@ #include "content/child/web_url_loader_impl.h" #include "content/child/web_url_request_util.h" #include "content/child/webmessageportchannel_impl.h" +#include "content/child/websocket_bridge.h" #include "content/child/weburlresponse_extradata_impl.h" #include "content/common/accessibility_messages.h" #include "content/common/clipboard_messages.h" @@ -60,7 +61,6 @@ #include "content/common/savable_subframe.h" #include "content/common/service_worker/service_worker_types.h" #include "content/common/site_isolation_policy.h" -#include "content/common/ssl_status_serialization.h" #include "content/common/swapped_out_messages.h" #include "content/common/view_messages.h" #include "content/public/common/bindings_policy.h" @@ -134,7 +134,6 @@ #include "content/renderer/web_frame_utils.h" #include "content/renderer/web_ui_extension.h" #include "content/renderer/websharedworker_proxy.h" -#include "content/renderer/websockethandle_impl.h" #include "crypto/sha2.h" #include "gin/modules/module_registry.h" #include "media/audio/audio_output_device.h" @@ -783,51 +782,6 @@ DISALLOW_COPY_AND_ASSIGN(MHTMLPartsGenerationDelegate); }; -// Returns true if a subresource certificate error (described by |url| -// and |security_info|) is "interesting" to the browser process. The -// browser process is interested in certificate errors that differ from -// certificate errors encountered while loading the main frame's main -// resource. In other words, it would be confusing to mark a page as -// having displayed/run insecure content when the whole page has already -// been marked as insecure for the same reason, so subresources with the -// same certificate errors as the main resource are not sent to the -// browser process. -bool IsContentWithCertificateErrorsRelevantToUI( - blink::WebFrame* frame, - const blink::WebURL& url, - const blink::WebCString& security_info) { - blink::WebFrame* main_frame = frame->top(); - - // If the main frame is remote, then it must be cross-site and - // therefore this subresource's certificate errors are potentially - // interesting to the browser (not redundant with the main frame's - // main resource). - if (main_frame->isWebRemoteFrame()) - return true; - - WebDataSource* main_ds = main_frame->toWebLocalFrame()->dataSource(); - content::SSLStatus ssl_status; - content::SSLStatus main_resource_ssl_status; - CHECK(DeserializeSecurityInfo(security_info, &ssl_status)); - CHECK(DeserializeSecurityInfo(main_ds->response().securityInfo(), - &main_resource_ssl_status)); - - // Do not send subresource certificate errors if they are the same - // as errors that occured during the main page load. This compares - // most, but not all, fields of SSLStatus. For example, this check - // does not compare |content_status| because the navigation entry - // might have mixed content but also have the exact same SSL - // connection properties as the subresource, thereby making the - // subresource errors duplicative. - return (!url::Origin(GURL(url)).IsSameOriginWith( - url::Origin(GURL(main_ds->request().url()))) || - main_resource_ssl_status.cert_id != ssl_status.cert_id || - main_resource_ssl_status.cert_status != ssl_status.cert_status || - main_resource_ssl_status.security_bits != ssl_status.security_bits || - main_resource_ssl_status.connection_status != - ssl_status.connection_status); -} - bool IsHttpPost(const blink::WebURLRequest& request) { return request.httpMethod().utf8() == "POST"; } @@ -1256,6 +1210,20 @@ blame_context_->Initialize(); } +void RenderFrameImpl::OnGotZoomLevel(const GURL& url, double zoom_level) { + // TODO(wjmaclean): We should see if this restriction is really necessary, + // since it isn't enforced in other parts of the page zoom system (e.g. + // when a users changes the zoom of a currently displayed page). Android + // has no UI for this, so in theory the following code would normally just use + // the default zoom anyways. +#if !defined(OS_ANDROID) + // On Android, page zoom isn't used, and in case of WebView, text zoom is used + // for legacy WebView text scaling emulation. Thus, the code that resets + // the zoom level from this map will be effectively resetting text zoom level. + host_zoom_levels_[url] = zoom_level; +#endif +} + RenderWidget* RenderFrameImpl::GetRenderWidget() { RenderFrameImpl* local_root = RenderFrameImpl::FromWebFrame(frame_->localRoot()); @@ -4136,6 +4104,14 @@ if (!render_view_->renderer_preferences_.enable_referrers) request.setHTTPReferrer(WebString(), blink::WebReferrerPolicyDefault); + + if (extra_data->is_main_frame() && RenderThreadImpl::current()) { + RenderThreadImpl::current() + ->render_frame_message_filter() + ->GetHostZoomLevel(render_view_->GetRoutingID(), request_url, + base::Bind(&RenderFrameImpl::OnGotZoomLevel, + weak_factory_.GetWeakPtr(), request_url)); + } } void RenderFrameImpl::didReceiveResponse( @@ -4215,17 +4191,14 @@ void RenderFrameImpl::didDisplayContentWithCertificateErrors( const blink::WebURL& url, const blink::WebCString& security_info) { - if (IsContentWithCertificateErrorsRelevantToUI(frame_, url, security_info)) { - Send(new FrameHostMsg_DidDisplayContentWithCertificateErrors( - routing_id_, url)); - } + Send(new FrameHostMsg_DidDisplayContentWithCertificateErrors( + routing_id_, url)); } void RenderFrameImpl::didRunContentWithCertificateErrors( const blink::WebURL& url, const blink::WebCString& security_info) { - if (IsContentWithCertificateErrorsRelevantToUI(frame_, url, security_info)) - Send(new FrameHostMsg_DidRunContentWithCertificateErrors(routing_id_, url)); + Send(new FrameHostMsg_DidRunContentWithCertificateErrors(routing_id_, url)); } void RenderFrameImpl::didChangePerformanceTiming() { @@ -4311,6 +4284,11 @@ QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper(callbacks)); } +void RenderFrameImpl::willOpenWebSocket(blink::WebSocketHandle* handle) { + WebSocketBridge* impl = static_cast<WebSocketBridge*>(handle); + impl->set_render_frame_id(routing_id_); +} + blink::WebPresentationClient* RenderFrameImpl::presentationClient() { if (!presentation_dispatcher_) presentation_dispatcher_ = new PresentationDispatcher(this); @@ -4323,15 +4301,6 @@ return push_messaging_dispatcher_; } -void RenderFrameImpl::willOpenWebSocket(blink::WebSocketHandle* handle) { - // Initialize the WebSocketHandle with our InterfaceProvider to provide the - // WebSocket implementation with context about this frame. This is important - // so that the browser can show UI associated with the WebSocket (e.g., for - // certificate errors). - static_cast<WebSocketHandleImpl*>(handle)->Initialize( - blink_interface_provider_.get()); -} - void RenderFrameImpl::willStartUsingPeerConnectionHandler( blink::WebRTCPeerConnectionHandler* handler) { #if defined(ENABLE_WEBRTC) @@ -4683,7 +4652,7 @@ // Set zoom level, but don't do it for full-page plugin since they don't use // the same zoom settings. HostZoomLevels::iterator host_zoom = - render_view_->host_zoom_levels_.find(GURL(request.url())); + host_zoom_levels_.find(GURL(request.url())); if (render_view_->webview()->mainFrame()->isWebLocalFrame() && render_view_->webview()->mainFrame()->document().isPluginDocument()) { // Reset the zoom levels for plugins. @@ -4691,15 +4660,15 @@ } else { // If the zoom level is not found, then do nothing. In-page navigation // relies on not changing the zoom level in this case. - if (host_zoom != render_view_->host_zoom_levels_.end()) + if (host_zoom != host_zoom_levels_.end()) render_view_->SetZoomLevel(host_zoom->second); } - if (host_zoom != render_view_->host_zoom_levels_.end()) { + if (host_zoom != host_zoom_levels_.end()) { // This zoom level was merely recorded transiently for this load. We can // erase it now. If at some point we reload this page, the browser will // send us a new, up-to-date zoom level. - render_view_->host_zoom_levels_.erase(host_zoom); + host_zoom_levels_.erase(host_zoom); } // Update contents MIME type for main frame.
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index b6704419..6991c59 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h
@@ -597,9 +597,9 @@ void requestStorageQuota(blink::WebStorageQuotaType type, unsigned long long requested_size, blink::WebStorageQuotaCallbacks callbacks) override; + void willOpenWebSocket(blink::WebSocketHandle* handle) override; blink::WebPushClient* pushClient() override; blink::WebPresentationClient* presentationClient() override; - void willOpenWebSocket(blink::WebSocketHandle* handle) override; void willStartUsingPeerConnectionHandler( blink::WebRTCPeerConnectionHandler* handler) override; blink::WebUserMediaClient* userMediaClient() override; @@ -706,6 +706,7 @@ FRIEND_TEST_ALL_PREFIXES(ExternalPopupMenuTest, ShowPopupThenNavigate); FRIEND_TEST_ALL_PREFIXES(RenderAccessibilityImplTest, AccessibilityMessagesQueueWhileSwappedOut); + FRIEND_TEST_ALL_PREFIXES(RenderFrameImplTest, ZoomLimit); // A wrapper class used as the callback for JavaScript executed // in an isolated world. @@ -1038,6 +1039,8 @@ void InitializeBlameContext(RenderFrameImpl* parent_frame); + void OnGotZoomLevel(const GURL& url, double zoom_level); + // Stores the WebLocalFrame we are associated with. This is null from the // constructor until BindToWebFrame is called, and it is null after // frameDetached is called until destruction (which is asynchronous in the @@ -1227,6 +1230,8 @@ std::unique_ptr<blink::WebBluetooth> bluetooth_; + HostZoomLevels host_zoom_levels_; + // Manages play, pause notifications for WebMediaPlayer implementations; its // lifetime is tied to the RenderFrame via the RenderFrameObserver interface. media::RendererWebMediaPlayerDelegate* media_player_delegate_;
diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc index 999a9b39..0e5bed48 100644 --- a/content/renderer/render_frame_impl_browsertest.cc +++ b/content/renderer/render_frame_impl_browsertest.cc
@@ -18,12 +18,14 @@ #include "content/renderer/render_frame_impl.h" #include "content/renderer/render_view_impl.h" #include "content/test/fake_compositor_dependencies.h" +#include "content/test/test_render_frame.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/WebKit/public/platform/WebEffectiveConnectionType.h" #include "third_party/WebKit/public/platform/WebString.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" #include "third_party/WebKit/public/web/WebHistoryItem.h" #include "third_party/WebKit/public/web/WebLocalFrame.h" +#include "third_party/WebKit/public/web/WebView.h" using blink::WebString; @@ -343,4 +345,32 @@ EXPECT_FALSE(msg4); } +TEST_F(RenderFrameImplTest, ZoomLimit) { + const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor); + const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor); + + // Verifies navigation to a URL with preset zoom level indeed sets the level. + // Regression test for http://crbug.com/139559, where the level was not + // properly set when it is out of the default zoom limits of WebView. + CommonNavigationParams common_params; + common_params.url = GURL("data:text/html,min_zoomlimit_test"); + GetMainRenderFrame()->OnGotZoomLevel(common_params.url, kMinZoomLevel); + TestRenderFrame* frame = static_cast<TestRenderFrame*>(GetMainRenderFrame()); + frame->Navigate(common_params, StartNavigationParams(), + RequestNavigationParams()); + + ProcessPendingMessages(); + EXPECT_DOUBLE_EQ(kMinZoomLevel, view_->GetWebView()->zoomLevel()); + + // It should work even when the zoom limit is temporarily changed in the page. + view_->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0), + ZoomFactorToZoomLevel(1.0)); + common_params.url = GURL("data:text/html,max_zoomlimit_test"); + GetMainRenderFrame()->OnGotZoomLevel(common_params.url, kMaxZoomLevel); + frame->Navigate(common_params, StartNavigationParams(), + RequestNavigationParams()); + ProcessPendingMessages(); + EXPECT_DOUBLE_EQ(kMaxZoomLevel, view_->GetWebView()->zoomLevel()); +} + } // namespace
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index b6fb747..830fd3d6 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -69,6 +69,7 @@ #include "content/child/runtime_features.h" #include "content/child/thread_safe_sender.h" #include "content/child/web_database_observer_impl.h" +#include "content/child/websocket_message_filter.h" #include "content/child/worker_thread_registry.h" #include "content/common/child_process_messages.h" #include "content/common/content_constants_internal.h" @@ -1219,6 +1220,9 @@ resource_task_queue2); resource_dispatcher()->SetMainThreadTaskRunner(resource_task_queue2); + websocket_message_filter()->SetLoadingTaskRunner( + renderer_scheduler_->LoadingTaskRunner()); + if (!command_line.HasSwitch(switches::kDisableThreadedCompositing) && !command_line.HasSwitch(switches::kUseRemoteCompositing)) InitializeCompositorThread();
diff --git a/content/renderer/render_thread_impl_browsertest.cc b/content/renderer/render_thread_impl_browsertest.cc index 0c9a4511..46ee9ea 100644 --- a/content/renderer/render_thread_impl_browsertest.cc +++ b/content/renderer/render_thread_impl_browsertest.cc
@@ -21,6 +21,7 @@ #include "content/app/mojo/mojo_init.h" #include "content/common/in_process_child_thread_params.h" #include "content/common/resource_messages.h" +#include "content/common/websocket_messages.h" #include "content/public/browser/content_browser_client.h" #include "content/public/common/content_client.h" #include "content/public/common/content_switches.h" @@ -231,6 +232,7 @@ WILL_LEAK(NonResourceDispatchIPCTasksDontGoThroughScheduler)) { // NOTE other than not being a resource message, the actual message is // unimportant. + test_helper_->Sender()->Send(new WebSocketMsg_NotifyFailure(1, "")); test_helper_->Sender()->Send(new TestMsg_QuitRunLoop()); base::RunLoop().Run();
diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc index 64556e6..0f0f1a35 100644 --- a/content/renderer/render_view_browsertest.cc +++ b/content/renderer/render_view_browsertest.cc
@@ -1628,32 +1628,6 @@ } #endif -TEST_F(RenderViewImplTest, ZoomLimit) { - const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor); - const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor); - - // Verifies navigation to a URL with preset zoom level indeed sets the level. - // Regression test for http://crbug.com/139559, where the level was not - // properly set when it is out of the default zoom limits of WebView. - CommonNavigationParams common_params; - common_params.url = GURL("data:text/html,min_zoomlimit_test"); - view()->OnSetZoomLevelForLoadingURL(common_params.url, kMinZoomLevel); - frame()->Navigate(common_params, StartNavigationParams(), - RequestNavigationParams()); - ProcessPendingMessages(); - EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel()); - - // It should work even when the zoom limit is temporarily changed in the page. - view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0), - ZoomFactorToZoomLevel(1.0)); - common_params.url = GURL("data:text/html,max_zoomlimit_test"); - view()->OnSetZoomLevelForLoadingURL(common_params.url, kMaxZoomLevel); - frame()->Navigate(common_params, StartNavigationParams(), - RequestNavigationParams()); - ProcessPendingMessages(); - EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel()); -} - TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) { // Load an HTML page consisting of an input field. LoadHTML("<html>"
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index cacdbad..f1f20107 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc
@@ -971,7 +971,8 @@ settings->setMockScrollbarsEnabled(prefs.mock_scrollbars_enabled); // Enable gpu-accelerated 2d canvas if requested on the command line. - settings->setAccelerated2dCanvasEnabled(prefs.accelerated_2d_canvas_enabled); + WebRuntimeFeatures::enableAccelerated2dCanvas( + prefs.accelerated_2d_canvas_enabled); settings->setMinimumAccelerated2dCanvasSize( prefs.minimum_accelerated_2d_canvas_size); @@ -1282,8 +1283,6 @@ OnSetEditCommandsForNextKeyEvent) IPC_MESSAGE_HANDLER(ViewMsg_SetPageScale, OnSetPageScale) IPC_MESSAGE_HANDLER(ViewMsg_Zoom, OnZoom) - IPC_MESSAGE_HANDLER(ViewMsg_SetZoomLevelForLoadingURL, - OnSetZoomLevelForLoadingURL) IPC_MESSAGE_HANDLER(ViewMsg_SetPageEncoding, OnSetPageEncoding) IPC_MESSAGE_HANDLER(ViewMsg_ResetPageEncodingToDefault, OnResetPageEncodingToDefault) @@ -2256,21 +2255,6 @@ zoomLevelChanged(); } -void RenderViewImpl::OnSetZoomLevelForLoadingURL(const GURL& url, - double zoom_level) { - // TODO(wjmaclean): We should see if this restriction is really necessary, - // since it isn't enforced in other parts of the page zoom system (e.g. - // when a users changes the zoom of a currently displayed page). Android - // has no UI for this, so in theory the following code would normally just use - // the default zoom anyways. -#if !defined(OS_ANDROID) - // On Android, page zoom isn't used, and in case of WebView, text zoom is used - // for legacy WebView text scaling emulation. Thus, the code that resets - // the zoom level from this map will be effectively resetting text zoom level. - host_zoom_levels_[url] = zoom_level; -#endif -} - void RenderViewImpl::OnSetZoomLevel( PageMsg_SetZoomLevel_Command command, double zoom_level) {
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h index 67d9a5c7..4cbf00ed 100644 --- a/content/renderer/render_view_impl.h +++ b/content/renderer/render_view_impl.h
@@ -509,7 +509,6 @@ FRIEND_TEST_ALL_PREFIXES(RenderViewTest, MacTestCmdUp); #endif FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, SetHistoryLengthAndOffset); - FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, ZoomLimit); FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, NavigateFrame); FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, BasicRenderFrame); FRIEND_TEST_ALL_PREFIXES(RenderViewImplTest, TextInputTypeWithPepper); @@ -525,8 +524,6 @@ FRIEND_TEST_ALL_PREFIXES(RenderViewImplScaleFactorTest, GetCompositionCharacterBoundsTest); - typedef std::map<GURL, double> HostZoomLevels; - enum ErrorPageType { DNS_ERROR, HTTP_404, @@ -627,7 +624,6 @@ void OnSetPageEncoding(const std::string& encoding_name); void OnSetRendererPrefs(const RendererPreferences& renderer_prefs); void OnSetWebUIProperty(const std::string& name, const std::string& value); - void OnSetZoomLevelForLoadingURL(const GURL& url, double zoom_level); void OnSuppressDialogsUntilSwapOut(); void OnThemeChanged(); void OnUpdateTargetURLAck(); @@ -717,8 +713,6 @@ WebPreferences webkit_preferences_; RendererPreferences renderer_preferences_; - HostZoomLevels host_zoom_levels_; - // Whether content state (such as form state, scroll position and page // contents) should be sent to the browser immediately. This is normally // false, but set to true by some tests.
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc index 2d9ff85..96188e3e 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -74,7 +74,6 @@ #include "content/renderer/webclipboard_impl.h" #include "content/renderer/webgraphicscontext3d_provider_impl.h" #include "content/renderer/webpublicsuffixlist_impl.h" -#include "content/renderer/websockethandle_impl.h" #include "gpu/command_buffer/client/gles2_interface.h" #include "gpu/config/gpu_info.h" #include "gpu/ipc/client/gpu_channel_host.h" @@ -399,10 +398,6 @@ default_task_runner_, channel1, channel2); } -blink::WebSocketHandle* RendererBlinkPlatformImpl::createWebSocketHandle() { - return new WebSocketHandleImpl(loading_task_runner_); -} - blink::WebPrescientNetworking* RendererBlinkPlatformImpl::prescientNetworking() { return GetContentClient()->renderer()->GetPrescientNetworking();
diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h index b8bfd72..c0704ab7 100644 --- a/content/renderer/renderer_blink_platform_impl.h +++ b/content/renderer/renderer_blink_platform_impl.h
@@ -92,7 +92,6 @@ bool isLinkVisited(unsigned long long linkHash) override; void createMessageChannel(blink::WebMessagePortChannel** channel1, blink::WebMessagePortChannel** channel2) override; - blink::WebSocketHandle* createWebSocketHandle() override; blink::WebPrescientNetworking* prescientNetworking() override; void cacheMetadata(const blink::WebURL&, int64_t,
diff --git a/content/renderer/websockethandle_impl.cc b/content/renderer/websockethandle_impl.cc deleted file mode 100644 index 652f698..0000000 --- a/content/renderer/websockethandle_impl.cc +++ /dev/null
@@ -1,302 +0,0 @@ -// Copyright 2013 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/renderer/websockethandle_impl.h" - -#include <stdint.h> -#include <string.h> - -#include <string> -#include <utility> - -#include "base/logging.h" -#include "base/strings/string_util.h" -#include "third_party/WebKit/public/platform/InterfaceProvider.h" -#include "third_party/WebKit/public/platform/Platform.h" -#include "third_party/WebKit/public/platform/WebSecurityOrigin.h" -#include "third_party/WebKit/public/platform/WebString.h" -#include "third_party/WebKit/public/platform/WebURL.h" -#include "third_party/WebKit/public/platform/WebVector.h" -#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandle.h" -#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandleClient.h" -#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandshakeRequestInfo.h" -#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandshakeResponseInfo.h" -#include "url/gurl.h" -#include "url/origin.h" - -using blink::WebSecurityOrigin; -using blink::WebSocketHandle; -using blink::WebSocketHandleClient; -using blink::WebString; -using blink::WebURL; -using blink::WebVector; - -namespace content { -namespace { - -const uint16_t kAbnormalShutdownOpCode = 1006; - -} // namespace - -WebSocketHandleImpl::WebSocketHandleImpl( - scoped_refptr<base::SingleThreadTaskRunner> task_runner) - : client_(nullptr), - client_binding_(this), - task_runner_(std::move(task_runner)), - did_initialize_(false) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " created"; -} - -void WebSocketHandleImpl::Initialize( - blink::InterfaceProvider* interface_provider) { - DCHECK(!websocket_); - DCHECK(!did_initialize_); - - interface_provider->getInterface(mojo::GetProxy(&websocket_)); - - websocket_.set_connection_error_handler( - base::Bind(&WebSocketHandleImpl::OnConnectionError, - base::Unretained(this))); - did_initialize_ = true; -} - -void WebSocketHandleImpl::connect(const WebURL& url, - const WebVector<WebString>& protocols, - const WebSecurityOrigin& origin, - const WebURL& first_party_for_cookies, - const WebString& user_agent_override, - WebSocketHandleClient* client) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " Connect(" << url.string().utf8() << ", " - << origin.toString().utf8() << ")"; - - // It is insufficient to test if websocket_ is non-null as Disconnect() sets - // websocket_ to null. - if (!did_initialize_) - Initialize(blink::Platform::current()->interfaceProvider()); - - DCHECK(websocket_); - - DCHECK(!client_); - DCHECK(client); - client_ = client; - - mojo::Array<mojo::String> protocols_to_pass(protocols.size()); - for (size_t i = 0; i < protocols.size(); ++i) - protocols_to_pass[i] = protocols[i].utf8(); - - websocket_->AddChannelRequest( - url, - std::move(protocols_to_pass), - origin, - first_party_for_cookies, - user_agent_override.latin1(), - client_binding_.CreateInterfacePtrAndBind(task_runner_)); -} - -void WebSocketHandleImpl::send(bool fin, - WebSocketHandle::MessageType type, - const char* data, - size_t size) { - DCHECK(websocket_); - - mojom::WebSocketMessageType type_to_pass; - switch (type) { - case WebSocketHandle::MessageTypeContinuation: - type_to_pass = mojom::WebSocketMessageType::CONTINUATION; - break; - case WebSocketHandle::MessageTypeText: - type_to_pass = mojom::WebSocketMessageType::TEXT; - break; - case WebSocketHandle::MessageTypeBinary: - type_to_pass = mojom::WebSocketMessageType::BINARY; - break; - default: - NOTREACHED(); - return; - } - - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " Send(" << fin << ", " << type_to_pass << ", " - << "(data size = " << size << "))"; - - mojo::Array<uint8_t> data_to_pass(size); - std::copy(data, data + size, data_to_pass.begin()); - - websocket_->SendFrame(fin, type_to_pass, std::move(data_to_pass)); -} - -void WebSocketHandleImpl::flowControl(int64_t quota) { - DCHECK(websocket_); - - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " FlowControl(" << quota << ")"; - - websocket_->SendFlowControl(quota); -} - -void WebSocketHandleImpl::close(unsigned short code, const WebString& reason) { - DCHECK(websocket_); - - std::string reason_to_pass = reason.utf8(); - - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " Close(" << code << ", " << reason_to_pass << ")"; - - websocket_->StartClosingHandshake(code, reason_to_pass); -} - -WebSocketHandleImpl::~WebSocketHandleImpl() { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " deleted"; - - if (websocket_) - websocket_->StartClosingHandshake(kAbnormalShutdownOpCode, std::string()); -} - -void WebSocketHandleImpl::Disconnect() { - websocket_.reset(); - client_ = nullptr; -} - -void WebSocketHandleImpl::OnConnectionError() { - // Our connection to the WebSocket was dropped. This could be due to - // exceeding the maximum number of concurrent websockets from this process. - - // TODO(darin): This error message is overly specific. We don't know for sure - // that this is the only reason we'd get here. This should be more generic or - // we should figure out how to make it more specific. - OnFailChannel("Error in connection establishment: " - "net::ERR_INSUFFICIENT_RESOURCES"); -} - -void WebSocketHandleImpl::OnFailChannel(const mojo::String& message) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " OnFailChannel(" << message << ")"; - - WebSocketHandleClient* client = client_; - Disconnect(); - if (!client) - return; - - client->didFail(this, WebString::fromUTF8(message)); - // |this| can be deleted here. -} - -void WebSocketHandleImpl::OnStartOpeningHandshake( - mojom::WebSocketHandshakeRequestPtr request) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " OnStartOpeningHandshake(" << request->url << ")"; - // All strings are already encoded to ASCII in the browser. - blink::WebSocketHandshakeRequestInfo request_to_pass; - request_to_pass.setURL(WebURL(request->url)); - for (size_t i = 0; i < request->headers.size(); ++i) { - const mojom::HttpHeaderPtr& header = request->headers[i]; - request_to_pass.addHeaderField(WebString::fromLatin1(header->name), - WebString::fromLatin1(header->value)); - } - request_to_pass.setHeadersText(WebString::fromLatin1(request->headers_text)); - client_->didStartOpeningHandshake(this, request_to_pass); -} - -void WebSocketHandleImpl::OnFinishOpeningHandshake( - mojom::WebSocketHandshakeResponsePtr response) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " OnFinishOpeningHandshake(" << response->url << ")"; - - // All strings are already encoded to ASCII in the browser. - blink::WebSocketHandshakeResponseInfo response_to_pass; - response_to_pass.setStatusCode(response->status_code); - response_to_pass.setStatusText(WebString::fromLatin1(response->status_text)); - for (size_t i = 0; i < response->headers.size(); ++i) { - const mojom::HttpHeaderPtr& header = response->headers[i]; - response_to_pass.addHeaderField(WebString::fromLatin1(header->name), - WebString::fromLatin1(header->value)); - } - response_to_pass.setHeadersText( - WebString::fromLatin1(response->headers_text)); - client_->didFinishOpeningHandshake(this, response_to_pass); -} - -void WebSocketHandleImpl::OnAddChannelResponse( - const mojo::String& protocol, - const mojo::String& extensions) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " OnAddChannelResponse(" - << protocol << ", " << extensions << ")"; - - if (!client_) - return; - - client_->didConnect(this, - WebString::fromUTF8(protocol), - WebString::fromUTF8(extensions)); - // |this| can be deleted here. -} - -void WebSocketHandleImpl::OnDataFrame( - bool fin, mojom::WebSocketMessageType type, - mojo::Array<uint8_t> data) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " OnDataFrame(" << fin << ", " << type << ", " - << "(data size = " << data.size() << "))"; - if (!client_) - return; - - WebSocketHandle::MessageType type_to_pass = - WebSocketHandle::MessageTypeContinuation; - switch (type) { - case mojom::WebSocketMessageType::CONTINUATION: - type_to_pass = WebSocketHandle::MessageTypeContinuation; - break; - case mojom::WebSocketMessageType::TEXT: - type_to_pass = WebSocketHandle::MessageTypeText; - break; - case mojom::WebSocketMessageType::BINARY: - type_to_pass = WebSocketHandle::MessageTypeBinary; - break; - } - const char* data_to_pass = - reinterpret_cast<const char*>(data.empty() ? nullptr : &data[0]); - client_->didReceiveData(this, fin, type_to_pass, data_to_pass, data.size()); - // |this| can be deleted here. -} - -void WebSocketHandleImpl::OnFlowControl(int64_t quota) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " OnFlowControl(" << quota << ")"; - if (!client_) - return; - - client_->didReceiveFlowControl(this, quota); - // |this| can be deleted here. -} - -void WebSocketHandleImpl::OnDropChannel(bool was_clean, uint16_t code, - const mojo::String& reason) { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " OnDropChannel(" << was_clean << ", " << code << ", " - << reason << ")"; - - WebSocketHandleClient* client = client_; - Disconnect(); - if (!client) - return; - - client->didClose(this, was_clean, code, WebString::fromUTF8(reason)); - // |this| can be deleted here. -} - -void WebSocketHandleImpl::OnClosingHandshake() { - DVLOG(1) << "WebSocketHandleImpl @" << reinterpret_cast<void*>(this) - << " OnClosingHandshake()"; - if (!client_) - return; - - client_->didStartClosingHandshake(this); - // |this| can be deleted here. -} - -} // namespace content
diff --git a/content/renderer/websockethandle_impl.h b/content/renderer/websockethandle_impl.h deleted file mode 100644 index 98e3957..0000000 --- a/content/renderer/websockethandle_impl.h +++ /dev/null
@@ -1,84 +0,0 @@ -// Copyright 2013 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_RENDERER_WEBSOCKETHANDLE_IMPL_H_ -#define CONTENT_RENDERER_WEBSOCKETHANDLE_IMPL_H_ - -#include <stddef.h> -#include <stdint.h> - -#include "base/macros.h" -#include "base/single_thread_task_runner.h" -#include "content/common/websocket.mojom.h" -#include "mojo/public/cpp/bindings/binding.h" -#include "third_party/WebKit/public/platform/WebVector.h" -#include "third_party/WebKit/public/platform/modules/websockets/WebSocketHandle.h" - -namespace blink { -class InterfaceProvider; -class WebSecurityOrigin; -class WebString; -class WebURL; -} // namespace blink - -namespace content { - -class WebSocketHandleImpl : public blink::WebSocketHandle, - public mojom::WebSocketClient { - public: - explicit WebSocketHandleImpl( - scoped_refptr<base::SingleThreadTaskRunner> task_runner); - - // This method may optionally be called before connect() to specify a - // specific InterfaceProvider to get a WebSocket instance. By default, - // connect() will use blink::Platform::interfaceProvider(). - void Initialize(blink::InterfaceProvider* interface_provider); - - // blink::WebSocketHandle methods: - void connect(const blink::WebURL& url, - const blink::WebVector<blink::WebString>& protocols, - const blink::WebSecurityOrigin& origin, - const blink::WebURL& first_party_for_cookies, - const blink::WebString& user_agent_override, - blink::WebSocketHandleClient* client) override; - void send(bool fin, - WebSocketHandle::MessageType type, - const char* data, - size_t size) override; - void flowControl(int64_t quota) override; - void close(unsigned short code, const blink::WebString& reason) override; - - private: - ~WebSocketHandleImpl() override; - void Disconnect(); - void OnConnectionError(); - - // mojom::WebSocketClient methods: - void OnFailChannel(const mojo::String& reason) override; - void OnStartOpeningHandshake( - mojom::WebSocketHandshakeRequestPtr request) override; - void OnFinishOpeningHandshake( - mojom::WebSocketHandshakeResponsePtr response) override; - void OnAddChannelResponse(const mojo::String& selected_protocol, - const mojo::String& extensions) override; - void OnDataFrame(bool fin, mojom::WebSocketMessageType type, - mojo::Array<uint8_t> data) override; - void OnFlowControl(int64_t quota) override; - void OnDropChannel(bool was_clean, uint16_t code, - const mojo::String& reason) override; - void OnClosingHandshake() override; - - blink::WebSocketHandleClient* client_; - - mojom::WebSocketPtr websocket_; - mojo::Binding<mojom::WebSocketClient> client_binding_; - scoped_refptr<base::SingleThreadTaskRunner> task_runner_; - bool did_initialize_; - - DISALLOW_COPY_AND_ASSIGN(WebSocketHandleImpl); -}; - -} // namespace content - -#endif // CONTENT_RENDERER_WEBSOCKETHANDLE_IMPL_H_
diff --git a/content/shell/browser/layout_test/blink_test_controller.cc b/content/shell/browser/layout_test/blink_test_controller.cc index eb1a913..9aca502c 100644 --- a/content/shell/browser/layout_test/blink_test_controller.cc +++ b/content/shell/browser/layout_test/blink_test_controller.cc
@@ -278,8 +278,8 @@ accumulated_layout_test_runtime_flags_changes_.Clear(); ShellBrowserContext* browser_context = ShellContentBrowserClient::Get()->browser_context(); - if (test_url.spec().find("compositing/") != std::string::npos) - is_compositing_test_ = true; + is_compositing_test_ = + test_url.spec().find("compositing/") != std::string::npos; initial_size_ = Shell::GetShellDefaultSize(); // The W3C SVG layout tests use a different size than the other layout tests. if (test_url.spec().find("W3C-SVG-1.1") != std::string::npos) @@ -311,6 +311,13 @@ ->WasResized(); RenderViewHost* render_view_host = main_window_->web_contents()->GetRenderViewHost(); + + // Compositing tests override the default preferences (see + // BlinkTestController::OverrideWebkitPrefs) so we force them to be + // calculated again to ensure is_compositing_test_ changes are picked up. + default_prefs_ = render_view_host->GetWebkitPreferences(); + OverrideWebkitPrefs(&default_prefs_); + render_view_host->UpdateWebkitPreferences(default_prefs_); HandleNewRenderFrameHost(render_view_host->GetMainFrame());
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 54c6403..e190bee0 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -432,7 +432,6 @@ "//content/browser:for_content_tests", "//content/browser/background_sync:background_sync_proto", "//content/child:for_content_tests", - "//content/common:mojo_bindings", "//content/gpu", "//content/public/browser", "//content/public/child", @@ -642,7 +641,6 @@ "//content/browser/service_worker:service_worker_proto", "//content/browser/speech/proto", "//content/child:for_content_tests", - "//content/common:mojo_bindings", "//content/gpu", "//content/public/browser", "//content/public/child", @@ -656,6 +654,7 @@ "//device/bluetooth:mocks", "//device/gamepad", "//device/gamepad:test_helpers", + "//device/sensors/public/interfaces", "//gin", "//gpu", "//gpu:test_support", @@ -680,7 +679,6 @@ "//testing/gmock", "//testing/gtest", "//third_party/WebKit/public:blink", - "//third_party/WebKit/public:mojo_bindings", "//third_party/icu", "//third_party/leveldatabase", "//third_party/libjingle", @@ -779,6 +777,7 @@ } if (is_win) { deps += [ "//third_party/iaccessible2" ] + libs = [ "dwrite.lib" ] } if (is_mac) { # These flags are needed to run the test on Mac.
diff --git a/content/test/data/accessibility/aria/aria-tree-expected-android.txt b/content/test/data/accessibility/aria/aria-tree-expected-android.txt index 9685f91..165420ed 100644 --- a/content/test/data/accessibility/aria/aria-tree-expected-android.txt +++ b/content/test/data/accessibility/aria/aria-tree-expected-android.txt
@@ -1,8 +1,8 @@ android.webkit.WebView focusable focused scrollable ++android.view.View role_description='tree' collection hierarchical row_count=6 ++++android.view.View role_description='tree item' clickable collection_item name='Animals' -++++android.view.View role_description='tree item' clickable collection_item name='Domesticated' item_index=-1 row_index=1 +++++android.view.View role_description='tree item' clickable collection_item name='Domesticated' row_index=1 ++++android.view.View clickable name='Dog' ++++android.view.View clickable name='Cat' -++++android.view.View role_description='tree item' clickable collection_item name='Wild' item_index=-1 row_index=4 +++++android.view.View role_description='tree item' clickable collection_item name='Wild' item_index=3 row_index=4 ++++android.view.View role_description='tree item' clickable collection_item name='Plants' item_index=5 row_index=5
diff --git a/content/test/gpu/gpu_tests/gpu_integration_test_unittest.py b/content/test/gpu/gpu_tests/gpu_integration_test_unittest.py index 90f54f92..ae7e05d 100644 --- a/content/test/gpu/gpu_tests/gpu_integration_test_unittest.py +++ b/content/test/gpu/gpu_tests/gpu_integration_test_unittest.py
@@ -78,12 +78,6 @@ def RunActualGpuTest(self, file_path, *args): if file_path == 'failure.html': self.fail('Expected failure') - elif file_path == 'restart.html': - try: - # This will fail because the browser is already started - self.StartBrowser() - finally: - self.StopBrowser() elif file_path == 'flaky.html': if self.__class__._num_flaky_runs_to_fail > 0: self.__class__._num_flaky_runs_to_fail -= 1 @@ -92,22 +86,24 @@ raise Exception('Expected exception') -# TODO(eyaich@): add the actual unittest for start-up retrying logic. class BrowserStartFailureIntegrationUnittest( gpu_integration_test.GpuIntegrationTest): - # Must be class-scoped since instances aren't reused across runs. - _num_restart_failures = 0 + + _num_browser_crashes = 0 + _num_browser_starts = 0 @classmethod def setUpClass(cls): - finder_options = fakes.CreateBrowserFinderOptions() - finder_options.browser_options.platform = fakes.FakeLinuxPlatform() - finder_options.output_formats = ['none'] - finder_options.suppress_gtest_report = True - finder_options.output_dir = None - finder_options .upload_bucket = 'public' - finder_options .upload_results = False - cls._finder_options = finder_options + cls._fake_browser_options = \ + fakes.CreateBrowserFinderOptions(execute_on_startup=cls.CrashOnStart) + cls._fake_browser_options.browser_options.platform = \ + fakes.FakeLinuxPlatform() + cls._fake_browser_options.output_formats = ['none'] + cls._fake_browser_options.suppress_gtest_report = True + cls._fake_browser_options.output_dir = None + cls._fake_browser_options .upload_bucket = 'public' + cls._fake_browser_options .upload_results = False + cls._finder_options = cls._fake_browser_options cls.platform = None cls.browser = None cls.SetBrowserOptions(cls._finder_options) @@ -122,6 +118,13 @@ return expectations @classmethod + def CrashOnStart(cls): + cls._num_browser_starts += 1 + if cls._num_browser_crashes < 2: + cls._num_browser_crashes += 1 + raise + + @classmethod def Name(cls): return 'browser_start_failure_integration_unittest' @@ -131,12 +134,10 @@ yield ('restart', 'restart.html', ()) def RunActualGpuTest(self, file_path, *args): - if file_path == 'restart.html': - try: - # This will fail because the browser is already started - self.StartBrowser() - finally: - self.StopBrowser() + # The logic of this test is run when the browser starts, it fails twice + # and then succeeds on the third time so we are just testing that this + # is successful based on the parameters. + pass class GpuIntegrationTestUnittest(unittest.TestCase): @@ -156,7 +157,11 @@ def testIntegrationUnittestWithBrowserFailure( self, mockInitDependencyManager): self._RunIntegrationTest( - 'browser_start_failure_integration_unittest', ['restart'], []) + 'browser_start_failure_integration_unittest', [], ['restart']) + self.assertEquals( \ + BrowserStartFailureIntegrationUnittest._num_browser_crashes, 2) + self.assertEquals( \ + BrowserStartFailureIntegrationUnittest._num_browser_starts, 3) def _RunIntegrationTest(self, test_name, failures, successes): options = browser_test_runner.TestRunOptions()
diff --git a/content/test/test_render_frame_host.cc b/content/test/test_render_frame_host.cc index 11d09572..f78cde1 100644 --- a/content/test/test_render_frame_host.cc +++ b/content/test/test_render_frame_host.cc
@@ -316,6 +316,26 @@ // Simulate Blink assigning an item sequence number to the navigation. params.item_sequence_number = base::Time::Now().ToDoubleT() * 1000000; + // When the user hits enter in the Omnibox without changing the URL, Blink + // behaves similarly to a reload and does not change the item and document + // sequence numbers. Simulate this behavior here too. + if (transition == ui::PAGE_TRANSITION_TYPED) { + const NavigationEntryImpl* entry = + static_cast<NavigationEntryImpl*>(frame_tree_node() + ->navigator() + ->GetController() + ->GetLastCommittedEntry()); + if (entry && entry->GetURL() == url) { + FrameNavigationEntry* frame_entry = + entry->GetFrameEntry(frame_tree_node()); + if (frame_entry) { + params.item_sequence_number = frame_entry->item_sequence_number(); + params.document_sequence_number = + frame_entry->document_sequence_number(); + } + } + } + // In most cases, the origin will match the URL's origin. Tests that need to // check corner cases (like about:blank) should specify the origin param // manually.
diff --git a/docs/updating_clang.md b/docs/updating_clang.md index d5dcde9..72e1082 100644 --- a/docs/updating_clang.md +++ b/docs/updating_clang.md
@@ -10,8 +10,7 @@ 1. Run an exhaustive set of try jobs to test the new compiler: ``` git cl try && - git cl try -m tryserver.chromium.mac -b mac_chromium_asan_rel_ng \ - -b mac_chromium_gyp_dbg && + git cl try -m tryserver.chromium.mac -b mac_chromium_asan_rel_ng && git cl try -m tryserver.chromium.linux -b linux_chromium_chromeos_dbg_ng \ -b linux_chromium_chromeos_asan_rel_ng -b linux_chromium_msan_rel_ng && git cl try -m tryserver.blink -b linux_precise_blink_rel
diff --git a/extensions/renderer/resources/extension.css b/extensions/renderer/resources/extension.css index 808a08c..3fa2d62 100644 --- a/extensions/renderer/resources/extension.css +++ b/extensions/renderer/resources/extension.css
@@ -181,12 +181,6 @@ min-width: 160px; } -/* Remove when https://bugs.webkit.org/show_bug.cgi?id=51499 is fixed. - * TODO(dbeam): are there more types that would benefit from this? */ -input[type='search']::-webkit-textfield-decoration-container { - direction: inherit; -} - /* Checked ********************************************************************/ input[type='checkbox']:checked::before {
diff --git a/extensions/strings/extensions_strings_mr.xtb b/extensions/strings/extensions_strings_mr.xtb index 4fdd34f..bcd54ae 100644 --- a/extensions/strings/extensions_strings_mr.xtb +++ b/extensions/strings/extensions_strings_mr.xtb
@@ -7,7 +7,7 @@ <translation id="149347756975725155">विस्तार प्रतीक '<ph name="ICON" />' लोड करणे शक्य नाही.</translation> <translation id="1803557475693955505">'पार्श्वभूमी पृष्ठ '<ph name="BACKGROUND_PAGE" />' लोड करणे शक्य नाही.</translation> <translation id="2159915644201199628">प्रतिमा डीकोड करणे शक्य झाले नाही: '<ph name="IMAGE_NAME" />'</translation> -<translation id="2350172092385603347">अनुवाद वापरले, परंतु मॅनिफेस्टमध्ये डीफॉल्ट_लोकॅल निर्दिष्ट नाही.</translation> +<translation id="2350172092385603347">भाषांतर वापरले, परंतु मॅनिफेस्टमध्ये डीफॉल्ट_लोकॅल निर्दिष्ट नाही.</translation> <translation id="2753617847762399167">बेकायदेशीर पथ ('..' सह अचूक किंवा संबंधित): '<ph name="IMAGE_PATH" />'</translation> <translation id="27822970480436970">हा विस्तार नेटवर्क विनंती सुधारण्यात अयशस्वी झाला कारण सुधारणेचा दुसर्या विस्ताराशी विवाद झाला.</translation> <translation id="2857834222104759979">मॅनिफेस्ट फाइल अवैध आहे.</translation>
diff --git a/headless/app/headless_shell.cc b/headless/app/headless_shell.cc index 9fafa55..4d05e3e 100644 --- a/headless/app/headless_shell.cc +++ b/headless/app/headless_shell.cc
@@ -18,6 +18,7 @@ #include "base/strings/string_number_conversions.h" #include "content/public/common/content_switches.h" #include "headless/app/headless_shell_switches.h" +#include "headless/public/domains/emulation.h" #include "headless/public/domains/page.h" #include "headless/public/domains/runtime.h" #include "headless/public/headless_browser.h" @@ -34,6 +35,7 @@ using headless::HeadlessBrowserContext; using headless::HeadlessDevToolsClient; using headless::HeadlessWebContents; +namespace emulation = headless::emulation; namespace page = headless::page; namespace runtime = headless::runtime; @@ -56,7 +58,9 @@ } // namespace // A sample application which demonstrates the use of the headless API. -class HeadlessShell : public HeadlessWebContents::Observer, page::Observer { +class HeadlessShell : public HeadlessWebContents::Observer, + emulation::ExperimentalObserver, + page::Observer { public: HeadlessShell() : browser_(nullptr), @@ -76,6 +80,8 @@ base::CommandLine::StringVector args = base::CommandLine::ForCurrentProcess()->GetArgs(); + // TODO(alexclarke): Should we navigate to about:blank first if using + // virtual time? if (!args.empty() && !args[0].empty()) builder.SetInitialURL(GURL(args[0])); @@ -92,6 +98,7 @@ if (!web_contents_) return; if (!RemoteDebuggingEnabled()) { + devtools_client_->GetEmulation()->GetExperimental()->RemoveObserver(this); devtools_client_->GetPage()->RemoveObserver(this); web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get()); } @@ -110,7 +117,26 @@ devtools_client_->GetPage()->Enable(); // Check if the document had already finished loading by the time we // attached. - PollReadyState(); + + devtools_client_->GetEmulation()->GetExperimental()->AddObserver(this); + + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + headless::switches::kVirtualTimeBudget)) { + std::string budget_ms_ascii = + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( + headless::switches::kVirtualTimeBudget); + int budget_ms; + CHECK(base::StringToInt(budget_ms_ascii, &budget_ms)) + << "Expected an integer value for --virtual-time-budget="; + devtools_client_->GetEmulation()->GetExperimental()->SetVirtualTimePolicy( + emulation::SetVirtualTimePolicyParams::Builder() + .SetPolicy(emulation::VirtualTimePolicy:: + PAUSE_IF_NETWORK_FETCHES_PENDING) + .SetBudget(budget_ms) + .Build()); + } else { + PollReadyState(); + } // TODO(skyostil): Implement more features to demonstrate the devtools API. } @@ -139,8 +165,18 @@ } } + // emulation::Observer implementation: + void OnVirtualTimeBudgetExpired( + const emulation::VirtualTimeBudgetExpiredParams& params) override { + OnPageReady(); + } + // page::Observer implementation: void OnLoadEventFired(const page::LoadEventFiredParams& params) override { + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + headless::switches::kVirtualTimeBudget)) { + return; + } OnPageReady(); }
diff --git a/headless/app/headless_shell_switches.cc b/headless/app/headless_shell_switches.cc index c748b9b..a0afc69 100644 --- a/headless/app/headless_shell_switches.cc +++ b/headless/app/headless_shell_switches.cc
@@ -34,6 +34,14 @@ // Directory where the browser stores the user profile. const char kUserDataDir[] = "user-data-dir"; +// If set the system waits the specified number of virtual milliseconds before +// deeming the page to be ready. For determinism virtual time does not advance +// while there are pending network fetches (i.e no timers will fire). Once all +// network fetches have completed, timers fire and if the system runs out of +// virtual time is fastforwarded so the next timer fires immediatley, until the +// specified virtual time budget is exhausted. +const char kVirtualTimeBudget[] = "virtual-time-budget"; + // Sets the initial window size. Provided as string in the format "800x600". const char kWindowSize[] = "window-size";
diff --git a/headless/app/headless_shell_switches.h b/headless/app/headless_shell_switches.h index 26068b2..f995cfd 100644 --- a/headless/app/headless_shell_switches.h +++ b/headless/app/headless_shell_switches.h
@@ -14,6 +14,7 @@ extern const char kScreenshot[]; extern const char kUseGL[]; extern const char kUserDataDir[]; +extern const char kVirtualTimeBudget[]; extern const char kWindowSize[]; } // namespace switches } // namespace headless
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg index f4be05a9..7815386 100644 --- a/infra/config/recipes.cfg +++ b/infra/config/recipes.cfg
@@ -5,7 +5,7 @@ project_id: "build" url: "https://chromium.googlesource.com/chromium/tools/build.git" branch: "master" - revision: "31741b416f8968e0611d01e5b3ac5ccb6ad51b3e" + revision: "b10eaabb7d78114de37325fe33b8f8ae703d5ca0" } deps { project_id: "depot_tools"
diff --git a/ios/chrome/browser/BUILD.gn b/ios/chrome/browser/BUILD.gn index e1d7f81f..dfe7d60bb 100644 --- a/ios/chrome/browser/BUILD.gn +++ b/ios/chrome/browser/BUILD.gn
@@ -317,6 +317,7 @@ "passwords/passwords_ui_delegate.h", "passwords/update_password_infobar_controller.h", "passwords/update_password_infobar_controller.mm", + "physical_web/physical_web_constants.h", "pref_names.cc", "pref_names.h", "prefs/browser_prefs.h",
diff --git a/ios/chrome/browser/autofill/form_input_accessory_view_controller.mm b/ios/chrome/browser/autofill/form_input_accessory_view_controller.mm index 2ae1b68..ab2b589 100644 --- a/ios/chrome/browser/autofill/form_input_accessory_view_controller.mm +++ b/ios/chrome/browser/autofill/form_input_accessory_view_controller.mm
@@ -336,7 +336,7 @@ // If this is a form suggestion view and no suggestions have been triggered // yet, don't show the custom view. FormSuggestionView* formSuggestionView = - base::mac::ObjCCastStrict<FormSuggestionView>(view); + base::mac::ObjCCast<FormSuggestionView>(view); if (formSuggestionView) { int numSuggestions = [[formSuggestionView suggestions] count]; if (!_suggestionsHaveBeenShown && numSuggestions == 0) {
diff --git a/ios/chrome/browser/chrome_url_constants.cc b/ios/chrome/browser/chrome_url_constants.cc index a84645e..59a1a67 100644 --- a/ios/chrome/browser/chrome_url_constants.cc +++ b/ios/chrome/browser/chrome_url_constants.cc
@@ -67,6 +67,9 @@ const char kDoNotTrackLearnMoreURL[] = "https://support.google.com/chrome/answer/2942429?p=mobile_do_not_track"; +const char kPhysicalWebLearnMoreURL[] = + "https://support.google.com/chrome/answer/6239299?p=physical_web"; + const char kSyncEncryptionHelpURL[] = "https://support.google.com/chrome/answer/1181035?p=settings_encryption";
diff --git a/ios/chrome/browser/chrome_url_constants.h b/ios/chrome/browser/chrome_url_constants.h index 5ab448e..bfb289e 100644 --- a/ios/chrome/browser/chrome_url_constants.h +++ b/ios/chrome/browser/chrome_url_constants.h
@@ -72,6 +72,9 @@ // "Learn more" URL for the "Do not track" setting in the privacy section. extern const char kDoNotTrackLearnMoreURL[]; +// "Learn more" URL for the Physical Web setting in the privacy section. +extern const char kPhysicalWebLearnMoreURL[]; + // The URL for the "Learn more" page on sync encryption. extern const char kSyncEncryptionHelpURL[];
diff --git a/ios/chrome/browser/physical_web/physical_web_constants.h b/ios/chrome/browser/physical_web/physical_web_constants.h new file mode 100644 index 0000000..1c77c52 --- /dev/null +++ b/ios/chrome/browser/physical_web/physical_web_constants.h
@@ -0,0 +1,17 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_PHYSICAL_WEB_PHYSICAL_WEB_CONSTANTS_H_ +#define IOS_CHROME_BROWSER_PHYSICAL_WEB_PHYSICAL_WEB_CONSTANTS_H_ + +namespace physical_web { + +enum PhysicalWebState { + kPhysicalWebOff = 0, + kPhysicalWebOn = 1, + kPhysicalWebOnboarding = 2, +}; +} + +#endif // IOS_CHROME_BROWSER_PHYSICAL_WEB_PHYSICAL_WEB_CONSTANTS_H_
diff --git a/ios/chrome/browser/pref_names.cc b/ios/chrome/browser/pref_names.cc index de874329..a440c26 100644 --- a/ios/chrome/browser/pref_names.cc +++ b/ios/chrome/browser/pref_names.cc
@@ -68,6 +68,10 @@ // devices that share an iCloud account. const char kIosHandoffToOtherDevices[] = "ios.handoff_to_other_devices"; +// Whether the user has enabled the Physical Web feature to surface URLs +// broadcast by nearby devices. +const char kIosPhysicalWebEnabled[] = "ios.physical_web_enabled"; + // True if the previous session exited cleanly. // This can be different from kStabilityExitedCleanly, because the last run of // the program may not have included a browsing session, and thus the last run
diff --git a/ios/chrome/browser/pref_names.h b/ios/chrome/browser/pref_names.h index bf9602c..7613854 100644 --- a/ios/chrome/browser/pref_names.h +++ b/ios/chrome/browser/pref_names.h
@@ -23,6 +23,7 @@ extern const char kIosBookmarkFolderDefault[]; extern const char kIosBookmarkPromoAlreadySeen[]; extern const char kIosHandoffToOtherDevices[]; +extern const char kIosPhysicalWebEnabled[]; extern const char kLastSessionExitedCleanly[]; extern const char kLastSessionUsedWKWebViewControlGroup[]; extern const char kMetricsReportingWifiOnly[];
diff --git a/ios/chrome/ios_chrome.gyp b/ios/chrome/ios_chrome.gyp index 1472358..2230263 100644 --- a/ios/chrome/ios_chrome.gyp +++ b/ios/chrome/ios_chrome.gyp
@@ -453,6 +453,7 @@ 'browser/passwords/passwords_ui_delegate.h', 'browser/passwords/update_password_infobar_controller.h', 'browser/passwords/update_password_infobar_controller.mm', + 'browser/physical_web/physical_web_constants.h', 'browser/pref_names.cc', 'browser/pref_names.h', 'browser/prefs/browser_prefs.h',
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm index 6c926c0..be0d8c4 100644 --- a/ios/web/web_state/ui/crw_web_controller.mm +++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -3343,6 +3343,17 @@ if ([self isMainFrameNavigationAction:action]) [self stopLoading]; + // Purge web view if last committed URL is different from the document URL. + // This can happen if external URL was added to the navigation stack and was + // loaded using Go Back or Go Forward navigation (in which case document URL + // will point to the previous page). + GURL lastCommittedURL = + self.webState->GetNavigationManager()->GetLastCommittedItem()->GetURL(); + if (lastCommittedURL != _documentURL) { + [self requirePageReconstruction]; + [self setDocumentURL:lastCommittedURL]; + } + if ([_delegate openExternalURL:requestURL linkClicked:isNavigationTypeLinkActivated]) { // Record the URL so that errors reported following the 'NO' reply can be
diff --git a/media/base/media.cc b/media/base/media.cc index 88fed88..9fd89cc 100644 --- a/media/base/media.cc +++ b/media/base/media.cc
@@ -99,8 +99,12 @@ const bool disabled_via_cli = base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableUnifiedMediaPipeline); + // TODO(watk, dalecurtis): AVDA has bugs on API level 16 and 17 so it's + // disabled for now. http://crbug.com/597467 + const bool api_level_supported = + base::android::BuildInfo::GetInstance()->sdk_int() >= 18; - return !disabled_via_cli && + return !disabled_via_cli && api_level_supported && !base::StartsWith(group_name, "Disabled", base::CompareCase::SENSITIVE); }
diff --git a/mojo/public/cpp/bindings/BUILD.gn b/mojo/public/cpp/bindings/BUILD.gn index 047b699..2cc6d61 100644 --- a/mojo/public/cpp/bindings/BUILD.gn +++ b/mojo/public/cpp/bindings/BUILD.gn
@@ -124,6 +124,7 @@ "sync_handle_registry.h", "sync_handle_watcher.h", "type_converter.h", + "union_traits.h", ] public_deps = [
diff --git a/mojo/public/cpp/bindings/lib/serialization_forward.h b/mojo/public/cpp/bindings/lib/serialization_forward.h index 5bed126..55c9982 100644 --- a/mojo/public/cpp/bindings/lib/serialization_forward.h +++ b/mojo/public/cpp/bindings/lib/serialization_forward.h
@@ -12,6 +12,7 @@ #include "mojo/public/cpp/bindings/map_traits.h" #include "mojo/public/cpp/bindings/string_traits.h" #include "mojo/public/cpp/bindings/struct_traits.h" +#include "mojo/public/cpp/bindings/union_traits.h" // This file is included by serialization implementation files to avoid circular // includes.
diff --git a/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc b/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc index c86366e..221dc93 100644 --- a/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc +++ b/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc
@@ -170,6 +170,12 @@ callback.Run(std::move(e)); } + void EchoUnionWithTraits( + std::unique_ptr<test::UnionWithTraitsBase> u, + const EchoUnionWithTraitsCallback& callback) override { + callback.Run(std::move(u)); + } + base::MessageLoop loop_; ChromiumRectServiceImpl chromium_service_; @@ -453,5 +459,51 @@ } } +TEST_F(StructTraitsTest, EchoUnionWithTraits) { + TraitsTestServicePtr proxy = GetTraitsTestProxy(); + + { + std::unique_ptr<test::UnionWithTraitsBase> input( + new test::UnionWithTraitsInt32(1234)); + base::RunLoop loop; + proxy->EchoUnionWithTraits( + std::move(input), + base::Bind( + [](const base::Closure& quit_closure, + std::unique_ptr<test::UnionWithTraitsBase> passed) { + ASSERT_EQ(test::UnionWithTraitsBase::Type::INT32, passed->type()); + EXPECT_EQ(1234, + static_cast<test::UnionWithTraitsInt32*>(passed.get()) + ->value()); + quit_closure.Run(); + + }, + loop.QuitClosure())); + loop.Run(); + } + + { + std::unique_ptr<test::UnionWithTraitsBase> input( + new test::UnionWithTraitsStruct(4321)); + base::RunLoop loop; + proxy->EchoUnionWithTraits( + std::move(input), + base::Bind( + [](const base::Closure& quit_closure, + std::unique_ptr<test::UnionWithTraitsBase> passed) { + ASSERT_EQ(test::UnionWithTraitsBase::Type::STRUCT, + passed->type()); + EXPECT_EQ(4321, + static_cast<test::UnionWithTraitsStruct*>(passed.get()) + ->get_struct() + .value); + quit_closure.Run(); + + }, + loop.QuitClosure())); + loop.Run(); + } +} + } // namespace test } // namespace mojo
diff --git a/mojo/public/cpp/bindings/tests/struct_with_traits.typemap b/mojo/public/cpp/bindings/tests/struct_with_traits.typemap index 3be4e7cf..752ce44 100644 --- a/mojo/public/cpp/bindings/tests/struct_with_traits.typemap +++ b/mojo/public/cpp/bindings/tests/struct_with_traits.typemap
@@ -22,4 +22,5 @@ "mojo.test.TrivialStructWithTraits=mojo::test::TrivialStructWithTraitsImpl[copyable_pass_by_value]", "mojo.test.MoveOnlyStructWithTraits=mojo::test::MoveOnlyStructWithTraitsImpl[move_only]", "mojo.test.StructWithTraitsForUniquePtr=std::unique_ptr<int>[move_only,nullable_is_same_type]", + "mojo.test.UnionWithTraits=std::unique_ptr<mojo::test::UnionWithTraitsBase>[move_only,nullable_is_same_type]", ]
diff --git a/mojo/public/cpp/bindings/tests/struct_with_traits_impl.cc b/mojo/public/cpp/bindings/tests/struct_with_traits_impl.cc index 0f10c00..cbdd4bfd 100644 --- a/mojo/public/cpp/bindings/tests/struct_with_traits_impl.cc +++ b/mojo/public/cpp/bindings/tests/struct_with_traits_impl.cc
@@ -28,5 +28,9 @@ MoveOnlyStructWithTraitsImpl& MoveOnlyStructWithTraitsImpl::operator=( MoveOnlyStructWithTraitsImpl&& other) = default; +UnionWithTraitsInt32::~UnionWithTraitsInt32() {} + +UnionWithTraitsStruct::~UnionWithTraitsStruct() {} + } // namespace test } // namespace mojo
diff --git a/mojo/public/cpp/bindings/tests/struct_with_traits_impl.h b/mojo/public/cpp/bindings/tests/struct_with_traits_impl.h index bff0da24..87d4591 100644 --- a/mojo/public/cpp/bindings/tests/struct_with_traits_impl.h +++ b/mojo/public/cpp/bindings/tests/struct_with_traits_impl.h
@@ -114,6 +114,47 @@ DISALLOW_COPY_AND_ASSIGN(MoveOnlyStructWithTraitsImpl); }; +class UnionWithTraitsBase { + public: + enum class Type { INT32, STRUCT }; + + virtual ~UnionWithTraitsBase() {} + + Type type() const { return type_; } + + protected: + Type type_ = Type::INT32; +}; + +class UnionWithTraitsInt32 : public UnionWithTraitsBase { + public: + UnionWithTraitsInt32() {} + explicit UnionWithTraitsInt32(int32_t value) : value_(value) {} + + ~UnionWithTraitsInt32() override; + + int32_t value() const { return value_; } + void set_value(int32_t value) { value_ = value; } + + private: + int32_t value_ = 0; +}; + +class UnionWithTraitsStruct : public UnionWithTraitsBase { + public: + UnionWithTraitsStruct() { type_ = Type::STRUCT; } + explicit UnionWithTraitsStruct(int32_t value) : struct_(value) { + type_ = Type::STRUCT; + } + ~UnionWithTraitsStruct() override; + + NestedStructWithTraitsImpl& get_mutable_struct() { return struct_; } + const NestedStructWithTraitsImpl& get_struct() const { return struct_; } + + private: + NestedStructWithTraitsImpl struct_; +}; + } // namespace test } // namespace mojo
diff --git a/mojo/public/cpp/bindings/tests/struct_with_traits_impl_traits.h b/mojo/public/cpp/bindings/tests/struct_with_traits_impl_traits.h index 437aefe..3f3aa77 100644 --- a/mojo/public/cpp/bindings/tests/struct_with_traits_impl_traits.h +++ b/mojo/public/cpp/bindings/tests/struct_with_traits_impl_traits.h
@@ -137,6 +137,53 @@ } }; +template <> +struct UnionTraits<test::UnionWithTraits, + std::unique_ptr<test::UnionWithTraitsBase>> { + static bool IsNull(const std::unique_ptr<test::UnionWithTraitsBase>& data) { + return !data; + } + static void SetToNull(std::unique_ptr<test::UnionWithTraitsBase>* data) { + data->reset(); + } + + static test::UnionWithTraits::DataView::Tag GetTag( + const std::unique_ptr<test::UnionWithTraitsBase>& data) { + if (data->type() == test::UnionWithTraitsBase::Type::INT32) + return test::UnionWithTraits::DataView::Tag::F_INT32; + + return test::UnionWithTraits::DataView::Tag::F_STRUCT; + } + + static int32_t f_int32( + const std::unique_ptr<test::UnionWithTraitsBase>& data) { + return static_cast<test::UnionWithTraitsInt32*>(data.get())->value(); + } + + static const test::NestedStructWithTraitsImpl& f_struct( + const std::unique_ptr<test::UnionWithTraitsBase>& data) { + return static_cast<test::UnionWithTraitsStruct*>(data.get())->get_struct(); + } + + static bool Read(test::UnionWithTraits::DataView data, + std::unique_ptr<test::UnionWithTraitsBase>* out) { + switch (data.tag()) { + case test::UnionWithTraits::DataView::Tag::F_INT32: { + out->reset(new test::UnionWithTraitsInt32(data.f_int32())); + return true; + } + case test::UnionWithTraits::DataView::Tag::F_STRUCT: { + auto* struct_object = new test::UnionWithTraitsStruct(); + out->reset(struct_object); + return data.ReadFStruct(&struct_object->get_mutable_struct()); + } + } + + NOTREACHED(); + return false; + } +}; + } // namespace mojo #endif // MOJO_PUBLIC_CPP_BINDINGS_TESTS_STRUCT_WITH_TRAITS_IMPL_TRAITS_H_
diff --git a/mojo/public/cpp/bindings/union_traits.h b/mojo/public/cpp/bindings/union_traits.h new file mode 100644 index 0000000..452bac03f --- /dev/null +++ b/mojo/public/cpp/bindings/union_traits.h
@@ -0,0 +1,35 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MOJO_PUBLIC_CPP_BINDINGS_UNION_TRAITS_H_ +#define MOJO_PUBLIC_CPP_BINDINGS_UNION_TRAITS_H_ + +namespace mojo { + +// This must be specialized for any type |T| to be serialized/deserialized as +// a mojom union of type |MojomType|. +// +// Similar to StructTraits, each specialization of UnionTraits implements the +// following methods: +// 1. Getters for each field in the Mojom type. +// 2. Read() method. +// 3. [Optional] IsNull() and SetToNull(). +// 4. [Optional] SetUpContext() and TearDownContext(). +// Please see the documentation of StructTraits for details of these methods. +// +// Unlike StructTraits, there is one more method to implement: +// 5. A static GetTag() method indicating which field is the current active +// field for serialization: +// +// static |MojomType|DataView::Tag GetTag(const T& input); +// +// During serialization, only the field getter corresponding to this tag +// will be called. +// +template <typename MojomType, typename T> +struct UnionTraits; + +} // namespace mojo + +#endif // MOJO_PUBLIC_CPP_BINDINGS_UNION_TRAITS_H_
diff --git a/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom b/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom index 955fb08..ac41df7c 100644 --- a/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom +++ b/mojo/public/interfaces/bindings/tests/struct_with_traits.mojom
@@ -53,6 +53,11 @@ int32 f_int32; }; +union UnionWithTraits { + int32 f_int32; + NestedStructWithTraits f_struct; +}; + interface TraitsTestService { EchoStructWithTraits(StructWithTraits s) => (StructWithTraits passed); @@ -72,4 +77,6 @@ EchoNullableStructWithTraitsForUniquePtr(StructWithTraitsForUniquePtr? e) => ( StructWithTraitsForUniquePtr? passed); + + EchoUnionWithTraits(UnionWithTraits u) => (UnionWithTraits passed); };
diff --git a/mojo/public/tools/bindings/BUILD.gn b/mojo/public/tools/bindings/BUILD.gn index 9d1e0fc..91f4cec 100644 --- a/mojo/public/tools/bindings/BUILD.gn +++ b/mojo/public/tools/bindings/BUILD.gn
@@ -27,6 +27,7 @@ "$mojom_generator_root/generators/cpp_templates/struct_serialization_declaration.tmpl", "$mojom_generator_root/generators/cpp_templates/struct_serialization_definition.tmpl", "$mojom_generator_root/generators/cpp_templates/union_data_view_declaration.tmpl", + "$mojom_generator_root/generators/cpp_templates/union_data_view_definition.tmpl", "$mojom_generator_root/generators/cpp_templates/union_declaration.tmpl", "$mojom_generator_root/generators/cpp_templates/union_definition.tmpl", "$mojom_generator_root/generators/cpp_templates/union_serialization_declaration.tmpl",
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl index 0249ef3..9db86b1 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl
@@ -7,7 +7,7 @@ class {{interface.name}}ResponseValidator; {%- endif %} -class {{interface.name}} { +class {{export_attribute}} {{interface.name}} { public: static const char Name_[]; static const uint32_t Version_ = {{interface.version}};
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_proxy_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_proxy_declaration.tmpl index 477116b1..3dd915a 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_proxy_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_proxy_declaration.tmpl
@@ -1,7 +1,7 @@ {%- import "interface_macros.tmpl" as interface_macros %} -class {{interface.name}}Proxy +class {{export_attribute}} {{interface.name}}Proxy : public {{interface.name}}, - public mojo::internal::ControlMessageProxy { + public NON_EXPORTED_BASE(mojo::internal::ControlMessageProxy) { public: explicit {{interface.name}}Proxy(mojo::MessageReceiverWithResponder* receiver);
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_request_validator_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_request_validator_declaration.tmpl index 29917ea..3834094 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_request_validator_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_request_validator_declaration.tmpl
@@ -1,4 +1,4 @@ -class {{interface.name}}RequestValidator : public mojo::MessageFilter { +class {{export_attribute}} {{interface.name}}RequestValidator : public NON_EXPORTED_BASE(mojo::MessageFilter) { public: explicit {{interface.name}}RequestValidator(mojo::MessageReceiver* sink = nullptr);
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_response_validator_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_response_validator_declaration.tmpl index 5893bfd..7e5116d 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_response_validator_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_response_validator_declaration.tmpl
@@ -1,4 +1,4 @@ -class {{interface.name}}ResponseValidator : public mojo::MessageFilter { +class {{export_attribute}} {{interface.name}}ResponseValidator : public NON_EXPORTED_BASE(mojo::MessageFilter) { public: explicit {{interface.name}}ResponseValidator(mojo::MessageReceiver* sink = nullptr);
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_stub_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_stub_declaration.tmpl index 30b5de7c..e161d027 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_stub_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_stub_declaration.tmpl
@@ -1,4 +1,4 @@ -class {{interface.name}}Stub : public mojo::MessageReceiverWithResponderStatus { +class {{export_attribute}} {{interface.name}}Stub : public NON_EXPORTED_BASE(mojo::MessageReceiverWithResponderStatus) { public: {{interface.name}}Stub(); ~{{interface.name}}Stub() override;
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/module-internal.h.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/module-internal.h.tmpl index 5256e75..aed7ac0 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/module-internal.h.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/module-internal.h.tmpl
@@ -29,6 +29,10 @@ {%- endif %} {%- endfor %} +{%- if export_header %} +#include "{{export_header}}" +{%- endif %} + namespace mojo { namespace internal { class ValidationContext;
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl index 3048d37d..90c54f0 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl
@@ -77,6 +77,7 @@ #include "mojo/public/cpp/bindings/string_data_view.h" #include "mojo/public/cpp/bindings/struct_ptr.h" #include "mojo/public/cpp/bindings/struct_traits.h" +#include "mojo/public/cpp/bindings/union_traits.h" #include "{{variant_path}}-internal.h" {%- for import in imports %} {%- if variant %} @@ -99,6 +100,10 @@ #include "{{header}}" {%- endfor %} +{%- if export_header %} +#include "{{export_header}}" +{%- endif %} + {#--- Enums #} {%- if enums %} {{namespace_begin()}} @@ -269,6 +274,7 @@ {%- for union in unions %} {% include "wrapper_union_class_template_definition.tmpl" %} +{% include "union_data_view_definition.tmpl" %} {%- endfor %} {%- for struct in structs %}
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl index aede1a7..cc84b3e2 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/struct_serialization_declaration.tmpl
@@ -3,7 +3,7 @@ {%- set data_type = struct|get_qualified_name_for_kind(internal=True) %} template <> -struct StructTraits<{{mojom_type}}, {{mojom_type}}Ptr> { +struct {{export_attribute}} StructTraits<{{mojom_type}}, {{mojom_type}}Ptr> { static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; } static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); }
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_data_view_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_data_view_declaration.tmpl index d9ab16a..00f1cd3 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/union_data_view_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_data_view_declaration.tmpl
@@ -1,17 +1,80 @@ class {{union.name}}DataView { public: + using Tag = internal::{{union.name}}_Data::{{union.name}}_Tag; + {{union.name}}DataView() {} - + {{union.name}}DataView( internal::{{union.name}}_Data* data, mojo::internal::SerializationContext* context) +{%- if union|requires_context_for_data_view %} + : data_(data), context_(context) {} +{%- else %} : data_(data) {} +{%- endif %} - bool is_null() const { return !data_; } - - // TODO(yzshen): Union data view is not yet supported. + bool is_null() const { + // For inlined unions, |data_| is always non-null. In that case we need to + // check |data_->is_null()|. + return !data_ || data_->is_null(); + } + + Tag tag() const { return data_->tag; } + +{%- for field in union.fields %} +{%- set kind = field.kind %} +{%- set name = field.name %} + bool is_{{name}}() const { return data_->tag == Tag::{{name|upper}}; } + +{%- if kind|is_object_kind %} + inline void Get{{name|under_to_camel}}DataView( + {{kind|cpp_data_view_type}}* output); + + template <typename UserType> + bool Read{{name|under_to_camel}}(UserType* output) { + DCHECK(is_{{name}}()); + return mojo::internal::Deserialize<{{kind|unmapped_type_for_serializer}}>( + data_->data.f_{{name}}.Get(), output, context_); + } + +{%- elif kind|is_enum_kind %} + template <typename UserType> + bool Read{{name|under_to_camel}}(UserType* output) const { + DCHECK(is_{{name}}()); + return mojo::internal::Deserialize<{{kind|unmapped_type_for_serializer}}>( + data_->data.f_{{name}}, output); + } + + {{kind|get_qualified_name_for_kind}} {{name}}() const { + DCHECK(is_{{name}}()); + return static_cast<{{kind|get_qualified_name_for_kind}}>( + data_->data.f_{{name}}); + } + +{%- elif kind|is_any_handle_or_interface_kind %} + {{kind|cpp_wrapper_type}} Take{{name|under_to_camel}}() { + DCHECK(is_{{name}}()); + {{kind|cpp_wrapper_type}} result; + bool ret = + mojo::internal::Deserialize<{{kind|unmapped_type_for_serializer}}>( + &data_->data.f_{{name}}, &result, context_); + DCHECK(ret); + return result; + } + +{%- else %} + {{kind|cpp_wrapper_type}} {{name}}() const { + DCHECK(is_{{name}}()); + return data_->data.f_{{name}}; + } + +{%- endif %} +{%- endfor %} private: internal::{{union.name}}_Data* data_ = nullptr; +{%- if union|requires_context_for_data_view %} + mojo::internal::SerializationContext* context_ = nullptr; +{%- endif %} };
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_data_view_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_data_view_definition.tmpl new file mode 100644 index 0000000..6da9280 --- /dev/null +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_data_view_definition.tmpl
@@ -0,0 +1,12 @@ +{%- for field in union.fields %} +{%- set kind = field.kind %} +{%- set name = field.name %} + +{%- if kind|is_object_kind %} +inline void {{union.name}}DataView::Get{{name|under_to_camel}}DataView( + {{kind|cpp_data_view_type}}* output) { + DCHECK(is_{{name}}()); + *output = {{kind|cpp_data_view_type}}(data_->data.f_{{name}}.Get(), context_); +} +{%- endif %} +{%- endfor %}
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl index d6585407..005ba76b 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl
@@ -7,23 +7,26 @@ // Used to identify Mojom Union Data Classes. typedef void MojomUnionDataType; + {{class_name}}() {} + // Do nothing in the destructor since it won't be called when it is a + // non-inlined union. + ~{{class_name}}() {} + static {{class_name}}* New(mojo::internal::Buffer* buf) { return new (buf->Allocate(sizeof({{class_name}}))) {{class_name}}(); } - {{class_name}}(); - // Do nothing in the destructor since it won't be called. - ~{{class_name}}() {} - static bool Validate(const void* data, mojo::internal::ValidationContext* validation_context, bool inlined); - bool is_null() const { - return size == 0; - } + bool is_null() const { return size == 0; } - void set_null(); + void set_null() { + size = 0U; + tag = static_cast<{{enum_name}}>(0); + data.unknown = 0U; + } enum class {{enum_name}} : uint32_t { {% for field in union.fields %}
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl index df08792..f151a4e 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl
@@ -33,13 +33,3 @@ } } } - -void {{class_name}}::set_null() { - size = 0U; - tag = static_cast<{{enum_name}}>(0); - data.unknown = 0U; -} - -{{class_name}}::{{class_name}}() { -} -
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_declaration.tmpl index bab9045..cb2ee383 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_declaration.tmpl
@@ -1,37 +1,169 @@ {%- set mojom_type = union|get_qualified_name_for_kind %} {%- set data_type = union|get_qualified_name_for_kind(internal=True) %} +template <> +struct {{export_attribute}} UnionTraits<{{mojom_type}}, {{mojom_type}}Ptr> { + static bool IsNull(const {{mojom_type}}Ptr& input) { return !input; } + static void SetToNull({{mojom_type}}Ptr* output) { output->reset(); } + + static {{mojom_type}}::Tag GetTag(const {{mojom_type}}Ptr& input) { + return input->which(); + } + +{%- for field in union.fields %} +{%- set return_ref = field.kind|is_object_kind or + field.kind|is_any_handle_or_interface_kind %} +{%- if return_ref %} + static decltype(std::declval<{{mojom_type}}>().get_{{field.name}}()) + {{field.name}}({{mojom_type}}Ptr& input) { + return input->get_{{field.name}}(); + } +{%- else %} + static decltype(std::declval<{{mojom_type}}>().get_{{field.name}}()) + {{field.name}}(const {{mojom_type}}Ptr& input) { + return input->get_{{field.name}}(); + } +{%- endif %} +{%- endfor %} + + static bool Read({{mojom_type}}DataView input, {{mojom_type}}Ptr* output); +}; + namespace internal { -template <typename MojomType> -struct UnionSerializerImpl; +template <typename MaybeConstUserType> +struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> { + using UserType = typename std::remove_const<MaybeConstUserType>::type; + using Traits = UnionTraits<{{mojom_type}}, UserType>; -template <> -struct UnionSerializerImpl<{{mojom_type}}Ptr> { - static size_t PrepareToSerialize({{mojom_type}}Ptr& input, + static size_t PrepareToSerialize(MaybeConstUserType& input, bool inlined, - SerializationContext* context); + SerializationContext* context) { + size_t size = inlined ? 0 : sizeof({{data_type}}); - static void Serialize({{mojom_type}}Ptr& input, + if (CallIsNullIfExists<Traits>(input)) + return size; + + void* custom_context = CustomContextHelper<Traits>::SetUp(input, context); + ALLOW_UNUSED_LOCAL(custom_context); + + switch (CallWithContext(Traits::GetTag, input, custom_context)) { +{%- for field in union.fields %} +{%- set name = field.name %} + case {{mojom_type}}::Tag::{{name|upper}}: { +{%- if field.kind|is_object_kind %} +{%- set kind = field.kind %} +{%- set serializer_type = kind|unmapped_type_for_serializer %} + decltype(CallWithContext(Traits::{{name}}, input, custom_context)) + in_{{name}} = CallWithContext(Traits::{{name}}, input, + custom_context); +{%- if kind|is_union_kind %} + size += mojo::internal::PrepareToSerialize<{{serializer_type}}>( + in_{{name}}, false, context); +{%- else %} + size += mojo::internal::PrepareToSerialize<{{serializer_type}}>( + in_{{name}}, context); +{%- endif %} +{%- endif %} + break; + } +{%- endfor %} + } + return size; + } + + static void Serialize(MaybeConstUserType& input, Buffer* buffer, {{data_type}}** output, bool inlined, - SerializationContext* context); + SerializationContext* context) { + if (CallIsNullIfExists<Traits>(input)) { + if (inlined) + (*output)->set_null(); + else + *output = nullptr; + return; + } + + void* custom_context = CustomContextHelper<Traits>::GetNext(context); + + if (!inlined) + *output = {{data_type}}::New(buffer); + + {{data_type}}* result = *output; + ALLOW_UNUSED_LOCAL(result); + // TODO(azani): Handle unknown and objects. + // Set the not-null flag. + result->size = kUnionDataSize; + result->tag = CallWithContext(Traits::GetTag, input, custom_context); + switch (result->tag) { +{%- for field in union.fields %} +{%- set name = field.name %} +{%- set kind = field.kind %} +{%- set serializer_type = kind|unmapped_type_for_serializer %} + case {{mojom_type}}::Tag::{{field.name|upper}}: { + decltype(CallWithContext(Traits::{{name}}, input, custom_context)) + in_{{name}} = CallWithContext(Traits::{{name}}, input, + custom_context); +{%- if kind|is_object_kind %} + typename decltype(result->data.f_{{name}})::BaseType* ptr; +{%- if kind|is_union_kind %} + mojo::internal::Serialize<{{serializer_type}}>( + in_{{name}}, buffer, &ptr, false, context); +{%- elif kind|is_array_kind or kind|is_map_kind %} + const ContainerValidateParams {{name}}_validate_params( + {{kind|get_container_validate_params_ctor_args|indent(16)}}); + mojo::internal::Serialize<{{serializer_type}}>( + in_{{name}}, buffer, &ptr, &{{name}}_validate_params, context); +{%- else %} + mojo::internal::Serialize<{{serializer_type}}>( + in_{{name}}, buffer, &ptr, context); +{%- endif %} + result->data.f_{{name}}.Set(ptr); +{%- if not kind|is_nullable_kind %} + MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( + !ptr, mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, + "null {{name}} in {{union.name}} union"); +{%- endif %} + +{%- elif kind|is_any_handle_or_interface_kind %} + mojo::internal::Serialize<{{serializer_type}}>( + in_{{name}}, &result->data.f_{{name}}, context); +{%- if not kind|is_nullable_kind %} + MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( + !mojo::internal::IsHandleOrInterfaceValid(result->data.f_{{name}}), +{%- if kind|is_associated_kind %} + mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID, +{%- else %} + mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE, +{%- endif %} + "invalid {{name}} in {{union.name}} union"); +{%- endif %} + +{%- elif kind|is_enum_kind %} + mojo::internal::Serialize<{{serializer_type}}>( + in_{{name}}, &result->data.f_{{name}}); + +{%- else %} + result->data.f_{{name}} = in_{{name}}; +{%- endif %} + break; + } +{%- endfor %} + } + + CustomContextHelper<Traits>::TearDown(input, custom_context); + } static bool Deserialize({{data_type}}* input, - {{mojom_type}}Ptr* output, - SerializationContext* context); -}; + UserType* output, + SerializationContext* context) { + if (!input || input->is_null()) + return CallSetToNullIfExists<Traits>(output); -template <typename MaybeConstUserType> -struct Serializer<{{mojom_type}}Ptr, MaybeConstUserType> - : public UnionSerializerImpl<{{mojom_type}}Ptr> { - using UserType = typename std::remove_const<MaybeConstUserType>::type; - - static_assert(std::is_same<MaybeConstUserType, UserType>::value, - "Only support serialization of non-const Unions."); - static_assert(std::is_same<UserType, {{mojom_type}}Ptr>::value, - "Custom mapping of mojom union is not supported."); + {{mojom_type}}DataView data_view(input, context); + return Traits::Read(data_view, output); + } }; } // namespace internal
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl index 5a11ff79..c2480a8d 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/union_serialization_definition.tmpl
@@ -1,164 +1,42 @@ {%- set mojom_type = union|get_qualified_name_for_kind %} -{%- set data_type = union|get_qualified_name_for_kind(internal=True) %} - -namespace internal { // static -size_t UnionSerializerImpl<{{mojom_type}}Ptr>::PrepareToSerialize( - {{mojom_type}}Ptr& input, - bool inlined, - SerializationContext* context) { - size_t size = inlined ? 0 : sizeof({{data_type}}); +bool UnionTraits<{{mojom_type}}, {{mojom_type}}Ptr>::Read( + {{mojom_type}}DataView input, + {{mojom_type}}Ptr* output) { + *output = {{mojom_type}}::New(); + {{mojom_type}}Ptr& result = *output; - if (!input) - return size; + internal::UnionAccessor<{{mojom_type}}> result_acc(result.get()); + switch (input.tag()) { +{%- for field in union.fields %} + case {{mojom_type}}::Tag::{{field.name|upper}}: { +{%- set name = field.name %} +{%- set kind = field.kind %} +{%- set serializer_type = kind|unmapped_type_for_serializer %} +{%- if kind|is_object_kind %} + result_acc.SwitchActive({{mojom_type}}::Tag::{{name|upper}}); + if (!input.Read{{name|under_to_camel}}(result_acc.data()->{{name}})) + return false; - UnionAccessor<{{mojom_type}}> input_acc(input.get()); - switch (input->which()) { -{% for field in union.fields %} -{% if field.kind|is_object_kind %} -{%- set serializer_type = field.kind|unmapped_type_for_serializer %} - case {{mojom_type}}::Tag::{{field.name|upper}}: -{% if field.kind|is_union_kind %} - size += mojo::internal::PrepareToSerialize<{{serializer_type}}>( - *(input_acc.data()->{{field.name}}), false, context); -{% else %} - size += mojo::internal::PrepareToSerialize<{{serializer_type}}>( - *(input_acc.data()->{{field.name}}), context); -{% endif %} - break; +{%- elif kind|is_any_handle_or_interface_kind %} + auto result_{{name}} = input.Take{{name|under_to_camel}}(); + result->set_{{name}}(std::move(result_{{name}})); + +{%- elif kind|is_enum_kind %} + decltype(result->get_{{name}}()) result_{{name}}; + if (!input.Read{{name|under_to_camel}}(&result_{{name}})) + return false; + result->set_{{name}}(result_{{name}}); + +{%- else %} + result->set_{{name}}(input.{{name}}()); {%- endif %} + break; + } {%- endfor %} default: - break; + return false; } - return size; + return true; } - -// static -void UnionSerializerImpl<{{mojom_type}}Ptr>::Serialize( - {{mojom_type}}Ptr& input, - Buffer* buf, - {{data_type}}** output, - bool inlined, - SerializationContext* context) { - {{data_type}}* result = *output; - if (input) { - if (!inlined) - result = {{data_type}}::New(buf); - UnionAccessor<{{mojom_type}}> input_acc(input.get()); - // TODO(azani): Handle unknown and objects. - // Set the not-null flag. - result->size = 16; - result->tag = input->which(); - switch (input->which()) { -{%- for field in union.fields %} - case {{mojom_type}}::Tag::{{field.name|upper}}: { -{%- set serializer_type = field.kind|unmapped_type_for_serializer %} -{%- if field.kind|is_object_kind %} - typename decltype(result->data.f_{{field.name}})::BaseType* ptr; -{%- if field.kind|is_union_kind %} - mojo::internal::Serialize<{{serializer_type}}>( - *(input_acc.data()->{{field.name}}), buf, &ptr, false, context); -{%- elif field.kind|is_array_kind or field.kind|is_map_kind %} - const ContainerValidateParams {{field.name}}_validate_params( - {{field.kind|get_container_validate_params_ctor_args|indent(16)}}); - mojo::internal::Serialize<{{serializer_type}}>( - *(input_acc.data()->{{field.name}}), buf, &ptr, - &{{field.name}}_validate_params, context); -{%- else %} - mojo::internal::Serialize<{{serializer_type}}>( - *(input_acc.data()->{{field.name}}), buf, &ptr, context); -{%- endif %} - result->data.f_{{field.name}}.Set(ptr); -{%- if not field.kind|is_nullable_kind %} - MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( - !ptr, mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, - "null {{field.name}} in {{union.name}} union"); -{%- endif %} - -{%- elif field.kind|is_any_handle_or_interface_kind %} - mojo::internal::Serialize<{{serializer_type}}>( - *input_acc.data()->{{field.name}}, &result->data.f_{{field.name}}, - context); -{%- if not field.kind|is_nullable_kind %} - MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( - !mojo::internal::IsHandleOrInterfaceValid(result->data.f_{{field.name}}), -{%- if field.kind|is_associated_kind %} - mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_INTERFACE_ID, -{%- else %} - mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE, -{%- endif %} - "invalid {{field.name}} in {{union.name}} union"); -{%- endif %} - -{%- elif field.kind|is_enum_kind %} - mojo::internal::Serialize<{{serializer_type}}>( - input_acc.data()->{{field.name}}, &result->data.f_{{field.name}}); - -{%- else %} - result->data.f_{{field.name}} = input_acc.data()->{{field.name}}; -{%- endif %} - break; - } -{%- endfor %} - } - } else if (inlined) { - result->set_null(); - } else { - result = nullptr; - } - *output = result; -} - -// static -bool UnionSerializerImpl<{{mojom_type}}Ptr>::Deserialize( - {{data_type}}* input, - {{mojom_type}}Ptr* output, - SerializationContext* context) { - bool success = true; - if (input && !input->is_null()) { - {{mojom_type}}Ptr result({{mojom_type}}::New()); - UnionAccessor<{{mojom_type}}> result_acc(result.get()); - switch (input->tag) { -{%- for field in union.fields %} - case {{mojom_type}}::Tag::{{field.name|upper}}: { -{%- set serializer_type = field.kind|unmapped_type_for_serializer %} -{%- if field.kind|is_object_kind %} - result_acc.SwitchActive({{mojom_type}}::Tag::{{field.name|upper}}); - if (!mojo::internal::Deserialize<{{serializer_type}}>( - input->data.f_{{field.name}}.Get(), - result_acc.data()->{{field.name}}, context)) - success = false; - -{%- elif field.kind|is_any_handle_or_interface_kind %} - typename std::remove_reference< - decltype(result->get_{{field.name}}())>::type result_{{field.name}}; - bool ret = mojo::internal::Deserialize<{{serializer_type}}>( - &input->data.f_{{field.name}}, &result_{{field.name}}, context); - DCHECK(ret); - result->set_{{field.name}}(std::move(result_{{field.name}})); - -{%- elif field.kind|is_enum_kind %} - decltype(result->get_{{field.name}}()) result_{{field.name}}; - if (!mojo::internal::Deserialize<{{serializer_type}}>( - input->data.f_{{field.name}}, &result_{{field.name}})) - success = false; - else - result->set_{{field.name}}(result_{{field.name}}); - -{%- else %} - result->set_{{field.name}}(input->data.f_{{field.name}}); -{%- endif %} - break; - } -{%- endfor %} - } - *output = std::move(result); - } else { - output->reset(); - } - return success; -} - -} // namespace internal
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_class_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_class_declaration.tmpl index 98ae23c..9ba7afd 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_class_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_class_declaration.tmpl
@@ -1,6 +1,6 @@ {% from "enum_macros.tmpl" import enum_decl -%} -class {{struct.name}} { +class {{export_attribute}} {{struct.name}} { public: using DataView = {{struct.name}}DataView; using Data_ = internal::{{struct.name}}_Data;
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl index 4783d25..b191fe6 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_declaration.tmpl
@@ -1,4 +1,4 @@ -class {{union.name}} { +class {{export_attribute}} {{union.name}} { public: using DataView = {{union.name}}DataView; using Data_ = internal::{{union.name}}_Data; @@ -38,8 +38,18 @@ } {% for field in union.fields %} - bool is_{{field.name}}() const; - {{field.kind|cpp_union_getter_return_type}} get_{{field.name}}() const; + bool is_{{field.name}}() const { return tag_ == Tag::{{field.name|upper}}; } + + {{field.kind|cpp_union_getter_return_type}} get_{{field.name}}() const { + DCHECK(tag_ == Tag::{{field.name|upper}}); +{%- if field.kind|is_object_kind or + field.kind|is_any_handle_or_interface_kind %} + return *(data_.{{field.name}}); +{%- else %} + return data_.{{field.name}}; +{%- endif %} + } + void set_{{field.name}}({{field.kind|cpp_wrapper_param_type}} {{field.name}}); {%- endfor %}
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl index 85cc4e61..e905904 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/wrapper_union_class_definition.tmpl
@@ -16,20 +16,6 @@ } {% for field in union.fields %} -bool {{union.name}}::is_{{field.name}}() const { - return tag_ == Tag::{{field.name|upper}}; -} - -{{field.kind|cpp_union_getter_return_type}} {{union.name}}::get_{{field.name}}() const { - DCHECK(tag_ == Tag::{{field.name|upper}}); -{% if field.kind|is_object_kind or - field.kind|is_any_handle_or_interface_kind %} - return *(data_.{{field.name}}); -{%- else %} - return data_.{{field.name}}; -{%- endif %} -} - void {{union.name}}::set_{{field.name}}({{field.kind|cpp_wrapper_param_type}} {{field.name}}) { SwitchActive(Tag::{{field.name|upper}}); {% if field.kind|is_string_kind %}
diff --git a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py index 504283b..fec7a6be 100644 --- a/mojo/public/tools/bindings/generators/mojom_cpp_generator.py +++ b/mojo/public/tools/bindings/generators/mojom_cpp_generator.py
@@ -368,8 +368,8 @@ def ExpressionToText(value, kind=None): return TranslateConstants(value, kind) -def RequiresContextForDataView(struct): - for field in struct.fields: +def RequiresContextForDataView(kind): + for field in kind.fields: if mojom.IsReferenceKind(field.kind): return True return False @@ -503,6 +503,8 @@ "extra_public_headers": self.GetExtraPublicHeaders(), "for_blink": self.for_blink, "use_new_wrapper_types": self.use_new_wrapper_types, + "export_attribute": self.export_attribute, + "export_header": self.export_header, } @staticmethod
diff --git a/mojo/public/tools/bindings/mojom.gni b/mojo/public/tools/bindings/mojom.gni index 29da6be..4705a5f4 100644 --- a/mojo/public/tools/bindings/mojom.gni +++ b/mojo/public/tools/bindings/mojom.gni
@@ -78,11 +78,41 @@ # TODO(yzshen): # - convert all users to use the new mode; # - remove support for the old mode. +# +# The following parameters are used to support the component build. They are +# needed so that bindings which are linked with a component can use the same +# export settings for classes. The first three are for the chromium variant, and +# the last three are for the blink variant. +# export_class_attribute (optional) +# The attribute to add to the class declaration. e.g. "CONTENT_EXPORT" +# export_define (optional) +# A define to be added to the source_set which is needed by the export +# header. e.g. "CONTENT_IMPLEMENTATION=1" +# export_header (optional) +# A header to be added to the generated bindings to support the component +# build. e.g. "content/common/content_export.h" +# export_class_attribute_blink (optional) +# export_define_blink (optional) +# export_header_blink (optional) +# These three parameters are the blink variants of the previous 3. template("mojom") { assert( defined(invoker.sources) || defined(invoker.deps) || defined(invoker.public_deps), "\"sources\" or \"deps\" must be defined for the $target_name template.") + if (defined(invoker.export_class_attribute) || + defined(invoker.export_define) || defined(invoker.export_header)) { + assert(defined(invoker.export_class_attribute)) + assert(defined(invoker.export_define)) + assert(defined(invoker.export_header)) + } + if (defined(invoker.export_class_attribute_blink) || + defined(invoker.export_define_blink) || + defined(invoker.export_header_blink)) { + assert(defined(invoker.export_class_attribute_blink)) + assert(defined(invoker.export_define_blink)) + assert(defined(invoker.export_header_blink)) + } all_deps = [] if (defined(invoker.deps)) { @@ -227,6 +257,23 @@ if (defined(bindings_configuration.for_blink) && bindings_configuration.for_blink) { args += [ "--for_blink" ] + if (defined(invoker.export_class_attribute_blink)) { + args += [ + "--export_attribute", + invoker.export_class_attribute_blink, + "--export_header", + invoker.export_header_blink, + ] + } + } else { + if (defined(invoker.export_class_attribute)) { + args += [ + "--export_attribute", + invoker.export_class_attribute, + "--export_header", + invoker.export_header, + ] + } } if (!defined(invoker.use_new_wrapper_types) || @@ -325,9 +372,16 @@ # this target *except* mojo/public/cpp/bindings and other *_cpp_sources # targets. source_set(cpp_sources_target_name) { + defines = [] if (defined(invoker.testonly)) { testonly = invoker.testonly } + if (defined(invoker.export_define)) { + defines += [ invoker.export_define ] + } + if (defined(invoker.export_define_blink)) { + defines += [ invoker.export_define_blink ] + } if (enabled_sources != []) { sources = process_file_template(enabled_sources, generator_cpp_outputs) }
diff --git a/mojo/public/tools/bindings/mojom_bindings_generator.py b/mojo/public/tools/bindings/mojom_bindings_generator.py index 12196ba..48e3b88 100755 --- a/mojo/public/tools/bindings/mojom_bindings_generator.py +++ b/mojo/public/tools/bindings/mojom_bindings_generator.py
@@ -163,7 +163,9 @@ module, args.output_dir, typemap=self._typemap.get(language, {}), variant=args.variant, bytecode_path=args.bytecode_path, for_blink=args.for_blink, - use_new_wrapper_types=args.use_new_wrapper_types) + use_new_wrapper_types=args.use_new_wrapper_types, + export_attribute=args.export_attribute, + export_header=args.export_header) filtered_args = [] if hasattr(generator_module, 'GENERATOR_PREFIX'): prefix = '--' + generator_module.GENERATOR_PREFIX + '_' @@ -289,6 +291,14 @@ "--use_new_wrapper_types", action="store_true", help="Map mojom array/map/string to STL (for chromium variant) or WTF " "(for blink variant) types directly.") + generate_parser.add_argument( + "--export_attribute", type=str, default="", + help="Optional attribute to specify on class declaration to export it " + "for the component build.") + generate_parser.add_argument( + "--export_header", type=str, default="", + help="Optional header to include in the generated headers to support the " + "component build.") generate_parser.set_defaults(func=_Generate) precompile_parser = subparsers.add_parser("precompile",
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py index ccb8363b..1a10e8b 100644 --- a/mojo/public/tools/bindings/pylib/mojom/generate/generator.py +++ b/mojo/public/tools/bindings/pylib/mojom/generate/generator.py
@@ -37,8 +37,8 @@ # Pass |output_dir| to emit files to disk. Omit |output_dir| to echo all # files to stdout. def __init__(self, module, output_dir=None, typemap=None, variant=None, - bytecode_path=None, for_blink=False, - use_new_wrapper_types=False): + bytecode_path=None, for_blink=False, use_new_wrapper_types=False, + export_attribute=None, export_header=None): self.module = module self.output_dir = output_dir self.typemap = typemap or {} @@ -46,6 +46,8 @@ self.bytecode_path = bytecode_path self.for_blink = for_blink self.use_new_wrapper_types = use_new_wrapper_types + self.export_attribute = export_attribute + self.export_header = export_header def GetStructsFromMethods(self): result = []
diff --git a/net/spdy/hpack/hpack_decoder.cc b/net/spdy/hpack/hpack_decoder.cc index 4d6db95..075176a5 100644 --- a/net/spdy/hpack/hpack_decoder.cc +++ b/net/spdy/hpack/hpack_decoder.cc
@@ -19,8 +19,8 @@ HpackDecoder::HpackDecoder() : handler_(nullptr), total_header_bytes_(0), - header_block_started_(false), - total_parsed_bytes_(0) {} + total_parsed_bytes_(0), + header_block_started_(false) {} HpackDecoder::~HpackDecoder() {} @@ -38,6 +38,9 @@ size_t headers_data_length) { if (!header_block_started_) { decoded_block_.clear(); + header_block_started_ = true; + size_updates_allowed_ = true; + size_updates_seen_ = 0; if (handler_ != nullptr) { handler_->OnHeaderBlockStart(); } @@ -45,27 +48,22 @@ size_t new_size = headers_block_buffer_.size() + headers_data_length; if (max_decode_buffer_size_bytes_ > 0 && new_size > max_decode_buffer_size_bytes_) { + DVLOG(1) << "max_decode_buffer_size_bytes_ < new_size: " + << max_decode_buffer_size_bytes_ << " < " << new_size; return false; } headers_block_buffer_.insert(headers_block_buffer_.end(), headers_data, headers_data + headers_data_length); - // Parse as many data in buffer as possible. And remove the parsed data - // from buffer. + // Parse as many whole HPACK entries in the buffer as possible, + // and then remove the parsed data from the buffer. HpackInputStream input_stream(headers_block_buffer_); - - // If this is the start of the header block, process table size updates. - if (!header_block_started_) { - if (!DecodeAtMostTwoHeaderTableSizeUpdates(&input_stream)) { - return false; - } - input_stream.MarkCurrentPosition(); - } while (input_stream.HasMoreData()) { if (!DecodeNextOpcodeWrapper(&input_stream)) { if (input_stream.NeedMoreData()) { break; } + DVLOG(1) << "!DecodeNextOpcodeWrapper"; return false; } } @@ -73,7 +71,7 @@ DCHECK_GE(headers_block_buffer_.size(), parsed_bytes); headers_block_buffer_.erase(0, parsed_bytes); total_parsed_bytes_ += parsed_bytes; - header_block_started_ = true; + return true; } @@ -114,6 +112,7 @@ bool HpackDecoder::HandleHeaderRepresentation(StringPiece name, StringPiece value) { + size_updates_allowed_ = false; total_header_bytes_ += name.size() + value.size(); if (handler_ == nullptr) { @@ -169,42 +168,30 @@ // Implements 7.3: Header Table Size Update. if (input_stream->MatchPrefixAndConsume(kHeaderTableSizeUpdateOpcode)) { // Header table size updates cannot appear mid-block. - return false; + return DecodeNextHeaderTableSizeUpdate(input_stream); } // Unrecognized opcode. return false; } -// Process 0, 1, or 2 Table Size Updates. -bool HpackDecoder::DecodeAtMostTwoHeaderTableSizeUpdates( - HpackInputStream* input_stream) { - // Implements 7.3: Header Table Size Update. - if (input_stream->HasMoreData() && - input_stream->MatchPrefixAndConsume(kHeaderTableSizeUpdateOpcode)) { - // One table size update, decode it. - if (DecodeNextHeaderTableSizeUpdate(input_stream)) { - // Check for a second table size update. - if (input_stream->HasMoreData() && - input_stream->MatchPrefixAndConsume(kHeaderTableSizeUpdateOpcode)) { - // Second update found, return the result of decode. - return DecodeNextHeaderTableSizeUpdate(input_stream); - } - } else { - // Decoding the first table size update failed. - return false; - } - } - // No table size updates in this block. - return true; -} - bool HpackDecoder::DecodeNextHeaderTableSizeUpdate( HpackInputStream* input_stream) { uint32_t size = 0; if (!input_stream->DecodeNextUint32(&size)) { return false; } + if (!size_updates_allowed_) { + DVLOG(1) << "Size updates not allowed after header entries."; + return false; + } + ++size_updates_seen_; + if (size_updates_seen_ > 2) { + DVLOG(1) << "Too many size updates at the start of the block."; + return false; + } if (size > header_table_.settings_size_bound()) { + DVLOG(1) << "Size (" << size << ") exceeds SETTINGS limit (" + << header_table_.settings_size_bound() << ")"; return false; } header_table_.SetMaxSize(size); @@ -219,6 +206,7 @@ const HpackEntry* entry = header_table_.GetByIndex(index); if (entry == NULL) { + DVLOG(1) << "Index " << index << " is not valid."; return false; } @@ -262,6 +250,7 @@ const HpackEntry* entry = header_table_.GetByIndex(index_or_zero); if (entry == NULL) { + DVLOG(1) << "index " << index_or_zero << " is not valid."; return false; } if (entry->IsStatic()) {
diff --git a/net/spdy/hpack/hpack_decoder.h b/net/spdy/hpack/hpack_decoder.h index ae2cdfe..caad941 100644 --- a/net/spdy/hpack/hpack_decoder.h +++ b/net/spdy/hpack/hpack_decoder.h
@@ -2,13 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef NET_SPDY_HPACK_DECODER_H_ -#define NET_SPDY_HPACK_DECODER_H_ +#ifndef NET_SPDY_HPACK_HPACK_DECODER_H_ +#define NET_SPDY_HPACK_HPACK_DECODER_H_ #include <stddef.h> #include <stdint.h> #include <map> +#include <memory> #include <string> #include <vector> @@ -94,6 +95,21 @@ bool HandleHeaderRepresentation(base::StringPiece name, base::StringPiece value); + // Handlers for decoding HPACK opcodes and header representations + // (or parts thereof). These methods return true on success and + // false on error. + bool DecodeNextOpcodeWrapper(HpackInputStream* input_stream); + bool DecodeNextOpcode(HpackInputStream* input_stream); + bool DecodeNextHeaderTableSizeUpdate(HpackInputStream* input_stream); + bool DecodeNextIndexedHeader(HpackInputStream* input_stream); + bool DecodeNextLiteralHeader(HpackInputStream* input_stream, + bool should_index); + bool DecodeNextName(HpackInputStream* input_stream, + base::StringPiece* next_name); + bool DecodeNextStringLiteral(HpackInputStream* input_stream, + bool is_header_key, // As distinct from a value. + base::StringPiece* output); + HpackHeaderTable header_table_; // TODO(jgraettinger): Buffer for headers data, and storage for the last- @@ -109,35 +125,30 @@ SpdyHeadersHandlerInterface* handler_; size_t total_header_bytes_; - // Flag to keep track of having seen the header block start. - bool header_block_started_; + // How much encoded data this decoder is willing to buffer. + size_t max_decode_buffer_size_bytes_ = 32 * 1024; // 32 KB // Total bytes have been removed from headers_block_buffer_. // Its value is updated during incremental decoding. uint32_t total_parsed_bytes_; - // How much encoded data this decoder is willing to buffer. - size_t max_decode_buffer_size_bytes_ = 32 * 1024; // 32 KB + // Flag to keep track of having seen the header block start. + bool header_block_started_; - // Handlers for decoding HPACK opcodes and header representations - // (or parts thereof). These methods return true on success and - // false on error. - bool DecodeNextOpcodeWrapper(HpackInputStream* input_stream); - bool DecodeNextOpcode(HpackInputStream* input_stream); - bool DecodeAtMostTwoHeaderTableSizeUpdates(HpackInputStream* input_stream); - bool DecodeNextHeaderTableSizeUpdate(HpackInputStream* input_stream); - bool DecodeNextIndexedHeader(HpackInputStream* input_stream); - bool DecodeNextLiteralHeader(HpackInputStream* input_stream, - bool should_index); - bool DecodeNextName(HpackInputStream* input_stream, - base::StringPiece* next_name); - bool DecodeNextStringLiteral(HpackInputStream* input_stream, - bool is_header_key, // As distinct from a value. - base::StringPiece* output); + // Number of dynamic table size updates seen at the start; a max of two + // are permitted. + uint8_t size_updates_seen_; + + // Are dynamic table size updates allowed at this point in decoding? True + // at the start, but not once we've seen a header entry. + bool size_updates_allowed_; + + // Saved value of --gfe2_reloadable_flag_add_hpack_incremental_decode. + bool incremental_decode_; DISALLOW_COPY_AND_ASSIGN(HpackDecoder); }; } // namespace net -#endif // NET_SPDY_HPACK_DECODER_H_ +#endif // NET_SPDY_HPACK_HPACK_DECODER_H_
diff --git a/net/spdy/hpack/hpack_encoder.cc b/net/spdy/hpack/hpack_encoder.cc index 59198a7..85610ef5 100644 --- a/net/spdy/hpack/hpack_encoder.cc +++ b/net/spdy/hpack/hpack_encoder.cc
@@ -162,6 +162,9 @@ return; } const size_t current_size = CurrentHeaderTableSizeSetting(); + DVLOG(1) << "MaybeEmitTableSize current_size=" << current_size; + DVLOG(1) << "MaybeEmitTableSize min_table_size_setting_received_=" + << min_table_size_setting_received_; if (min_table_size_setting_received_ < current_size) { output_stream_.AppendPrefix(kHeaderTableSizeUpdateOpcode); output_stream_.AppendUint32(min_table_size_setting_received_);
diff --git a/net/spdy/hpack/hpack_round_trip_test.cc b/net/spdy/hpack/hpack_round_trip_test.cc index 07ab699..b932cffa9 100644 --- a/net/spdy/hpack/hpack_round_trip_test.cc +++ b/net/spdy/hpack/hpack_round_trip_test.cc
@@ -4,7 +4,6 @@ #include <cmath> #include <ctime> -#include <map> #include <string> #include <vector> @@ -18,13 +17,14 @@ namespace net { namespace test { -using std::map; using std::string; -using std::vector; namespace { -class HpackRoundTripTest : public ::testing::Test { +// Supports testing with the input split at every byte boundary. +enum InputSizeParam { ALL_INPUT, ONE_BYTE, ZERO_THEN_ONE_BYTE }; + +class HpackRoundTripTest : public ::testing::TestWithParam<InputSizeParam> { protected: HpackRoundTripTest() : encoder_(ObtainHpackHuffmanTable()), decoder_() {} @@ -38,9 +38,32 @@ string encoded; encoder_.EncodeHeaderSet(header_set, &encoded); - bool success = - decoder_.HandleControlFrameHeadersData(encoded.data(), encoded.size()); - success &= decoder_.HandleControlFrameHeadersComplete(nullptr); + bool success = true; + if (GetParam() == ALL_INPUT) { + // Pass all the input to the decoder at once. + success = decoder_.HandleControlFrameHeadersData(encoded.data(), + encoded.size()); + } else if (GetParam() == ONE_BYTE) { + // Pass the input to the decoder one byte at a time. + const char* data = encoded.data(); + for (size_t ndx = 0; ndx < encoded.size() && success; ++ndx) { + success = decoder_.HandleControlFrameHeadersData(data + ndx, 1); + } + } else if (GetParam() == ZERO_THEN_ONE_BYTE) { + // Pass the input to the decoder one byte at a time, but before each + // byte pass an empty buffer. + const char* data = encoded.data(); + for (size_t ndx = 0; ndx < encoded.size() && success; ++ndx) { + success = (decoder_.HandleControlFrameHeadersData(data + ndx, 0) && + decoder_.HandleControlFrameHeadersData(data + ndx, 1)); + } + } else { + ADD_FAILURE() << "Unknown param: " << GetParam(); + } + + if (success) { + success = decoder_.HandleControlFrameHeadersComplete(nullptr); + } EXPECT_EQ(header_set, decoder_.decoded_block()); return success; @@ -54,7 +77,13 @@ HpackDecoder decoder_; }; -TEST_F(HpackRoundTripTest, ResponseFixtures) { +INSTANTIATE_TEST_CASE_P(Tests, + HpackRoundTripTest, + ::testing::Values(ALL_INPUT, + ONE_BYTE, + ZERO_THEN_ONE_BYTE)); + +TEST_P(HpackRoundTripTest, ResponseFixtures) { { SpdyHeaderBlock headers; headers[":status"] = "302"; @@ -86,7 +115,7 @@ } } -TEST_F(HpackRoundTripTest, RequestFixtures) { +TEST_P(HpackRoundTripTest, RequestFixtures) { { SpdyHeaderBlock headers; headers[":authority"] = "www.example.com"; @@ -119,11 +148,11 @@ } } -TEST_F(HpackRoundTripTest, RandomizedExamples) { +TEST_P(HpackRoundTripTest, RandomizedExamples) { // Grow vectors of names & values, which are seeded with fixtures and then // expanded with dynamically generated data. Samples are taken using the // exponential distribution. - vector<string> pseudo_header_names, random_header_names; + std::vector<string> pseudo_header_names, random_header_names; pseudo_header_names.push_back(":authority"); pseudo_header_names.push_back(":path"); pseudo_header_names.push_back(":status"); @@ -131,7 +160,7 @@ // TODO(jgraettinger): Enable "cookie" as a name fixture. Crumbs may be // reconstructed in any order, which breaks the simple validation used here. - vector<string> values; + std::vector<string> values; values.push_back("/"); values.push_back("/index.html"); values.push_back("200");
diff --git a/remoting/client/gl_canvas.cc b/remoting/client/gl_canvas.cc index 939d4b26..8bcfa11 100644 --- a/remoting/client/gl_canvas.cc +++ b/remoting/client/gl_canvas.cc
@@ -18,10 +18,15 @@ "varying vec2 v_texCoord;\n" "attribute vec2 a_texCoord;\n" - // Positions to draw the texture on the texture coordinates. + // Position to draw the texture on the canvas. "attribute vec2 a_position;\n" + + // Defines the zoom and pan configurations of the canvas. "uniform mat3 u_transform;\n" + // Size of the view in pixel. + "uniform vec2 u_viewSize;\n" + // This matrix translates normalized texture coordinates // ([0, 1] starting at upper-left corner) to the view coordinates // ([-1, 1] starting at the center of the screen). @@ -31,9 +36,14 @@ " -1, 1, 0);\n" "void main() {\n" " v_texCoord = a_texCoord;\n" + // Transforms coordinates related to the canvas to coordinates // related to the view. " vec3 trans_position = u_transform * vec3(a_position, 1.0);\n" + + // Normalize the position by the size of the view. + " trans_position.xy /= u_viewSize;\n" + // Transforms texture coordinates to view coordinates and adds // projection component 1. " gl_Position = vec4(tex_to_view * trans_position, 1.0);\n" @@ -62,6 +72,7 @@ glUseProgram(program_); transform_location_ = glGetUniformLocation(program_, "u_transform"); + view_size_location_ = glGetUniformLocation(program_, "u_viewSize"); texture_location_ = glGetUniformLocation(program_, "u_texture"); alpha_multiplier_location_ = glGetUniformLocation(program_, "u_alpha_multiplier"); @@ -83,7 +94,7 @@ glDeleteShader(fragment_shader_); } -void GlCanvas::SetNormalizedTransformation(const std::array<float, 9>& matrix) { +void GlCanvas::SetTransformationMatrix(const std::array<float, 9>& matrix) { DCHECK(thread_checker_.CalledOnValidThread()); std::array<float, 9> transposed_matrix = matrix; TransposeTransformationMatrix(&transposed_matrix); @@ -92,12 +103,20 @@ transformation_set_ = true; } +void GlCanvas::SetViewSize(int width, int height) { + DCHECK(width > 0 && height > 0); + glViewport(0, 0, width, height); + float view_size[2] {width, height}; + glUniform2fv(view_size_location_, 1, view_size); + view_size_set_ = true; +} + void GlCanvas::DrawTexture(int texture_id, GLuint texture_handle, GLuint vertex_buffer, float alpha_multiplier) { DCHECK(thread_checker_.CalledOnValidThread()); - if (!transformation_set_) { + if (!view_size_set_ || !transformation_set_) { return; } glActiveTexture(GL_TEXTURE0 + texture_id);
diff --git a/remoting/client/gl_canvas.h b/remoting/client/gl_canvas.h index 8443f89..df1994b6 100644 --- a/remoting/client/gl_canvas.h +++ b/remoting/client/gl_canvas.h
@@ -17,10 +17,6 @@ // draw textures on the canvas. // Must be constructed after the OpenGL surface is created and destroyed before // the surface is destroyed. -// -// Coordinates to be used for GlCanvas should be normalized texture coordinates. -// In the view of a point on the canvas, the canvas has width 1 and height 1, -// with the origin at the upper-left corner of the canvas. class GlCanvas { public: // gl_version: version number of the OpenGL ES context. Either 2 or 3. @@ -28,8 +24,8 @@ ~GlCanvas(); - // Sets the normalized transformation matrix. This matrix defines how the - // canvas should be shown on the view. + // Sets the transformation matrix. This matrix defines how the canvas should + // be shown on the view. // 3 by 3 transformation matrix, [ m0, m1, m2, m3, m4, m5, m6, m7, m8 ]. // The matrix will be multiplied with the positions (with projective space, // (x, y, 1)) to draw the textures with the right zoom and pan configuration. @@ -39,17 +35,20 @@ // | m6, m7, m8 | | 1 | // // For a typical transformation matrix such that m1=m3=m6=m7=0 and m8=1, m0 - // and m4 defines the ratio of canvas width or height over view width or - // height. m2 and m5 defines the offset of the upper-left corner in percentage - // of the view's width or height. An identity matrix will stretch the canvas - // to fit the whole view. - void SetNormalizedTransformation(const std::array<float, 9>& matrix); + // and m4 defines the scaling factor of the canvas and m2 and m5 defines the + // offset of the upper-left corner in pixel. + void SetTransformationMatrix(const std::array<float, 9>& matrix); + + // Sets the size of the view in pixels. + void SetViewSize(int width, int height); // Draws the texture on the canvas. Nothing will happen if // SetNormalizedTransformation() has not been called. // vertex_buffer: reference to the 2x4x2 float vertex buffer. - // [ four (x, y) normalized vertex positions on the canvas, - // four (x, y) vertex positions to define the visible area ] + // [ four (x, y) position of the texture vertices in pixel + // with respect to the canvas, + // four (x, y) position of the vertices in percentage + // defining the visible area of the texture ] // alpha_multiplier: Will be multiplied with the alpha channel of the texture. // Passing 1 means no change of the transparency of the // texture. @@ -64,8 +63,8 @@ private: int gl_version_; - // True IFF the transformation has been set. bool transformation_set_ = false; + bool view_size_set_ = false; // Handles. GLuint vertex_shader_; @@ -74,6 +73,7 @@ // Locations of the corresponding shader attributes. GLuint transform_location_; + GLuint view_size_location_; GLuint texture_location_; GLuint alpha_multiplier_location_; GLuint position_location_;
diff --git a/remoting/client/gl_cursor.cc b/remoting/client/gl_cursor.cc index 3dae4a8..9e10e2bc 100644 --- a/remoting/client/gl_cursor.cc +++ b/remoting/client/gl_cursor.cc
@@ -52,25 +52,16 @@ SetCursorPosition(cursor_x_, cursor_y_); } -void GlCursor::SetCanvasSize(int width, int height) { - canvas_width_ = width; - canvas_height_ = height; - SetCursorPosition(cursor_x_, cursor_y_); -} - void GlCursor::SetCursorPosition(int x, int y) { cursor_x_ = x; cursor_y_ = y; - if (!canvas_width_ || !canvas_height_ || !current_cursor_data_) { + if (!current_cursor_data_) { return; } std::array<float, 8> positions; FillRectangleVertexPositions( - (x - current_cursor_hotspot_x_) / ((float)canvas_width_), - (y - current_cursor_hotspot_y_) / ((float)canvas_height_), - ((float)current_cursor_width_) / canvas_width_, - ((float)current_cursor_height_) / canvas_height_, - &positions); + x - current_cursor_hotspot_x_, y - current_cursor_hotspot_y_, + current_cursor_width_, current_cursor_height_, &positions); if (layer_) { layer_->SetVertexPositions(positions); }
diff --git a/remoting/client/gl_cursor.h b/remoting/client/gl_cursor.h index 3791986..7e1ee4f 100644 --- a/remoting/client/gl_cursor.h +++ b/remoting/client/gl_cursor.h
@@ -27,8 +27,6 @@ void SetCursorShape(const protocol::CursorShapeInfo& cursor_shape); - void SetCanvasSize(int width, int height); - // Sets the cursor hotspot positions. Does nothing if the cursor shape or the // canvas size has not been set. void SetCursorPosition(int x, int y); @@ -59,8 +57,6 @@ int cursor_x_ = 0; int cursor_y_ = 0; - int canvas_width_ = 0; - int canvas_height_ = 0; DISALLOW_COPY_AND_ASSIGN(GlCursor); };
diff --git a/remoting/client/gl_cursor_feedback.cc b/remoting/client/gl_cursor_feedback.cc index ab69b30..fcadf59 100644 --- a/remoting/client/gl_cursor_feedback.cc +++ b/remoting/client/gl_cursor_feedback.cc
@@ -38,14 +38,10 @@ GlCursorFeedbackTexture::kTextureWidth); } -void GlCursorFeedback::StartAnimation(float normalized_x, - float normalized_y, - float normalized_width, - float normalized_height) { - max_width_ = normalized_width; - max_height_ = normalized_height; - cursor_x_ = normalized_x; - cursor_y_ = normalized_y; +void GlCursorFeedback::StartAnimation(int x, int y, float diameter) { + cursor_x_ = x; + cursor_y_ = y; + max_diameter_ = diameter; animation_start_time_ = base::TimeTicks::Now(); } @@ -60,11 +56,11 @@ animation_start_time_ = base::TimeTicks(); return false; } - float width = progress * max_width_; - float height = progress * max_height_; + float diameter = progress * max_diameter_; std::array<float, 8> positions; - FillRectangleVertexPositions(cursor_x_ - width / 2, cursor_y_ - height / 2, - width, height, &positions); + FillRectangleVertexPositions(cursor_x_ - diameter / 2, + cursor_y_ - diameter / 2, + diameter, diameter, &positions); layer_->SetVertexPositions(positions); layer_->Draw(1.f - progress); return true;
diff --git a/remoting/client/gl_cursor_feedback.h b/remoting/client/gl_cursor_feedback.h index 8850a999..055c0b0 100644 --- a/remoting/client/gl_cursor_feedback.h +++ b/remoting/client/gl_cursor_feedback.h
@@ -28,10 +28,7 @@ // If |canvas| is nullptr, nothing will happen when calling Draw(). void SetCanvas(GlCanvas* canvas); - void StartAnimation(float normalized_x, - float normalized_y, - float normalized_width, - float normalized_height); + void StartAnimation(int x, int y, float diameter); // Returns true if animation is not finished, false otherwise. Does nothing // if the animation has stopped. @@ -39,8 +36,7 @@ private: std::unique_ptr<GlRenderLayer> layer_; - float max_width_ = 0; - float max_height_ = 0; + float max_diameter_ = 0; float cursor_x_ = 0; float cursor_y_ = 0; base::TimeTicks animation_start_time_;
diff --git a/remoting/client/gl_desktop.cc b/remoting/client/gl_desktop.cc index 656e3bb6..124318c 100644 --- a/remoting/client/gl_desktop.cc +++ b/remoting/client/gl_desktop.cc
@@ -6,6 +6,7 @@ #include "base/logging.h" #include "remoting/client/gl_canvas.h" +#include "remoting/client/gl_math.h" #include "remoting/client/gl_render_layer.h" #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" @@ -37,6 +38,10 @@ if (!frame->size().equals(last_desktop_size_)) { layer_->SetTexture(frame->data(), frame->size().width(), frame->size().height()); + std::array<float, 8> positions; + FillRectangleVertexPositions(0, 0, frame->size().width(), + frame->size().height(), &positions); + layer_->SetVertexPositions(positions); last_desktop_size_.set(frame->size().width(), frame->size().height()); } else { for (webrtc::DesktopRegion::Iterator i(frame->updated_region());
diff --git a/remoting/client/gl_math.cc b/remoting/client/gl_math.cc index 85f3369..6102e3c 100644 --- a/remoting/client/gl_math.cc +++ b/remoting/client/gl_math.cc
@@ -6,42 +6,15 @@ #include <sstream> -namespace { - -// | m0, m1, m2, | | Scale_x Skew_x Offset_x | -// | m3, m4, m5, | = | Skew_y Scale_y Offset_y | -// | m6, m7, m8 | | 0 0 1 | - -const int kXScaleKey = 0; -const int kXSkewKey = 1; -const int kXOffsetKey = 2; - -const int kYSkewKey = 3; -const int kYScaleKey = 4; -const int kYOffsetKey = 5; - -const int kXOffsetTransposedKey = 6; -const int kYOffsetTransposedKey = 7; - -} // namespace - namespace remoting { -void NormalizeTransformationMatrix(int view_width, - int view_height, - int canvas_width, - int canvas_height, - std::array<float, 9>* matrix) { - (*matrix)[kXScaleKey] = canvas_width * (*matrix)[kXScaleKey] / view_width; - (*matrix)[kYScaleKey] = canvas_height * (*matrix)[kYScaleKey] / view_height; - (*matrix)[kXOffsetKey] /= view_width; - (*matrix)[kYOffsetKey] /= view_height; -} - void TransposeTransformationMatrix(std::array<float, 9>* matrix) { - std::swap((*matrix)[kXOffsetKey], (*matrix)[kXOffsetTransposedKey]); - std::swap((*matrix)[kYOffsetKey], (*matrix)[kYOffsetTransposedKey]); - std::swap((*matrix)[kXSkewKey], (*matrix)[kYSkewKey]); + // | ??, m1, m2, | | ??, m3, m6 | + // | m3, ??, m5, | -> | m1, ??, m7 | + // | m6, m7, ?? | | m2, m5, ?? | + std::swap((*matrix)[1], (*matrix)[3]); + std::swap((*matrix)[2], (*matrix)[6]); + std::swap((*matrix)[5], (*matrix)[7]); } void FillRectangleVertexPositions(float left,
diff --git a/remoting/client/gl_math.h b/remoting/client/gl_math.h index be66eedb..cc8fc1b 100644 --- a/remoting/client/gl_math.h +++ b/remoting/client/gl_math.h
@@ -12,22 +12,6 @@ namespace remoting { -// See GlCanvas::SetNormalizedTransformation for definition of the -// transformation matrix. -// -// Converts a pixel based transformation matrix to a texture coordinates based -// transformation matrix. -// 3 by 3 transformation matrix, [ m0, m1, m2, m3, m4, m5, m6, m7, m8 ]. -// -// | m0, m1, m2, | | x | -// | m3, m4, m5, | * | y | -// | m6, m7, m8 | | 1 | -void NormalizeTransformationMatrix(int view_width, - int view_height, - int canvas_width, - int canvas_height, - std::array<float, 9>* matrix); - // Transposes matrix [ m0, m1, m2, m3, m4, m5, m6, m7, m8 ]: // // | m0, m1, m2, | | x |
diff --git a/remoting/client/gl_render_layer.cc b/remoting/client/gl_render_layer.cc index 4c19199d..0fcdbe4 100644 --- a/remoting/client/gl_render_layer.cc +++ b/remoting/client/gl_render_layer.cc
@@ -18,7 +18,7 @@ // Points order: upper-left, bottom-left, upper-right, bottom-right. // Positions to draw the texture on the normalized canvas coordinate. - 0, 0, 0, 1, 1, 0, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, // Region of the texture to be used (normally the whole texture). 0, 0, 0, 1, 1, 0, 1, 1}; @@ -123,6 +123,7 @@ glBindBuffer(GL_ARRAY_BUFFER, buffer_handle_); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(kVertices) / 2, positions.data()); glBindBuffer(GL_ARRAY_BUFFER, 0); + vertex_position_set_ = true; } void GlRenderLayer::SetTextureVisibleArea( @@ -136,7 +137,7 @@ void GlRenderLayer::Draw(float alpha_multiplier) { DCHECK(thread_checker_.CalledOnValidThread()); - DCHECK(texture_set_); + DCHECK(texture_set_ && vertex_position_set_); canvas_->DrawTexture(texture_id_, texture_handle_, buffer_handle_, alpha_multiplier); }
diff --git a/remoting/client/gl_render_layer.h b/remoting/client/gl_render_layer.h index 0883a64..7190f16 100644 --- a/remoting/client/gl_render_layer.h +++ b/remoting/client/gl_render_layer.h
@@ -38,15 +38,15 @@ int height, int stride); - // Sets the positions of four vertices of the texture in normalized - // coordinates. The default values are (0, 0), (0, 1), (1, 0), (1, 1), - // i.e. stretching the texture to fit the whole canvas. + // Sets the positions of four vertices of the texture in pixel with respect to + // the canvas. // positions: [ x_upperleft, y_upperleft, x_lowerleft, y_lowerleft, // x_upperright, y_upperright, x_lowerright, y_lowerright ] void SetVertexPositions(const std::array<float, 8>& positions); - // Sets the visible area of the texture. The default values are (0, 0), - // (0, 1), (1, 0), (1, 1), i.e. showing the whole texture. + // Sets the visible area of the texture in percentage of the width and height + // of the texture. The default values are (0, 0), (0, 1), (1, 0), (1, 1), + // i.e. showing the whole texture. // positions: [ x_upperleft, y_upperleft, x_lowerleft, y_lowerleft, // x_upperright, y_upperright, x_lowerright, y_lowerright ] void SetTextureVisibleArea(const std::array<float, 8>& positions); @@ -64,6 +64,8 @@ // true IFF the texture is already set by calling SetTexture(). bool texture_set_ = false; + bool vertex_position_set_ = false; + // Used in OpenGL ES 2 context which doesn't support GL_UNPACK_ROW_LENGTH to // tightly pack dirty regions before sending them to GPU. std::unique_ptr<uint8_t[]> update_buffer_;
diff --git a/remoting/client/gl_renderer.cc b/remoting/client/gl_renderer.cc index 011cea3..719bde10 100644 --- a/remoting/client/gl_renderer.cc +++ b/remoting/client/gl_renderer.cc
@@ -39,10 +39,7 @@ void GlRenderer::OnPixelTransformationChanged( const std::array<float, 9>& matrix) { DCHECK(thread_checker_.CalledOnValidThread()); - std::array<float, 9> normalized_matrix = matrix; - NormalizeTransformationMatrix(view_width_, view_height_, canvas_width_, - canvas_height_, &normalized_matrix); - canvas_->SetNormalizedTransformation(normalized_matrix); + canvas_->SetTransformationMatrix(matrix); RequestRender(); } @@ -54,10 +51,7 @@ void GlRenderer::OnCursorInputFeedback(int x, int y, float diameter) { DCHECK(thread_checker_.CalledOnValidThread()); - cursor_feedback_.StartAnimation(static_cast<float>(x) / canvas_width_, - static_cast<float>(y) / canvas_height_, - diameter / canvas_width_, - diameter / canvas_height_); + cursor_feedback_.StartAnimation(x, y, diameter); RequestRender(); } @@ -78,7 +72,6 @@ } canvas_width_ = frame->size().width(); canvas_height_ = frame->size().height(); - cursor_.SetCanvasSize(canvas_width_, canvas_height_); } desktop_.SetVideoFrame(std::move(frame)); @@ -104,10 +97,7 @@ void GlRenderer::OnSurfaceChanged(int view_width, int view_height) { DCHECK(thread_checker_.CalledOnValidThread()); - DCHECK(view_width > 0 && view_height > 0); - glViewport(0, 0, view_width, view_height); - view_width_ = view_width; - view_height_ = view_height; + canvas_->SetViewSize(view_width, view_height); RequestRender(); }
diff --git a/remoting/client/gl_renderer.h b/remoting/client/gl_renderer.h index bd81039..b364903 100644 --- a/remoting/client/gl_renderer.h +++ b/remoting/client/gl_renderer.h
@@ -113,8 +113,6 @@ bool render_scheduled_ = false; - int view_width_ = 0; - int view_height_ = 0; int canvas_width_ = 0; int canvas_height_ = 0;
diff --git a/remoting/resources/remoting_strings_kn.xtb b/remoting/resources/remoting_strings_kn.xtb index 54745f6..bb2c046 100644 --- a/remoting/resources/remoting_strings_kn.xtb +++ b/remoting/resources/remoting_strings_kn.xtb
@@ -65,7 +65,7 @@ <translation id="2359808026110333948">ಮುಂದುವರಿಸು</translation> <translation id="2366718077645204424">ಹೋಸ್ಟ್ ಅನ್ನು ತಲುಪಲು ಸಾಧ್ಯವಿಲ್ಲ. ಇದಕ್ಕೆ ಬಹುಶಃ ನೀವು ಬಳಸುತ್ತಿರುವ ಕಾನ್ಫಿಗರೇಶನ್ ನೆಟ್ವರ್ಕ್ ಕಾರಣವಾಗಿರಬಹುದು.</translation> <translation id="2370754117186920852"><ph name="OPTIONAL_OFFLINE_REASON" /> ಆನ್ಲೈನ್ನಲ್ಲಿನ ಕೊನೆಯ ವೀಕ್ಷಣೆ <ph name="RELATIVE_TIMESTAMP" />.</translation> -<translation id="2498359688066513246">ಸಹಾಯ & ಪ್ರತಿಕ್ರಿಯೆ</translation> +<translation id="2498359688066513246">ಸಹಾಯ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ</translation> <translation id="2499160551253595098">ಬಳಕೆಯ ಅಂಕಿಅಂಶಗಳು ಹಾಗೂ ಕ್ರ್ಯಾಶ್ ವರದಿಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಅನುಮತಿ ನೀಡುವ ಮೂಲಕ Chrome ರಿಮೋಟ್ ಡೆಸ್ಕ್ಟಾಪ್ ಸುಧಾರಿಸಲು ನಮಗೆ ಸಹಾಯ ಮಾಡಿ.</translation> <translation id="2512228156274966424">ಗಮನಿಸಿ: ಎಲ್ಲ ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ಗಳು ಲಭ್ಯವಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ‘ವಿಂಡೊ ರೂಪದಲ್ಲಿ ತೆರೆಯಲು’ Chrome ರಿಮೋಟ್ ಡೆಸ್ಕ್ಟಾಪ್ ಅನ್ನು ನೀವು ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು.</translation> <translation id="2540992418118313681">ನಿಯಂತ್ರಣವನ್ನು ವೀಕ್ಷಿಸಲು ನೀವು ಮತ್ತೊಬ್ಬ ಬಳಕೆದಾರರಿಗೆ ಈ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಹಂಚಲು ಬಯಸುತ್ತೀರಾ?</translation> @@ -96,7 +96,7 @@ <translation id="3258789396564295715">ನೀವು Chrome ರಿಮೋಟ್ ಡೆಸ್ಕ್ಟಾಪ್ ಬಳಸಿ ಸುರಕ್ಷಿತವಾಗಿ ಈ ಕಂಪ್ಯೂಟರ್ ಪ್ರವೇಶಿಸಬಹುದು.</translation> <translation id="327263477022142889">Chrome ರಿಮೋಟ್ ಡೆಸ್ಕ್ಟಾಪ್ ಸುಧಾರಣೆಗೆ ಸಹಾಯ ಮಾಡಲು ಬಯಸುತ್ತೀರಾ? <ph name="LINK_BEGIN" />ಸಮೀಕ್ಷೆ ತೆಗೆದುಕೊಳ್ಳಿ.<ph name="LINK_END" /></translation> <translation id="3286521253923406898">ಕ್ರೊಮೋಟಿಂಗ್ ಹೋಸ್ಟ್ ನಿಯಂತ್ರಕ</translation> -<translation id="332624996707057614">ಕಂಪ್ಯೂಟರ್ ಹೆಸರನ್ನು ಸಂಪಾದಿಸಿ</translation> +<translation id="332624996707057614">ಕಂಪ್ಯೂಟರ್ ಹೆಸರನ್ನು ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="3339299787263251426">ಇಂಟರ್ನೆಟ್ನಲ್ಲಿ ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಪ್ರವೇಶಿಸಿ</translation> <translation id="3360306038446926262">Windows</translation> <translation id="3362124771485993931">PIN ಅನ್ನು ಮತ್ತೆ ಟೈಪ್ ಮಾಡಿ</translation> @@ -231,7 +231,7 @@ <translation id="6746493157771801606">ಇತಿಹಾಸವನ್ನು ತೆರವುಗೊಳಿಸಿ</translation> <translation id="6748108480210050150">ಇವರಿಂದ</translation> <translation id="677755392401385740">ಈ ಬಳಕೆದಾರರಿಗಾಗಿ ಹೋಸ್ಟ್ ಪ್ರಾರಂಭಿಸಲಾಗಿದೆ: <ph name="HOST_USERNAME" />.</translation> -<translation id="6865175692670882333">ವೀಕ್ಷಿಸಿ/ಸಂಪಾದಿಸಿ</translation> +<translation id="6865175692670882333">ವೀಕ್ಷಿಸಿ/ಎಡಿಟ್ ಮಾಡಿ</translation> <translation id="6930242544192836755">ಅವಧಿ</translation> <translation id="6939719207673461467">ಕೀಬೋರ್ಡ್ ತೋರಿಸು/ಮರೆಮಾಡು.</translation> <translation id="6944854424004126054">ವಿಂಡೋ ಮರುಸ್ಥಾಪಿಸಿ</translation>
diff --git a/remoting/resources/remoting_strings_ml.xtb b/remoting/resources/remoting_strings_ml.xtb index 53c66b6..421f288 100644 --- a/remoting/resources/remoting_strings_ml.xtb +++ b/remoting/resources/remoting_strings_ml.xtb
@@ -220,7 +220,7 @@ <translation id="6527303717912515753">പങ്കിടുക</translation> <translation id="6541219117979389420">നിങ്ങളുടെ ഐഡന്റിറ്റിയും (ഇമെയിൽ വിലാസം), Google ഡ്രൈവിലെ ഫയലുകളുടെയും ഫോൾഡറുകളുടെയും പേരുകളും പ്രോപ്പർട്ടികളും ഉൾപ്പെടെയുള്ള സ്വകാര്യ വിവരങ്ങൾ അപ്ലിക്കേഷൻ ലോഗുകളിൽ ഉൾപ്പെട്ടിരിക്കാം.</translation> <translation id="6542902059648396432">ഒരു പ്രശ്നം റിപ്പോർട്ടുചെയ്യുക...</translation> -<translation id="6550675742724504774">ഐച്ഛികങ്ങള്</translation> +<translation id="6550675742724504774">ഓപ്ഷനുകൾ</translation> <translation id="6570205395680337606">അപ്ലിക്കേഷൻ പുനഃസജ്ജമാക്കുക. സംരക്ഷിക്കാത്ത വർക്ക് ഉണ്ടെങ്കിൽ അത് നഷ്ടമാകും.</translation> <translation id="6572345186230665992">Mac-ന് വേണ്ടി (OS X Mavericks 10.9-ഉം അതിന് ശേഷമുള്ളതും)</translation> <translation id="6612717000975622067">Ctrl-Alt-Del അയയ്ക്കുക</translation>
diff --git a/remoting/resources/remoting_strings_pl.xtb b/remoting/resources/remoting_strings_pl.xtb index 21d8c50..2124f4d4 100644 --- a/remoting/resources/remoting_strings_pl.xtb +++ b/remoting/resources/remoting_strings_pl.xtb
@@ -62,7 +62,7 @@ <translation id="228809120910082333">Potwierdź poniżej swoje konto i kod PIN, by móc korzystać z funkcji Chromoting.</translation> <translation id="2314101195544969792">Sesja aplikacji <ph name="APPLICATION_NAME" /> jest od jakiegoś czasu nieaktywna i zostanie wkrótce zakończona.</translation> <translation id="2353140552984634198">Możesz bezpiecznie korzystać z tego komputera przez Chromoting.</translation> -<translation id="2359808026110333948">Kontynuuj</translation> +<translation id="2359808026110333948">Dalej</translation> <translation id="2366718077645204424">Nie można połączyć się z hostem. Problem prawdopodobnie wynika z konfiguracji Twojej sieci.</translation> <translation id="2370754117186920852"><ph name="OPTIONAL_OFFLINE_REASON" /> Ostatnio online <ph name="RELATIVE_TIMESTAMP" />.</translation> <translation id="2498359688066513246">Pomoc i opinie</translation>
diff --git a/services/ui/public/cpp/BUILD.gn b/services/ui/public/cpp/BUILD.gn index 001833b..fb975af 100644 --- a/services/ui/public/cpp/BUILD.gn +++ b/services/ui/public/cpp/BUILD.gn
@@ -2,37 +2,19 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +# This is the public target. It contains only the public headers. The +# implementation (and private haders) are in 'internal'. source_set("cpp") { sources = [ "bitmap_uploader.h", "context_provider.h", "gles2_context.h", "input_event_handler.h", - "lib/bitmap_uploader.cc", - "lib/command_buffer_client_impl.cc", - "lib/command_buffer_client_impl.h", - "lib/context_provider.cc", - "lib/gles2_context.cc", - "lib/in_flight_change.cc", - "lib/in_flight_change.h", - "lib/output_surface.cc", - "lib/property_type_converters.cc", - "lib/raster_thread_helper.cc", - "lib/scoped_window_ptr.cc", - "lib/window.cc", - "lib/window_observer.cc", - "lib/window_private.cc", - "lib/window_private.h", - "lib/window_surface.cc", - "lib/window_tree_client.cc", - "lib/window_tree_client_delegate.cc", - "lib/window_tree_host_factory.cc", "output_surface.h", "property_type_converters.h", "raster_thread_helper.h", "scoped_window_ptr.h", "window.h", - "window_manager_delegate.cc", "window_manager_delegate.h", "window_observer.h", "window_property.h", @@ -61,6 +43,8 @@ ] deps = [ + ":internal", + ":internal_or_test", "//gpu/command_buffer/client:gles2_cmd_helper", "//gpu/command_buffer/client:gles2_interface", "//gpu/ipc/client", @@ -76,4 +60,84 @@ ] defines = [ "GL_GLEXT_PROTOTYPES" ] + + allow_circular_includes_from = [ + ":internal", + ":internal_or_test", + ] +} + +# This target is for use internally and by tests. +source_set("internal_or_test") { + visibility = [ + "./*", + "//services/ui/ws:mus_ws_unittests", + ] + + sources = [ + "window_private.h", + ] + + deps = [ + "//base", + "//mojo/public/cpp/bindings", + ] +} + +source_set("internal") { + # This target is an implementation detail and is intended only to be used by + # the 'cpp' target. + visibility = [ ":cpp" ] + + sources = [ + "bitmap_uploader.cc", + "command_buffer_client_impl.cc", + "command_buffer_client_impl.h", + "context_provider.cc", + "gles2_context.cc", + "in_flight_change.cc", + "in_flight_change.h", + "output_surface.cc", + "property_type_converters.cc", + "raster_thread_helper.cc", + "scoped_window_ptr.cc", + "window.cc", + "window_manager_delegate.cc", + "window_observer.cc", + "window_private.cc", + "window_surface.cc", + "window_tree_client.cc", + "window_tree_client_delegate.cc", + "window_tree_host_factory.cc", + ] + + deps = [ + ":internal_or_test", + "//base", + "//cc", + "//cc/surfaces", + "//cc/surfaces:surface_id", + "//gpu/command_buffer/client", + "//gpu/command_buffer/client:gles2_cmd_helper", + "//gpu/command_buffer/client:gles2_implementation", + "//gpu/command_buffer/client:gles2_interface", + "//gpu/command_buffer/common", + "//gpu/ipc/client", + "//mojo/public/cpp/bindings", + "//mojo/public/cpp/system", + "//services/shell/public/cpp", + "//services/shell/public/interfaces", + "//services/ui/common:mus_common", + "//services/ui/public/interfaces", + "//services/ui/public/interfaces", + "//ui/display", + "//ui/events", + "//ui/gfx/geometry", + ] + + data_deps = [ + "//services/ui", + ] + + defines = [ "GL_GLEXT_PROTOTYPES" ] }
diff --git a/services/ui/public/cpp/DEPS b/services/ui/public/cpp/DEPS index 9be0bc0..5f002a1 100644 --- a/services/ui/public/cpp/DEPS +++ b/services/ui/public/cpp/DEPS
@@ -1,3 +1,4 @@ include_rules = [ "+gpu", + "+mojo/gpu" ]
diff --git a/services/ui/public/cpp/lib/bitmap_uploader.cc b/services/ui/public/cpp/bitmap_uploader.cc similarity index 100% rename from services/ui/public/cpp/lib/bitmap_uploader.cc rename to services/ui/public/cpp/bitmap_uploader.cc
diff --git a/services/ui/public/cpp/lib/command_buffer_client_impl.cc b/services/ui/public/cpp/command_buffer_client_impl.cc similarity index 99% rename from services/ui/public/cpp/lib/command_buffer_client_impl.cc rename to services/ui/public/cpp/command_buffer_client_impl.cc index 928d1760..61b3567 100644 --- a/services/ui/public/cpp/lib/command_buffer_client_impl.cc +++ b/services/ui/public/cpp/command_buffer_client_impl.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "services/ui/public/cpp/lib/command_buffer_client_impl.h" +#include "services/ui/public/cpp/command_buffer_client_impl.h" #include <stddef.h> #include <stdint.h>
diff --git a/services/ui/public/cpp/lib/command_buffer_client_impl.h b/services/ui/public/cpp/command_buffer_client_impl.h similarity index 95% rename from services/ui/public/cpp/lib/command_buffer_client_impl.h rename to services/ui/public/cpp/command_buffer_client_impl.h index 18fe179..f07ba275 100644 --- a/services/ui/public/cpp/lib/command_buffer_client_impl.h +++ b/services/ui/public/cpp/command_buffer_client_impl.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef SERVICES_UI_PUBLIC_CPP_LIB_COMMAND_BUFFER_CLIENT_IMPL_H_ -#define SERVICES_UI_PUBLIC_CPP_LIB_COMMAND_BUFFER_CLIENT_IMPL_H_ +#ifndef SERVICES_UI_PUBLIC_CPP_COMMAND_BUFFER_CLIENT_IMPL_H_ +#define SERVICES_UI_PUBLIC_CPP_COMMAND_BUFFER_CLIENT_IMPL_H_ #include <stddef.h> #include <stdint.h> @@ -113,4 +113,4 @@ } // mus -#endif // SERVICES_UI_PUBLIC_CPP_LIB_COMMAND_BUFFER_CLIENT_IMPL_H_ +#endif // SERVICES_UI_PUBLIC_CPP_COMMAND_BUFFER_CLIENT_IMPL_H_
diff --git a/services/ui/public/cpp/lib/context_provider.cc b/services/ui/public/cpp/context_provider.cc similarity index 100% rename from services/ui/public/cpp/lib/context_provider.cc rename to services/ui/public/cpp/context_provider.cc
diff --git a/services/ui/public/cpp/lib/gles2_context.cc b/services/ui/public/cpp/gles2_context.cc similarity index 97% rename from services/ui/public/cpp/lib/gles2_context.cc rename to services/ui/public/cpp/gles2_context.cc index 9338a54..2049dfb 100644 --- a/services/ui/public/cpp/lib/gles2_context.cc +++ b/services/ui/public/cpp/gles2_context.cc
@@ -15,7 +15,7 @@ #include "gpu/ipc/client/command_buffer_proxy_impl.h" #include "mojo/public/cpp/system/core.h" #include "services/ui/common/gpu_service.h" -#include "services/ui/public/cpp/lib/command_buffer_client_impl.h" +#include "services/ui/public/cpp/command_buffer_client_impl.h" #include "services/ui/public/interfaces/command_buffer.mojom.h" #include "services/ui/public/interfaces/gpu_service.mojom.h" #include "url/gurl.h"
diff --git a/services/ui/public/cpp/lib/in_flight_change.cc b/services/ui/public/cpp/in_flight_change.cc similarity index 98% rename from services/ui/public/cpp/lib/in_flight_change.cc rename to services/ui/public/cpp/in_flight_change.cc index e3483a9..aea803e5 100644 --- a/services/ui/public/cpp/lib/in_flight_change.cc +++ b/services/ui/public/cpp/in_flight_change.cc
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "services/ui/public/cpp/lib/in_flight_change.h" +#include "services/ui/public/cpp/in_flight_change.h" -#include "services/ui/public/cpp/lib/window_private.h" +#include "services/ui/public/cpp/window_private.h" #include "services/ui/public/cpp/window_tree_client.h" namespace ui {
diff --git a/services/ui/public/cpp/lib/in_flight_change.h b/services/ui/public/cpp/in_flight_change.h similarity index 98% rename from services/ui/public/cpp/lib/in_flight_change.h rename to services/ui/public/cpp/in_flight_change.h index 93d96724..7981ef2 100644 --- a/services/ui/public/cpp/lib/in_flight_change.h +++ b/services/ui/public/cpp/in_flight_change.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef SERVICES_UI_PUBLIC_CPP_LIB_IN_FLIGHT_CHANGE_H_ -#define SERVICES_UI_PUBLIC_CPP_LIB_IN_FLIGHT_CHANGE_H_ +#ifndef SERVICES_UI_PUBLIC_CPP_IN_FLIGHT_CHANGE_H_ +#define SERVICES_UI_PUBLIC_CPP_IN_FLIGHT_CHANGE_H_ #include <stdint.h> @@ -308,4 +308,4 @@ } // namespace ui -#endif // SERVICES_UI_PUBLIC_CPP_LIB_IN_FLIGHT_CHANGE_H_ +#endif // SERVICES_UI_PUBLIC_CPP_IN_FLIGHT_CHANGE_H_
diff --git a/services/ui/public/cpp/lib/DEPS b/services/ui/public/cpp/lib/DEPS deleted file mode 100644 index c635ea6..0000000 --- a/services/ui/public/cpp/lib/DEPS +++ /dev/null
@@ -1,3 +0,0 @@ -include_rules = [ - "+mojo/gpu" -]
diff --git a/services/ui/public/cpp/lib/OWNERS b/services/ui/public/cpp/lib/OWNERS deleted file mode 100644 index a166098..0000000 --- a/services/ui/public/cpp/lib/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_type_converter*.*=set noparent -per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS
diff --git a/services/ui/public/cpp/lib/output_surface.cc b/services/ui/public/cpp/output_surface.cc similarity index 100% rename from services/ui/public/cpp/lib/output_surface.cc rename to services/ui/public/cpp/output_surface.cc
diff --git a/services/ui/public/cpp/lib/property_type_converters.cc b/services/ui/public/cpp/property_type_converters.cc similarity index 100% rename from services/ui/public/cpp/lib/property_type_converters.cc rename to services/ui/public/cpp/property_type_converters.cc
diff --git a/services/ui/public/cpp/lib/raster_thread_helper.cc b/services/ui/public/cpp/raster_thread_helper.cc similarity index 100% rename from services/ui/public/cpp/lib/raster_thread_helper.cc rename to services/ui/public/cpp/raster_thread_helper.cc
diff --git a/services/ui/public/cpp/lib/scoped_window_ptr.cc b/services/ui/public/cpp/scoped_window_ptr.cc similarity index 100% rename from services/ui/public/cpp/lib/scoped_window_ptr.cc rename to services/ui/public/cpp/scoped_window_ptr.cc
diff --git a/services/ui/public/cpp/tests/BUILD.gn b/services/ui/public/cpp/tests/BUILD.gn index 66ffa3e..9467ffa5 100644 --- a/services/ui/public/cpp/tests/BUILD.gn +++ b/services/ui/public/cpp/tests/BUILD.gn
@@ -21,6 +21,7 @@ deps = [ "//base", "//services/ui/public/cpp", + "//services/ui/public/cpp:internal_or_test", "//testing/gtest", "//ui/display", "//ui/gfx/geometry/mojo", @@ -69,6 +70,7 @@ "//services/shell/public/cpp", "//services/ui/common:mus_common", "//services/ui/public/cpp", + "//services/ui/public/cpp:internal_or_test", "//testing/gtest", "//ui/events", "//ui/gfx:test_support",
diff --git a/services/ui/public/cpp/tests/test_window.h b/services/ui/public/cpp/tests/test_window.h index af7cacb..dd9bbc2 100644 --- a/services/ui/public/cpp/tests/test_window.h +++ b/services/ui/public/cpp/tests/test_window.h
@@ -6,8 +6,8 @@ #define SERVICES_UI_PUBLIC_CPP_TESTS_TEST_WINDOW_H_ #include "base/macros.h" -#include "services/ui/public/cpp/lib/window_private.h" #include "services/ui/public/cpp/window.h" +#include "services/ui/public/cpp/window_private.h" namespace ui {
diff --git a/services/ui/public/cpp/tests/window_tree_client_unittest.cc b/services/ui/public/cpp/tests/window_tree_client_unittest.cc index 5766f754..2046c3b 100644 --- a/services/ui/public/cpp/tests/window_tree_client_unittest.cc +++ b/services/ui/public/cpp/tests/window_tree_client_unittest.cc
@@ -11,13 +11,13 @@ #include "mojo/common/common_type_converters.h" #include "services/ui/common/util.h" #include "services/ui/public/cpp/input_event_handler.h" -#include "services/ui/public/cpp/lib/window_private.h" #include "services/ui/public/cpp/property_type_converters.h" #include "services/ui/public/cpp/tests/test_window.h" #include "services/ui/public/cpp/tests/test_window_tree.h" #include "services/ui/public/cpp/tests/window_tree_client_private.h" #include "services/ui/public/cpp/window.h" #include "services/ui/public/cpp/window_observer.h" +#include "services/ui/public/cpp/window_private.h" #include "services/ui/public/cpp/window_property.h" #include "services/ui/public/cpp/window_tracker.h" #include "services/ui/public/cpp/window_tree_client_delegate.h"
diff --git a/services/ui/public/cpp/tests/window_unittest.cc b/services/ui/public/cpp/tests/window_unittest.cc index a1c09d6..59b7372 100644 --- a/services/ui/public/cpp/tests/window_unittest.cc +++ b/services/ui/public/cpp/tests/window_unittest.cc
@@ -12,10 +12,10 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "services/ui/common/util.h" -#include "services/ui/public/cpp/lib/window_private.h" #include "services/ui/public/cpp/property_type_converters.h" #include "services/ui/public/cpp/tests/test_window.h" #include "services/ui/public/cpp/window_observer.h" +#include "services/ui/public/cpp/window_private.h" #include "services/ui/public/cpp/window_property.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/geometry/rect.h"
diff --git a/services/ui/public/cpp/lib/window.cc b/services/ui/public/cpp/window.cc similarity index 99% rename from services/ui/public/cpp/lib/window.cc rename to services/ui/public/cpp/window.cc index c58a247c..f7d32f7 100644 --- a/services/ui/public/cpp/lib/window.cc +++ b/services/ui/public/cpp/window.cc
@@ -13,9 +13,9 @@ #include "base/bind.h" #include "base/macros.h" #include "services/ui/common/transient_window_utils.h" -#include "services/ui/public/cpp/lib/window_private.h" #include "services/ui/public/cpp/property_type_converters.h" #include "services/ui/public/cpp/window_observer.h" +#include "services/ui/public/cpp/window_private.h" #include "services/ui/public/cpp/window_property.h" #include "services/ui/public/cpp/window_surface.h" #include "services/ui/public/cpp/window_tracker.h"
diff --git a/services/ui/public/cpp/lib/window_observer.cc b/services/ui/public/cpp/window_observer.cc similarity index 100% rename from services/ui/public/cpp/lib/window_observer.cc rename to services/ui/public/cpp/window_observer.cc
diff --git a/services/ui/public/cpp/lib/window_private.cc b/services/ui/public/cpp/window_private.cc similarity index 93% rename from services/ui/public/cpp/lib/window_private.cc rename to services/ui/public/cpp/window_private.cc index b0f7ab4..1b74641 100644 --- a/services/ui/public/cpp/lib/window_private.cc +++ b/services/ui/public/cpp/window_private.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "services/ui/public/cpp/lib/window_private.h" +#include "services/ui/public/cpp/window_private.h" namespace ui {
diff --git a/services/ui/public/cpp/lib/window_private.h b/services/ui/public/cpp/window_private.h similarity index 94% rename from services/ui/public/cpp/lib/window_private.h rename to services/ui/public/cpp/window_private.h index b30c75d..b875b8b 100644 --- a/services/ui/public/cpp/lib/window_private.h +++ b/services/ui/public/cpp/window_private.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef SERVICES_UI_PUBLIC_CPP_LIB_WINDOW_PRIVATE_H_ -#define SERVICES_UI_PUBLIC_CPP_LIB_WINDOW_PRIVATE_H_ +#ifndef SERVICES_UI_PUBLIC_CPP_WINDOW_PRIVATE_H_ +#define SERVICES_UI_PUBLIC_CPP_WINDOW_PRIVATE_H_ #include <stdint.h> @@ -97,4 +97,4 @@ } // namespace ui -#endif // SERVICES_UI_PUBLIC_CPP_LIB_WINDOW_PRIVATE_H_ +#endif // SERVICES_UI_PUBLIC_CPP_WINDOW_PRIVATE_H_
diff --git a/services/ui/public/cpp/lib/window_surface.cc b/services/ui/public/cpp/window_surface.cc similarity index 100% rename from services/ui/public/cpp/lib/window_surface.cc rename to services/ui/public/cpp/window_surface.cc
diff --git a/services/ui/public/cpp/lib/window_tree_client.cc b/services/ui/public/cpp/window_tree_client.cc similarity index 99% rename from services/ui/public/cpp/lib/window_tree_client.cc rename to services/ui/public/cpp/window_tree_client.cc index 1cfdf74..dea50b4 100644 --- a/services/ui/public/cpp/lib/window_tree_client.cc +++ b/services/ui/public/cpp/window_tree_client.cc
@@ -14,11 +14,11 @@ #include "base/memory/ptr_util.h" #include "services/shell/public/cpp/connector.h" #include "services/ui/common/util.h" +#include "services/ui/public/cpp/in_flight_change.h" #include "services/ui/public/cpp/input_event_handler.h" -#include "services/ui/public/cpp/lib/in_flight_change.h" -#include "services/ui/public/cpp/lib/window_private.h" #include "services/ui/public/cpp/window_manager_delegate.h" #include "services/ui/public/cpp/window_observer.h" +#include "services/ui/public/cpp/window_private.h" #include "services/ui/public/cpp/window_tracker.h" #include "services/ui/public/cpp/window_tree_client_delegate.h" #include "services/ui/public/cpp/window_tree_client_observer.h"
diff --git a/services/ui/public/cpp/lib/window_tree_client_delegate.cc b/services/ui/public/cpp/window_tree_client_delegate.cc similarity index 100% rename from services/ui/public/cpp/lib/window_tree_client_delegate.cc rename to services/ui/public/cpp/window_tree_client_delegate.cc
diff --git a/services/ui/public/cpp/lib/window_tree_host_factory.cc b/services/ui/public/cpp/window_tree_host_factory.cc similarity index 100% rename from services/ui/public/cpp/lib/window_tree_host_factory.cc rename to services/ui/public/cpp/window_tree_host_factory.cc
diff --git a/services/ui/ws/BUILD.gn b/services/ui/ws/BUILD.gn index 9345f79a..c90977d 100644 --- a/services/ui/ws/BUILD.gn +++ b/services/ui/ws/BUILD.gn
@@ -221,6 +221,7 @@ "//services/shell/public/interfaces", "//services/ui/common:mus_common", "//services/ui/public/cpp", + "//services/ui/public/cpp:internal_or_test", "//services/ui/public/cpp/tests:test_support", "//services/ui/public/interfaces", "//services/ui/surfaces",
diff --git a/services/ui/ws/window_manager_client_unittest.cc b/services/ui/ws/window_manager_client_unittest.cc index f91f761a..d5ba144 100644 --- a/services/ui/ws/window_manager_client_unittest.cc +++ b/services/ui/ws/window_manager_client_unittest.cc
@@ -10,9 +10,9 @@ #include "base/macros.h" #include "base/run_loop.h" #include "services/ui/common/util.h" -#include "services/ui/public/cpp/lib/window_private.h" #include "services/ui/public/cpp/tests/window_server_test_base.h" #include "services/ui/public/cpp/window_observer.h" +#include "services/ui/public/cpp/window_private.h" #include "services/ui/public/cpp/window_tree_client.h" #include "services/ui/public/cpp/window_tree_client_delegate.h" #include "services/ui/public/cpp/window_tree_client_observer.h"
diff --git a/storage/browser/fileapi/obfuscated_file_util.cc b/storage/browser/fileapi/obfuscated_file_util.cc index 009ba440..fa151ac 100644 --- a/storage/browser/fileapi/obfuscated_file_util.cc +++ b/storage/browser/fileapi/obfuscated_file_util.cc
@@ -110,7 +110,7 @@ } // namespace -class ObfuscatedFileEnumerator +class ObfuscatedFileEnumerator final : public FileSystemFileUtil::AbstractFileEnumerator { public: ObfuscatedFileEnumerator( @@ -138,21 +138,21 @@ ~ObfuscatedFileEnumerator() override {} base::FilePath Next() override { - ProcessRecurseQueue(); - if (display_stack_.empty()) - return base::FilePath(); - - current_file_id_ = display_stack_.back(); - display_stack_.pop_back(); - FileInfo file_info; - base::FilePath platform_file_path; - base::File::Error error = - obfuscated_file_util_->GetFileInfoInternal( - db_, context_, root_url_, current_file_id_, - &file_info, ¤t_platform_file_info_, &platform_file_path); - if (error != base::File::FILE_OK) - return Next(); + base::File::Error error; + do { + ProcessRecurseQueue(); + if (display_stack_.empty()) + return base::FilePath(); + + current_file_id_ = display_stack_.back(); + display_stack_.pop_back(); + + base::FilePath platform_file_path; + error = obfuscated_file_util_->GetFileInfoInternal( + db_, context_, root_url_, current_file_id_, + &file_info, ¤t_platform_file_info_, &platform_file_path); + } while (error != base::File::FILE_OK); base::FilePath virtual_path = current_parent_virtual_path_.Append(file_info.name);
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 39315eb4..585c879 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -1996,7 +1996,7 @@ } ] }, - "ClangToTAndroidASan tester": { + "ClangToTAndroidASan": { "junit_tests": [ { "test": "base_junit_tests" @@ -3724,12 +3724,6 @@ }, "test": "wtf_unittests" } - ], - "scripts": [ - { - "name": "nacl_integration", - "script": "nacl_integration.py" - } ] }, "ClangToTWin tester": {
diff --git a/testing/buildbot/filters/browser-side-navigation.linux.content_browsertests.filter b/testing/buildbot/filters/browser-side-navigation.linux.content_browsertests.filter index 9b0f10b3..c1c5de1 100644 --- a/testing/buildbot/filters/browser-side-navigation.linux.content_browsertests.filter +++ b/testing/buildbot/filters/browser-side-navigation.linux.content_browsertests.filter
@@ -9,5 +9,4 @@ -RenderFrameHostManagerTest.RestoreSubframeFileAccessForHistoryNavigation -RequestDataResourceDispatcherHostBrowserTest.* -ServiceWorker* --SitePerProcessIgnoreCertErrorsBrowserTest.CrossSiteRedirectCertificateStore --SitePerProcessIgnoreCertErrorsBrowserTest.SubresourceWithRedundantCertificateErrors \ No newline at end of file +-SitePerProcessIgnoreCertErrorsBrowserTest.CrossSiteRedirectCertificateStore \ No newline at end of file
diff --git a/testing/iossim/iossim.mm b/testing/iossim/iossim.mm index 04b7017..f1f0ca86 100644 --- a/testing/iossim/iossim.mm +++ b/testing/iossim/iossim.mm
@@ -84,10 +84,6 @@ [_task setStandardError:error]; } -- (void)runWithoutWait { - [_task launch]; -} - - (void)run { [_task launch]; [_task waitUntilExit]; @@ -208,11 +204,11 @@ [task run]; } -int RunApplication(NSString* app_path, - NSString* xctest_path, - NSString* udid, - NSMutableDictionary* app_env, - NSString* cmd_args) { +void RunApplication(NSString* app_path, + NSString* xctest_path, + NSString* udid, + NSMutableDictionary* app_env, + NSString* cmd_args) { NSString* tempFilePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[[NSUUID UUID] UUIDString]]; [[NSFileManager defaultManager] createFileAtPath:tempFilePath @@ -257,39 +253,6 @@ format:NSPropertyListXMLFormat_v1_0 errorDescription:&error]; [data writeToFile:tempFilePath atomically:YES]; - - // Tail the simulator system.log to grab the exit code. - NSString* path = [NSString - stringWithFormat:@"~/Library/Logs/CoreSimulator/%@/system.log", udid]; - path = ResolvePath(path); - XCRunTask* retcode_task = [[[XCRunTask alloc] - initWithArguments:@[ @"tail", @"-n0", @"-f", path ]] autorelease]; - NSPipe* stdout_pipe = [NSPipe pipe]; - __block int ret_code = kExitSuccess; - NSError* regerror = NULL; - NSString* pattern = @"com\\.apple\\.CoreSimulator\\.SimDevice.*Service " - @"exited .*\\: (\\d+)"; - NSRegularExpression* regex = - [NSRegularExpression regularExpressionWithPattern:pattern - options:0 - error:®error]; - stdout_pipe.fileHandleForReading.readabilityHandler = - ^(NSFileHandle* handle) { - NSString* log = - [[[NSString alloc] initWithData:handle.availableData - encoding:NSUTF8StringEncoding] autorelease]; - NSArray* matches = [regex matchesInString:log - options:0 - range:NSMakeRange(0, [log length])]; - for (NSTextCheckingResult* match in matches) { - NSRange matchRange = [match rangeAtIndex:1]; - NSString* matchText = [log substringWithRange:matchRange]; - ret_code = [matchText intValue]; - } - }; - [retcode_task setStandardOutput:stdout_pipe]; - [retcode_task runWithoutWait]; - XCRunTask* task = [[[XCRunTask alloc] initWithArguments:@[ @"xcodebuild", @"-xctestrun", tempFilePath, @"-destination", [@"platform=iOS Simulator,id=" stringByAppendingString:udid], @@ -318,14 +281,9 @@ [task setStandardError:stderr_pipe]; } [task run]; - // Sleep 2 seconds to give |retcode_task| a moment to catch any crash logs. - [NSThread sleepForTimeInterval:2]; - return ret_code; } int main(int argc, char* const argv[]) { - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - NSString* app_path = nil; NSString* xctest_path = nil; NSString* cmd_args = nil; @@ -435,10 +393,9 @@ exit(kExitInvalidArguments); } - int ret_code = RunApplication(app_path, xctest_path, udid, app_env, cmd_args); + RunApplication(app_path, xctest_path, udid, app_env, cmd_args); KillSimulator(); - [pool drain]; - return ret_code; + return kExitSuccess; } #else #import <Appkit/Appkit.h>
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index 3a8c0941..bd08ccede 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -53,8 +53,6 @@ crbug.com/593514 virtual/gpu/fast/canvas/OffscreenCanvas-transform-shadow-in-worker.html [ Failure ] crbug.com/593514 virtual/gpu/fast/canvas/OffscreenCanvas-2d-gradients-in-worker.html [ Failure ] crbug.com/593514 virtual/gpu/fast/canvas/OffscreenCanvas-2d-drawImage-in-worker.html [ Failure ] -crbug.com/593514 virtual/gpu/fast/canvas/OffscreenCanvas-2d-drawImage.html [ Failure ] -crbug.com/593514 virtual/gpu/fast/canvas/OffscreenCanvas-2d-imageSmoothing.html [ Failure ] crbug.com/593514 virtual/gpu/fast/canvas/OffscreenCanvas-2d-imageSmoothing-in-worker.html [ Failure ] crbug.com/417782 [ Linux Win ] virtual/rootlayerscrolls/fast/scrolling/fractional-scroll-offset-fixed-position-non-composited.html [ Failure ] @@ -1224,7 +1222,9 @@ crbug.com/594672 fast/events/scale-and-scroll-iframe-body.html [ Failure Pass ] crbug.com/594672 fast/events/updateLayoutForHitTest.html [ Failure Pass ] crbug.com/594672 fast/events/scale-and-scroll-iframe-window.html [ Failure Pass ] - +crbug.com/67848 fast/forms/search/search-rtl.html [ NeedsRebaseline ] +crbug.com/67848 fast/forms/placeholder-position.html [ NeedsRebaseline ] +crbug.com/67848 fast/css/text-overflow-input.html [ NeedsRebaseline ] crbug.com/603728 [ Linux ] virtual/gpu-rasterization/fast/images/color-profile-filter.html [ Failure Timeout Pass ] crbug.com/593568 [ Win Debug ] virtual/threaded/fast/scroll-behavior/smooth-scroll/horizontal-smooth-scroll-in-rtl.html [ Failure ] @@ -1345,17 +1345,6 @@ crbug.com/627782 [ Win ] svg/filters/filter-source-position.svg [ Pass Failure ] -crbug.com/627798 editing/spelling/inline-spelling-markers-hidpi-composited.html [ Pass Failure ] -crbug.com/627798 fast/repaint/line-flow-with-floats-9.html [ Pass Failure ] -crbug.com/627798 fast/repaint/nested-fixed-iframe-scrolled.html [ Pass Failure ] -crbug.com/627798 fast/repaint/repaint-during-scroll-with-zoom.html [ Pass Failure ] -crbug.com/627798 fast/repaint/resize-scrollable-iframe.html [ Pass Failure ] -crbug.com/627798 fast/repaint/text-match-document-change.html [ Pass Failure ] -crbug.com/627798 fast/forms/fieldset/fieldset-align.html [ Pass Failure ] -crbug.com/627798 fast/forms/select/listbox-clip.html [ Pass Failure ] -crbug.com/627798 fast/block/positioning/auto/007.html [ Pass Failure ] -crbug.com/627798 compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html [ Pass Failure ] - # Very slight rendering changes caused by Skia rect clipping change. crbug.com/627844 virtual/gpu/fast/canvas/canvas-createImageBitmap-colorClamping.html [ Pass Failure ] @@ -1388,5 +1377,3 @@ crbug.com/490015 virtual/stable/http/tests/navigation/beacon-blob-with-non-simple-type.html [ Skip ] # This test fails with the stable release mode. crbug.com/490015 virtual/stable/http/tests/navigation/same-and-different-back.html [ Skip ] - -crbug.com/634685 compositing/overflow/scroll-ancestor-update.html [ Pass Failure ]
diff --git a/third_party/WebKit/LayoutTests/accessibility/heading-level-expected.txt b/third_party/WebKit/LayoutTests/accessibility/heading-level-expected.txt index 2cb6deb2..16cebea 100644 --- a/third_party/WebKit/LayoutTests/accessibility/heading-level-expected.txt +++ b/third_party/WebKit/LayoutTests/accessibility/heading-level-expected.txt
@@ -21,6 +21,8 @@ PASS: level is 4. PASS: level is 5. PASS: level is 6. +PASS: level is 1. +PASS: level is 1. PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/accessibility/heading-level.html b/third_party/WebKit/LayoutTests/accessibility/heading-level.html index 7566eaa..96ba59f 100644 --- a/third_party/WebKit/LayoutTests/accessibility/heading-level.html +++ b/third_party/WebKit/LayoutTests/accessibility/heading-level.html
@@ -38,6 +38,10 @@ <div class="ex" role="heading" data-expected="5" aria-level="5">X</div> <div class="ex" role="heading" data-expected="6" aria-level="6">X</div> +<!-- A level that is specified either as 0 or as a ntegative number,should be set to 1. --> +<div class="ex" role="heading" data-expected="1" aria-level="0">X</div> +<div class="ex" role="heading" data-expected="1" aria-level="-1">X</div> + <!-- todo: h1 elements nested in section elements should inherit nested level. --> <div id="console"></div>
diff --git a/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg-expected.html b/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg-expected.html index 633f22ab..ea4d2e4 100644 --- a/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg-expected.html
@@ -20,7 +20,7 @@ testRunner.dumpAsTextWithPixelResults(); if (window.internals) { - window.internals.settings.setAccelerated2dCanvasEnabled(true); + window.internals.runtimeFlags.accelerated2dCanvasEnabled = true; } function doTest() {
diff --git a/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg.html b/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg.html index fc9aad51..be5303b 100644 --- a/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg.html +++ b/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg.html
@@ -21,7 +21,7 @@ if (window.internals) { window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.settings.setAccelerated2dCanvasEnabled(true); + window.internals.runtimeFlags.accelerated2dCanvasEnabled = true; } function doTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-all.html b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-all.html index 01869706..6b6c89c1 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-all.html +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-all.html
@@ -22,7 +22,7 @@ <canvas id="theCanvas" width="257" height="257"></canvas> <script> if (window.internals) { - internals.settings.setAccelerated2dCanvasEnabled(true); + internals.runtimeFlags.accelerated2dCanvasEnabled = true; } var context = theCanvas.getContext('2d'); context.fillStyle = 'green';
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-border.html b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-border.html index 1b971a50..2ef5fac 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-border.html +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-border.html
@@ -19,7 +19,7 @@ <canvas id="theCanvas" width="257" height="257"></canvas> <script> if (window.internals) { - internals.settings.setAccelerated2dCanvasEnabled(true); + internals.runtimeFlags.accelerated2dCanvasEnabled = true; } var context = theCanvas.getContext('2d'); context.fillStyle = 'green';
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-padding.html b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-padding.html index 9940a6a..e591b5e 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-padding.html +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-padding.html
@@ -18,7 +18,7 @@ <canvas id="theCanvas" width="257" height="257"></canvas> <script> if (window.internals) { - internals.settings.setAccelerated2dCanvasEnabled(true); + internals.runtimeFlags.accelerated2dCanvasEnabled = true; } var context = theCanvas.getContext('2d'); context.fillStyle = 'green';
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-with-mask.html b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-with-mask.html index 9d968cc..487728f 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-with-mask.html +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-with-mask.html
@@ -21,7 +21,7 @@ <canvas id="theCanvas" width="257" height="257"></canvas> <script> if (window.internals) { - internals.settings.setAccelerated2dCanvasEnabled(true); + internals.runtimeFlags.accelerated2dCanvasEnabled = true; } var context = theCanvas.getContext('2d'); context.fillStyle = 'green';
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-with-shadow.html b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-with-shadow.html index bf368f0..ab5c0e4e 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-with-shadow.html +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas-with-shadow.html
@@ -21,11 +21,11 @@ <canvas id="theCanvas" width="257" height="257"></canvas> <script> if (window.internals) { - internals.settings.setAccelerated2dCanvasEnabled(true); + internals.runtimeFlags.accelerated2dCanvasEnabled = true; } var context = theCanvas.getContext('2d'); context.fillStyle = 'green'; - context.fillRect(0, 0, theCanvas.width, theCanvas.width); + context.fillRect(0, 0, theCanvas.width, theCanvas.width); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas.html b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas.html index 2d77866d..25fe1869 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas.html +++ b/third_party/WebKit/LayoutTests/fast/borders/border-radius-mask-canvas.html
@@ -17,7 +17,7 @@ <canvas id="theCanvas" width="257" height="257"></canvas> <script> if (window.internals) { - internals.settings.setAccelerated2dCanvasEnabled(true); + internals.runtimeFlags.accelerated2dCanvasEnabled = true; } var context = theCanvas.getContext('2d'); context.fillStyle = 'green';
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-filter.html b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-filter.html new file mode 100644 index 0000000..68eda3e4 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/canvas/OffscreenCanvas-2d-filter.html
@@ -0,0 +1,101 @@ +<!DOCTYPE HTML> +<svg style="display: block; width: 0; height: 0"> + <defs> + <filter id="merge-clean"> + <feColorMatrix type="matrix" values="0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1" /> + <feMerge> + <feMergeNode></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + <feMergeNode in="SourceAlpha"></feMergeNode> + <feMergeNode in="FillPaint"></feMergeNode> + <feMergeNode in="StrokePaint"></feMergeNode> + </feMerge> + </filter> + <circle id="circle" r="100" fill="blue" /> + </defs> +</svg><script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +<script> +function testFilterValue(ctx) +{ + // testing filter value + assert_equals(ctx.filter, 'none'); + ctx.filter = 'blur(5px)'; + assert_equals(ctx.filter, 'blur(5px)'); + + ctx.save(); + ctx.filter = 'none'; + assert_equals(ctx.filter, 'none'); + ctx.restore(); + assert_equals(ctx.filter, 'blur(5px)'); + + // Invalid filter should be ignored + ctx.filter = 'blur(10)'; + assert_equals(ctx.filter, 'blur(5px)'); + + // verify that exact string is preserved + ctx.filter = 'blur( 5px)'; + assert_equals(ctx.filter, 'blur( 5px)'); +}; + +function testFilterFillPaintColor(ctx) +{ + ctx.filter = 'drop-shadow(0px 10px black)'; + ctx.fillStyle = '#0f0'; + ctx.fillRect(25, 25, 50, 50); + + // the color of pixel (50, 50) must be #0f0 + var colorData = ctx.getImageData(50, 50, 1, 1).data; + assert_equals(colorData[0], 0); + assert_equals(colorData[1], 255); + assert_equals(colorData[2], 0); + assert_equals(colorData[3], 255); + + // the color of pixel (60, 80) must be black + colorData = ctx.getImageData(60, 80, 1, 1).data; + assert_equals(colorData[0], 0); + assert_equals(colorData[1], 0); + assert_equals(colorData[2], 0); + assert_equals(colorData[3], 0); +} + +function testCSSShorthandFilter(ctx) +{ + ctx.filter = 'hue-rotate(45deg) drop-shadow(16px 16px blue)'; + ctx.fillStyle = '#f00'; + ctx.fillRect(15, 15, 50, 50); + var colorData = ctx.getImageData(60, 60, 1, 1).data; + assert_equals(colorData[0], 255); + assert_equals(colorData[1], 0); + assert_equals(colorData[2], 0); + assert_equals(colorData[3], 255); + var colorData2 = ctx.getImageData(70, 70, 1, 1).data; + assert_equals(colorData2[0], 0); + assert_equals(colorData2[1], 255); + assert_equals(colorData2[2], 0); + assert_equals(colorData2[3], 255); +} + +function testWhitelistedSVGFilterNontaintness(ctx) +{ + ctx.fillStyle = '#00f'; + ctx.fillRect(15, 15, 50, 50); + ctx.filter = 'blur(5px) url(#merge-clean) blur(5px)'; + var colorData = ctx.getImageData(25, 25, 1, 1).data; + assert_equals(colorData[0], 0); + assert_equals(colorData[1], 0); + assert_equals(colorData[2], 255); + assert_equals(colorData[3], 255); +} + +test(function() { + var ocanvas = new OffscreenCanvas(100, 100); + var ctx = ocanvas.getContext('2d'); + + testFilterValue(ctx); + testFilterFillPaintColor(ctx); + testCSSShorthandFilter(ctx); + testWhitelistedSVGFilterNontaintness(ctx); +}, 'testFilter should not return any error'); +</script> +
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-out-of-bounds-src.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-out-of-bounds-src.html index e2afad9..85173363 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-out-of-bounds-src.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-drawImage-out-of-bounds-src.html
@@ -36,17 +36,15 @@ ctx1.drawImage(bgcanvas, 0, 0, 100, 200, 75, 175, 100, 100); ctx1.drawImage(bgcanvas, 0, 0, 200, 200, 175, 175, 100, 100); -img.onload = function() { - ctx2.drawImage(img, -100, -100, 300, 300, -25, -25, 300, 300); - ctx2.drawImage(img, -100, -100, 200, 200, -25, -25, 100, 100); - ctx2.drawImage(img, 0, -100, 100, 200, 75, -25, 100, 100); - ctx2.drawImage(img, 0, -100, 200, 200, 175, -25, 100, 100); - ctx2.drawImage(img, -100, 0, 200, 100, -25, 75, 100, 100); - ctx2.drawImage(img, 0, 0, 200, 100, 175, 75, 100, 100); - ctx2.drawImage(img, -100, 0, 200, 200, -25, 175, 100, 100); - ctx2.drawImage(img, 0, 0, 100, 200, 75, 175, 100, 100); - ctx2.drawImage(img, 0, 0, 200, 200, 175, 175, 100, 100); -} +ctx2.drawImage(img, -100, -100, 300, 300, -25, -25, 300, 300); +ctx2.drawImage(img, -100, -100, 200, 200, -25, -25, 100, 100); +ctx2.drawImage(img, 0, -100, 100, 200, 75, -25, 100, 100); +ctx2.drawImage(img, 0, -100, 200, 200, 175, -25, 100, 100); +ctx2.drawImage(img, -100, 0, 200, 100, -25, 75, 100, 100); +ctx2.drawImage(img, 0, 0, 200, 100, 175, 75, 100, 100); +ctx2.drawImage(img, -100, 0, 200, 200, -25, 175, 100, 100); +ctx2.drawImage(img, 0, 0, 100, 200, 75, 175, 100, 100); +ctx2.drawImage(img, 0, 0, 200, 200, 175, 175, 100, 100); if (window.testRunner) { testRunner.waitUntilDone(); @@ -98,4 +96,4 @@ } </script> -</body></html> +</body></html> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/css/invalidation/first-last-only-child.html b/third_party/WebKit/LayoutTests/fast/css/invalidation/first-last-only-child.html new file mode 100644 index 0000000..6addd87 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/css/invalidation/first-last-only-child.html
@@ -0,0 +1,168 @@ +<!DOCTYPE html> +<script src="../../../resources/testharness.js"></script> +<script src="../../../resources/testharnessreport.js"></script> +<style> + #first_child:first-child, + #first_child:first-child #first_child_inner, + #last_child:last-child, + #last_child:last-child #last_child_inner, + #only_child:only-child, + #only_child:only-child #only_child_inner { + background-color: green + } + + span:first-child { + color: green; + } +</style> +<div> + <div id="first_child"> + <div></div> + <div></div> + <div id="first_child_inner"></div> + <div></div> + </div> +</div> +<div> + <div id="last_child"> + <div></div> + <div></div> + <div id="last_child_inner"></div> + <div></div> + </div> +</div> +<div> + <div id="only_child"> + <div></div> + <div></div> + <div id="only_child_inner"></div> + <div></div> + </div> +</div> + +<div> + <span></span> + XXX + <span id="after_text_node"></span> +</div> + +<script> + function backgroundIsGreen(element) { + assert_equals(getComputedStyle(element).backgroundColor, "rgb(0, 128, 0)"); + } + + function backgroundIsTransparent(element) { + assert_equals(getComputedStyle(element).backgroundColor, "rgba(0, 0, 0, 0)"); + } + + test(() => { + backgroundIsGreen(first_child); + backgroundIsGreen(first_child_inner); + backgroundIsGreen(last_child); + backgroundIsGreen(last_child_inner); + backgroundIsGreen(only_child); + backgroundIsGreen(only_child_inner); + }, "Check initial computed styles"); + + var div = document.createElement("div"); + + test(() => { + first_child.offsetTop; + first_child.parentNode.insertBefore(div, first_child); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 3); + backgroundIsTransparent(first_child); + backgroundIsTransparent(first_child_inner); + }, "Insert element before first child."); + + test(() => { + first_child.offsetTop; + div.remove(); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 2); + backgroundIsGreen(first_child); + backgroundIsGreen(first_child_inner); + }, "Remove first child."); + + test(() => { + last_child.offsetTop; + last_child.parentNode.insertBefore(div, null); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 3); + backgroundIsTransparent(last_child); + backgroundIsTransparent(last_child_inner); + }, "Insert element before after last child."); + + test(() => { + last_child.offsetTop; + div.remove(); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 2); + backgroundIsGreen(last_child); + backgroundIsGreen(last_child_inner); + }, "Remove last child."); + + test(() => { + only_child.offsetTop; + only_child.parentNode.insertBefore(div, only_child); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 3); + backgroundIsTransparent(only_child); + backgroundIsTransparent(only_child_inner); + }, "Insert element before only child."); + + test(() => { + only_child.offsetTop; + div.remove(); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 2); + backgroundIsGreen(only_child); + backgroundIsGreen(only_child_inner); + }, "Remove element before only child."); + + test(() => { + only_child.offsetTop; + only_child.parentNode.insertBefore(div, null); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 3); + backgroundIsTransparent(only_child); + backgroundIsTransparent(only_child_inner); + }, "Insert element after only child."); + + test(() => { + only_child.offsetTop; + div.remove(); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 2); + backgroundIsGreen(only_child); + backgroundIsGreen(only_child_inner); + }, "Remove element after only child."); + + test(() => { + first_child.offsetTop; + first_child.parentNode.insertBefore(div, null); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 1); + div.remove(); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 0); + }, "No first-child mutation."); + + test(() => { + last_child.offsetTop; + last_child.parentNode.insertBefore(div, last_child); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 1); + div.remove(); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 0); + }, "No last-child mutation."); + + test(() => { + document.body.offsetTop; + after_text_node.parentNode.insertBefore(div, after_text_node); + if (window.internals) + assert_equals(internals.updateStyleAndReturnAffectedElementCount(), 1); + }, "Inserting sibling before text-node should not update for :first-child if text-node has element predecessor."); + +</script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-async-loading-data-uris.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-async-loading-data-uris.html deleted file mode 100644 index 458b84930b..0000000 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-async-loading-data-uris.html +++ /dev/null
@@ -1,10 +0,0 @@ -<!DOCTYPE html> -<script src="../../../resources/testharness.js"></script> -<script src="../../../resources/testharnessreport.js"></script> -<script> - test(function() { - var img = new Image(); - img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="; - assert_equals(img.width, 0); - }, "Test that a data URI resource doesn't get loaded synchronously"); -</script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/pointerevents/mouse-pointer-capture-expected.txt b/third_party/WebKit/LayoutTests/fast/events/pointerevents/mouse-pointer-capture-expected.txt index 292eb3a1..d60b3a88 100644 --- a/third_party/WebKit/LayoutTests/fast/events/pointerevents/mouse-pointer-capture-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/pointerevents/mouse-pointer-capture-expected.txt
@@ -18,6 +18,7 @@ green received mousedown green received gotpointercapture green received pointermove +Capture pointer event attributes are correct! green received mousemove **** Move to grey box & jiggle ***** green received pointermove @@ -39,6 +40,7 @@ green received pointerup green received mouseup green received lostpointercapture +Capture pointer event attributes are correct! **** Jiggle in blue box ***** green received pointerout green received pointerleave @@ -73,6 +75,7 @@ green received mousedown green received gotpointercapture green received pointermove +Capture pointer event attributes are correct! green received mousemove **** Move to grey box & jiggle ***** green received pointermove @@ -83,9 +86,10 @@ green received pointermove green received mousemove **** Release the mouse outside of the page & move back to blue box **** -green received pointermove -green received mousemove green received lostpointercapture +green received pointermove +Capture pointer event attributes are correct! +green received mousemove green received pointerout green received pointerleave grey received pointerleave @@ -119,6 +123,7 @@ green received mousedown green received gotpointercapture green received pointermove +Capture pointer event attributes are correct! green received mousemove **** Move to grey box & jiggle ***** green received pointermove @@ -131,6 +136,7 @@ green received mousemove green received lostpointercapture green received pointermove +Capture pointer event attributes are correct! green received mousemove green received pointerout green received pointerleave @@ -195,6 +201,7 @@ green received mousedown green received gotpointercapture green received pointermove +Capture pointer event attributes are correct! green received mousemove **** Move to grey box & jiggle ***** green received pointermove @@ -207,6 +214,7 @@ grey received mousemove document received lostpointercapture green received pointermove +Capture pointer event attributes are correct! green received mousemove blue received pointerover blue received pointerenter
diff --git a/third_party/WebKit/LayoutTests/fast/events/pointerevents/mouse-pointer-capture.html b/third_party/WebKit/LayoutTests/fast/events/pointerevents/mouse-pointer-capture.html index 09fddcc..1b971f4 100644 --- a/third_party/WebKit/LayoutTests/fast/events/pointerevents/mouse-pointer-capture.html +++ b/third_party/WebKit/LayoutTests/fast/events/pointerevents/mouse-pointer-capture.html
@@ -41,6 +41,54 @@ var x3 = rect.left + 5; var y3 = rect.top + 5; +var lastPointerEvent = null; +var pointereventProperties = [ + "clientX", + "clientY", + "layerX", + "layerY", + "movementX", + "movementY", + "offsetX", + "offsetY", + "pageX", + "pageY", + "screenX", + "screenY", + "x", + "y", + "button", + "buttons", + "pressure", + "tiltX", + "tiltY", + "width", + "height" +]; + +function checkPointerCaptureProperties(lastPointerEvent, currentPointerEvent) { + if (lastPointerEvent == null) + return false; + + var isImmediateRelease = (lastPointerEvent.type == 'pointerup') && + (currentPointerEvent.type == 'lostpointercapture'); + var isDelayedCapture = lastPointerEvent.type.includes('pointercapture'); + + if (!isImmediateRelease && !isDelayedCapture) + return false; + + for (var i = 0; i< pointereventProperties. length; i++) { + var property = pointereventProperties[i]; + if (lastPointerEvent[property] !== currentPointerEvent[property]) { + debug("Capture pointer event attributes are incorrect!"); + return true; + } + } + + debug("Capture pointer event attributes are correct!"); + return true +} + function init() { var eventList = ["mouseenter", "mouseleave", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "pointerenter", "pointerleave", "pointerover", "pointerout", "pointermove", "pointerdown", "pointerup", @@ -49,6 +97,7 @@ document.addEventListener("lostpointercapture", function(event) { if (event.eventPhase == Event.AT_TARGET) { debug("document received " + event.type); + lastPointerEvent = event; } }); ["grey", "green", "blue"].forEach(function(id) { @@ -73,6 +122,12 @@ removeElement = false; } } + if (checkPointerCaptureProperties(lastPointerEvent, event)) { + lastPointerEvent = null; + } else { + if (event.type.includes('pointer')) + lastPointerEvent = event; + } } }); });
diff --git a/third_party/WebKit/LayoutTests/fast/forms/basic-buttons.html b/third_party/WebKit/LayoutTests/fast/forms/basic-buttons.html index 47fbe97..1ff9824 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/basic-buttons.html +++ b/third_party/WebKit/LayoutTests/fast/forms/basic-buttons.html
@@ -48,10 +48,8 @@ } } -window.onload = function() { - printSize('button'); - printSize('input'); -}; +printSize('button'); +printSize('input'); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/resources/common.js b/third_party/WebKit/LayoutTests/fast/forms/resources/common.js index 21ad49d..41ea5443 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/resources/common.js +++ b/third_party/WebKit/LayoutTests/fast/forms/resources/common.js
@@ -102,6 +102,13 @@ return pos; } +function rtlSearchCancelButtonPosition(element) { + var pos = {}; + pos.x = element.offsetLeft + 9; + pos.y = element.offsetTop + element.offsetHeight / 2; + return pos; +} + function mouseMoveToIndexInListbox(index, listboxId) { var listbox = document.getElementById(listboxId); var itemHeight = Math.floor(listbox.offsetHeight / listbox.size);
diff --git a/third_party/WebKit/LayoutTests/fast/forms/search/search-rtl.html b/third_party/WebKit/LayoutTests/fast/forms/search/search-rtl.html index d0b4269e..a01ab03f 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/search/search-rtl.html +++ b/third_party/WebKit/LayoutTests/fast/forms/search/search-rtl.html
@@ -22,7 +22,7 @@ <script> if (window.eventSender) { var target = $("target"); - var pos = searchCancelButtonPosition(target); + var pos = rtlSearchCancelButtonPosition(target); eventSender.mouseMoveTo(pos.x, pos.y); eventSender.mouseDown(); eventSender.mouseUp();
diff --git a/third_party/WebKit/LayoutTests/fast/forms/state-restore-skip-stateless-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/state-restore-skip-stateless-expected.txt index 02257fe..39eb6e2 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/state-restore-skip-stateless-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/forms/state-restore-skip-stateless-expected.txt
@@ -1,6 +1,5 @@ CONSOLE WARNING: The <keygen> element is deprecated and will be removed in M54, around October 2016. See https://www.chromestatus.com/features/5716060992962560 for more details. CONSOLE MESSAGE: line 44: Test if state of stateless form control types are not saved. -CONSOLE WARNING: line 81: Navigating in the unload handler is deprecated and will be removed. PASS There is a state for hidden PASS There is a state for text PASS There is a state for tel
diff --git a/third_party/WebKit/LayoutTests/fast/forms/state-restore-skip-stateless.html b/third_party/WebKit/LayoutTests/fast/forms/state-restore-skip-stateless.html index 5883612..22f8993 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/state-restore-skip-stateless.html +++ b/third_party/WebKit/LayoutTests/fast/forms/state-restore-skip-stateless.html
@@ -44,41 +44,29 @@ console.log('Test if state of stateless form control types are not saved.'); jsTestIsAsync = true; -function dumpFormState() { - if (window.internals) { - var statefulTypes = ['hidden', 'text', 'tel', 'url', 'email', 'number', 'range', 'checkbox', - 'radio', 'file', 'select-one', 'select-multiple', 'textarea']; - var statelessTypes = ['fieldset', 'password', 'submit', 'reset', 'button', 'keygen', 'output']; +if (window.internals) { + var statefulTypes = ['hidden', 'text', 'tel', 'url', 'email', 'number', 'range', 'checkbox', + 'radio', 'file', 'select-one', 'select-multiple', 'textarea']; + var statelessTypes = ['fieldset', 'password', 'submit', 'reset', 'button', 'keygen', 'output']; - var states = internals.formControlStateOfHistoryItem(); - for (var i = 0; i < statefulTypes.length; ++i) { - if (states.indexOf(statefulTypes[i]) >= 0) - testPassed('There is a state for ' + statefulTypes[i]); - else - testFailed('There no state for ' + statefulTypes[i]); - } - - for (var i = 0; i < statelessTypes.length; ++i) { - if (states.indexOf(statelessTypes[i]) < 0) - testPassed('There is no state for ' + statelessTypes[i]); - else - testFailed('There is a state for ' + statelessTypes[i]); - } + var states = internals.formControlStateOfHistoryItem(); + for (var i = 0; i < statefulTypes.length; ++i) { + if (states.indexOf(statefulTypes[i]) >= 0) + testPassed('There is a state for ' + statefulTypes[i]); + else + testFailed('There no state for ' + statefulTypes[i]); } - // Remove the input elements from the document to avoid a bunch of trailing - // whitespace in the test output. - document.body.removeChild(document.getElementById("elements")); - finishJSTest(); -} -window.onload = function() { - setTimeout(function() { - location.reload(); - }, 0); -}; -window.onunload = function() { - dumpFormState(); - location.hash = "#done"; -}; + for (var i = 0; i < statelessTypes.length; ++i) { + if (states.indexOf(statelessTypes[i]) < 0) + testPassed('There is no state for ' + statelessTypes[i]); + else + testFailed('There is a state for ' + statelessTypes[i]); + } +} +// Remove the input elements from the document to avoid a bunch of trailing +// whitespace in the test output. +document.body.removeChild(document.getElementById("elements")); +finishJSTest(); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/repaint/resize-scrollable-iframe-expected.txt b/third_party/WebKit/LayoutTests/fast/repaint/resize-scrollable-iframe-expected.txt index 94c2b8d..5c5bf2b 100644 --- a/third_party/WebKit/LayoutTests/fast/repaint/resize-scrollable-iframe-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/repaint/resize-scrollable-iframe-expected.txt
@@ -20,21 +20,11 @@ }, { "object": "LayoutView #document", - "rect": [8, 193, 285, 200], - "reason": "incremental" - }, - { - "object": "LayoutView #document", "rect": [8, 393, 285, 15], "reason": "scroll" }, { "object": "LayoutView #document", - "rect": [93, 108, 200, 285], - "reason": "incremental" - }, - { - "object": "LayoutView #document", "rect": [8, 193, 85, 15], "reason": "scroll" }, @@ -76,10 +66,6 @@ }, { "object": "LayoutView #document", - "reason": "incremental" - }, - { - "object": "LayoutView #document", "reason": "scroll" }, {
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-blocked-mixed-content-expected.txt b/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-blocked-mixed-content-expected.txt index e97697a..2183d198 100644 --- a/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-blocked-mixed-content-expected.txt +++ b/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-blocked-mixed-content-expected.txt
@@ -27,4 +27,16 @@ </DIV> </DIV> </DIV> +<DIV class=security-explanation security-explanation-secure > + <DIV class=security-property security-property-secure > + </DIV> + <DIV class=security-explanation-text > + <DIV class=security-explanation-title > +Secure Resources + </DIV> + <DIV > +All resources on this page are served securely. + </DIV> + </DIV> +</DIV>
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-blocked-mixed-content.html b/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-blocked-mixed-content.html index a21191a..b204273 100644 --- a/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-blocked-mixed-content.html +++ b/third_party/WebKit/LayoutTests/http/tests/inspector/security/security-blocked-mixed-content.html
@@ -17,6 +17,13 @@ var explanations = WebInspector.SecurityPanel._instance()._mainView.contentElement.getElementsByClassName("security-explanation"); for (var i = 0; i < explanations.length; i++) InspectorTest.dumpDeepInnerHTML(explanations[i]); + + // Test that the explanations are cleared on navigation. Regression test for https://crbug.com/601944. + InspectorTest.mainTarget.model(WebInspector.ResourceTreeModel).dispatchEventToListeners(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, InspectorTest.resourceTreeModel.mainFrame); + explanations = WebInspector.SecurityPanel._instance()._mainView.contentElement.getElementsByClassName("security-explanation"); + for (var i = 0; i < explanations.length; i++) + InspectorTest.dumpDeepInnerHTML(explanations[i]); + InspectorTest.completeTest(); } </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt index a5dcef4..2d69c423 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt +++ b/third_party/WebKit/LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE ERROR: line 8: Refused to load the image 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' because it violates the following Content Security Policy directive: "img-src 'none'". +CONSOLE ERROR: line 7: Refused to load the image 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' because it violates the following Content Security Policy directive: "img-src 'none'". PingLoader dispatched to 'http://127.0.0.1:8000/security/contentSecurityPolicy/resources/save-report.php?test=report-blocked-data-uri.php'. CSP report received: @@ -6,4 +6,4 @@ HTTP_REFERER: http://127.0.0.1:8000/security/contentSecurityPolicy/report-blocked-data-uri.php REQUEST_METHOD: POST === POST DATA === -{"csp-report":{"document-uri":"http://127.0.0.1:8000/security/contentSecurityPolicy/report-blocked-data-uri.php","referrer":"","violated-directive":"img-src 'none'","effective-directive":"img-src","original-policy":"img-src 'none'; report-uri resources/save-report.php?test=report-blocked-data-uri.php","blocked-uri":"data","line-number":8,"source-file":"http://127.0.0.1:8000/security/contentSecurityPolicy/report-blocked-data-uri.php","status-code":200}} +{"csp-report":{"document-uri":"http://127.0.0.1:8000/security/contentSecurityPolicy/report-blocked-data-uri.php","referrer":"","violated-directive":"img-src 'none'","effective-directive":"img-src","original-policy":"img-src 'none'; report-uri resources/save-report.php?test=report-blocked-data-uri.php","blocked-uri":"data","line-number":7,"source-file":"http://127.0.0.1:8000/security/contentSecurityPolicy/report-blocked-data-uri.php","status-code":200}}
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/styles-1/case-sensitive-suggestions.html b/third_party/WebKit/LayoutTests/inspector/elements/styles-1/case-sensitive-suggestions.html index e2b3ffe..202584f 100644 --- a/third_party/WebKit/LayoutTests/inspector/elements/styles-1/case-sensitive-suggestions.html +++ b/third_party/WebKit/LayoutTests/inspector/elements/styles-1/case-sensitive-suggestions.html
@@ -6,7 +6,7 @@ function test() { - var prompt = new WebInspector.StylesSidebarPane.CSSPropertyPrompt(WebInspector.CSSMetadata.cssPropertiesMetainfo.allProperties(), null, true); + var prompt = new WebInspector.StylesSidebarPane.CSSPropertyPrompt(WebInspector.cssMetadata().allProperties(), null, true); InspectorTest.runTestSuite([ function testForUpperCase(next)
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/styles-2/mixed-case-color-aware-properties.html b/third_party/WebKit/LayoutTests/inspector/elements/styles-2/mixed-case-color-aware-properties.html index 74c1f1f..8771460 100644 --- a/third_party/WebKit/LayoutTests/inspector/elements/styles-2/mixed-case-color-aware-properties.html +++ b/third_party/WebKit/LayoutTests/inspector/elements/styles-2/mixed-case-color-aware-properties.html
@@ -8,7 +8,7 @@ { var colorAwareProperties = ["bAckground-ColoR", "COloR", "Border-coLoR", "border-right-color", "BOX-SHADOW"]; for (var i = 0; i < colorAwareProperties.length; ++i) { - var isColorAware = WebInspector.CSSMetadata.isColorAwareProperty(colorAwareProperties[i]); + var isColorAware = WebInspector.cssMetadata().isColorAwareProperty(colorAwareProperties[i]); InspectorTest.addResult(colorAwareProperties[i] + (isColorAware ? " is" : " is NOT") + " color aware"); } InspectorTest.completeTest();
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/styles-3/style-autocomplete.html b/third_party/WebKit/LayoutTests/inspector/elements/styles-3/style-autocomplete.html index 3bc4233..9a34125 100644 --- a/third_party/WebKit/LayoutTests/inspector/elements/styles-3/style-autocomplete.html +++ b/third_party/WebKit/LayoutTests/inspector/elements/styles-3/style-autocomplete.html
@@ -6,12 +6,12 @@ function test() { - var namePrompt = new WebInspector.StylesSidebarPane.CSSPropertyPrompt(WebInspector.CSSMetadata.cssPropertiesMetainfo.allProperties(), null, true); + var namePrompt = new WebInspector.StylesSidebarPane.CSSPropertyPrompt(WebInspector.cssMetadata().allProperties(), null, true); var valuePrompt = valuePromptFor("color"); function valuePromptFor(name) { - return new WebInspector.StylesSidebarPane.CSSPropertyPrompt(WebInspector.CSSMetadata.propertyValues(name), null, false); + return new WebInspector.StylesSidebarPane.CSSPropertyPrompt(WebInspector.cssMetadata().propertyValues(name), null, false); } InspectorTest.runTestSuite([
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/styles-4/supported-css-properties-expected.txt b/third_party/WebKit/LayoutTests/inspector/elements/styles-4/supported-css-properties-expected.txt index e23cfed5..db8ff1c 100644 --- a/third_party/WebKit/LayoutTests/inspector/elements/styles-4/supported-css-properties-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/elements/styles-4/supported-css-properties-expected.txt
@@ -1,3 +1,2 @@ -box-shadow is supported Margin longhands: margin-bottom, margin-left, margin-right, margin-top
diff --git a/third_party/WebKit/LayoutTests/inspector/elements/styles-4/supported-css-properties.html b/third_party/WebKit/LayoutTests/inspector/elements/styles-4/supported-css-properties.html index 5d0bb64..247de93 100644 --- a/third_party/WebKit/LayoutTests/inspector/elements/styles-4/supported-css-properties.html +++ b/third_party/WebKit/LayoutTests/inspector/elements/styles-4/supported-css-properties.html
@@ -4,12 +4,7 @@ <script> function test() { - var cssProperty = "box-shadow"; - if (WebInspector.CSSMetadata.cssPropertiesMetainfo.hasProperty(cssProperty)) - InspectorTest.addResult(cssProperty + " is supported"); - else - InspectorTest.addResult(cssProperty + " is NOT supported"); - var marginLonghands = WebInspector.CSSMetadata.cssPropertiesMetainfo.longhands("margin"); + var marginLonghands = WebInspector.cssMetadata().longhands("margin"); marginLonghands.sort(); InspectorTest.addResult("Margin longhands: " + marginLonghands.join(", ")); InspectorTest.completeTest();
diff --git a/third_party/WebKit/LayoutTests/loader/data-uri-images-load-asynchronously-expected.txt b/third_party/WebKit/LayoutTests/loader/data-uri-images-load-asynchronously-expected.txt deleted file mode 100644 index 21927c9..0000000 --- a/third_party/WebKit/LayoutTests/loader/data-uri-images-load-asynchronously-expected.txt +++ /dev/null
@@ -1,2 +0,0 @@ -Test for crbug.com/224317: data:uri images should load asynchronously. -PASS
diff --git a/third_party/WebKit/LayoutTests/loader/data-uri-images-load-synchronously-expected.txt b/third_party/WebKit/LayoutTests/loader/data-uri-images-load-synchronously-expected.txt new file mode 100644 index 0000000..1dddd7e --- /dev/null +++ b/third_party/WebKit/LayoutTests/loader/data-uri-images-load-synchronously-expected.txt
@@ -0,0 +1,2 @@ +Test for crbug.com/224317: data:uri images should load synchronously. +PASS
diff --git a/third_party/WebKit/LayoutTests/loader/data-uri-images-load-asynchronously.html b/third_party/WebKit/LayoutTests/loader/data-uri-images-load-synchronously.html similarity index 89% rename from third_party/WebKit/LayoutTests/loader/data-uri-images-load-asynchronously.html rename to third_party/WebKit/LayoutTests/loader/data-uri-images-load-synchronously.html index 370eff19..7746f5b5 100644 --- a/third_party/WebKit/LayoutTests/loader/data-uri-images-load-asynchronously.html +++ b/third_party/WebKit/LayoutTests/loader/data-uri-images-load-synchronously.html
@@ -1,7 +1,7 @@ <!DOCTYPE html> <html> <body> -Test for crbug.com/224317: data:uri images should load asynchronously.<br/> +Test for crbug.com/224317: data:uri images should load synchronously.<br/> <script> if (window.testRunner) testRunner.dumpAsText(); @@ -10,9 +10,9 @@ image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVR42u3QMQEAAAgDoGlyo1vBzwciUJlw1ApkyZIlS5YsBbJkyZIlS5YCWbJkyZIlS4EsWbJkyZKlQJYsWbJkyVIgS5YsWbJkKZAlS5YsWbIUyJIlS5YsWQpkyZIlS5YsBbJkyZIlS5YCWbJkyZIlS4EsWbJkyZKlQJYsWbJkyVIgS5YsWbJkKZAlS5YsWbIUyJIlS5YsWQpkyfq2MosBSIeKONMAAAAASUVORK5CYII="; if (image.width == 100 && image.height == 100) - document.write("FAIL"); - else document.write("PASS"); + else + document.write("FAIL"); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-asynchronously-expected.txt b/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-asynchronously-expected.txt deleted file mode 100644 index 8289b387..0000000 --- a/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-asynchronously-expected.txt +++ /dev/null
@@ -1,2 +0,0 @@ -Test for crbug.com/224317: data:uri images should load asynchronously and reload synchronously. -PASS
diff --git a/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-synchronously-expected.txt b/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-synchronously-expected.txt new file mode 100644 index 0000000..c0ed5e95 --- /dev/null +++ b/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-synchronously-expected.txt
@@ -0,0 +1,2 @@ +Test for crbug.com/224317: data:uri images should reload synchronously. +PASS
diff --git a/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-asynchronously.html b/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-synchronously.html similarity index 65% rename from third_party/WebKit/LayoutTests/loader/data-uri-images-reload-asynchronously.html rename to third_party/WebKit/LayoutTests/loader/data-uri-images-reload-synchronously.html index cc83ee51..9b583e07 100644 --- a/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-asynchronously.html +++ b/third_party/WebKit/LayoutTests/loader/data-uri-images-reload-synchronously.html
@@ -1,7 +1,7 @@ <!DOCTYPE html> <html> <body> -Test for crbug.com/224317: data:uri images should load asynchronously and reload synchronously.<br/> +Test for crbug.com/224317: data:uri images should reload synchronously.<br/> <script> if (window.testRunner) { testRunner.waitUntilDone(); @@ -11,23 +11,17 @@ var image = new Image(); image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVR42u3QMQEAAAgDoGlyo1vBzwciUJlw1ApkyZIlS5YsBbJkyZIlS5YCWbJkyZIlS4EsWbJkyZKlQJYsWbJkyVIgS5YsWbJkKZAlS5YsWbIUyJIlS5YsWQpkyZIlS5YsBbJkyZIlS5YCWbJkyZIlS4EsWbJkyZKlQJYsWbJkyVIgS5YsWbJkKZAlS5YsWbIUyJIlS5YsWQpkyfq2MosBSIeKONMAAAAASUVORK5CYII="; - if (location.hash != "#reloaded") { - if (image.width == 100 || image.height == 100) { - document.write("FAIL"); + if (image.width != 100 || image.height != 100) { + document.write("FAIL"); + } else { + if (location.hash == "#reloaded") { + document.write("PASS"); if (window.testRunner) testRunner.notifyDone(); } else { location.hash = "#reloaded"; location.reload(); } - } else { - if (image.width == 100 || image.height == 100) { - document.write("PASS"); - } else { - document.write("FAIL"); - } - if (window.testRunner) - testRunner.notifyDone(); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/platform/linux-precise/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/WebKit/LayoutTests/platform/linux-precise/compositing/overflow/scroll-ancestor-update-expected.png deleted file mode 100644 index 22726e9..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux-precise/compositing/overflow/scroll-ancestor-update-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/geometry/video-fixed-scrolling-expected.png index ba5fb3b..543820f 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/compositing/geometry/video-fixed-scrolling-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/geometry/video-fixed-scrolling-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/layers-inside-overflow-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/layers-inside-overflow-scroll-expected.png index f4e4942..5d1282b 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/compositing/layers-inside-overflow-scroll-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/layers-inside-overflow-scroll-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png index 2063f25..7f50d7d1 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/compositing/self-painting-layers-expected.png b/third_party/WebKit/LayoutTests/platform/linux/compositing/self-painting-layers-expected.png index 0fe92c80..3614162 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/compositing/self-painting-layers-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/compositing/self-painting-layers-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-9-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-9-expected.txt index 776a7f0..f2c131c 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-9-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/line-flow-with-floats-9-expected.txt
@@ -10,12 +10,12 @@ "paintInvalidations": [ { "object": "LayoutText #text", - "rect": [14, 240, 407, 139], + "rect": [13, 240, 408, 139], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [14, 500, 407, 99], + "rect": [13, 500, 408, 99], "reason": "forced by layout" }, { @@ -25,7 +25,7 @@ }, { "object": "LayoutText #text", - "rect": [14, 440, 355, 59], + "rect": [13, 440, 356, 59], "reason": "forced by layout" }, { @@ -45,7 +45,7 @@ }, { "object": "LayoutText #text", - "rect": [303, 420, 67, 19], + "rect": [303, 420, 66, 19], "reason": "forced by layout" }, {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt index bffba8f..2e4f952d 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/resize-scrollable-iframe-expected.txt
@@ -20,21 +20,11 @@ }, { "object": "LayoutView #document", - "rect": [8, 193, 285, 200], - "reason": "incremental" - }, - { - "object": "LayoutView #document", "rect": [8, 393, 285, 15], "reason": "scroll" }, { "object": "LayoutView #document", - "rect": [93, 108, 200, 285], - "reason": "incremental" - }, - { - "object": "LayoutView #document", "rect": [8, 193, 85, 15], "reason": "scroll" }, @@ -76,10 +66,6 @@ }, { "object": "LayoutView #document", - "reason": "incremental" - }, - { - "object": "LayoutView #document", "reason": "scroll" }, {
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-match-document-change-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-match-document-change-expected.txt index f9305561..e6eb689 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-match-document-change-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/repaint/text-match-document-change-expected.txt
@@ -14,11 +14,6 @@ "reason": "forced by layout" }, { - "object": "LayoutBlockFlow DIV", - "rect": [18, 150, 269, 352], - "reason": "bounds change" - }, - { "object": "LayoutBlockFlow DIV id='to-be-changed'", "rect": [18, 130, 269, 40], "reason": "full" @@ -67,10 +62,6 @@ "reason": "layoutObject insertion" }, { - "object": "LayoutBlockFlow DIV", - "reason": "bounds change" - }, - { "object": "VerticalScrollbar", "reason": "scroll" }
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/geometry/video-fixed-scrolling-expected.png deleted file mode 100644 index 6ecce27..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/geometry/video-fixed-scrolling-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/layers-inside-overflow-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/layers-inside-overflow-scroll-expected.png deleted file mode 100644 index d8665b9..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/layers-inside-overflow-scroll-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/scroll-ancestor-update-expected.png deleted file mode 100644 index d18e778..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/overflow/scroll-ancestor-update-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/self-painting-layers-expected.png b/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/self-painting-layers-expected.png deleted file mode 100644 index 714a686..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac-mac10.9/compositing/self-painting-layers-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/geometry/video-fixed-scrolling-expected.png index 70a933b..5859a58 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/geometry/video-fixed-scrolling-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/geometry/video-fixed-scrolling-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/layers-inside-overflow-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/layers-inside-overflow-scroll-expected.png index 2237757a..d8665b9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/layers-inside-overflow-scroll-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/layers-inside-overflow-scroll-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/scroll-ancestor-update-expected.png index 32fe593..97472d4 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/scroll-ancestor-update-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/scroll-ancestor-update-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png index 5584d3b..2d2601005 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/compositing/self-painting-layers-expected.png b/third_party/WebKit/LayoutTests/platform/mac/compositing/self-painting-layers-expected.png index 4cff73c..714a686 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/compositing/self-painting-layers-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/compositing/self-painting-layers-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.png index c669e61..d650e09 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.txt index 70fb4410..c38f6cbb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/css/text-overflow-input-expected.txt
@@ -33,7 +33,7 @@ text run at (131,37) width 4: " " LayoutTextControl {INPUT} at (135,37) size 133x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 125x13 - LayoutBlockFlow {DIV} at (0,0) size 113x13 + LayoutBlockFlow {DIV} at (12,0) size 113x13 LayoutText {#text} at (268,37) size 4x18 text run at (268,37) width 4: " " LayoutTextControl {INPUT} at (272,37) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] @@ -41,7 +41,7 @@ text run at (403,37) width 4: " " LayoutTextControl {INPUT} at (407,37) size 133x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 125x13 - LayoutBlockFlow {DIV} at (0,0) size 113x13 + LayoutBlockFlow {DIV} at (12,0) size 113x13 LayoutText {#text} at (540,37) size 4x18 text run at (540,37) width 4: " " LayoutTextControl {INPUT} at (544,37) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] @@ -73,7 +73,7 @@ text run at (131,37) width 4: " " LayoutTextControl {INPUT} at (135,37) size 133x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 125x13 - LayoutBlockFlow {DIV} at (0,0) size 113x13 + LayoutBlockFlow {DIV} at (12,0) size 113x13 LayoutText {#text} at (268,37) size 4x18 text run at (268,37) width 4: " " LayoutTextControl {INPUT} at (272,37) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] @@ -81,7 +81,7 @@ text run at (403,37) width 4: " " LayoutTextControl {INPUT} at (407,37) size 133x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 125x13 - LayoutBlockFlow {DIV} at (0,0) size 113x13 + LayoutBlockFlow {DIV} at (12,0) size 113x13 LayoutText {#text} at (540,37) size 4x18 text run at (540,37) width 4: " " LayoutTextControl {INPUT} at (544,37) size 131x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] @@ -138,17 +138,17 @@ text run at (-158,0) width 283: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" layer at (11,90) size 125x13 LayoutBlockFlow {DIV} at (3,3) size 125x13 -layer at (147,90) size 113x13 scrollX 170.00 scrollWidth 284 - LayoutBlockFlow {DIV} at (4,3) size 113x13 [color=#A9A9A9] +layer at (159,90) size 113x13 scrollX 170.00 scrollWidth 284 + LayoutBlockFlow {DIV} at (16,3) size 113x13 [color=#A9A9A9] LayoutText {#text} at (-170,0) size 284x13 text run at (-170,0) width 283: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" -layer at (147,90) size 113x13 +layer at (159,90) size 113x13 LayoutBlockFlow {DIV} at (0,0) size 113x13 layer at (283,90) size 125x13 scrollX 158.00 scrollWidth 284 LayoutBlockFlow {DIV} at (3,3) size 125x13 LayoutText {#text} at (-158,0) size 284x13 text run at (-158,0) width 283: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" -layer at (419,90) size 113x13 scrollX 170.00 scrollWidth 284 +layer at (431,90) size 113x13 scrollX 170.00 scrollWidth 284 LayoutBlockFlow {DIV} at (0,0) size 113x13 LayoutText {#text} at (-170,0) size 284x13 text run at (-170,0) width 283: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" @@ -186,17 +186,17 @@ text run at (-158,0) width 283: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" layer at (11,162) size 125x13 LayoutBlockFlow {DIV} at (3,3) size 125x13 -layer at (147,162) size 113x13 scrollX 170.00 scrollWidth 284 - LayoutBlockFlow {DIV} at (4,3) size 113x13 [color=#A9A9A9] +layer at (159,162) size 113x13 scrollX 170.00 scrollWidth 284 + LayoutBlockFlow {DIV} at (16,3) size 113x13 [color=#A9A9A9] LayoutText {#text} at (-170,0) size 284x13 text run at (-170,0) width 283: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" -layer at (147,162) size 113x13 +layer at (159,162) size 113x13 LayoutBlockFlow {DIV} at (0,0) size 113x13 layer at (283,162) size 125x13 scrollX 158.00 scrollWidth 284 LayoutBlockFlow {DIV} at (3,3) size 125x13 LayoutText {#text} at (-158,0) size 284x13 text run at (-158,0) width 283: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" -layer at (419,162) size 113x13 scrollX 170.00 scrollWidth 284 +layer at (431,162) size 113x13 scrollX 170.00 scrollWidth 284 LayoutBlockFlow {DIV} at (0,0) size 113x13 LayoutText {#text} at (-170,0) size 284x13 text run at (-170,0) width 283: "Lorem ipsum dolor sit amet, consectetur adipiscing elit" @@ -228,15 +228,15 @@ LayoutBlockFlow {DIV} at (114,1) size 11x11 layer at (533,72) size 11x11 transparent LayoutBlockFlow {DIV} at (114,1) size 11x11 -layer at (261,91) size 11x11 transparent - LayoutBlockFlow {DIV} at (114,1) size 11x11 -layer at (533,91) size 11x11 transparent - LayoutBlockFlow {DIV} at (114,1) size 11x11 +layer at (147,91) size 11x11 transparent + LayoutBlockFlow {DIV} at (0,1) size 11x11 +layer at (419,91) size 11x11 transparent + LayoutBlockFlow {DIV} at (0,1) size 11x11 layer at (261,144) size 11x11 transparent LayoutBlockFlow {DIV} at (114,1) size 11x11 layer at (533,144) size 11x11 transparent LayoutBlockFlow {DIV} at (114,1) size 11x11 -layer at (261,163) size 11x11 transparent - LayoutBlockFlow {DIV} at (114,1) size 11x11 -layer at (533,163) size 11x11 transparent - LayoutBlockFlow {DIV} at (114,1) size 11x11 +layer at (147,163) size 11x11 transparent + LayoutBlockFlow {DIV} at (0,1) size 11x11 +layer at (419,163) size 11x11 transparent + LayoutBlockFlow {DIV} at (0,1) size 11x11
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.png index df046ea..45d8727 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.txt index ae6fb9b..8b58169e 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/placeholder-position-expected.txt
@@ -21,7 +21,7 @@ LayoutBR {BR} at (285,33) size 0x0 LayoutTextControl {INPUT} at (0,38) size 133x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 125x13 - LayoutBlockFlow {DIV} at (0,0) size 113x13 + LayoutBlockFlow {DIV} at (12,0) size 113x13 LayoutBR {BR} at (133,52) size 0x0 LayoutTextControl {INPUT} at (0,57) size 133x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 125x13 @@ -84,11 +84,11 @@ text run at (0,0) width 95: "\x{65E5}\x{672C}\x{8A9E}placeholder" layer at (161,30) size 125x13 LayoutBlockFlow {DIV} at (3,3) size 125x13 -layer at (12,49) size 113x13 - LayoutBlockFlow {DIV} at (4,3) size 113x13 [color=#A9A9A9] +layer at (24,49) size 113x13 + LayoutBlockFlow {DIV} at (16,3) size 113x13 [color=#A9A9A9] LayoutText {#text} at (52,0) size 61x13 text run at (52,0) width 61: "placeholder" -layer at (12,49) size 113x13 +layer at (24,49) size 113x13 LayoutBlockFlow {DIV} at (0,0) size 113x13 layer at (12,68) size 113x13 LayoutBlockFlow {DIV} at (4,3) size 113x13 [color=#A9A9A9] @@ -166,8 +166,8 @@ LayoutBlockFlow {DIV} at (3,3) size 125x13 layer at (126,12) size 11x11 transparent LayoutBlockFlow {DIV} at (114,1) size 11x11 -layer at (126,50) size 11x11 transparent - LayoutBlockFlow {DIV} at (114,1) size 11x11 +layer at (12,50) size 11x11 transparent + LayoutBlockFlow {DIV} at (0,1) size 11x11 layer at (126,69) size 11x11 transparent LayoutBlockFlow {DIV} at (114,1) size 11x11 layer at (8,284) size 131x33
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-rtl-expected.png index 12cfbe2..6c463bd 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-rtl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-rtl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-rtl-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-rtl-expected.txt index 64f138a..a1b2d51b 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-rtl-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/forms/search/search-rtl-expected.txt
@@ -18,24 +18,24 @@ LayoutBlockFlow {P} at (0,34) size 784x57 LayoutTextControl {INPUT} at (0,0) size 133x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 125x13 - LayoutBlockFlow {DIV} at (0,0) size 113x13 + LayoutBlockFlow {DIV} at (12,0) size 113x13 LayoutText {#text} at (133,0) size 4x18 text run at (133,0) width 4: " " LayoutBR {BR} at (0,0) size 0x0 LayoutTextControl {INPUT} at (0,19) size 193x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 185x13 - LayoutBlockFlow {DIV} at (0,0) size 173x13 + LayoutBlockFlow {DIV} at (12,0) size 173x13 LayoutText {#text} at (193,19) size 4x18 text run at (193,19) width 4: " " LayoutBR {BR} at (0,0) size 0x0 LayoutTextControl {INPUT} at (0,38) size 133x19 [bgcolor=#FFFFFF] [border: (2px inset #EEEEEE)] LayoutFlexibleBox {DIV} at (4,3) size 125x13 - LayoutBlockFlow {DIV} at (0,0) size 113x13 + LayoutBlockFlow {DIV} at (12,0) size 113x13 LayoutText {#text} at (0,0) size 0x0 LayoutBlockFlow {P} at (0,107) size 784x18 LayoutText {#text} at (0,0) size 37x18 text run at (0,0) width 37: "PASS" -layer at (12,45) size 113x13 scrollX 18.00 scrollWidth 132 +layer at (24,45) size 113x13 scrollX 18.00 scrollWidth 132 LayoutBlockFlow {DIV} at (0,0) size 113x13 LayoutText {#text} at (-18,0) size 132x13 text run at (-18,0) width 22 RTL: " \x{5D5}\x{5D6}\x{5D4}\x{5D5}" @@ -43,7 +43,7 @@ text run at (21,0) width 43 RTL: " \x{5D5}\x{5D4}\x{5D9}\x{5D0} \x{5D6}\x{5D4} " text run at (64,0) width 13: "he" text run at (76,0) width 37 RTL: "\x{5D4}\x{5D5}\x{5D0} \x{5D6}\x{5D4} " -layer at (12,64) size 173x13 +layer at (24,64) size 173x13 LayoutBlockFlow {DIV} at (0,0) size 173x13 LayoutText {#text} at (41,0) size 132x13 text run at (41,0) width 23 RTL: " \x{5D5}\x{5D6}\x{5D4}\x{5D5}" @@ -51,12 +51,12 @@ text run at (81,0) width 43 RTL: " \x{5D5}\x{5D4}\x{5D9}\x{5D0} \x{5D6}\x{5D4} " text run at (124,0) width 13: "he" text run at (136,0) width 37 RTL: "\x{5D4}\x{5D5}\x{5D0} \x{5D6}\x{5D4} " -layer at (12,83) size 113x13 +layer at (24,83) size 113x13 LayoutBlockFlow {DIV} at (0,0) size 113x13 -layer at (126,46) size 11x11 transparent - LayoutBlockFlow {DIV} at (114,1) size 11x11 -layer at (186,65) size 11x11 transparent - LayoutBlockFlow {DIV} at (174,1) size 11x11 -layer at (126,84) size 11x11 transparent - LayoutBlockFlow {DIV} at (114,1) size 11x11 +layer at (12,46) size 11x11 transparent + LayoutBlockFlow {DIV} at (0,1) size 11x11 +layer at (12,65) size 11x11 transparent + LayoutBlockFlow {DIV} at (0,1) size 11x11 +layer at (12,84) size 11x11 transparent + LayoutBlockFlow {DIV} at (0,1) size 11x11 caret: position 0 of child 0 {DIV} of child 0 {DIV} of child 0 {DIV} of {#document-fragment} of child 9 {INPUT} of child 3 {P} of body
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt index fc4cc2f5..1fcd677 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/line-flow-with-floats-9-expected.txt
@@ -106,11 +106,6 @@ { "object": "LayoutView #document", "rect": [485, 0, 15, 600], - "reason": "incremental" - }, - { - "object": "LayoutView #document", - "rect": [485, 0, 15, 600], "reason": "scroll" } ] @@ -118,10 +113,6 @@ ], "objectPaintInvalidations": [ { - "object": "LayoutView #document", - "reason": "incremental" - }, - { "object": "LayoutBlockFlow HTML", "reason": "forced by layout" },
diff --git a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/text-match-document-change-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/text-match-document-change-expected.txt index 0a3407a1..d0241ece 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/text-match-document-change-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/fast/repaint/text-match-document-change-expected.txt
@@ -14,11 +14,6 @@ "reason": "forced by layout" }, { - "object": "LayoutBlockFlow DIV", - "rect": [18, 146, 269, 356], - "reason": "bounds change" - }, - { "object": "LayoutBlockFlow DIV id='to-be-changed'", "rect": [18, 128, 269, 36], "reason": "full" @@ -67,10 +62,6 @@ "reason": "layoutObject insertion" }, { - "object": "LayoutBlockFlow DIV", - "reason": "bounds change" - }, - { "object": "VerticalScrollbar", "reason": "scroll" }
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/geometry/video-fixed-scrolling-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/geometry/video-fixed-scrolling-expected.png index 2039f5fe..49abdc4b 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/geometry/video-fixed-scrolling-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/geometry/video-fixed-scrolling-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/layers-inside-overflow-scroll-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/layers-inside-overflow-scroll-expected.png index 2c8cf79..fb99b3e 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/layers-inside-overflow-scroll-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/layers-inside-overflow-scroll-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/scroll-ancestor-update-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/scroll-ancestor-update-expected.png index 1da3c736..63c36eb 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/scroll-ancestor-update-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/scroll-ancestor-update-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png index 6bacca9..abfdbffb4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/compositing/self-painting-layers-expected.png b/third_party/WebKit/LayoutTests/platform/win/compositing/self-painting-layers-expected.png index 3dd6afe3..8461050 100644 --- a/third_party/WebKit/LayoutTests/platform/win/compositing/self-painting-layers-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/compositing/self-painting-layers-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-long-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-long-expected.png index f82ee9d..5b80816 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-long-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-long-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-many-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-many-expected.png index b5f17b9..5e60246 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-many-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-many-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png index 5d05c43..02f73821 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png index 46fc965c..07c750a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png index 5f009eb..14906d4 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/line-flow-with-floats-9-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/line-flow-with-floats-9-expected.txt index 093ece9..49cb14a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/line-flow-with-floats-9-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/line-flow-with-floats-9-expected.txt
@@ -25,22 +25,22 @@ }, { "object": "LayoutText #text", - "rect": [13, 188, 407, 71], + "rect": [14, 242, 406, 125], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [14, 242, 406, 126], + "rect": [14, 494, 406, 89], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [14, 494, 406, 90], + "rect": [14, 476, 406, 89], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [14, 476, 406, 90], + "rect": [14, 188, 406, 71], "reason": "forced by layout" }, { @@ -55,37 +55,37 @@ }, { "object": "LayoutText #text", - "rect": [14, 404, 355, 36], + "rect": [14, 404, 355, 35], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [14, 404, 354, 36], + "rect": [14, 404, 354, 35], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [65, 386, 304, 18], + "rect": [65, 386, 304, 17], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [65, 368, 304, 18], + "rect": [65, 368, 304, 17], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [65, 386, 303, 36], + "rect": [65, 386, 303, 35], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [178, 350, 146, 18], + "rect": [178, 350, 146, 17], "reason": "forced by layout" }, { "object": "LayoutText #text", - "rect": [65, 368, 145, 18], + "rect": [65, 368, 145, 17], "reason": "forced by layout" }, { @@ -106,11 +106,6 @@ { "object": "LayoutView #document", "rect": [485, 0, 15, 600], - "reason": "incremental" - }, - { - "object": "LayoutView #document", - "rect": [485, 0, 15, 600], "reason": "scroll" } ] @@ -118,10 +113,6 @@ ], "objectPaintInvalidations": [ { - "object": "LayoutView #document", - "reason": "incremental" - }, - { "object": "LayoutBlockFlow HTML", "reason": "forced by layout" },
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/text-match-document-change-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/text-match-document-change-expected.txt index 9e242af..0545b834 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/repaint/text-match-document-change-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/fast/repaint/text-match-document-change-expected.txt
@@ -14,23 +14,18 @@ "reason": "forced by layout" }, { - "object": "LayoutBlockFlow DIV", - "rect": [18, 146, 269, 356], - "reason": "bounds change" - }, - { "object": "LayoutBlockFlow DIV id='to-be-changed'", "rect": [18, 128, 269, 36], "reason": "full" }, { "object": "LayoutText #text", - "rect": [18, 128, 257, 36], + "rect": [18, 128, 257, 35], "reason": "layoutObject removal" }, { "object": "LayoutText #text", - "rect": [18, 128, 84, 18], + "rect": [18, 128, 84, 17], "reason": "layoutObject insertion" }, { @@ -67,10 +62,6 @@ "reason": "layoutObject insertion" }, { - "object": "LayoutBlockFlow DIV", - "reason": "bounds change" - }, - { "object": "VerticalScrollbar", "reason": "scroll" }
diff --git a/third_party/WebKit/LayoutTests/platform/win7/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png b/third_party/WebKit/LayoutTests/platform/win7/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png deleted file mode 100644 index 5ae6ae91..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/editing/spelling/inline-spelling-markers-hidpi-composited-expected.png b/third_party/WebKit/LayoutTests/platform/win7/editing/spelling/inline-spelling-markers-hidpi-composited-expected.png deleted file mode 100644 index efd7dc2..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/editing/spelling/inline-spelling-markers-hidpi-composited-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-long-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-long-expected.png deleted file mode 100644 index 5b80816..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-long-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-many-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-many-expected.png deleted file mode 100644 index 5e60246..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-many-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png deleted file mode 100644 index 02f73821..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-rtl-default-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png deleted file mode 100644 index 07c750a..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-rtl-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png deleted file mode 100644 index 14906d4..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/line-flow-with-floats-9-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/line-flow-with-floats-9-expected.png deleted file mode 100644 index e747bf0..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/line-flow-with-floats-9-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/nested-fixed-iframe-scrolled-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/nested-fixed-iframe-scrolled-expected.png deleted file mode 100644 index d61e83b..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/nested-fixed-iframe-scrolled-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/repaint-during-scroll-with-zoom-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/repaint-during-scroll-with-zoom-expected.png deleted file mode 100644 index d9b00804..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/repaint-during-scroll-with-zoom-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/resize-scrollable-iframe-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/resize-scrollable-iframe-expected.png deleted file mode 100644 index 34854c5..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/resize-scrollable-iframe-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/text-match-document-change-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/text-match-document-change-expected.png deleted file mode 100644 index 1cbb443..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/repaint/text-match-document-change-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/svg/canvas/canvas-draw-image-globalalpha.html b/third_party/WebKit/LayoutTests/svg/canvas/canvas-draw-image-globalalpha.html index 24ba5cd..dec1382 100644 --- a/third_party/WebKit/LayoutTests/svg/canvas/canvas-draw-image-globalalpha.html +++ b/third_party/WebKit/LayoutTests/svg/canvas/canvas-draw-image-globalalpha.html
@@ -3,9 +3,7 @@ <script> var img = new Image(); img.src = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" fill="#008000"/></svg>'; -img.onload = function() { - var c = document.querySelector('canvas').getContext('2d'); - c.globalAlpha = 0.5; - c.drawImage(img, 0, 0); -} +var c = document.querySelector('canvas').getContext('2d'); +c.globalAlpha = 0.5; +c.drawImage(img, 0, 0); </script>
diff --git a/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size.html b/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size.html index bb94b5b..917e029e8 100644 --- a/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size.html +++ b/third_party/WebKit/LayoutTests/svg/canvas/image-svg-intrinsic-size.html
@@ -8,15 +8,12 @@ image.src = "data:image/svg+xml," + "<svg xmlns='http://www.w3.org/2000/svg' width='200' viewBox='0 0 1 1'>" + "<rect width='1' height='1' fill='green'/></svg>"; - image.onload = function() { - var canvas = document.querySelector('canvas'); - var ctx = canvas.getContext("2d"); - ctx.drawImage(document.querySelector('img'), 0, 0); - document.body.removeChild(document.querySelector('img')); - }; return image; } document.body.appendChild(createSVGImage()); document.body.offsetTop; // Force layout - + var canvas = document.querySelector('canvas'); + var ctx = canvas.getContext("2d"); + ctx.drawImage(document.querySelector('img'), 0, 0); + document.body.removeChild(document.querySelector('img')); </script>
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt index c8ad7f76..c0fe778b0 100644 --- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -4185,6 +4185,7 @@ interface OffscreenCanvasRenderingContext2D attribute @@toStringTag getter fillStyle + getter filter getter imageSmoothingEnabled getter imageSmoothingQuality getter lineCap @@ -4233,6 +4234,7 @@ method transform method translate setter fillStyle + setter filter setter imageSmoothingEnabled setter imageSmoothingQuality setter lineCap
diff --git a/third_party/WebKit/Source/core/core.gypi b/third_party/WebKit/Source/core/core.gypi index 337e42c..40b1340 100644 --- a/third_party/WebKit/Source/core/core.gypi +++ b/third_party/WebKit/Source/core/core.gypi
@@ -541,8 +541,12 @@ 'layout/api/LineLayoutText.h', 'layout/api/LineLayoutTextCombine.h', 'layout/api/SelectionState.h', + 'layout/ng/LayoutNGBlockFlow.cpp', + 'layout/ng/LayoutNGBlockFlow.h', 'layout/ng/NGConstraintSpace.cpp', 'layout/ng/NGConstraintSpace.h', + 'layout/ng/NGFragment.cpp', + 'layout/ng/NGFragment.h', 'layout/BidiRun.h', 'layout/BidiRunForLine.cpp', 'layout/BidiRunForLine.h',
diff --git a/third_party/WebKit/Source/core/css/RuleFeature.cpp b/third_party/WebKit/Source/core/css/RuleFeature.cpp index 5acd6a9a..fa526804 100644 --- a/third_party/WebKit/Source/core/css/RuleFeature.cpp +++ b/third_party/WebKit/Source/core/css/RuleFeature.cpp
@@ -319,6 +319,9 @@ if (selector.match() == CSSSelector::PseudoClass) { switch (selector.getPseudoType()) { case CSSSelector::PseudoEmpty: + case CSSSelector::PseudoFirstChild: + case CSSSelector::PseudoLastChild: + case CSSSelector::PseudoOnlyChild: case CSSSelector::PseudoLink: case CSSSelector::PseudoVisited: case CSSSelector::PseudoAnyLink:
diff --git a/third_party/WebKit/Source/core/css/html.css b/third_party/WebKit/Source/core/css/html.css index f81f7d9e..f078286 100644 --- a/third_party/WebKit/Source/core/css/html.css +++ b/third_party/WebKit/Source/core/css/html.css
@@ -436,10 +436,6 @@ content: none !important; } -input[type="search" i]::-webkit-textfield-decoration-container { - direction: ltr; -} - input::-webkit-clear-button { -webkit-appearance: searchfield-cancel-button; display: inline-block;
diff --git a/third_party/WebKit/Source/core/dom/ContainerNode.cpp b/third_party/WebKit/Source/core/dom/ContainerNode.cpp index 51add73..d79ca295 100644 --- a/third_party/WebKit/Source/core/dom/ContainerNode.cpp +++ b/third_party/WebKit/Source/core/dom/ContainerNode.cpp
@@ -1221,89 +1221,62 @@ } } -void ContainerNode::checkForSiblingStyleChanges(SiblingCheckType changeType, Node* changedNode, Node* nodeBeforeChange, Node* nodeAfterChange) +void ContainerNode::checkForSiblingStyleChanges(SiblingCheckType changeType, Element* changedElement, Node* nodeBeforeChange, Node* nodeAfterChange) { if (!inActiveDocument() || document().hasPendingForcedStyleRecalc() || getStyleChangeType() >= SubtreeStyleChange) return; - // Forward positional selectors include nth-child, nth-of-type, first-of-type and only-of-type. - // The indirect adjacent selector is the ~ selector. - // Backward positional selectors include nth-last-child, nth-last-of-type, last-of-type and only-of-type. - // We have to invalidate everything following the insertion point in the forward and indirect adjacent case, - // and everything before the insertion point in the backward case. - // |afterChange| is 0 in the parser callback case, so we won't do any work for the forward case if we don't have to. - // For performance reasons we just mark the parent node as changed, since we don't want to make childrenChanged O(n^2) by crawling all our kids - // here. recalcStyle will then force a walk of the children when it sees that this has happened. + if (!hasRestyleFlag(ChildrenAffectedByStructuralRules)) + return; + + // Forward positional selectors include :nth-child, :nth-of-type, + // :first-of-type, and only-of-type. The indirect adjacent selector is the ~ + // selector. Backward positional selectors include :nth-last-child, + // :nth-last-of-type, :last-of-type, and :only-of-type. We have to + // invalidate everything following the insertion point in the forward and + // indirect adjacent case, and everything before the insertion point in the + // backward case. |nodeAfterChange| is nullptr in the parser callback case, + // so we won't do any work for the forward case if we don't have to. + // For performance reasons we just mark the parent node as changed, since we + // don't want to make childrenChanged O(n^2) by crawling all our kids here. + // recalcStyle will then force a walk of the children when it sees that this + // has happened. if ((childrenAffectedByForwardPositionalRules() && nodeAfterChange) || (childrenAffectedByBackwardPositionalRules() && nodeBeforeChange)) { setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::SiblingSelector)); return; } - // :first-child. In the parser callback case, we don't have to check anything, since we were right the first time. - // In the DOM case, we only need to do something if |afterChange| is not 0. - // |afterChange| is 0 in the parser case, so it works out that we'll skip this block. - if (childrenAffectedByFirstChildRules() && nodeAfterChange) { + Element* elementAfterChange = !nodeAfterChange || nodeAfterChange->isElementNode() ? toElement(nodeAfterChange) : ElementTraversal::nextSibling(*nodeAfterChange); + Element* elementBeforeChange = !nodeBeforeChange || nodeBeforeChange->isElementNode() ? toElement(nodeBeforeChange) : ElementTraversal::previousSibling(*nodeBeforeChange); + + if (childrenAffectedByFirstChildRules() && !elementBeforeChange && elementAfterChange && elementAfterChange->affectedByFirstChildRules()) { DCHECK_NE(changeType, FinishedParsingChildren); - // Find our new first child element. - Element* firstChildElement = ElementTraversal::firstChild(*this); - - // Find the first element after the change. - Element* elementAfterChange = nodeAfterChange->isElementNode() ? toElement(nodeAfterChange) : ElementTraversal::nextSibling(*nodeAfterChange); - - // This is the element insertion as first child element case. - if (changeType == SiblingElementInserted && elementAfterChange && firstChildElement != elementAfterChange - && (!nodeBeforeChange || !nodeBeforeChange->isElementNode()) && elementAfterChange->affectedByFirstChildRules()) { - elementAfterChange->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::SiblingSelector)); - } - - // This is the first child element removal case. - if (changeType == SiblingElementRemoved && firstChildElement == elementAfterChange && firstChildElement && firstChildElement->affectedByFirstChildRules()) - firstChildElement->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::SiblingSelector)); + elementAfterChange->pseudoStateChanged(CSSSelector::PseudoFirstChild); + elementAfterChange->pseudoStateChanged(CSSSelector::PseudoOnlyChild); } - // :last-child. In the parser callback case, we don't have to check anything, since we were right the first time. - // In the DOM case, we only need to do something if |afterChange| is not 0. - if (childrenAffectedByLastChildRules() && nodeBeforeChange) { - // Find our new last child element. - Element* lastChildElement = ElementTraversal::lastChild(*this); - - // Find the last element before the change. - Element* elementBeforeChange = nodeBeforeChange->isElementNode() ? toElement(nodeBeforeChange) : ElementTraversal::previousSibling(*nodeBeforeChange); - - // This is the element insertion as last child element case. - if (changeType == SiblingElementInserted && elementBeforeChange && lastChildElement != elementBeforeChange - && (!nodeAfterChange || !nodeAfterChange->isElementNode()) && elementBeforeChange->affectedByLastChildRules()) { - elementBeforeChange->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::SiblingSelector)); - } - - // This is the last child element removal case. The parser callback case is similar to node removal as well in that we need to change the last child - // to match now. - if ((changeType == SiblingElementRemoved || changeType == FinishedParsingChildren) && lastChildElement == elementBeforeChange && lastChildElement && lastChildElement->affectedByLastChildRules()) - lastChildElement->setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create(StyleChangeReason::SiblingSelector)); + if (childrenAffectedByLastChildRules() && !elementAfterChange && elementBeforeChange && elementBeforeChange->affectedByLastChildRules()) { + elementBeforeChange->pseudoStateChanged(CSSSelector::PseudoLastChild); + elementBeforeChange->pseudoStateChanged(CSSSelector::PseudoOnlyChild); } // For ~ and + combinators, succeeding siblings may need style invalidation // after an element is inserted or removed. - if (!nodeAfterChange) + if (!elementAfterChange) return; - if (changeType != SiblingElementRemoved && changeType != SiblingElementInserted) - return; + if (!childrenAffectedByIndirectAdjacentRules() && !childrenAffectedByDirectAdjacentRules()) return; - Element* elementAfterChange = nodeAfterChange->isElementNode() ? toElement(nodeAfterChange) : ElementTraversal::nextSibling(*nodeAfterChange); - if (!elementAfterChange) + if (changeType == SiblingElementInserted) { + document().styleEngine().scheduleInvalidationsForInsertedSibling(elementBeforeChange, *changedElement); return; - Element* elementBeforeChange = nullptr; - if (nodeBeforeChange) - elementBeforeChange = nodeBeforeChange->isElementNode() ? toElement(nodeBeforeChange) : ElementTraversal::previousSibling(*nodeBeforeChange); + } - if (changeType == SiblingElementInserted) - document().styleEngine().scheduleInvalidationsForInsertedSibling(elementBeforeChange, *toElement(changedNode)); - else - document().styleEngine().scheduleInvalidationsForRemovedSibling(elementBeforeChange, *toElement(changedNode), *elementAfterChange); + DCHECK(changeType == SiblingElementRemoved); + document().styleEngine().scheduleInvalidationsForRemovedSibling(elementBeforeChange, *changedElement, *elementAfterChange); } void ContainerNode::invalidateNodeListCachesInAncestors(const QualifiedName* attrName, Element* attributeOwnerElement)
diff --git a/third_party/WebKit/Source/core/dom/ContainerNode.h b/third_party/WebKit/Source/core/dom/ContainerNode.h index 3e252b61..fd76f81 100644 --- a/third_party/WebKit/Source/core/dom/ContainerNode.h +++ b/third_party/WebKit/Source/core/dom/ContainerNode.h
@@ -54,6 +54,13 @@ AffectedByLastChildRules = 1 << 11, NumberOfDynamicRestyleFlags = 12, + + ChildrenAffectedByStructuralRules = ChildrenAffectedByFirstChildRules + | ChildrenAffectedByLastChildRules + | ChildrenAffectedByDirectAdjacentRules + | ChildrenAffectedByIndirectAdjacentRules + | ChildrenAffectedByForwardPositionalRules + | ChildrenAffectedByBackwardPositionalRules }; enum SubtreeModificationAction { @@ -158,7 +165,7 @@ // FIXME: These methods should all be renamed to something better than "check", // since it's not clear that they alter the style bits of siblings and children. enum SiblingCheckType { FinishedParsingChildren, SiblingElementInserted, SiblingElementRemoved }; - void checkForSiblingStyleChanges(SiblingCheckType, Node* changedNode, Node* nodeBeforeChange, Node* nodeAfterChange); + void checkForSiblingStyleChanges(SiblingCheckType, Element* changedElement, Node* nodeBeforeChange, Node* nodeAfterChange); void recalcDescendantStyles(StyleRecalcChange); bool childrenSupportStyleSharing() const { return !hasRestyleFlags(); }
diff --git a/third_party/WebKit/Source/core/dom/Element.cpp b/third_party/WebKit/Source/core/dom/Element.cpp index 407edc3..289c6b57 100644 --- a/third_party/WebKit/Source/core/dom/Element.cpp +++ b/third_party/WebKit/Source/core/dom/Element.cpp
@@ -2129,7 +2129,7 @@ checkForEmptyStyleChange(); if (!change.byParser && change.isChildElementChange()) - checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingElementRemoved : SiblingElementInserted, change.siblingChanged, change.siblingBeforeChange, change.siblingAfterChange); + checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingElementRemoved : SiblingElementInserted, toElement(change.siblingChanged), change.siblingBeforeChange, change.siblingAfterChange); // TODO(hayato): Confirm that we can skip this if a shadow tree is v1. if (ElementShadow* shadow = this->shadow())
diff --git a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp index 82f19ef..af3defa 100644 --- a/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp +++ b/third_party/WebKit/Source/core/dom/shadow/ShadowRoot.cpp
@@ -202,7 +202,7 @@ ContainerNode::childrenChanged(change); if (change.isChildElementChange()) - checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingElementRemoved : SiblingElementInserted, change.siblingChanged, change.siblingBeforeChange, change.siblingAfterChange); + checkForSiblingStyleChanges(change.type == ElementRemoved ? SiblingElementRemoved : SiblingElementInserted, toElement(change.siblingChanged), change.siblingBeforeChange, change.siblingAfterChange); if (InsertionPoint* point = shadowInsertionPointOfYoungerShadowRoot()) { if (ShadowRoot* root = point->containingShadowRoot())
diff --git a/third_party/WebKit/Source/core/events/PointerEventFactory.cpp b/third_party/WebKit/Source/core/events/PointerEventFactory.cpp index cc50085..1859b52c0 100644 --- a/third_party/WebKit/Source/core/events/PointerEventFactory.cpp +++ b/third_party/WebKit/Source/core/events/PointerEventFactory.cpp
@@ -25,7 +25,7 @@ case WebPointerProperties::PointerType::Mouse: return "mouse"; } - ASSERT_NOT_REACHED(); + NOTREACHED(); return ""; } @@ -47,7 +47,7 @@ #undef RETURN_CORRESPONDING_PE_NAME - ASSERT_NOT_REACHED(); + NOTREACHED(); return emptyAtom; } @@ -78,13 +78,16 @@ pointerEventInit.setIsPrimary(isPrimary(pointerId)); } -void PointerEventFactory::setBubblesAndCancelable(PointerEventInit& pointerEventInit, - const AtomicString& type) +void PointerEventFactory::setBubblesAndCancelable( + PointerEventInit& pointerEventInit, const AtomicString& type) { pointerEventInit.setBubbles(type != EventTypeNames::pointerenter && type != EventTypeNames::pointerleave); pointerEventInit.setCancelable(type != EventTypeNames::pointerenter - && type != EventTypeNames::pointerleave && type != EventTypeNames::pointercancel); + && type != EventTypeNames::pointerleave + && type != EventTypeNames::pointercancel + && type != EventTypeNames::gotpointercapture + && type != EventTypeNames::lostpointercapture); } PointerEvent* PointerEventFactory::create( @@ -193,7 +196,7 @@ PointerEvent* PointerEventFactory::createPointerCancelEvent( const int pointerId, const WebPointerProperties::PointerType pointerType) { - ASSERT(m_pointerIdMapping.contains(pointerId)); + DCHECK(m_pointerIdMapping.contains(pointerId)); m_pointerIdMapping.set(pointerId, PointerAttributes(m_pointerIdMapping.get(pointerId).incomingId, false)); PointerEventInit pointerEventInit; @@ -207,33 +210,11 @@ return PointerEvent::create(EventTypeNames::pointercancel, pointerEventInit); } -PointerEvent* PointerEventFactory::createPointerCaptureEvent( - PointerEvent* pointerEvent, - const AtomicString& type) -{ - ASSERT(type == EventTypeNames::gotpointercapture - || type == EventTypeNames::lostpointercapture); - - PointerEventInit pointerEventInit; - pointerEventInit.setPointerId(pointerEvent->pointerId()); - pointerEventInit.setPointerType(pointerEvent->pointerType()); - pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); - pointerEventInit.setBubbles(true); - pointerEventInit.setCancelable(false); - - return PointerEvent::create(type, pointerEventInit); -} - -PointerEvent* PointerEventFactory::createPointerBoundaryEvent( +PointerEvent* PointerEventFactory::createPointerEventFrom( PointerEvent* pointerEvent, const AtomicString& type, EventTarget* relatedTarget) { - ASSERT(type == EventTypeNames::pointerout - || type == EventTypeNames::pointerleave - || type == EventTypeNames::pointerover - || type == EventTypeNames::pointerenter); - PointerEventInit pointerEventInit; pointerEventInit.setPointerId(pointerEvent->pointerId()); @@ -260,6 +241,30 @@ return PointerEvent::create(type, pointerEventInit); } +PointerEvent* PointerEventFactory::createPointerCaptureEvent( + PointerEvent* pointerEvent, + const AtomicString& type) +{ + DCHECK(type == EventTypeNames::gotpointercapture + || type == EventTypeNames::lostpointercapture); + + return createPointerEventFrom( + pointerEvent, type, pointerEvent->relatedTarget()); +} + +PointerEvent* PointerEventFactory::createPointerBoundaryEvent( + PointerEvent* pointerEvent, + const AtomicString& type, + EventTarget* relatedTarget) +{ + DCHECK(type == EventTypeNames::pointerout + || type == EventTypeNames::pointerleave + || type == EventTypeNames::pointerover + || type == EventTypeNames::pointerenter); + + return createPointerEventFrom(pointerEvent, type, relatedTarget); +} + PointerEventFactory::PointerEventFactory() { clear();
diff --git a/third_party/WebKit/Source/core/events/PointerEventFactory.h b/third_party/WebKit/Source/core/events/PointerEventFactory.h index 13118ce..951968b 100644 --- a/third_party/WebKit/Source/core/events/PointerEventFactory.h +++ b/third_party/WebKit/Source/core/events/PointerEventFactory.h
@@ -102,6 +102,11 @@ unsigned buttons); void setBubblesAndCancelable(PointerEventInit&, const AtomicString& type); + // Creates pointerevents like boundary and capture events from another + // pointerevent (i.e. up/down/move events). + PointerEvent* createPointerEventFrom( + PointerEvent*, const AtomicString&, EventTarget*); + static const int s_invalidId; int m_currentId;
diff --git a/third_party/WebKit/Source/core/frame/Settings.in b/third_party/WebKit/Source/core/frame/Settings.in index e2657d8..fb75a19a 100644 --- a/third_party/WebKit/Source/core/frame/Settings.in +++ b/third_party/WebKit/Source/core/frame/Settings.in
@@ -87,7 +87,6 @@ webGLEnabled initial=false webGLErrorsToConsoleEnabled initial=true -accelerated2dCanvasEnabled initial=false antialiased2dCanvasEnabled initial=true antialiasedClips2dCanvasEnabled initial=false accelerated2dCanvasMSAASampleCount type=int, initial=0
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.h b/third_party/WebKit/Source/core/frame/UseCounter.h index 944166c..0552223 100644 --- a/third_party/WebKit/Source/core/frame/UseCounter.h +++ b/third_party/WebKit/Source/core/frame/UseCounter.h
@@ -1259,6 +1259,21 @@ SVGSMILAdditiveAnimation = 1484, SendBeaconWithNonSimpleContentType = 1485, + ChromeLoadTimesRequestTime = 1486, + ChromeLoadTimesStartLoadTime = 1487, + ChromeLoadTimesCommitLoadTime = 1488, + ChromeLoadTimesFinishDocumentLoadTime = 1489, + ChromeLoadTimesFinishLoadTime = 1490, + ChromeLoadTimesFirstPaintTime = 1491, + ChromeLoadTimesFirstPaintAfterLoadTime = 1492, + ChromeLoadTimesNavigationType = 1493, + ChromeLoadTimesWasFetchedViaSpdy = 1494, + ChromeLoadTimesWasNpnNegotiated = 1495, + ChromeLoadTimesNpnNegotiatedProtocol = 1496, + ChromeLoadTimesWasAlternateProtocolAvailable = 1497, + ChromeLoadTimesConnectionInfo = 1498, + ChromeLoadTimesUnknown = 1499, + // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots. // Also, run update_use_counter_feature_enum.py in chromium/src/tools/metrics/histograms/
diff --git a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp index af22dd3..9b76d8115 100644 --- a/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
@@ -766,8 +766,13 @@ if (RuntimeEnabledFeatures::forceDisplayList2dCanvasEnabled()) return false; - Settings* settings = document().settings(); - if (!settings || !settings->accelerated2dCanvasEnabled()) + if (!RuntimeEnabledFeatures::accelerated2dCanvasEnabled()) + return false; + + // The following is necessary for handling the special case of canvases in the + // dev tools overlay, which run in a process that supports accelerated 2d canvas + // but in a special compositing context that does not. + if (layoutBox() && !layoutBox()->hasAcceleratedCompositing()) return false; int canvasPixelCount = size.width() * size.height(); @@ -788,7 +793,8 @@ } // Do not use acceleration for small canvas. - if (canvasPixelCount < settings->minimumAccelerated2dCanvasSize()) + Settings* settings = document().settings(); + if (!settings || canvasPixelCount < settings->minimumAccelerated2dCanvasSize()) return false; if (!Platform::current()->canAccelerate2dCanvas())
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLSrcsetParser.cpp b/third_party/WebKit/Source/core/html/parser/HTMLSrcsetParser.cpp index ecfe269..d16dbf3 100644 --- a/third_party/WebKit/Source/core/html/parser/HTMLSrcsetParser.cpp +++ b/third_party/WebKit/Source/core/html/parser/HTMLSrcsetParser.cpp
@@ -356,7 +356,7 @@ return winner; for (unsigned i = imageCandidates.size() - 1; i > winner; --i) { KURL url = document->completeURL(stripLeadingAndTrailingHTMLSpaces(imageCandidates[i]->url())); - if (memoryCache()->resourceForURL(url, document->fetcher()->getCacheIdentifier()) || url.protocolIsData()) + if (memoryCache()->resourceForURL(url, document->fetcher()->getCacheIdentifier())) return i; } return winner;
diff --git a/third_party/WebKit/Source/core/input/PointerEventManager.cpp b/third_party/WebKit/Source/core/input/PointerEventManager.cpp index dea2939..035250a9 100644 --- a/third_party/WebKit/Source/core/input/PointerEventManager.cpp +++ b/third_party/WebKit/Source/core/input/PointerEventManager.cpp
@@ -528,10 +528,16 @@ // This is for when the mouse is released outside of the page. if (pointerEvent->type() == EventTypeNames::pointermove - && !pointerEvent->buttons() - && pointerEvent->isPrimary()) { - m_preventMouseEventForPointerType[toPointerTypeIndex( - mouseEvent.pointerProperties().pointerType)] = false; + && !pointerEvent->buttons()) { + + releasePointerCapture(pointerEvent->pointerId()); + // Send got/lostpointercapture rightaway if necessary. + processPendingPointerCapture(pointerEvent); + + if (pointerEvent->isPrimary()) { + m_preventMouseEventForPointerType[toPointerTypeIndex( + mouseEvent.pointerProperties().pointerType)] = false; + } } EventTarget* pointerEventTarget = processCaptureAndPositionOfPointerEvent(pointerEvent, target, @@ -575,9 +581,10 @@ nullptr, clickCount)); } - if (pointerEvent->buttons() == 0) { - releasePointerCapture(pointerEvent->pointerId()); + if (pointerEvent->type() == EventTypeNames::pointerup + || pointerEvent->type() == EventTypeNames::pointercancel) { + releasePointerCapture(pointerEvent->pointerId()); // Send got/lostpointercapture rightaway if necessary. processPendingPointerCapture(pointerEvent);
diff --git a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp index 16d1cfe..23b9550 100644 --- a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp +++ b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.cpp
@@ -169,11 +169,16 @@ ScriptState* scriptState = nullptr; if (context->isDocument()) { frame = toDocument(context)->frame(); + if (!frame) + return; scriptState = event->world() ? ScriptState::forWorld(frame, *event->world()) : nullptr; - } - if (context->isMainThreadWorkletGlobalScope()) { + } else if (context->isMainThreadWorkletGlobalScope()) { frame = toMainThreadWorkletGlobalScope(context)->frame(); + if (!frame) + return; scriptState = toMainThreadWorkletGlobalScope(context)->scriptController()->getScriptState(); + } else { + NOTREACHED(); } frame->console().reportMessageToClient(JSMessageSource, ErrorMessageLevel, event->messageForConsole(), event->location());
diff --git a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.h b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.h index 6d1fa37c..296ed0ef 100644 --- a/third_party/WebKit/Source/core/inspector/MainThreadDebugger.h +++ b/third_party/WebKit/Source/core/inspector/MainThreadDebugger.h
@@ -69,8 +69,6 @@ bool isWorker() override { return false; } bool isPaused() const { return m_paused; } void setClientMessageLoop(std::unique_ptr<ClientMessageLoop>); - void reportConsoleMessage(ExecutionContext*, MessageSource, MessageLevel, const String& message, SourceLocation*) override; - int contextGroupId(ExecutionContext*) override; // TODO(dgozman): by making this method virtual, we can move many methods to ThreadDebugger and avoid some duplication. Should be careful about performance. int contextGroupId(LocalFrame*); @@ -79,11 +77,10 @@ void contextWillBeDestroyed(ScriptState*); void exceptionThrown(ExecutionContext*, ErrorEvent*); - void installAdditionalCommandLineAPI(v8::Local<v8::Context>, v8::Local<v8::Object>) override; - - v8::MaybeLocal<v8::Value> memoryInfo(v8::Isolate*, v8::Local<v8::Context>) override; - private: + void reportConsoleMessage(ExecutionContext*, MessageSource, MessageLevel, const String& message, SourceLocation*) override; + int contextGroupId(ExecutionContext*) override; + // V8InspectorClient implementation. void runMessageLoopOnPause(int contextGroupId) override; void quitMessageLoopOnPause() override; @@ -95,16 +92,17 @@ bool canExecuteScripts(int contextGroupId) override; void resumeStartup(int contextGroupId) override; void consoleAPIMessage(int contextGroupId, V8ConsoleAPIType, const String16& message, const String16& url, unsigned lineNumber, unsigned columnNumber, V8StackTrace*) override; - - std::unique_ptr<ClientMessageLoop> m_clientMessageLoop; - std::unique_ptr<InspectorTaskRunner> m_taskRunner; - bool m_paused; - - static MainThreadDebugger* s_instance; + void installAdditionalCommandLineAPI(v8::Local<v8::Context>, v8::Local<v8::Object>) override; + v8::MaybeLocal<v8::Value> memoryInfo(v8::Isolate*, v8::Local<v8::Context>) override; static void querySelectorCallback(const v8::FunctionCallbackInfo<v8::Value>&); static void querySelectorAllCallback(const v8::FunctionCallbackInfo<v8::Value>&); static void xpathSelectorCallback(const v8::FunctionCallbackInfo<v8::Value>&); + + std::unique_ptr<ClientMessageLoop> m_clientMessageLoop; + std::unique_ptr<InspectorTaskRunner> m_taskRunner; + bool m_paused; + static MainThreadDebugger* s_instance; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/inspector/ThreadDebugger.h b/third_party/WebKit/Source/core/inspector/ThreadDebugger.h index 587ec7d..3839abb2 100644 --- a/third_party/WebKit/Source/core/inspector/ThreadDebugger.h +++ b/third_party/WebKit/Source/core/inspector/ThreadDebugger.h
@@ -28,7 +28,10 @@ public: explicit ThreadDebugger(v8::Isolate*); ~ThreadDebugger() override; + static ThreadDebugger* from(v8::Isolate*); + virtual bool isWorker() = 0; + V8Inspector* v8Inspector() const { return m_v8Inspector.get(); } static void willExecuteScript(v8::Isolate*, int scriptId); static void didExecuteScript(v8::Isolate*); @@ -43,6 +46,16 @@ unsigned promiseRejected(v8::Local<v8::Context>, const String16& errorMessage, v8::Local<v8::Value> exception, std::unique_ptr<SourceLocation>); void promiseRejectionRevoked(v8::Local<v8::Context>, unsigned promiseRejectionId); +protected: + virtual int contextGroupId(ExecutionContext*) = 0; + virtual void reportConsoleMessage(ExecutionContext*, MessageSource, MessageLevel, const String& message, SourceLocation*) = 0; + void installAdditionalCommandLineAPI(v8::Local<v8::Context>, v8::Local<v8::Object>) override; + void createFunctionProperty(v8::Local<v8::Context>, v8::Local<v8::Object>, const char* name, v8::FunctionCallback, const char* description); + static MessageLevel consoleAPITypeToMessageLevel(V8ConsoleAPIType); + + v8::Isolate* m_isolate; + +private: // V8InspectorClient implementation. void beginUserGesture() override; void endUserGesture() override; @@ -50,26 +63,14 @@ bool formatAccessorsAsProperties(v8::Local<v8::Value>) override; double currentTimeMS() override; bool isInspectableHeapObject(v8::Local<v8::Object>) override; - void installAdditionalCommandLineAPI(v8::Local<v8::Context>, v8::Local<v8::Object>) override; void consoleTime(const String16& title) override; void consoleTimeEnd(const String16& title) override; void consoleTimeStamp(const String16& title) override; void startRepeatingTimer(double, V8InspectorClient::TimerCallback, void* data) override; void cancelTimer(void* data) override; - V8Inspector* v8Inspector() const { return m_v8Inspector.get(); } - virtual bool isWorker() { return true; } - virtual void reportConsoleMessage(ExecutionContext*, MessageSource, MessageLevel, const String& message, SourceLocation*) = 0; - virtual int contextGroupId(ExecutionContext*) = 0; - -protected: - void createFunctionProperty(v8::Local<v8::Context>, v8::Local<v8::Object>, const char* name, v8::FunctionCallback, const char* description); void onTimer(TimerBase*); - static MessageLevel consoleAPITypeToMessageLevel(V8ConsoleAPIType); - v8::Isolate* m_isolate; - -private: static void setMonitorEventsCallback(const v8::FunctionCallbackInfo<v8::Value>&, bool enabled); static void monitorEventsCallback(const v8::FunctionCallbackInfo<v8::Value>&); static void unmonitorEventsCallback(const v8::FunctionCallbackInfo<v8::Value>&);
diff --git a/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.h b/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.h index 7f93b9b..115343b 100644 --- a/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.h +++ b/third_party/WebKit/Source/core/inspector/WorkerThreadDebugger.h
@@ -48,14 +48,16 @@ ~WorkerThreadDebugger() override; static WorkerThreadDebugger* from(v8::Isolate*); - void reportConsoleMessage(ExecutionContext*, MessageSource, MessageLevel, const String& message, SourceLocation*) override; - int contextGroupId(ExecutionContext*) override; + bool isWorker() override { return true; } int contextGroupId(); void contextCreated(v8::Local<v8::Context>); void contextWillBeDestroyed(v8::Local<v8::Context>); void exceptionThrown(ErrorEvent*); - unsigned promiseRejected(v8::Local<v8::Context>, const String16& errorMessage, v8::Local<v8::Value> exception, std::unique_ptr<SourceLocation>); + +private: + int contextGroupId(ExecutionContext*) override; + void reportConsoleMessage(ExecutionContext*, MessageSource, MessageLevel, const String& message, SourceLocation*) override; // V8InspectorClient implementation. void runMessageLoopOnPause(int contextGroupId) override; @@ -67,11 +69,9 @@ void endEnsureAllContextsInGroup(int contextGroupId) override; bool canExecuteScripts(int contextGroupId) override; void resumeStartup(int contextGroupId) override; - v8::MaybeLocal<v8::Value> memoryInfo(v8::Isolate*, v8::Local<v8::Context>) override; void consoleAPIMessage(int contextGroupId, V8ConsoleAPIType, const String16& message, const String16& url, unsigned lineNumber, unsigned columnNumber, V8StackTrace*) override; -private: WorkerThread* m_workerThread; };
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.h b/third_party/WebKit/Source/core/layout/LayoutObject.h index 24d0de5a..d8e9a68 100644 --- a/third_party/WebKit/Source/core/layout/LayoutObject.h +++ b/third_party/WebKit/Source/core/layout/LayoutObject.h
@@ -484,6 +484,7 @@ bool isFileUploadControl() const { return isOfType(LayoutObjectFileUploadControl); } bool isFrame() const { return isOfType(LayoutObjectFrame); } bool isFrameSet() const { return isOfType(LayoutObjectFrameSet); } + bool isLayoutNGBlockFlow() const { return isOfType(LayoutObjectNGBlockFlow); } bool isLayoutTableCol() const { return isOfType(LayoutObjectLayoutTableCol); } bool isListBox() const { return isOfType(LayoutObjectListBox); } bool isListItem() const { return isOfType(LayoutObjectListItem); } @@ -1427,6 +1428,7 @@ LayoutObjectListMarker, LayoutObjectMedia, LayoutObjectMenuList, + LayoutObjectNGBlockFlow, LayoutObjectProgress, LayoutObjectQuote, LayoutObjectLayoutButton,
diff --git a/third_party/WebKit/Source/core/layout/ng/LayoutNGBlockFlow.cpp b/third_party/WebKit/Source/core/layout/ng/LayoutNGBlockFlow.cpp new file mode 100644 index 0000000..a09ffe2 --- /dev/null +++ b/third_party/WebKit/Source/core/layout/ng/LayoutNGBlockFlow.cpp
@@ -0,0 +1,19 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/layout/ng/LayoutNGBlockFlow.h" + +namespace blink { + +LayoutNGBlockFlow::LayoutNGBlockFlow(Element* element) + : LayoutBlockFlow(element) +{ +} + +bool LayoutNGBlockFlow::isOfType(LayoutObjectType type) const +{ + return type == LayoutObjectNGBlockFlow || LayoutBlockFlow::isOfType(type); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/ng/LayoutNGBlockFlow.h b/third_party/WebKit/Source/core/layout/ng/LayoutNGBlockFlow.h new file mode 100644 index 0000000..5e8aa01 --- /dev/null +++ b/third_party/WebKit/Source/core/layout/ng/LayoutNGBlockFlow.h
@@ -0,0 +1,26 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef LayoutNGBlockFlow_h +#define LayoutNGBlockFlow_h + +#include "core/layout/LayoutBlockFlow.h" + +namespace blink { + +// This overrides the default layout block algorithm to use Layout NG. +class LayoutNGBlockFlow final : public LayoutBlockFlow { +public: + explicit LayoutNGBlockFlow(Element*); + ~LayoutNGBlockFlow() override = default; + +private: + bool isOfType(LayoutObjectType) const override; +}; + +DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutNGBlockFlow, isLayoutNGBlockFlow()); + +} // namespace blink + +#endif // LayoutNGBlockFlow_h
diff --git a/third_party/WebKit/Source/core/layout/ng/NGConstraintSpace.h b/third_party/WebKit/Source/core/layout/ng/NGConstraintSpace.h index e6d8536..d0d9a1f 100644 --- a/third_party/WebKit/Source/core/layout/ng/NGConstraintSpace.h +++ b/third_party/WebKit/Source/core/layout/ng/NGConstraintSpace.h
@@ -17,10 +17,10 @@ class NGLayoutOpportunityIterator; enum NGExclusionType { - ClearNone = 0, - ClearFloatLeft = 1, - ClearFloatRight = 2, - ClearFragment = 4 + NGClearNone = 0, + NGClearFloatLeft = 1, + NGClearFloatRight = 2, + NGClearFragment = 4 }; enum NGFragmentationType { @@ -102,7 +102,7 @@ DoublyLinkedList<const NGExclusion> exclusions(unsigned options = 0) const; NGLayoutOpportunityIterator layoutOpportunities( - unsigned clear = ClearNone, + unsigned clear = NGClearNone, NGExclusionFlowType avoid = ExcludeNone) const; // Modifies constraint space to account for a placed fragment. Depending on
diff --git a/third_party/WebKit/Source/core/layout/ng/NGFragment.cpp b/third_party/WebKit/Source/core/layout/ng/NGFragment.cpp new file mode 100644 index 0000000..22d1d017 --- /dev/null +++ b/third_party/WebKit/Source/core/layout/ng/NGFragment.cpp
@@ -0,0 +1,21 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/layout/ng/NGFragment.h" + +namespace blink { + +NGFragment::NGFragment(LayoutUnit inlineSize, LayoutUnit blockSize) + : m_inlineSize(inlineSize) + , m_blockSize(blockSize) +{ +} + +void NGFragment::setOffset(LayoutUnit inlineOffset, LayoutUnit blockOffset) +{ + m_inlineOffset = inlineOffset; + m_blockOffset = blockOffset; +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/ng/NGFragment.h b/third_party/WebKit/Source/core/layout/ng/NGFragment.h new file mode 100644 index 0000000..3aa3bd8 --- /dev/null +++ b/third_party/WebKit/Source/core/layout/ng/NGFragment.h
@@ -0,0 +1,36 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef NGFragment_h +#define NGFragment_h + +#include "core/CoreExport.h" +#include "platform/LayoutUnit.h" + +namespace blink { + +class CORE_EXPORT NGFragment final { +public: + NGFragment(LayoutUnit inlineSize, LayoutUnit blockSize); + ~NGFragment() { } + + LayoutUnit inlineSize() const { return m_inlineSize; } + LayoutUnit blockSize() const { return m_blockSize; } + + LayoutUnit inlineOffset() const { return m_inlineOffset; } + LayoutUnit blockOffset() const { return m_blockOffset; } + + void setOffset(LayoutUnit inlineOffset, LayoutUnit blockOffset); + +private: + LayoutUnit m_inlineSize; + LayoutUnit m_blockSize; + + LayoutUnit m_inlineOffset; + LayoutUnit m_blockOffset; +}; + +} // namespace blink + +#endif // NGFragment_h
diff --git a/third_party/WebKit/Source/core/loader/ImageLoader.cpp b/third_party/WebKit/Source/core/loader/ImageLoader.cpp index 306b6167..9bbe25b 100644 --- a/third_party/WebKit/Source/core/loader/ImageLoader.cpp +++ b/third_party/WebKit/Source/core/loader/ImageLoader.cpp
@@ -428,7 +428,7 @@ if (resource && !resource->errorOccurred()) return true; } - return (isHTMLObjectElement(m_element) || isHTMLEmbedElement(m_element)); + return (isHTMLObjectElement(m_element) || isHTMLEmbedElement(m_element) || url.protocolIsData()); } void ImageLoader::imageNotifyFinished(ImageResource* resource)
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js b/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js index 0f78494..4a9c780 100644 --- a/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js +++ b/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js
@@ -163,7 +163,7 @@ for (var i = 0; i < uniqueProperties.length; ++i) { var propertyName = uniqueProperties[i]; var propertyValue = nodeStyle.computedStyle.get(propertyName); - var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(propertyName); + var canonicalName = WebInspector.cssMetadata().canonicalPropertyName(propertyName); var inherited = !inhertiedProperties.has(canonicalName); if (!showInherited && inherited && !(propertyName in this._alwaysShowComputedProperties)) continue; @@ -228,8 +228,9 @@ { if (a.startsWith("-webkit") ^ b.startsWith("-webkit")) return a.startsWith("-webkit") ? 1 : -1; - var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName; - return canonicalName(a).compareTo(canonicalName(b)); + var canonical1 = WebInspector.cssMetadata().canonicalPropertyName(a); + var canonical2 = WebInspector.cssMetadata().canonicalPropertyName(b); + return canonical1.compareTo(canonical2); } /** @@ -336,7 +337,7 @@ for (var property of style.allProperties) { if (!matchedStyles.propertyState(property)) continue; - result.add(WebInspector.CSSMetadata.canonicalPropertyName(property.name)); + result.add(WebInspector.cssMetadata().canonicalPropertyName(property.name)); } } return result;
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js index 5d7b27d..09990f3 100644 --- a/third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/elements/StylesSidebarPane.js
@@ -63,7 +63,7 @@ exclamationElement.className = "exclamation-mark"; if (!WebInspector.StylesSidebarPane.ignoreErrorsForProperty(property)) exclamationElement.type = "warning-icon"; - exclamationElement.title = WebInspector.CSSMetadata.isCSSPropertyName(property.name) ? WebInspector.UIString("Invalid property value") : WebInspector.UIString("Unknown property name"); + exclamationElement.title = WebInspector.cssMetadata().isCSSPropertyName(property.name) ? WebInspector.UIString("Invalid property value") : WebInspector.UIString("Unknown property name"); return exclamationElement; } @@ -978,7 +978,7 @@ if (this._matchedStyles.isInherited(this._style)) { // While rendering inherited stylesheet, reverse meaning of this property. // Render truly inherited properties with black, i.e. return them as non-inherited. - return !WebInspector.CSSMetadata.isPropertyInherited(propertyName); + return !WebInspector.cssMetadata().isPropertyInherited(propertyName); } return false; }, @@ -2387,7 +2387,7 @@ selectElement.parentElement.scrollIntoViewIfNeeded(false); var applyItemCallback = !isEditingName ? this._applyFreeFlowStyleTextEdit.bind(this) : undefined; - var cssCompletions = isEditingName ? WebInspector.CSSMetadata.cssPropertiesMetainfo.allProperties() : WebInspector.CSSMetadata.propertyValues(this.nameElement.textContent); + var cssCompletions = isEditingName ? WebInspector.cssMetadata().allProperties() : WebInspector.cssMetadata().propertyValues(this.nameElement.textContent); this._prompt = new WebInspector.StylesSidebarPane.CSSPropertyPrompt(cssCompletions, this, isEditingName); this._prompt.setAutocompletionTimeout(0); if (applyItemCallback) { @@ -2907,7 +2907,7 @@ */ function customNumberHandler(prefix, number, suffix) { - if (number !== 0 && !suffix.length && WebInspector.CSSMetadata.isLengthProperty(this._treeElement.property.name)) + if (number !== 0 && !suffix.length && WebInspector.cssMetadata().isLengthProperty(this._treeElement.property.name)) suffix = "px"; return prefix + number + suffix; } @@ -2953,7 +2953,7 @@ for (var i = 0; i < results.length; ++i) results[i] = results[i].toUpperCase(); } - var selectedIndex = this._isEditingName ? WebInspector.CSSMetadata.mostUsedProperty(results) : 0; + var selectedIndex = this._isEditingName ? WebInspector.cssMetadata().mostUsedProperty(results) : 0; completionsReadyCallback(results, selectedIndex); }, @@ -3016,11 +3016,11 @@ var regexes = [WebInspector.CSSMetadata.VariableRegex, WebInspector.CSSMetadata.URLRegex]; var processors = [createTextNode, this._processURL.bind(this)]; - if (this._bezierHandler && WebInspector.CSSMetadata.isBezierAwareProperty(this._propertyName)) { + if (this._bezierHandler && WebInspector.cssMetadata().isBezierAwareProperty(this._propertyName)) { regexes.push(WebInspector.Geometry.CubicBezier.Regex); processors.push(this._bezierHandler); } - if (this._colorHandler && WebInspector.CSSMetadata.isColorAwareProperty(this._propertyName)) { + if (this._colorHandler && WebInspector.cssMetadata().isColorAwareProperty(this._propertyName)) { regexes.push(WebInspector.Color.Regex); processors.push(this._colorHandler); }
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CSSMatchedStyles.js b/third_party/WebKit/Source/devtools/front_end/sdk/CSSMatchedStyles.js index 1791a22a..ac80083 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/CSSMatchedStyles.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/CSSMatchedStyles.js
@@ -295,7 +295,7 @@ for (var i = 0; i < properties.length; ++i) { var property = properties[i]; // Does this style contain non-overridden inherited property? - if (property.activeInStyle() && WebInspector.CSSMetadata.isPropertyInherited(property.name)) + if (property.activeInStyle() && WebInspector.cssMetadata().isPropertyInherited(property.name)) return true; } return false; @@ -370,7 +370,7 @@ // Do not pick non-inherited properties from inherited styles. var inherited = this.isInherited(style); - if (inherited && !WebInspector.CSSMetadata.isPropertyInherited(property.name)) + if (inherited && !WebInspector.cssMetadata().isPropertyInherited(property.name)) continue; if (!property.activeInStyle()) { @@ -378,7 +378,7 @@ continue; } - var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(property.name); + var canonicalName = WebInspector.cssMetadata().canonicalPropertyName(property.name); if (foundImportantProperties.has(canonicalName)) { result.set(property, WebInspector.CSSMatchedStyles.PropertyState.Overloaded); continue; @@ -416,7 +416,7 @@ // If every longhand of the shorthand is not active, then the shorthand is not active too. for (var property of style.leadingProperties()) { - var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(property.name); + var canonicalName = WebInspector.cssMetadata().canonicalPropertyName(property.name); if (!styleActiveProperties.has(canonicalName)) continue; var longhands = style.longhandProperties(property.name); @@ -424,7 +424,7 @@ continue; var notUsed = true; for (var longhand of longhands) { - var longhandCanonicalName = WebInspector.CSSMetadata.canonicalPropertyName(longhand.name); + var longhandCanonicalName = WebInspector.cssMetadata().canonicalPropertyName(longhand.name); notUsed = notUsed && !styleActiveProperties.has(longhandCanonicalName); } if (!notUsed)
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CSSMetadata.js b/third_party/WebKit/Source/devtools/front_end/sdk/CSSMetadata.js index 6783209..06d4f3c 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/CSSMetadata.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/CSSMetadata.js
@@ -68,93 +68,171 @@ } } this._values.sort(); + this._valuesSet = new Set(this._values); } WebInspector.CSSMetadata.VariableRegex = /(var\(--.*?\))/g; WebInspector.CSSMetadata.URLRegex = /url\(\s*('.+?'|".+?"|[^)]+)\s*\)/g; -/** - * @param {string} propertyName - * @return {boolean} - */ -WebInspector.CSSMetadata.isColorAwareProperty = function(propertyName) -{ - return !!WebInspector.CSSMetadata._colorAwareProperties[propertyName.toLowerCase()] || WebInspector.CSSMetadata.isCustomProperty(propertyName.toLowerCase()); +WebInspector.CSSMetadata.prototype = { + /** + * @return {!Array<string>} + */ + allProperties: function() + { + return this._values; + }, + + /** + * @param {string} shorthand + * @return {?Array.<string>} + */ + longhands: function(shorthand) + { + return this._longhands.get(shorthand) || null; + }, + + /** + * @param {string} longhand + * @return {?Array.<string>} + */ + shorthands: function(longhand) + { + return this._shorthands.get(longhand) || null; + }, + + /** + * @param {string} propertyName + * @return {boolean} + */ + isColorAwareProperty: function(propertyName) + { + return !!WebInspector.CSSMetadata._colorAwareProperties[propertyName.toLowerCase()] || this.isCustomProperty(propertyName.toLowerCase()); + }, + + /** + * @param {string} propertyName + * @return {boolean} + */ + isLengthProperty: function(propertyName) + { + propertyName = propertyName.toLowerCase(); + if (propertyName === "line-height") + return false; + return WebInspector.CSSMetadata._distanceProperties[propertyName] || propertyName.startsWith("margin") || propertyName.startsWith("padding") || propertyName.indexOf("width") !== -1 || propertyName.indexOf("height") !== -1; + }, + + /** + * @param {string} propertyName + * @return {boolean} + */ + isBezierAwareProperty: function(propertyName) + { + propertyName = propertyName.toLowerCase(); + return !!WebInspector.CSSMetadata._bezierAwareProperties[propertyName] || this.isCustomProperty(propertyName); + }, + + /** + * @param {string} propertyName + * @return {boolean} + */ + isCustomProperty: function(propertyName) + { + return propertyName.startsWith("--"); + }, + + /** + * @param {string} name + * @return {string} + */ + canonicalPropertyName: function(name) + { + name = name.toLowerCase(); + if (!name || name.length < 9 || name.charAt(0) !== "-") + return name; + var match = name.match(/(?:-webkit-)(.+)/); + if (!match || !this._valuesSet.has(match[1])) + return name; + return match[1]; + }, + + /** + * @param {string} propertyName + * @return {boolean} + */ + isCSSPropertyName: function(propertyName) + { + propertyName = propertyName.toLowerCase(); + if (propertyName.startsWith("-moz-") || propertyName.startsWith("-o-") || propertyName.startsWith("-webkit-") || propertyName.startsWith("-ms-")) + return true; + return this._valuesSet.has(propertyName); + }, + + /** + * @param {string} propertyName + * @return {boolean} + */ + isPropertyInherited: function(propertyName) + { + propertyName = propertyName.toLowerCase(); + return this._inherited.has(this.canonicalPropertyName(propertyName)) || this._inherited.has(propertyName); + }, + + /** + * @param {string} propertyName + * @return {!Array<string>} + */ + propertyValues: function(propertyName) + { + var acceptedKeywords = ["inherit", "initial"]; + propertyName = propertyName.toLowerCase(); + var unprefixedName = propertyName.replace(/^-webkit-/, ""); + var entry = WebInspector.CSSMetadata._propertyDataMap[propertyName] || WebInspector.CSSMetadata._propertyDataMap[unprefixedName]; + if (entry && entry.values) + acceptedKeywords.pushAll(entry.values); + if (this.isColorAwareProperty(propertyName)) { + acceptedKeywords.push("currentColor"); + for (var color in WebInspector.Color.Nicknames) + acceptedKeywords.push(color); + } + return acceptedKeywords.sort(); + }, + + /** + * @param {!Array.<string>} properties + * @return {number} + */ + mostUsedProperty: function(properties) + { + var maxWeight = 0; + var index = 0; + for (var i = 0; i < properties.length; i++) { + var weight = WebInspector.CSSMetadata.Weight[properties[i]]; + if (!weight) + weight = WebInspector.CSSMetadata.Weight[this.canonicalPropertyName(properties[i])]; + if (weight > maxWeight) { + maxWeight = weight; + index = i; + } + } + return index; + } } /** - * @param {string} propertyName - * @return {boolean} + * @return {!WebInspector.CSSMetadata} */ -WebInspector.CSSMetadata.isLengthProperty = function(propertyName) +WebInspector.cssMetadata = function() { - propertyName = propertyName.toLowerCase(); - if (propertyName === "line-height") - return false; - if (!WebInspector.CSSMetadata._distancePropertiesKeySet) - WebInspector.CSSMetadata._distancePropertiesKeySet = WebInspector.CSSMetadata._distanceProperties.keySet(); - return WebInspector.CSSMetadata._distancePropertiesKeySet[propertyName] || propertyName.startsWith("margin") || propertyName.startsWith("padding") || propertyName.indexOf("width") !== -1 || propertyName.indexOf("height") !== -1; -} - -/** - * @param {string} propertyName - * @return {boolean} - */ -WebInspector.CSSMetadata.isBezierAwareProperty = function(propertyName) -{ - return !!WebInspector.CSSMetadata._bezierAwareProperties[propertyName.toLowerCase()] || WebInspector.CSSMetadata.isCustomProperty(propertyName.toLowerCase()); -} - -/** - * @param {string} propertyName - * @return {boolean} - */ -WebInspector.CSSMetadata.isCustomProperty = function(propertyName) -{ - return propertyName.startsWith("--"); -} - -/** - * @param {string} name - * @return {string} - */ -WebInspector.CSSMetadata.canonicalPropertyName = function(name) -{ - name = name.toLowerCase(); - if (!name || name.length < 9 || name.charAt(0) !== "-") - return name; - var match = name.match(/(?:-webkit-)(.+)/); - if (!match || !WebInspector.CSSMetadata.cssPropertiesMetainfo.hasProperty(match[1])) - return name; - return match[1]; -} - -/** - * @param {string} propertyName - * @return {boolean} - */ -WebInspector.CSSMetadata.isCSSPropertyName = function(propertyName) -{ - propertyName = propertyName.toLowerCase(); - if (propertyName.startsWith("-moz-") || propertyName.startsWith("-o-") || propertyName.startsWith("-webkit-") || propertyName.startsWith("-ms-")) - return true; - return WebInspector.CSSMetadata.cssPropertiesMetainfo.hasProperty(propertyName); -} - -/** - * @param {string} propertyName - * @return {boolean} - */ -WebInspector.CSSMetadata.isPropertyInherited = function(propertyName) -{ - var metadata = WebInspector.CSSMetadata.cssPropertiesMetainfo; - return metadata.inherited(WebInspector.CSSMetadata.canonicalPropertyName(propertyName)) || metadata.inherited(propertyName.toLowerCase()); + if (!WebInspector.CSSMetadata._instance) + WebInspector.CSSMetadata._instance = new WebInspector.CSSMetadata(WebInspector.CSSMetadata._generatedProperties || []); + return WebInspector.CSSMetadata._instance; } WebInspector.CSSMetadata._distanceProperties = [ "background-position", "border-spacing", "bottom", "font-size", "height", "left", "letter-spacing", "max-height", "max-width", "min-height", "min-width", "right", "text-indent", "top", "width", "word-spacing" -]; +].keySet(); WebInspector.CSSMetadata._bezierAwareProperties = [ "animation", "animation-timing-function", "transition", "transition-timing-function", "-webkit-animation", "-webkit-animation-timing-function", @@ -632,31 +710,6 @@ ] }, } -/** - * @param {string} propertyName - * @return {!Array<string>} - */ -WebInspector.CSSMetadata.propertyValues = function(propertyName) -{ - var acceptedKeywords = ["inherit", "initial"]; - propertyName = propertyName.toLowerCase(); - var unprefixedName = propertyName.replace(/^-webkit-/, ""); - var entry = WebInspector.CSSMetadata._propertyDataMap[propertyName] || WebInspector.CSSMetadata._propertyDataMap[unprefixedName]; - if (entry && entry.values) - acceptedKeywords.pushAll(entry.values); - if (WebInspector.CSSMetadata.isColorAwareProperty(propertyName)) { - acceptedKeywords.push("currentColor"); - for (var color in WebInspector.Color.Nicknames) - acceptedKeywords.push(color); - } - return acceptedKeywords.sort(); -} - -WebInspector.CSSMetadata.initializeWithSupportedProperties = function(properties) -{ - WebInspector.CSSMetadata.cssPropertiesMetainfo = new WebInspector.CSSMetadata(properties); -} - // Weight of CSS properties based on their usage from https://www.chromestatus.com/metrics/css/popularity WebInspector.CSSMetadata.Weight = { "align-content": 57, @@ -914,73 +967,3 @@ "z-index": 239, "zoom": 200 }; - -/** - * @param {!Array.<string>} properties - * @return {number} - */ -WebInspector.CSSMetadata.mostUsedProperty = function(properties) -{ - var maxWeight = 0; - var index = 0; - for (var i = 0; i < properties.length; i++) { - var weight = WebInspector.CSSMetadata.Weight[properties[i]]; - if (!weight) - weight = WebInspector.CSSMetadata.Weight[WebInspector.CSSMetadata.canonicalPropertyName(properties[i])]; - if (weight > maxWeight) { - maxWeight = weight; - index = i; - } - } - return index; -} - -WebInspector.CSSMetadata.prototype = { - /** - * @return {!Array<string>} - */ - allProperties: function() - { - return this._values; - }, - - /** - * @param {string} propertyName - * @return {boolean} - */ - hasProperty: function(propertyName) - { - if (!this._valuesSet) - this._valuesSet = new Set(this._values); - return this._valuesSet.has(propertyName); - }, - - /** - * @param {string} shorthand - * @return {?Array.<string>} - */ - longhands: function(shorthand) - { - return this._longhands.get(shorthand); - }, - - /** - * @param {string} longhand - * @return {?Array.<string>} - */ - shorthands: function(longhand) - { - return this._shorthands.get(longhand); - }, - - /** - * @param {string} propertyName - * @return {boolean} - */ - inherited: function(propertyName) - { - return this._inherited.has(propertyName); - } -} - -WebInspector.CSSMetadata.initializeWithSupportedProperties([]);
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CSSProperty.js b/third_party/WebKit/Source/devtools/front_end/sdk/CSSProperty.js index 428628e..b7e33a0 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/CSSProperty.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/CSSProperty.js
@@ -255,7 +255,7 @@ if (colon === -1) return false; var propertyName = text.substring(2, colon).trim(); - return WebInspector.CSSMetadata.isCSSPropertyName(propertyName); + return WebInspector.cssMetadata().isCSSPropertyName(propertyName); } },
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleDeclaration.js b/third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleDeclaration.js index f2d3cc7..adf4e881 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleDeclaration.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/CSSStyleDeclaration.js
@@ -96,7 +96,7 @@ // For style-based properties, generate shorthands with values when possible. for (var property of this._allProperties) { // For style-based properties, try generating shorthands. - var shorthands = WebInspector.CSSMetadata.cssPropertiesMetainfo.shorthands(property.name) || []; + var shorthands = WebInspector.cssMetadata().shorthands(property.name) || []; for (var shorthand of shorthands) { if (propertiesSet.has(shorthand)) continue; // There already is a shorthand this longhands falls under. @@ -133,7 +133,7 @@ var leadingProperties = []; for (var property of this._allProperties) { - var shorthands = WebInspector.CSSMetadata.cssPropertiesMetainfo.shorthands(property.name) || []; + var shorthands = WebInspector.cssMetadata().shorthands(property.name) || []; var belongToAnyShorthand = false; for (var shorthand of shorthands) { if (this._shorthandValues.get(shorthand)) { @@ -183,7 +183,7 @@ property._setActive(false); continue; } - var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(property.name); + var canonicalName = WebInspector.cssMetadata().canonicalPropertyName(property.name); var activeProperty = activeProperties[canonicalName]; if (!activeProperty) { activeProperties[canonicalName] = property; @@ -227,7 +227,7 @@ */ longhandProperties: function(name) { - var longhands = WebInspector.CSSMetadata.cssPropertiesMetainfo.longhands(name); + var longhands = WebInspector.cssMetadata().longhands(name); var result = []; for (var i = 0; longhands && i < longhands.length; ++i) { var property = this._activePropertyMap.get(longhands[i]);
diff --git a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js index 24bf68ab..3c115cdc 100644 --- a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js +++ b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
@@ -267,24 +267,23 @@ { }, - _clearOrigins: function() + /** + * @param {!WebInspector.Event} event + */ + _onMainFrameNavigated: function(event) { + var frame = /** type {!PageAgent.Frame}*/ (event.data); + var request = this._lastResponseReceivedForLoaderId.get(frame.loaderId); + + // Clear the origins list. this.selectAndSwitchToMainView(); this._sidebarTree.clearOrigins(); this._origins.clear(); this._lastResponseReceivedForLoaderId.clear(); this._filterRequestCounts.clear(); - }, - - /** - * @param {!WebInspector.Event} event - */ - _onMainFrameNavigated: function(event) { - - var frame = /** type {!PageAgent.Frame}*/ (event.data); - var request = this._lastResponseReceivedForLoaderId.get(frame.loaderId); - this._clearOrigins(); - + // After clearing the filtered request counts, refresh the + // explanations to reflect the new counts. + this._mainView.refreshExplanations(); if (request) { var origin = WebInspector.ParsedURL.extractOrigin(request.url);
diff --git a/third_party/WebKit/Source/devtools/front_end/source_frame/cmdevtools.css b/third_party/WebKit/Source/devtools/front_end/source_frame/cmdevtools.css index 62abbd7c..af0fd35 100644 --- a/third_party/WebKit/Source/devtools/front_end/source_frame/cmdevtools.css +++ b/third_party/WebKit/Source/devtools/front_end/source_frame/cmdevtools.css
@@ -93,7 +93,7 @@ } @media (-webkit-min-device-pixel-ratio: 1.5) { -.cm-breakpoint .CodeMirror-linenumber { +.cm-breakpoint .CodeMirror-gutter-wrapper .CodeMirror-linenumber { -webkit-border-image: url(Images/breakpoint_2x.png) 2 8 2 2; } .cm-breakpoint.cm-breakpoint-conditional .CodeMirror-linenumber {
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/CSSSourceFrame.js b/third_party/WebKit/Source/devtools/front_end/sources/CSSSourceFrame.js index 3dfd6d0..743ac7f6 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/CSSSourceFrame.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/CSSSourceFrame.js
@@ -359,7 +359,7 @@ var line = editor.line(prefixRange.startLine); var tokenContent = line.substring(propertyToken.startColumn, propertyToken.endColumn); - var propertyValues = WebInspector.CSSMetadata.propertyValues(tokenContent); + var propertyValues = WebInspector.cssMetadata().propertyValues(tokenContent); return Promise.resolve(propertyValues.filter(value => value.startsWith(prefix)).map(value => ({title: value}))); } }
diff --git a/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py b/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py index a1c25e5b..cecbfae 100755 --- a/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py +++ b/third_party/WebKit/Source/devtools/scripts/generate_supported_css.py
@@ -69,4 +69,4 @@ properties = properties_from_file(sys.argv[1]) with open(sys.argv[2], "w") as f: - f.write("WebInspector.CSSMetadata.initializeWithSupportedProperties(%s);" % json.dumps(properties)) + f.write("WebInspector.CSSMetadata._generatedProperties = %s;" % json.dumps(properties))
diff --git a/third_party/WebKit/Source/modules/BUILD.gn b/third_party/WebKit/Source/modules/BUILD.gn index cfd32eb..9b415f4 100644 --- a/third_party/WebKit/Source/modules/BUILD.gn +++ b/third_party/WebKit/Source/modules/BUILD.gn
@@ -76,7 +76,6 @@ "//device/vr:mojo_bindings_blink", "//media/mojo/interfaces:image_capture_blink", "//third_party/WebKit/Source/core", - "//third_party/WebKit/public:mojo_bindings_blink", "//third_party/icu", "//third_party/sqlite", "//third_party/zlib",
diff --git a/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp index 9da7afe..244c2c3a 100644 --- a/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp +++ b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
@@ -1141,10 +1141,14 @@ if (!node) return 0; - if (roleValue() == HeadingRole && hasAttribute(aria_levelAttr)) { - int level = getAttribute(aria_levelAttr).toInt(); - if (level >= 1 && level <= 9) - return level; + if (roleValue() == HeadingRole) { + String levelStr = getAttribute(aria_levelAttr); + if (!levelStr.isEmpty()) { + int level = levelStr.toInt(); + if (level >= 1 && level <= 9) + return level; + return 1; + } } if (!node->isHTMLElement()) @@ -1177,10 +1181,15 @@ Node* node = this->getNode(); if (!node || !node->isElementNode()) return 0; + Element* element = toElement(node); - String ariaLevel = element->getAttribute(aria_levelAttr); - if (!ariaLevel.isEmpty()) - return ariaLevel.toInt(); + String levelStr = element->getAttribute(aria_levelAttr); + if (!levelStr.isEmpty()) { + int level = levelStr.toInt(); + if (level > 0) + return level; + return 1; + } // Only tree item will calculate its level through the DOM currently. if (roleValue() != TreeItemRole) @@ -1388,8 +1397,14 @@ int AXNodeObject::posInSet() const { if (supportsSetSizeAndPosInSet()) { - if (hasAttribute(aria_posinsetAttr)) - return getAttribute(aria_posinsetAttr).toInt(); + String posInSetStr = getAttribute(aria_posinsetAttr); + if (!posInSetStr.isEmpty()) { + int posInSet = posInSetStr.toInt(); + if (posInSet > 0) + return posInSet; + return 1; + } + return AXObject::indexInParent() + 1; } @@ -1399,8 +1414,13 @@ int AXNodeObject::setSize() const { if (supportsSetSizeAndPosInSet()) { - if (hasAttribute(aria_setsizeAttr)) - return getAttribute(aria_setsizeAttr).toInt(); + String setSizeStr = getAttribute(aria_setsizeAttr); + if (!setSizeStr.isEmpty()) { + int setSize = setSizeStr.toInt(); + if (setSize > 0) + return setSize; + return 1; + } if (parentObject()) { const auto& siblings = parentObject()->children();
diff --git a/third_party/WebKit/Source/modules/accessibility/AXObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXObject.cpp index 63dc33a..cbf02e1e 100644 --- a/third_party/WebKit/Source/modules/accessibility/AXObject.cpp +++ b/third_party/WebKit/Source/modules/accessibility/AXObject.cpp
@@ -1070,8 +1070,10 @@ || (role == MenuItemRole && parentRole == MenuRole) || (role == RadioButtonRole) || (role == TabRole && parentRole == TabListRole) - || (role == TreeItemRole && parentRole == TreeRole)) + || (role == TreeItemRole && parentRole == TreeRole) + || (role == TreeItemRole && parentRole == GroupRole)) { return true; + } return false; }
diff --git a/third_party/WebKit/Source/modules/accessibility/AXObject.h b/third_party/WebKit/Source/modules/accessibility/AXObject.h index 22c6538..37794f1b3 100644 --- a/third_party/WebKit/Source/modules/accessibility/AXObject.h +++ b/third_party/WebKit/Source/modules/accessibility/AXObject.h
@@ -746,8 +746,9 @@ virtual String fontFamily() const { return nullAtom; } // Font size is in pixels. virtual float fontSize() const { return 0.0f; } + // Value should be 1-based. 0 means not supported. virtual int headingLevel() const { return 0; } - // 1-based, to match the aria-level spec. + // Value should be 1-based. 0 means not supported. virtual unsigned hierarchicalLevel() const { return 0; } virtual AccessibilityOrientation orientation() const; virtual String text() const { return String(); } @@ -817,7 +818,7 @@ // Returns 0-based index. int indexInParent() const; - // Returns 1-based position in set. + // Value should be 1-based. 0 means not supported. virtual int posInSet() const { return 0; } virtual int setSize() const { return 0; } bool supportsSetSizeAndPosInSet() const;
diff --git a/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl b/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl index 5d46d57..9a33c215 100644 --- a/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl +++ b/third_party/WebKit/Source/modules/mediarecorder/BlobEvent.idl
@@ -6,7 +6,6 @@ [ Constructor(DOMString type, BlobEventInit eventInitDict), - RuntimeEnabled=MediaRecorder ] interface BlobEvent : Event { readonly attribute Blob data;
diff --git a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl index 082dc7ce..931ce9d 100644 --- a/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl +++ b/third_party/WebKit/Source/modules/mediarecorder/MediaRecorder.idl
@@ -12,7 +12,6 @@ Constructor(MediaStream stream, optional MediaRecorderOptions options), DependentLifetime, RaisesException=Constructor, - RuntimeEnabled=MediaRecorder, ] interface MediaRecorder : EventTarget { readonly attribute MediaStream stream; readonly attribute DOMString mimeType;
diff --git a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp index fe38ed1..0d901e42 100644 --- a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp +++ b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp
@@ -11,6 +11,8 @@ #include "core/workers/WorkerSettings.h" #include "platform/graphics/ImageBuffer.h" #include "platform/graphics/StaticBitmapImage.h" +#include "platform/graphics/UnacceleratedImageBufferSurface.h" +#include "platform/graphics/gpu/AcceleratedImageBufferSurface.h" #include "wtf/Assertions.h" #define UNIMPLEMENTED ASSERT_NOT_REACHED @@ -80,12 +82,29 @@ return !!m_imageBuffer; } +static bool shouldAccelerate(IntSize surfaceSize) +{ + if (!isMainThread()) + return false; // Add support on Workers crbug.com/ + return RuntimeEnabledFeatures::accelerated2dCanvasEnabled(); +} + ImageBuffer* OffscreenCanvasRenderingContext2D::imageBuffer() const { if (!m_imageBuffer) { - // TODO: crbug.com/593514 Add support for GPU rendering + IntSize surfaceSize(width(), height()); + OpacityMode opacityMode = m_hasAlpha ? NonOpaque : Opaque; + std::unique_ptr<ImageBufferSurface> surface; + if (shouldAccelerate(surfaceSize)) { + surface.reset(new AcceleratedImageBufferSurface(surfaceSize, opacityMode)); + } + + if (!surface || !surface->isValid()) { + surface.reset(new UnacceleratedImageBufferSurface(surfaceSize, opacityMode, InitializeImagePixels)); + } + OffscreenCanvasRenderingContext2D* nonConstThis = const_cast<OffscreenCanvasRenderingContext2D*>(this); - nonConstThis->m_imageBuffer = ImageBuffer::create(IntSize(width(), height()), m_hasAlpha ? NonOpaque : Opaque, InitializeImagePixels); + nonConstThis->m_imageBuffer = ImageBuffer::create(std::move(surface)); if (m_needsMatrixClipRestore) { restoreMatrixClipStack(m_imageBuffer->canvas()); @@ -100,8 +119,8 @@ { if (!imageBuffer()) return nullptr; - // TODO: crbug.com/593514 Add support for GPU rendering - RefPtr<SkImage> skImage = m_imageBuffer->newSkImageSnapshot(PreferNoAcceleration, SnapshotReasonTransferToImageBitmap); + RefPtr<SkImage> skImage = m_imageBuffer->newSkImageSnapshot(PreferAcceleration, SnapshotReasonTransferToImageBitmap); + DCHECK(isMainThread() || !skImage->isTextureBacked()); // Acceleration not yet supported in Workers RefPtr<StaticBitmapImage> image = StaticBitmapImage::create(skImage.release()); image->setOriginClean(this->originClean()); m_imageBuffer.reset(); // "Transfer" means no retained buffer
diff --git a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl index cc2d7b3b..0690292 100644 --- a/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl +++ b/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.idl
@@ -76,6 +76,8 @@ [RaisesException] ImageData getImageData(double sx, double sy, double sw, double sh); [RaisesException] void putImageData(ImageData imagedata, double dx, double dy); [RaisesException] void putImageData(ImageData imagedata, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight); + + [Exposed=Window] attribute DOMString filter; }; OffscreenCanvasRenderingContext2D implements CanvasPathMethods;
diff --git a/third_party/WebKit/Source/platform/BUILD.gn b/third_party/WebKit/Source/platform/BUILD.gn index 92e9fcdd..7f6aa29 100644 --- a/third_party/WebKit/Source/platform/BUILD.gn +++ b/third_party/WebKit/Source/platform/BUILD.gn
@@ -362,6 +362,7 @@ "//skia", "//third_party:jpeg", "//third_party/WebKit/Source/wtf", + "//third_party/WebKit/public:mojo_bindings_blink", "//third_party/iccjpeg", "//third_party/libpng", "//third_party/libwebp", @@ -376,7 +377,6 @@ "//mojo/public/cpp/bindings", "//mojo/public/cpp/bindings:wtf_support", "//third_party/WebKit/Source/platform/heap", - "//third_party/WebKit/public:mojo_bindings_blink", "//third_party/ced", "//third_party/harfbuzz-ng", "//third_party/icu",
diff --git a/third_party/WebKit/Source/platform/LayoutLocale.cpp b/third_party/WebKit/Source/platform/LayoutLocale.cpp index 0a930c9..a5578dab9 100644 --- a/third_party/WebKit/Source/platform/LayoutLocale.cpp +++ b/third_party/WebKit/Source/platform/LayoutLocale.cpp
@@ -5,6 +5,7 @@ #include "platform/LayoutLocale.h" #include "platform/Language.h" +#include "platform/fonts/AcceptLanguagesResolver.h" #include "platform/text/LocaleToScriptMapping.h" #include "wtf/HashMap.h" #include "wtf/text/AtomicStringHash.h" @@ -99,13 +100,13 @@ if (contentLocale && contentLocale->hasScriptForHan()) return contentLocale; if (!s_defaultForHanComputed) - setLocaleForHan(nullptr); + computeLocaleForHan(); return s_defaultForHan; } -void LayoutLocale::setLocaleForHan(const LayoutLocale* locale) +void LayoutLocale::computeLocaleForHan() { - if (locale) + if (const LayoutLocale* locale = AcceptLanguagesResolver::localeForHan()) s_defaultForHan = locale; else if (getDefault().hasScriptForHan()) s_defaultForHan = &getDefault();
diff --git a/third_party/WebKit/Source/platform/LayoutLocale.h b/third_party/WebKit/Source/platform/LayoutLocale.h index a4bc22c8..91bff734 100644 --- a/third_party/WebKit/Source/platform/LayoutLocale.h +++ b/third_party/WebKit/Source/platform/LayoutLocale.h
@@ -42,7 +42,7 @@ UScriptCode scriptForHan() const; bool hasScriptForHan() const; static const LayoutLocale* localeForHan(const LayoutLocale*); - static void setLocaleForHan(const LayoutLocale*); + static void invalidateLocaleForHan() { s_defaultForHanComputed = false; } const char* localeForHanForSkFontMgr() const; Hyphenation* getHyphenation() const; @@ -55,6 +55,7 @@ explicit LayoutLocale(const AtomicString&); void computeScriptForHan() const; + static void computeLocaleForHan(); AtomicString m_string; mutable CString m_stringForSkFontMgr;
diff --git a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in index 50c422bd..e4aac0ae 100644 --- a/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in +++ b/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
@@ -27,6 +27,7 @@ // settable_from_internals specifies whether a feature can be set from internals.runtimeFlags, with the default // being false. +Accelerated2dCanvas status=stable, settable_from_internals=True AlwaysUseComplexText status=stable AudioOutputDevices status=stable AudioVideoTracks status=experimental @@ -120,7 +121,6 @@ MediaDevices status=stable MediaDocumentDownloadButton MediaGetSettings status=test -MediaRecorder status=stable MediaSession MediaSourceExperimental status=experimental MediaSourceNewAbortAndDuration status=experimental
diff --git a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp index 5ae67b7cc..0e8e550 100644 --- a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp +++ b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp
@@ -8,11 +8,26 @@ namespace blink { +static String& currentAcceptLanguages() +{ + DEFINE_STATIC_LOCAL(String, s_current, ()); + return s_current; +} + void AcceptLanguagesResolver::acceptLanguagesChanged( const String& acceptLanguages) { - LayoutLocale::setLocaleForHan( - localeForHanFromAcceptLanguages(acceptLanguages)); + String& currentValue = currentAcceptLanguages(); + if (currentValue == acceptLanguages) + return; + + currentValue = acceptLanguages; + LayoutLocale::invalidateLocaleForHan(); +} + +const LayoutLocale* AcceptLanguagesResolver::localeForHan() +{ + return localeForHanFromAcceptLanguages(currentAcceptLanguages()); } const LayoutLocale* AcceptLanguagesResolver::localeForHanFromAcceptLanguages(
diff --git a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.h b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.h index d16d7b8..47e49ef 100644 --- a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.h +++ b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.h
@@ -18,6 +18,7 @@ public: static void acceptLanguagesChanged(const String&); + static const LayoutLocale* localeForHan(); static const LayoutLocale* localeForHanFromAcceptLanguages(const String&); };
diff --git a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolverTest.cpp b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolverTest.cpp index efc026b..a5b97de 100644 --- a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolverTest.cpp +++ b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolverTest.cpp
@@ -17,6 +17,7 @@ const char* locale; } tests[] = { // Non-Han script cases. + { nullptr, USCRIPT_COMMON, nullptr }, { "", USCRIPT_COMMON, nullptr }, { "en-US", USCRIPT_COMMON, nullptr }, { ",en-US", USCRIPT_COMMON, nullptr },
diff --git a/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp b/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp index 78dedd66..a81e5a0 100644 --- a/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp +++ b/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp
@@ -211,7 +211,7 @@ return wrapUnique(new FontPlatformData(tf, name.data(), fontSize, - (fontDescription.weight() > 200 + tf->fontStyle().weight()) || fontDescription.isSyntheticBold(), + (numericFontWeight(fontDescription.weight()) > 200 + tf->fontStyle().weight()) || fontDescription.isSyntheticBold(), ((fontDescription.style() == FontStyleItalic || fontDescription.style() == FontStyleOblique) && !tf->isItalic()) || fontDescription.isSyntheticItalic(), fontDescription.orientation())); }
diff --git a/third_party/WebKit/Source/platform/v8_inspector/public/SimpleInspector.cpp b/third_party/WebKit/Source/platform/v8_inspector/public/SimpleInspector.cpp index ebd9fe7..7653fd6 100644 --- a/third_party/WebKit/Source/platform/v8_inspector/public/SimpleInspector.cpp +++ b/third_party/WebKit/Source/platform/v8_inspector/public/SimpleInspector.cpp
@@ -6,9 +6,8 @@ #include "platform/v8_inspector/public/SimpleInspector.h" #include "platform/inspector_protocol/DispatcherBase.h" -#include "platform/v8_inspector/V8StringUtil.h" #include "platform/v8_inspector/public/V8Inspector.h" -#include "platform/v8_inspector/public/V8InspectorClient.h" +#include "platform/v8_inspector/public/V8InspectorSession.h" namespace blink { @@ -24,19 +23,9 @@ disconnectFrontend(); } -String16 SimpleInspector::valueSubtype(v8::Local<v8::Value> value) -{ - return String16(); -} - -bool SimpleInspector::formatAccessorsAsProperties(v8::Local<v8::Value> value) -{ - return false; -} - void SimpleInspector::connectFrontend(protocol::FrontendChannel* channel) { - m_session = m_inspector->connect(1, channel, &m_state); + m_session = m_inspector->connect(1, channel, nullptr); } void SimpleInspector::disconnectFrontend() @@ -50,7 +39,7 @@ m_session->dispatchProtocolMessage(message); } -v8::Local<v8::Context> SimpleInspector::ensureDefaultContextInGroup(int) +v8::Local<v8::Context> SimpleInspector::ensureDefaultContextInGroup(int contextGroupId) { return m_context; }
diff --git a/third_party/WebKit/Source/platform/v8_inspector/public/SimpleInspector.h b/third_party/WebKit/Source/platform/v8_inspector/public/SimpleInspector.h index b9aade4..fc5426b 100644 --- a/third_party/WebKit/Source/platform/v8_inspector/public/SimpleInspector.h +++ b/third_party/WebKit/Source/platform/v8_inspector/public/SimpleInspector.h
@@ -7,7 +7,6 @@ #include "platform/inspector_protocol/Platform.h" #include "platform/v8_inspector/public/V8InspectorClient.h" -#include "platform/v8_inspector/public/V8InspectorSession.h" #include <v8.h> @@ -20,13 +19,12 @@ } class V8Inspector; -class V8HeapProfilerAgent; -class V8ProfilerAgent; +class V8InspectorSession; class SimpleInspector : public V8InspectorClient { public: SimpleInspector(v8::Isolate*, v8::Local<v8::Context>); - ~SimpleInspector(); + ~SimpleInspector() override; // Transport interface. void connectFrontend(protocol::FrontendChannel*); @@ -35,35 +33,10 @@ void notifyContextDestroyed(); private: - String16 valueSubtype(v8::Local<v8::Value>) override; - bool formatAccessorsAsProperties(v8::Local<v8::Value>) override; - void muteMetrics(int) override { } - void unmuteMetrics(int) override { } - double currentTimeMS() override { return 0; }; - v8::Local<v8::Context> ensureDefaultContextInGroup(int contextGroupId) override; - void beginEnsureAllContextsInGroup(int contextGroupId) override { } - void endEnsureAllContextsInGroup(int contextGroupId) override { } - void beginUserGesture() override { } - void endUserGesture() override { } - bool isInspectableHeapObject(v8::Local<v8::Object>) override { return true; } - void consoleTime(const String16& title) override { } - void consoleTimeEnd(const String16& title) override { } - void consoleTimeStamp(const String16& title) override { } - void consoleAPIMessage(int contextGroupId, V8ConsoleAPIType, const String16& message, const String16& url, unsigned lineNumber, unsigned columnNumber, V8StackTrace*) override { } - v8::MaybeLocal<v8::Value> memoryInfo(v8::Isolate*, v8::Local<v8::Context>) override - { - return v8::MaybeLocal<v8::Value>(); - } - void installAdditionalCommandLineAPI(v8::Local<v8::Context>, v8::Local<v8::Object>) override { } - void startRepeatingTimer(double, TimerCallback, void* data) override { } - void cancelTimer(void* data) override { } - bool canExecuteScripts(int) override { return true; } - void resumeStartup(int) override { } std::unique_ptr<V8Inspector> m_inspector; std::unique_ptr<V8InspectorSession> m_session; - String16 m_state; v8::Local<v8::Context> m_context; };
diff --git a/third_party/WebKit/Source/platform/v8_inspector/public/V8InspectorClient.h b/third_party/WebKit/Source/platform/v8_inspector/public/V8InspectorClient.h index 81a438ae..27495ae9 100644 --- a/third_party/WebKit/Source/platform/v8_inspector/public/V8InspectorClient.h +++ b/third_party/WebKit/Source/platform/v8_inspector/public/V8InspectorClient.h
@@ -19,35 +19,39 @@ class PLATFORM_EXPORT V8InspectorClient { public: virtual ~V8InspectorClient() { } - virtual void runMessageLoopOnPause(int contextGroupId) = 0; - virtual void quitMessageLoopOnPause() = 0; - virtual void muteMetrics(int contextGroupId) = 0; - virtual void unmuteMetrics(int contextGroupId) = 0; - virtual void beginUserGesture() = 0; - virtual void endUserGesture() = 0; - virtual String16 valueSubtype(v8::Local<v8::Value>) = 0; - virtual bool formatAccessorsAsProperties(v8::Local<v8::Value>) = 0; - virtual double currentTimeMS() = 0; - virtual v8::Local<v8::Context> ensureDefaultContextInGroup(int contextGroupId) = 0; - virtual bool isInspectableHeapObject(v8::Local<v8::Object>) = 0; - virtual void beginEnsureAllContextsInGroup(int contextGroupId) = 0; - virtual void endEnsureAllContextsInGroup(int contextGroupId) = 0; - // TODO(dgozman): this was added to support service worker shadow page. We should not connect at all. - virtual bool canExecuteScripts(int contextGroupId) = 0; - virtual void resumeStartup(int contextGroupId) = 0; - virtual void installAdditionalCommandLineAPI(v8::Local<v8::Context>, v8::Local<v8::Object>) = 0; + virtual void runMessageLoopOnPause(int contextGroupId) { } + virtual void quitMessageLoopOnPause() { } + virtual void resumeStartup(int contextGroupId) { } - virtual void consoleTime(const String16& title) = 0; - virtual void consoleTimeEnd(const String16& title) = 0; - virtual void consoleTimeStamp(const String16& title) = 0; - virtual void consoleAPIMessage(int contextGroupId, V8ConsoleAPIType, const String16& message, const String16& url, unsigned lineNumber, unsigned columnNumber, V8StackTrace*) = 0; + virtual void muteMetrics(int contextGroupId) { } + virtual void unmuteMetrics(int contextGroupId) { } - virtual v8::MaybeLocal<v8::Value> memoryInfo(v8::Isolate*, v8::Local<v8::Context>) = 0; + virtual void beginUserGesture() { } + virtual void endUserGesture() { } + virtual String16 valueSubtype(v8::Local<v8::Value>) { return String16(); } + virtual bool formatAccessorsAsProperties(v8::Local<v8::Value>) { return false; } + virtual bool isInspectableHeapObject(v8::Local<v8::Object>) { return true; } + + virtual v8::Local<v8::Context> ensureDefaultContextInGroup(int contextGroupId) { return v8::Local<v8::Context>(); } + virtual void beginEnsureAllContextsInGroup(int contextGroupId) { } + virtual void endEnsureAllContextsInGroup(int contextGroupId) { } + + virtual void installAdditionalCommandLineAPI(v8::Local<v8::Context>, v8::Local<v8::Object>) { } + virtual void consoleAPIMessage(int contextGroupId, V8ConsoleAPIType, const String16& message, const String16& url, unsigned lineNumber, unsigned columnNumber, V8StackTrace*) { } + virtual v8::MaybeLocal<v8::Value> memoryInfo(v8::Isolate*, v8::Local<v8::Context>) { return v8::MaybeLocal<v8::Value>(); } + + virtual void consoleTime(const String16& title) { } + virtual void consoleTimeEnd(const String16& title) { } + virtual void consoleTimeStamp(const String16& title) { } + virtual double currentTimeMS() { return 0; } typedef void (*TimerCallback)(void*); - virtual void startRepeatingTimer(double, TimerCallback, void* data) = 0; - virtual void cancelTimer(void* data) = 0; + virtual void startRepeatingTimer(double, TimerCallback, void* data) { } + virtual void cancelTimer(void* data) { } + + // TODO(dgozman): this was added to support service worker shadow page. We should not connect at all. + virtual bool canExecuteScripts(int contextGroupId) { return true; } }; } // namespace blink
diff --git a/third_party/WebKit/Source/web/BUILD.gn b/third_party/WebKit/Source/web/BUILD.gn index cbba1c2..31b58e7 100644 --- a/third_party/WebKit/Source/web/BUILD.gn +++ b/third_party/WebKit/Source/web/BUILD.gn
@@ -107,7 +107,6 @@ "//third_party/WebKit/Source/modules", "//third_party/WebKit/Source/platform:test_support", "//third_party/WebKit/Source/wtf", - "//third_party/WebKit/public:mojo_bindings_blink", "//third_party/libwebp", "//third_party/zlib", "//url",
diff --git a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp index b637511..e466d918 100644 --- a/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp +++ b/third_party/WebKit/Source/web/WebLocalFrameImpl.cpp
@@ -2188,4 +2188,37 @@ ensureTextFinder().clearActiveFindMatch(); } +void WebLocalFrameImpl::usageCountChromeLoadTimes(const WebString& metric) +{ + UseCounter::Feature feature = UseCounter::ChromeLoadTimesUnknown; + if (metric == "requestTime") { + feature = UseCounter::ChromeLoadTimesRequestTime; + } else if (metric == "startLoadTime") { + feature = UseCounter::ChromeLoadTimesStartLoadTime; + } else if (metric == "commitLoadTime") { + feature = UseCounter::ChromeLoadTimesCommitLoadTime; + } else if (metric == "finishDocumentLoadTime") { + feature = UseCounter::ChromeLoadTimesFinishDocumentLoadTime; + } else if (metric == "finishLoadTime") { + feature = UseCounter::ChromeLoadTimesFinishLoadTime; + } else if (metric == "firstPaintTime") { + feature = UseCounter::ChromeLoadTimesFirstPaintTime; + } else if (metric == "firstPaintAfterLoadTime") { + feature = UseCounter::ChromeLoadTimesFirstPaintAfterLoadTime; + } else if (metric == "navigationType") { + feature = UseCounter::ChromeLoadTimesNavigationType; + } else if (metric == "wasFetchedViaSpdy") { + feature = UseCounter::ChromeLoadTimesWasFetchedViaSpdy; + } else if (metric == "wasNpnNegotiated") { + feature = UseCounter::ChromeLoadTimesWasNpnNegotiated; + } else if (metric == "npnNegotiatedProtocol") { + feature = UseCounter::ChromeLoadTimesNpnNegotiatedProtocol; + } else if (metric == "wasAlternateProtocolAvailable") { + feature = UseCounter::ChromeLoadTimesWasAlternateProtocolAvailable; + } else if (metric == "connectionInfo") { + feature = UseCounter::ChromeLoadTimesConnectionInfo; + } + UseCounter::count(frame(), feature); +} + } // namespace blink
diff --git a/third_party/WebKit/Source/web/WebLocalFrameImpl.h b/third_party/WebKit/Source/web/WebLocalFrameImpl.h index 0662cc3..c927858 100644 --- a/third_party/WebKit/Source/web/WebLocalFrameImpl.h +++ b/third_party/WebKit/Source/web/WebLocalFrameImpl.h
@@ -241,6 +241,7 @@ void copyImageAt(const WebPoint&) override; void saveImageAt(const WebPoint&) override; void clearActiveFindMatch() override; + void usageCountChromeLoadTimes(const WebString& metric) override; // WebFrameImplBase methods: void initializeCoreFrame(FrameHost*, FrameOwner*, const AtomicString& name, const AtomicString& uniqueName) override;
diff --git a/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp b/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp index 6b3569d4..cde74e7 100644 --- a/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp +++ b/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp
@@ -60,6 +60,11 @@ RuntimeEnabledFeatures::setTestFeaturesEnabled(enable); } +void WebRuntimeFeatures::enableAccelerated2dCanvas(bool enable) +{ + RuntimeEnabledFeatures::setAccelerated2dCanvasEnabled(enable); +} + void WebRuntimeFeatures::enableAudioOutputDevices(bool enable) { RuntimeEnabledFeatures::setAudioOutputDevicesEnabled(enable);
diff --git a/third_party/WebKit/Source/web/WebSettingsImpl.cpp b/third_party/WebKit/Source/web/WebSettingsImpl.cpp index 1b00042..59044411 100644 --- a/third_party/WebKit/Source/web/WebSettingsImpl.cpp +++ b/third_party/WebKit/Source/web/WebSettingsImpl.cpp
@@ -542,11 +542,6 @@ m_settings->setMockGestureTapHighlightsEnabled(enabled); } -void WebSettingsImpl::setAccelerated2dCanvasEnabled(bool enabled) -{ - m_settings->setAccelerated2dCanvasEnabled(enabled); -} - void WebSettingsImpl::setAccelerated2dCanvasMSAASampleCount(int count) { m_settings->setAccelerated2dCanvasMSAASampleCount(count);
diff --git a/third_party/WebKit/Source/web/WebSettingsImpl.h b/third_party/WebKit/Source/web/WebSettingsImpl.h index 3e71c19..ca7d6f7c6 100644 --- a/third_party/WebKit/Source/web/WebSettingsImpl.h +++ b/third_party/WebKit/Source/web/WebSettingsImpl.h
@@ -51,7 +51,6 @@ bool mainFrameResizesAreOrientationChanges() const override; bool shrinksViewportContentToFit() const override; bool viewportEnabled() const override; - void setAccelerated2dCanvasEnabled(bool) override; void setAccelerated2dCanvasMSAASampleCount(int) override; void setAcceleratedCompositingEnabled(bool) override; void setPreferCompositingToLCDTextEnabled(bool) override;
diff --git a/third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp b/third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp index 826800f..6cbf7bd 100644 --- a/third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp +++ b/third_party/WebKit/Source/web/tests/ActivityLoggerTest.cpp
@@ -524,12 +524,12 @@ const char* expectedActivities = "blinkAddElement | iframe | data:text/html;charset=utf-8,A\n" "blinkRequestResource | Main resource | data:text/html;charset=utf-8,A\n" + "blinkRequestResource | Image | data:text/html;charset=utf-8,B\n" "blinkAddElement | link | stylesheet | data:text/html;charset=utf-8,C\n" "blinkRequestResource | CSS stylesheet | data:text/html;charset=utf-8,C\n" "blinkAddElement | script | data:text/html;charset=utf-8,D\n" "blinkRequestResource | Script | data:text/html;charset=utf-8,D\n" - "blinkRequestResource | XMLHttpRequest | data:text/html;charset=utf-8,E\n" - "blinkRequestResource | Image | data:text/html;charset=utf-8,B"; + "blinkRequestResource | XMLHttpRequest | data:text/html;charset=utf-8,E"; executeScriptInMainWorld(code); ASSERT_TRUE(verifyActivities("")); executeScriptInIsolatedWorld(code);
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/config/builders.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/config/builders.py index 31725a62..30594dec 100644 --- a/third_party/WebKit/Tools/Scripts/webkitpy/common/config/builders.py +++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/config/builders.py
@@ -91,12 +91,12 @@ "is_try_builder": True, }, "mac10.10_blink_rel": { - "port_name": "mac-mac10.9", + "port_name": "mac-mac10.10", "specifiers": ['Mac10.', 'Release'], "is_try_builder": True, }, "mac10.11_blink_rel": { - "port_name": "mac-mac10.9", + "port_name": "mac-mac10.11", "specifiers": ['Mac10.11', 'Release'], "is_try_builder": True, }, @@ -111,8 +111,8 @@ "is_try_builder": True, }, "win10_blink_rel": { - "port_name": "win-win7", - "specifiers": ['Win7', 'Release'], + "port_name": "win-win10", + "specifiers": ['Win10', 'Release'], "is_try_builder": True, }, # TODO(qyearsley): Add android_blink_rel.
diff --git a/third_party/WebKit/public/BUILD.gn b/third_party/WebKit/public/BUILD.gn index 089089e..336b3d5 100644 --- a/third_party/WebKit/public/BUILD.gn +++ b/third_party/WebKit/public/BUILD.gn
@@ -185,6 +185,19 @@ ] use_new_wrapper_types = false + + # The chromium variant must be linked with content and use the same export + # settings in component build because of the WebBluetoothDeviceId typemap + # inside content. + export_class_attribute = "CONTENT_EXPORT" + export_define = "CONTENT_IMPLEMENTATION=1" + export_header = "content/common/content_export.h" + + # Similarly, the blink variant must be linked with the platform component + # since it uses types from it in its typemaps. + export_class_attribute_blink = "BLINK_PLATFORM_EXPORT" + export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" + export_header_blink = "third_party/WebKit/public/platform/WebCommon.h" } # GYP version: WebKit/public/blink.gyp:new_wrapper_types_mojo_bindings @@ -192,6 +205,14 @@ sources = [ "platform/modules/presentation/presentation.mojom", ] + + # See comment above. + export_class_attribute = "CONTENT_EXPORT" + export_define = "CONTENT_IMPLEMENTATION=1" + export_header = "content/common/content_export.h" + export_class_attribute_blink = "BLINK_PLATFORM_EXPORT" + export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" + export_header_blink = "third_party/WebKit/public/platform/WebCommon.h" } # GYP version: WebKit/public/blink.gyp:android_mojo_bindings_java @@ -202,6 +223,14 @@ ] use_new_wrapper_types = false + + # See comment above. + export_class_attribute = "CONTENT_EXPORT" + export_define = "CONTENT_IMPLEMENTATION=1" + export_header = "content/common/content_export.h" + export_class_attribute_blink = "BLINK_PLATFORM_EXPORT" + export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" + export_header_blink = "third_party/WebKit/public/platform/WebCommon.h" } group("generate_mojo_bindings") {
diff --git a/third_party/WebKit/public/web/WebLocalFrame.h b/third_party/WebKit/public/web/WebLocalFrame.h index 3795b2bf..e3e687a5 100644 --- a/third_party/WebKit/public/web/WebLocalFrame.h +++ b/third_party/WebKit/public/web/WebLocalFrame.h
@@ -405,6 +405,10 @@ // coordinates. virtual void saveImageAt(const WebPoint&) = 0; + // TEMP: Usage count for chrome.loadtimes deprecation. + // This will be removed following the deprecation. + virtual void usageCountChromeLoadTimes(const WebString& metric) = 0; + protected: explicit WebLocalFrame(WebTreeScopeType scope) : WebFrame(scope) { }
diff --git a/third_party/WebKit/public/web/WebRuntimeFeatures.h b/third_party/WebKit/public/web/WebRuntimeFeatures.h index 2abe67c..c0df222 100644 --- a/third_party/WebKit/public/web/WebRuntimeFeatures.h +++ b/third_party/WebKit/public/web/WebRuntimeFeatures.h
@@ -67,6 +67,7 @@ BLINK_EXPORT static void enableOriginTrials(bool); BLINK_EXPORT static bool isOriginTrialsEnabled(); + BLINK_EXPORT static void enableAccelerated2dCanvas(bool); BLINK_EXPORT static void enableAudioOutputDevices(bool); BLINK_EXPORT static void enableCanvas2dImageChromium(bool); BLINK_EXPORT static void enableCredentialManagerAPI(bool);
diff --git a/third_party/WebKit/public/web/WebSettings.h b/third_party/WebKit/public/web/WebSettings.h index 2136008..b1853da 100644 --- a/third_party/WebKit/public/web/WebSettings.h +++ b/third_party/WebKit/public/web/WebSettings.h
@@ -118,7 +118,6 @@ virtual bool mainFrameResizesAreOrientationChanges() const = 0; virtual bool shrinksViewportContentToFit() const = 0; virtual bool viewportEnabled() const = 0; - virtual void setAccelerated2dCanvasEnabled(bool) = 0; virtual void setAccelerated2dCanvasMSAASampleCount(int) = 0; virtual void setAcceleratedCompositingEnabled(bool) = 0; virtual void setPreferCompositingToLCDTextEnabled(bool) = 0;
diff --git a/third_party/gvr-android-sdk/BUILD.gn b/third_party/gvr-android-sdk/BUILD.gn new file mode 100644 index 0000000..173fc61 --- /dev/null +++ b/third_party/gvr-android-sdk/BUILD.gn
@@ -0,0 +1,52 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/android/rules.gni") + +android_aar_prebuilt("gvr_common_java") { + aar_path = "src/ndk-beta/lib/common_library.aar" + jar_excluded_patterns = [ "*/protobuf/*" ] +} + +android_aar_prebuilt("gvr_base_java") { + aar_path = "src/libraries/base/base.aar" +} + +android_aar_prebuilt("gvr_controller_java") { + aar_path = "src/libraries/controller/controller.aar" +} + +source_set("libgvr") { + deps = [ + ":libgvr_shared_library", + ] + libs = [ "$root_out_dir/libgvr.so" ] +} + +copy("libgvr_shared_library") { + if (target_cpu == "arm") { + sources = [ + "src/ndk-beta/lib/android_arm/libgvr.so", + ] + } else if (target_cpu == "arm64") { + sources = [ + "src/ndk-beta/lib/android_arm64/libgvr.so", + ] + } else if (target_cpu == "x86") { + sources = [ + "src/ndk-beta/lib/android_x86/libgvr.so", + ] + } else if (target_cpu == "x64") { + sources = [ + "src/ndk-beta/lib/android_x86_64/libgvr.so", + ] + } + outputs = [ + "${root_out_dir}/libgvr.so", + ] +} + +config("libgvr_config") { + include_dirs = [ "src/ndk-beta/include/" ] +}
diff --git a/third_party/gvr-android-sdk/LICENSE b/third_party/gvr-android-sdk/LICENSE new file mode 100644 index 0000000..fecba46d --- /dev/null +++ b/third_party/gvr-android-sdk/LICENSE
@@ -0,0 +1,7497 @@ + Copyright (c) 2015, Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +==================== +Open Source Licenses +==================== + +This software may use portions of the following libraries subject to the accompanying licenses: + +**************************** +chromium_audio +**************************** +// Copyright 2014 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +**************************** +curl +**************************** +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1996 - 2014, Daniel Stenberg, <daniel@haxx.se>. + +All rights reserved. + +Permission to use, copy, modify, and distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright +notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization of the copyright holder. + + +**************************** +dynamic_annotations +**************************** +Copyright (c) 2008-2009, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +**************************** +eigen3 +**************************** +Eigen is primarily MPL2 licensed. See COPYING.MPL2 and these links: + http://www.mozilla.org/MPL/2.0/ + http://www.mozilla.org/MPL/2.0/FAQ.html + +Some files contain third-party code under BSD or LGPL licenses, whence +the other COPYING.* files here. + +All the LGPL code is either LGPL 2.1-only, or LGPL 2.1-or-later. +For this reason, the COPYING.LGPL file contains the LGPL 2.1 text. + +If you want to guarantee that the Eigen code that you are #including +is licensed under the MPL2 and possibly more permissive licenses (like +BSD), #define this preprocessor symbol: EIGEN_MPL2_ONLY +For example, with most compilers, you could add this to your project + CXXFLAGS: -DEIGEN_MPL2_ONLY +This will cause a compilation error to be generated if you #include +any code that is LGPL licensed. + +---------------------------------------------------------------------- +Following applies to: +./test/mapstaticmethods.cpp +./test/schur_real.cpp +./test/prec_inverse_4x4.cpp +./test/smallvectors.cpp +./test/redux.cpp +./test/special_numbers.cpp +./test/adjoint.cpp +./test/resize.cpp +./test/mixingtypes.cpp +./test/product_trmv.cpp +./test/sparse_solvers.cpp +./test/cholesky.cpp +./test/geo_quaternion.cpp +./test/miscmatrices.cpp +./test/stddeque.cpp +./test/integer_types.cpp +./test/product_large.cpp +./test/eigensolver_generic.cpp +./test/householder.cpp +./test/geo_orthomethods.cpp +./test/array_for_matrix.cpp +./test/sparseLM.cpp +./test/upperbidiagonalization.cpp +./test/nomalloc.cpp +./test/packetmath.cpp +./test/jacobisvd.cpp +./test/geo_transformations.cpp +./test/swap.cpp +./test/eigensolver_selfadjoint.cpp +./test/inverse.cpp +./test/product_selfadjoint.cpp +./test/product_trsolve.cpp +./test/product_extra.cpp +./test/sparse_solver.h +./test/mapstride.cpp +./test/mapped_matrix.cpp +./test/geo_eulerangles.cpp +./test/eigen2support.cpp +./test/denseLM.cpp +./test/stdvector.cpp +./test/nesting_ops.cpp +./test/sparse_permutations.cpp +./test/zerosized.cpp +./test/exceptions.cpp +./test/vectorwiseop.cpp +./test/cwiseop.cpp +./test/basicstuff.cpp +./test/product_trmm.cpp +./test/linearstructure.cpp +./test/sparse_product.cpp +./test/stdvector_overload.cpp +./test/stable_norm.cpp +./test/umeyama.cpp +./test/unalignedcount.cpp +./test/triangular.cpp +./test/product_mmtr.cpp +./test/sparse_basic.cpp +./test/sparse_vector.cpp +./test/meta.cpp +./test/real_qz.cpp +./test/ref.cpp +./test/eigensolver_complex.cpp +./test/cholmod_support.cpp +./test/conjugate_gradient.cpp +./test/sparse.h +./test/simplicial_cholesky.cpp +./test/bicgstab.cpp +./test/dynalloc.cpp +./test/product_notemporary.cpp +./test/geo_hyperplane.cpp +./test/lu.cpp +./test/qr.cpp +./test/hessenberg.cpp +./test/sizeof.cpp +./test/main.h +./test/selfadjoint.cpp +./test/permutationmatrices.cpp +./test/superlu_support.cpp +./test/qtvector.cpp +./test/geo_homogeneous.cpp +./test/determinant.cpp +./test/array_reverse.cpp +./test/unalignedassert.cpp +./test/stdlist.cpp +./test/product_symm.cpp +./test/corners.cpp +./test/dontalign.cpp +./test/visitor.cpp +./test/geo_alignedbox.cpp +./test/diagonalmatrices.cpp +./test/product_small.cpp +./test/eigensolver_generalized_real.cpp +./test/umfpack_support.cpp +./test/first_aligned.cpp +./test/qr_fullpivoting.cpp +./test/array_replicate.cpp +./test/geo_parametrizedline.cpp +./test/eigen2/eigen2_unalignedassert.cpp +./test/eigen2/eigen2_prec_inverse_4x4.cpp +./test/eigen2/eigen2_alignedbox.cpp +./test/eigen2/eigen2_sparse_product.cpp +./test/eigen2/eigen2_meta.cpp +./test/eigen2/eigen2_nomalloc.cpp +./test/eigen2/eigen2_visitor.cpp +./test/eigen2/eigen2_packetmath.cpp +./test/eigen2/eigen2_svd.cpp +./test/eigen2/eigen2_mixingtypes.cpp +./test/eigen2/eigen2_qr.cpp +./test/eigen2/eigen2_cwiseop.cpp +./test/eigen2/eigen2_geometry_with_eigen2_prefix.cpp +./test/eigen2/eigen2_smallvectors.cpp +./test/eigen2/eigen2_commainitializer.cpp +./test/eigen2/eigen2_sparse_solvers.cpp +./test/eigen2/eigen2_hyperplane.cpp +./test/eigen2/eigen2_eigensolver.cpp +./test/eigen2/eigen2_linearstructure.cpp +./test/eigen2/eigen2_sizeof.cpp +./test/eigen2/eigen2_parametrizedline.cpp +./test/eigen2/eigen2_lu.cpp +./test/eigen2/eigen2_adjoint.cpp +./test/eigen2/eigen2_geometry.cpp +./test/eigen2/eigen2_stdvector.cpp +./test/eigen2/eigen2_newstdvector.cpp +./test/eigen2/eigen2_submatrices.cpp +./test/eigen2/sparse.h +./test/eigen2/eigen2_swap.cpp +./test/eigen2/eigen2_triangular.cpp +./test/eigen2/eigen2_basicstuff.cpp +./test/eigen2/gsl_helper.h +./test/eigen2/eigen2_dynalloc.cpp +./test/eigen2/eigen2_array.cpp +./test/eigen2/eigen2_map.cpp +./test/eigen2/main.h +./test/eigen2/eigen2_miscmatrices.cpp +./test/eigen2/eigen2_product_large.cpp +./test/eigen2/eigen2_first_aligned.cpp +./test/eigen2/eigen2_cholesky.cpp +./test/eigen2/eigen2_determinant.cpp +./test/eigen2/eigen2_sum.cpp +./test/eigen2/eigen2_inverse.cpp +./test/eigen2/eigen2_regression.cpp +./test/eigen2/eigen2_product_small.cpp +./test/eigen2/eigen2_qtvector.cpp +./test/eigen2/eigen2_sparse_vector.cpp +./test/eigen2/product.h +./test/eigen2/eigen2_sparse_basic.cpp +./test/eigen2/eigen2_bug_132.cpp +./test/array.cpp +./test/product_syrk.cpp +./test/commainitializer.cpp +./test/conservative_resize.cpp +./test/qr_colpivoting.cpp +./test/nullary.cpp +./test/bandmatrix.cpp +./test/pastix_support.cpp +./test/product.h +./test/block.cpp +./test/vectorization_logic.cpp +./test/jacobi.cpp +./test/diagonal.cpp +./test/schur_complex.cpp +./test/sizeoverflow.cpp +./bench/BenchTimer.h +./bench/benchFFT.cpp +./bench/eig33.cpp +./bench/spbench/spbenchsolver.h +./bench/spbench/spbenchstyle.h +./lapack/complex_double.cpp +./lapack/cholesky.cpp +./lapack/lapack_common.h +./lapack/eigenvalues.cpp +./lapack/single.cpp +./lapack/lu.cpp +./lapack/complex_single.cpp +./lapack/double.cpp +./demos/mix_eigen_and_c/binary_library.cpp +./demos/mix_eigen_and_c/binary_library.h +./demos/mix_eigen_and_c/example.c +./demos/mandelbrot/mandelbrot.cpp +./demos/mandelbrot/mandelbrot.h +./demos/opengl/icosphere.cpp +./demos/opengl/icosphere.h +./demos/opengl/camera.cpp +./demos/opengl/quaternion_demo.h +./demos/opengl/camera.h +./demos/opengl/trackball.h +./demos/opengl/gpuhelper.h +./demos/opengl/trackball.cpp +./demos/opengl/gpuhelper.cpp +./demos/opengl/quaternion_demo.cpp +./debug/gdb/printers.py +./unsupported/test/minres.cpp +./unsupported/test/openglsupport.cpp +./unsupported/test/jacobisvd.cpp +./unsupported/test/dgmres.cpp +./unsupported/test/matrix_square_root.cpp +./unsupported/test/bdcsvd.cpp +./unsupported/test/matrix_exponential.cpp +./unsupported/test/forward_adolc.cpp +./unsupported/test/polynomialsolver.cpp +./unsupported/test/matrix_function.cpp +./unsupported/test/sparse_extra.cpp +./unsupported/test/matrix_functions.h +./unsupported/test/svd_common.h +./unsupported/test/FFTW.cpp +./unsupported/test/alignedvector3.cpp +./unsupported/test/autodiff.cpp +./unsupported/test/gmres.cpp +./unsupported/test/BVH.cpp +./unsupported/test/levenberg_marquardt.cpp +./unsupported/test/matrix_power.cpp +./unsupported/test/kronecker_product.cpp +./unsupported/test/splines.cpp +./unsupported/test/polynomialutils.cpp +./unsupported/bench/bench_svd.cpp +./unsupported/Eigen/IterativeSolvers +./unsupported/Eigen/src/IterativeSolvers/DGMRES.h +./unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +./unsupported/Eigen/src/IterativeSolvers/GMRES.h +./unsupported/Eigen/src/IterativeSolvers/IncompleteCholesky.h +./unsupported/Eigen/src/IterativeSolvers/Scaling.h +./unsupported/Eigen/src/IterativeSolvers/MINRES.h +./unsupported/Eigen/src/SparseExtra/RandomSetter.h +./unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +./unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +./unsupported/Eigen/src/SparseExtra/MarketIO.h +./unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +./unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +./unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +./unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +./unsupported/Eigen/src/BVH/BVAlgorithms.h +./unsupported/Eigen/src/BVH/KdBVH.h +./unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +./unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +./unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +./unsupported/Eigen/src/Splines/Spline.h +./unsupported/Eigen/src/Splines/SplineFitting.h +./unsupported/Eigen/src/Splines/SplineFwd.h +./unsupported/Eigen/src/SVD/JacobiSVD.h +./unsupported/Eigen/src/SVD/BDCSVD.h +./unsupported/Eigen/src/SVD/SVDBase.h +./unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +./unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +./unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +./unsupported/Eigen/src/MatrixFunctions/StemFunction.h +./unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +./unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +./unsupported/Eigen/src/MatrixFunctions/MatrixFunctionAtomic.h +./unsupported/Eigen/src/MoreVectorization/MathFunctions.h +./unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +./unsupported/Eigen/src/FFT/ei_fftw_impl.h +./unsupported/Eigen/src/FFT/ei_kissfft_impl.h +./unsupported/Eigen/src/Polynomials/PolynomialSolver.h +./unsupported/Eigen/src/Polynomials/Companion.h +./unsupported/Eigen/src/Polynomials/PolynomialUtils.h +./unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +./unsupported/Eigen/src/Skyline/SkylineProduct.h +./unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +./unsupported/Eigen/src/Skyline/SkylineStorage.h +./unsupported/Eigen/src/Skyline/SkylineUtil.h +./unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +./unsupported/Eigen/src/Skyline/SkylineMatrix.h +./unsupported/Eigen/SparseExtra +./unsupported/Eigen/AdolcForward +./unsupported/Eigen/KroneckerProduct +./unsupported/Eigen/NonLinearOptimization +./unsupported/Eigen/BVH +./unsupported/Eigen/OpenGLSupport +./unsupported/Eigen/ArpackSupport +./unsupported/Eigen/AutoDiff +./unsupported/Eigen/Splines +./unsupported/Eigen/MPRealSupport +./unsupported/Eigen/MatrixFunctions +./unsupported/Eigen/MoreVectorization +./unsupported/Eigen/LevenbergMarquardt +./unsupported/Eigen/AlignedVector3 +./unsupported/Eigen/FFT +./unsupported/Eigen/Polynomials +./unsupported/Eigen/NumericalDiff +./unsupported/Eigen/Skyline +./COPYING.README +./COPYING.README +./LICENSE +./LICENSE +./LICENSE +./Eigen/Eigen2Support +./Eigen/src/Eigen2Support/VectorBlock.h +./Eigen/src/Eigen2Support/Cwise.h +./Eigen/src/Eigen2Support/Minor.h +./Eigen/src/Eigen2Support/Lazy.h +./Eigen/src/Eigen2Support/Memory.h +./Eigen/src/Eigen2Support/MathFunctions.h +./Eigen/src/Eigen2Support/Geometry/AlignedBox.h +./Eigen/src/Eigen2Support/Geometry/Hyperplane.h +./Eigen/src/Eigen2Support/Geometry/Quaternion.h +./Eigen/src/Eigen2Support/Geometry/Rotation2D.h +./Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h +./Eigen/src/Eigen2Support/Geometry/RotationBase.h +./Eigen/src/Eigen2Support/Geometry/Translation.h +./Eigen/src/Eigen2Support/Geometry/Scaling.h +./Eigen/src/Eigen2Support/Geometry/AngleAxis.h +./Eigen/src/Eigen2Support/Geometry/Transform.h +./Eigen/src/Eigen2Support/TriangularSolver.h +./Eigen/src/Eigen2Support/LU.h +./Eigen/src/Eigen2Support/QR.h +./Eigen/src/Eigen2Support/SVD.h +./Eigen/src/Eigen2Support/Meta.h +./Eigen/src/Eigen2Support/Block.h +./Eigen/src/Eigen2Support/Macros.h +./Eigen/src/Eigen2Support/LeastSquares.h +./Eigen/src/Eigen2Support/CwiseOperators.h +./Eigen/src/Jacobi/Jacobi.h +./Eigen/src/misc/Kernel.h +./Eigen/src/misc/SparseSolve.h +./Eigen/src/misc/Solve.h +./Eigen/src/misc/Image.h +./Eigen/src/SparseCore/SparseColEtree.h +./Eigen/src/SparseCore/SparseTranspose.h +./Eigen/src/SparseCore/SparseUtil.h +./Eigen/src/SparseCore/SparseCwiseBinaryOp.h +./Eigen/src/SparseCore/SparseDiagonalProduct.h +./Eigen/src/SparseCore/SparseProduct.h +./Eigen/src/SparseCore/SparseDot.h +./Eigen/src/SparseCore/SparseCwiseUnaryOp.h +./Eigen/src/SparseCore/SparseSparseProductWithPruning.h +./Eigen/src/SparseCore/SparseBlock.h +./Eigen/src/SparseCore/SparseDenseProduct.h +./Eigen/src/SparseCore/CompressedStorage.h +./Eigen/src/SparseCore/SparseMatrixBase.h +./Eigen/src/SparseCore/MappedSparseMatrix.h +./Eigen/src/SparseCore/SparseTriangularView.h +./Eigen/src/SparseCore/SparseView.h +./Eigen/src/SparseCore/SparseFuzzy.h +./Eigen/src/SparseCore/TriangularSolver.h +./Eigen/src/SparseCore/SparseSelfAdjointView.h +./Eigen/src/SparseCore/SparseMatrix.h +./Eigen/src/SparseCore/SparseVector.h +./Eigen/src/SparseCore/AmbiVector.h +./Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +./Eigen/src/SparseCore/SparseRedux.h +./Eigen/src/SparseCore/SparsePermutation.h +./Eigen/src/Eigenvalues/RealSchur.h +./Eigen/src/Eigenvalues/ComplexEigenSolver.h +./Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +./Eigen/src/Eigenvalues/ComplexSchur.h +./Eigen/src/Eigenvalues/RealQZ.h +./Eigen/src/Eigenvalues/EigenSolver.h +./Eigen/src/Eigenvalues/HessenbergDecomposition.h +./Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +./Eigen/src/Eigenvalues/Tridiagonalization.h +./Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +./Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +./Eigen/src/SuperLUSupport/SuperLUSupport.h +./Eigen/src/StlSupport/StdDeque.h +./Eigen/src/StlSupport/StdVector.h +./Eigen/src/StlSupport/StdList.h +./Eigen/src/StlSupport/details.h +./Eigen/src/SparseQR/SparseQR.h +./Eigen/src/LU/Inverse.h +./Eigen/src/LU/arch/Inverse_SSE.h +./Eigen/src/LU/Determinant.h +./Eigen/src/LU/PartialPivLU.h +./Eigen/src/LU/FullPivLU.h +./Eigen/src/UmfPackSupport/UmfPackSupport.h +./Eigen/src/OrderingMethods/Ordering.h +./Eigen/src/OrderingMethods/Eigen_Colamd.h +./Eigen/src/QR/HouseholderQR.h +./Eigen/src/QR/ColPivHouseholderQR.h +./Eigen/src/QR/FullPivHouseholderQR.h +./Eigen/src/SVD/JacobiSVD.h +./Eigen/src/SVD/UpperBidiagonalization.h +./Eigen/src/Geometry/OrthoMethods.h +./Eigen/src/Geometry/AlignedBox.h +./Eigen/src/Geometry/Hyperplane.h +./Eigen/src/Geometry/Quaternion.h +./Eigen/src/Geometry/EulerAngles.h +./Eigen/src/Geometry/Rotation2D.h +./Eigen/src/Geometry/ParametrizedLine.h +./Eigen/src/Geometry/RotationBase.h +./Eigen/src/Geometry/arch/Geometry_SSE.h +./Eigen/src/Geometry/Umeyama.h +./Eigen/src/Geometry/Homogeneous.h +./Eigen/src/Geometry/Translation.h +./Eigen/src/Geometry/Scaling.h +./Eigen/src/Geometry/AngleAxis.h +./Eigen/src/Geometry/Transform.h +./Eigen/src/plugins/BlockMethods.h +./Eigen/src/plugins/CommonCwiseUnaryOps.h +./Eigen/src/plugins/CommonCwiseBinaryOps.h +./Eigen/src/plugins/MatrixCwiseUnaryOps.h +./Eigen/src/plugins/MatrixCwiseBinaryOps.h +./Eigen/src/Householder/Householder.h +./Eigen/src/Householder/HouseholderSequence.h +./Eigen/src/Householder/BlockHouseholder.h +./Eigen/src/Core/VectorBlock.h +./Eigen/src/Core/Matrix.h +./Eigen/src/Core/Ref.h +./Eigen/src/Core/SelfAdjointView.h +./Eigen/src/Core/MathFunctions.h +./Eigen/src/Core/GlobalFunctions.h +./Eigen/src/Core/MapBase.h +./Eigen/src/Core/EigenBase.h +./Eigen/src/Core/GenericPacketMath.h +./Eigen/src/Core/NestByValue.h +./Eigen/src/Core/CwiseUnaryOp.h +./Eigen/src/Core/SolveTriangular.h +./Eigen/src/Core/Fuzzy.h +./Eigen/src/Core/Visitor.h +./Eigen/src/Core/Map.h +./Eigen/src/Core/NoAlias.h +./Eigen/src/Core/Diagonal.h +./Eigen/src/Core/StableNorm.h +./Eigen/src/Core/CoreIterators.h +./Eigen/src/Core/products/Parallelizer.h +./Eigen/src/Core/products/SelfadjointMatrixVector.h +./Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +./Eigen/src/Core/products/TriangularSolverMatrix.h +./Eigen/src/Core/products/GeneralMatrixMatrix.h +./Eigen/src/Core/products/SelfadjointProduct.h +./Eigen/src/Core/products/CoeffBasedProduct.h +./Eigen/src/Core/products/TriangularMatrixVector.h +./Eigen/src/Core/products/SelfadjointMatrixMatrix.h +./Eigen/src/Core/products/TriangularSolverVector.h +./Eigen/src/Core/products/SelfadjointRank2Update.h +./Eigen/src/Core/products/GeneralBlockPanelKernel.h +./Eigen/src/Core/products/GeneralMatrixVector.h +./Eigen/src/Core/products/TriangularMatrixMatrix.h +./Eigen/src/Core/Reverse.h +./Eigen/src/Core/BooleanRedux.h +./Eigen/src/Core/Replicate.h +./Eigen/src/Core/arch/AltiVec/PacketMath.h +./Eigen/src/Core/arch/AltiVec/Complex.h +./Eigen/src/Core/arch/SSE/PacketMath.h +./Eigen/src/Core/arch/SSE/Complex.h +./Eigen/src/Core/arch/SSE/MathFunctions.h +./Eigen/src/Core/arch/NEON/PacketMath.h +./Eigen/src/Core/arch/NEON/Complex.h +./Eigen/src/Core/arch/Default/Settings.h +./Eigen/src/Core/CwiseUnaryView.h +./Eigen/src/Core/Array.h +./Eigen/src/Core/ArrayWrapper.h +./Eigen/src/Core/Swap.h +./Eigen/src/Core/Transpositions.h +./Eigen/src/Core/Random.h +./Eigen/src/Core/IO.h +./Eigen/src/Core/SelfCwiseBinaryOp.h +./Eigen/src/Core/VectorwiseOp.h +./Eigen/src/Core/Select.h +./Eigen/src/Core/ArrayBase.h +./Eigen/src/Core/DenseCoeffsBase.h +./Eigen/src/Core/DiagonalProduct.h +./Eigen/src/Core/Assign.h +./Eigen/src/Core/Redux.h +./Eigen/src/Core/ForceAlignedAccess.h +./Eigen/src/Core/BandMatrix.h +./Eigen/src/Core/PlainObjectBase.h +./Eigen/src/Core/DenseBase.h +./Eigen/src/Core/Flagged.h +./Eigen/src/Core/CwiseBinaryOp.h +./Eigen/src/Core/ProductBase.h +./Eigen/src/Core/TriangularMatrix.h +./Eigen/src/Core/Transpose.h +./Eigen/src/Core/DiagonalMatrix.h +./Eigen/src/Core/Dot.h +./Eigen/src/Core/Functors.h +./Eigen/src/Core/PermutationMatrix.h +./Eigen/src/Core/NumTraits.h +./Eigen/src/Core/MatrixBase.h +./Eigen/src/Core/DenseStorage.h +./Eigen/src/Core/util/Memory.h +./Eigen/src/Core/util/StaticAssert.h +./Eigen/src/Core/util/BlasUtil.h +./Eigen/src/Core/util/MatrixMapper.h +./Eigen/src/Core/util/XprHelper.h +./Eigen/src/Core/util/ForwardDeclarations.h +./Eigen/src/Core/util/Meta.h +./Eigen/src/Core/util/Macros.h +./Eigen/src/Core/util/Constants.h +./Eigen/src/Core/CwiseNullaryOp.h +./Eigen/src/Core/Block.h +./Eigen/src/Core/GeneralProduct.h +./Eigen/src/Core/CommaInitializer.h +./Eigen/src/Core/ReturnByValue.h +./Eigen/src/Core/Stride.h +./Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +./Eigen/src/SparseLU/SparseLU_column_dfs.h +./Eigen/src/SparseLU/SparseLU_panel_dfs.h +./Eigen/src/SparseLU/SparseLU_relax_snode.h +./Eigen/src/SparseLU/SparseLU_panel_bmod.h +./Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +./Eigen/src/SparseLU/SparseLU_Utils.h +./Eigen/src/SparseLU/SparseLU_gemm_kernel.h +./Eigen/src/SparseLU/SparseLU_kernel_bmod.h +./Eigen/src/SparseLU/SparseLU_pivotL.h +./Eigen/src/SparseLU/SparseLU_Memory.h +./Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +./Eigen/src/SparseLU/SparseLUImpl.h +./Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +./Eigen/src/SparseLU/SparseLU_Structs.h +./Eigen/src/SparseLU/SparseLU.h +./Eigen/src/SparseLU/SparseLU_column_bmod.h +./Eigen/src/SparseLU/SparseLU_pruneL.h +./Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +./Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +./Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +./Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +./Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +./Eigen/src/SparseCholesky/SimplicialCholesky.h +./Eigen/src/Cholesky/LDLT.h +./Eigen/src/Cholesky/LLT.h +./Eigen/src/CholmodSupport/CholmodSupport.h +./Eigen/src/PaStiXSupport/PaStiXSupport.h +./Eigen/src/MetisSupport/MetisSupport.h +./Eigen/StdVector +./Eigen/Core +./Eigen/SparseLU +./Eigen/StdList +./Eigen/StdDeque +./Eigen/SparseCholesky +./scripts/relicense.py +./scripts/relicense.py +./blas/BandTriangularSolver.h +./blas/PackedTriangularMatrixVector.h +./blas/complex_double.cpp +./blas/level2_real_impl.h +./blas/level1_cplx_impl.h +./blas/level1_impl.h +./blas/level1_real_impl.h +./blas/level3_impl.h +./blas/single.cpp +./blas/level2_cplx_impl.h +./blas/PackedSelfadjointProduct.h +./blas/Rank2Update.h +./blas/complex_single.cpp +./blas/PackedTriangularSolverVector.h +./blas/double.cpp +./blas/common.h +./blas/level2_impl.h +./blas/GeneralRank1Update.h + +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. + +---------------------------------------------------------------------- +Following applies to: +./doc/UsingIntelMKL.dox +./doc/UsingIntelMKL.dox +./Eigen/src/Eigenvalues/ComplexSchur_MKL.h +./Eigen/src/Eigenvalues/ComplexSchur_MKL.h +./Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h +./Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h +./Eigen/src/Eigenvalues/RealSchur_MKL.h +./Eigen/src/Eigenvalues/RealSchur_MKL.h +./Eigen/src/LU/arch/Inverse_SSE.h +./Eigen/src/LU/arch/Inverse_SSE.h +./Eigen/src/LU/PartialPivLU_MKL.h +./Eigen/src/LU/PartialPivLU_MKL.h +./Eigen/src/QR/HouseholderQR_MKL.h +./Eigen/src/QR/HouseholderQR_MKL.h +./Eigen/src/QR/ColPivHouseholderQR_MKL.h +./Eigen/src/QR/ColPivHouseholderQR_MKL.h +./Eigen/src/SVD/JacobiSVD_MKL.h +./Eigen/src/SVD/JacobiSVD_MKL.h +./Eigen/src/PardisoSupport/PardisoSupport.h +./Eigen/src/PardisoSupport/PardisoSupport.h +./Eigen/src/Core/Assign_MKL.h +./Eigen/src/Core/Assign_MKL.h +./Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h +./Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h +./Eigen/src/Core/products/GeneralMatrixVector_MKL.h +./Eigen/src/Core/products/GeneralMatrixVector_MKL.h +./Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h +./Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h +./Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h +./Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h +./Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h +./Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h +./Eigen/src/Core/products/TriangularMatrixVector_MKL.h +./Eigen/src/Core/products/TriangularMatrixVector_MKL.h +./Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h +./Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h +./Eigen/src/Core/products/TriangularSolverMatrix_MKL.h +./Eigen/src/Core/products/TriangularSolverMatrix_MKL.h +./Eigen/src/Core/util/MKL_support.h +./Eigen/src/Core/util/MKL_support.h +./Eigen/src/Cholesky/LLT_MKL.h +./Eigen/src/Cholesky/LLT_MKL.h + +/* + Copyright (c) 2011, Intel Corporation. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. * + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the + distribution. * Neither the name of Intel Corporation nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +---------------------------------------------------------------------- +Following applies to: + everything under ./bench/btl + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +"normally used" refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include +a requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material +you add to a covered work, you may (if authorized by the copyright +holders of that material) supplement the terms of this License with +terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions + of it) with contractual assumptions of liability to the recipient, + for any liability that these contractual assumptions directly + impose on those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement +or otherwise) that contradict the conditions of this License, they do +not excuse you from the conditions of this License. If you cannot +convey a covered work so as to satisfy simultaneously your obligations +under this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree +to terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES +AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR +DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM +(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF +THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it + does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> This program comes + with ABSOLUTELY NO WARRANTY; for details type `show w'. This is + free software, and you are welcome to redistribute it under + certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, your +program's commands might be different; for a GUI interface, you would +use an "about box". + + You should also get your employer (if you work as a programmer) or +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. For more information on this, and how to apply and follow +the GNU GPL, see <http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your +program into proprietary programs. If your program is a subroutine +library, you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use +the GNU Lesser General Public License instead of this License. But +first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>. + + +---------------------------------------------------------------------- +Following applies to: +./test/metis_support.cpp +./test/sparselu.cpp +./unsupported/test/mpreal/mpreal.h +./unsupported/Eigen/src/IterativeSolvers/IterationController.h +./unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +./unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +./Eigen/src/OrderingMethods/Amd.h +./Eigen/src/SparseCholesky/SimplicialCholesky_impl.h + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the +GNU General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this + license document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this + license document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of + this License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + + +---------------------------------------------------------------------- +Following applies to: +./unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +./unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +./unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +./unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +./unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h + +Minpack Copyright Notice (1999) University of Chicago. All rights +reserved + +Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the +following conditions are met: + +1. Redistributions of source code must retain the above +copyright notice, this list of conditions and the following +disclaimer. + +2. Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following +disclaimer in the documentation and/or other materials +provided with the distribution. + +3. The end-user documentation included with the +redistribution, if any, must include the following +acknowledgment: + + "This product includes software developed by the + University of Chicago, as Operator of Argonne National + Laboratory. + +Alternately, this acknowledgment may appear in the software +itself, if and wherever such third-party acknowledgments +normally appear. + +4. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" +WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE +UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND +THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE +OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY +OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR +USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF +THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) +DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION +UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL +BE CORRECTED. + +5. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT +HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF +ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, +INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF +ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF +PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER +SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT +(INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, +EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE +POSSIBILITY OF SUCH LOSS OR DAMAGES. + + +**************************** +freetype2 +**************************** +FreeType + +Quoth http://freetype.sourceforge.net/license.html: + +FreeType comes with two licenses from which you can choose the one +which fits your needs best. + + * The FreeType License is the most commonly used one. + It is a BSD-style license with a credit clause (and thus not + compatible with the GPL). + + * The GNU General Public License (GPL). + For all projects which use the GPL also or which need a license + compatible to the GPL. + +FTL.TXT: +--- + + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright (C) <year> The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace <year> with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + http://www.freetype.org + + +--- end of FTL.TXT --- + + +**************************** +GL +**************************** +Mesa Component Licenses + +Component Location Primary Author License +---------------------------------------------------------------------------- +Main Mesa code src/mesa/ Brian Paul Mesa (MIT) + +Device drivers src/mesa/drivers/* See drivers See drivers + +Ext headers include/GL/glext.h SGI SGI Free B + include/GL/glxext.h + +GLUT src/glut/ Mark Kilgard Mark's copyright + +GLEW src/glew-1.13.0 Nigel Stewart Modified BSD + +Mesa GLU library src/glu/mesa/ Brian Paul GNU-LGPL + +SGI GLU library src/glu/sgi/ SGI SGI Free B + +demo programs progs/demos/ various see source files + +X demos progs/xdemos/ Brian Paul see source files + +SGI demos progs/samples/ SGI SGI copyright + +RedBook demos progs/redbook/ SGI SGI copyright + +--------------------- +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +---------------------------- + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Alan Hourihane not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Alan Hourihane makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + +---------------------------------------------------------------------- + + + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + +--------------------- + +The OpenGL Extension Wrangler Library +Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> +Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> +Copyright (C) 2002, Lev Povalahev +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +* The name of the author may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + + +**************************** +gradle +**************************** + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +------------------------------------------------------------------------------ +License for the slf4j package +------------------------------------------------------------------------------ +SLF4J License + +Copyright (c) 2004-2007 QOS.ch +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +These terms are identical to those of the MIT License, also called the X License or the X11 License, +which is a simple, permissive non-copyleft free software license. It is deemed compatible with virtually +all types of licenses, commercial or otherwise. In particular, the Free Software Foundation has declared it +compatible with GNU GPL. It is also known to be approved by the Apache Software Foundation as compatible +with Apache Software License. + + +------------------------------------------------------------------------------ +License for the JUnit package +------------------------------------------------------------------------------ +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are +distributed by that particular Contributor. A Contribution 'originates' from a +Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to +the Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free copyright license to +reproduce, prepare derivative works of, publicly display, publicly perform, +distribute and sublicense the Contribution of such Contributor, if any, and such +derivative works, in source code and object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed +Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. +This patent license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the +Licensed Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses +to its Contributions set forth herein, no assurances are provided by any +Contributor that the Program does not infringe the patent or other intellectual +property rights of any other entity. Each Contributor disclaims any liability to +Recipient for claims brought by any other entity based on infringement of +intellectual property rights or otherwise. As a condition to exercising the +rights and licenses granted hereunder, each Recipient hereby assumes sole +responsibility to secure any other intellectual property rights needed, if any. +For example, if a third party patent license is required to allow Recipient to +distribute the Program, it is Recipient's responsibility to acquire that license +before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright license set +forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its +own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and +conditions, express and implied, including warranties or conditions of title and +non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and consequential +damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered +by that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable manner on or +through a medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the +Program. + +Each Contributor must identify itself as the originator of its Contribution, if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, if +a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages +and costs (collectively "Losses") arising from claims, lawsuits and other legal +actions brought by a third party against the Indemnified Contributor to the +extent caused by the acts or omissions of such Commercial Contributor in +connection with its distribution of the Program in a commercial product +offering. The obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In order +to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor to +control, and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may participate in +any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If that +Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such +Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a court +requires any other Contributor to pay any damages as a result, the Commercial +Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its exercise of +rights under this Agreement, including but not limited to the risks and costs of +program errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS +GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of the +terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such +provision valid and enforceable. + +If Recipient institutes patent litigation against a Contributor with respect to +a patent applicable to software (including a cross-claim or counterclaim in a +lawsuit), then any patent licenses granted by that Contributor to such Recipient +under this Agreement shall terminate as of the date such litigation is filed. In +addition, if Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted under +Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to time. +No one other than the Agreement Steward has the right to modify this Agreement. +IBM is the initial Agreement Steward. IBM may assign the responsibility to serve +as the Agreement Steward to a suitable separate entity. Each new version of the +Agreement will be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the Agreement +under which it was received. In addition, after a new version of the Agreement +is published, Contributor may elect to distribute the Program (including its +Contributions) under the new version. Except as expressly stated in Sections +2(a) and 2(b) above, Recipient receives no rights or licenses to the +intellectual property of any Contributor under this Agreement, whether +expressly, by implication, estoppel or otherwise. All rights in the Program not +expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. + +------------------------------------------------------------------------------ +License for the JCIFS package +------------------------------------------------------------------------------ +JCIFS License + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + + +**************************** +icu +**************************** +ICU + +There are two licenses here: +- ICU license +- Unicode Terms of Use +------------------------------------------------------------------------------ +ICU License - ICU 1.8.1 and later +From http://source.icu-project.org/repos/icu/icu/trunk/license.html +X License (old version). For license pedigree see the +ICU FAQ at http://icu-project.org/userguide/icufaq.html + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2006 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +provided that the above copyright notice(s) and this permission notice appear +in all copies of the Software and that both the above copyright notice(s) and +this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE +LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization of the copyright holder. + +All trademarks and registered trademarks mentioned herein are the property of their respective owners. + +------------------------------------------------------------------------------ +Unicode Terms of Use, from http://www.unicode.org/copyright.html + + For the general privacy policy governing access to this site, see the +Unicode Privacy Policy. For trademark usage, see the Unicode Consortium +Trademarks and Logo Policy. + Notice to End User: Terms of Use + Carefully read the following legal agreement ("Agreement"). Use or copying +of the software and/or codes provided with this agreement (The "Software") +constitutes your acceptance of these terms + + 1. Unicode Copyright. + 1. Copyright 1991-2007 Unicode, Inc. All rights reserved. + 2. Certain documents and files on this website contain a legend +indicating that "Modification is permitted." Any person is hereby authorized, +without fee, to modify such documents and files to create derivative works +conforming to the Unicode Standard, subject to Terms and Conditions herein. + 3. Any person is hereby authorized, without fee, to view, use, +reproduce, and distribute all documents and files solely for informational +purposes in the creation of products supporting the Unicode Standard, subject +to the Terms and Conditions herein. + 4. Further specifications of rights and restrictions pertaining +to the use of the particular set of data files known as the "Unicode Character +Database" can be found in Exhibit 1. + 5. Each version of the Unicode Standard has further specifications +of rights and restrictions of use. For the book editions, these are found on +the back of the title page. For the online edition, certain files (such as the +PDF files for book chapters and code charts) carry specific restrictions. All +other files are covered under these general Terms of Use. To request a +permission to reproduce any part of the Unicode Standard, please contact the +Unicode Consortium. + 6. No license is granted to "mirror" the Unicode website where a +fee is charged for access to the "mirror" site. + 7. Modification is not permitted with respect to this document. +All copies of this document must be verbatim. + 2. Restricted Rights Legend. Any technical data or software which is +licensed to the United States of America, its agencies and/or instrumentalities +under this Agreement is commercial technical data or commercial computer +software developed exclusively at private expense as defined in FAR 2.101, or +DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, +duplication, or disclosure by the Government is subject to restrictions as set +forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) +and this Agreement. For Software, in accordance with FAR 12-212 or +DFARS 227-7202, as applicable, use, duplication or disclosure by the Government +is subject to the restrictions set forth in this Agreement. + 3. Warranties and Disclaimers. + 1. This publication and/or website may include technical or +typographical errors or other inaccuracies . Changes are periodically added to +the information herein; these changes will be incorporated in new editions of +the publication and/or website. Unicode may make improvements and/or changes +in the product(s) and/or program(s) described in this publication and/or +website at any time. + 2. If this file has been purchased on magnetic or optical media +from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange +of the defective media within ninety (90) days of original purchase. + 3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR +SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, +IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. +UNICODE AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN +THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR +LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE. + 4. Waiver of Damages. In no event shall Unicode or its licensors be +liable for any special, incidental, indirect or consequential damages of any +kind, or any damages whatsoever, whether or not Unicode was advised of the +possibility of the damage, including, without limitation, those resulting from +the following: loss of use, data or profits, in connection with the use, +modification or distribution of this information or its derivatives. + 5. Trademarks. + 1. Unicode and the Unicode logo are registered trademarks of +Unicode, Inc. + 2. This site contains product names and corporate names of other +companies. All product names and company names and logos mentioned herein are +the trademarks or registered trademarks of their respective owners. Other +products and corporate names mentioned herein which are trademarks of a third +party are used only for explanation and for the owners' benefit and with no +intent to infringe. + 3. Use of third party products or information referred to herein +is at the user\x{2019}s risk. + 6. Miscellaneous. + 1. Jurisdiction and Venue. This server is operated from a location +in the State of California, United States of America. Unicode makes no +representation that the materials are appropriate for use in other locations. +If you access this server from other locations, you are responsible for +compliance with local laws. This Agreement, all use of this site and any +claims and damages resulting from use of this site are governed solely by the +laws of the State of California without regard to any principles which would +apply the laws of a different jurisdiction. The user agrees that any disputes +regarding this site shall be resolved solely in the courts located in Santa +Clara County, California. The user agrees said courts have personal +jurisdiction and agree to waive any right to transfer the dispute to any other +forum. + 2. Modification by Unicode Unicode shall have the right to modify +this Agreement at any time by posting it to this site. The user may not assign +any part of this Agreement without Unicode\x{2019}s prior written consent. + 3. Taxes. The user agrees to pay any taxes arising from access to +this website or use of the information herein, except for those based on +Unicode\x{2019}s net income. + 4. Severability. If any provision of this Agreement is declared +invalid or unenforceable, the remaining provisions of this Agreement shall +remain in effect. + 5. Entire Agreement. This Agreement constitutes the entire +agreement between the parties. + +EXHIBIT 1 +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/ . Unicode Software includes any source code +published in the Unicode Standard or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES +("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND +AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF +YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA +FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright 1991-2007 Unicode, Inc. All rights reserved. Distributed under +the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a +copy of the Unicode data files and any associated documentation (the "Data +Files") or Unicode software and any associated documentation (the "Software") +to deal in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, and/or +sell copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that (a) the above +copyright notice(s) and this permission notice appear with all copies of the +Data Files or Software, (b) both the above copyright notice(s) and this +permission notice appear in associated documentation, and (c) there is clear +notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR +SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. + + Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be +registered in some jurisdictions. All other trademarks and registered +trademarks mentioned herein are the property of their respective owners. + + +**************************** +icu +**************************** +ICU + +There are two licenses here: +- ICU license +- Unicode Terms of Use +------------------------------------------------------------------------------ +ICU License - ICU 1.8.1 and later +From http://source.icu-project.org/repos/icu/icu/trunk/license.html +X License (old version). For license pedigree see the +ICU FAQ at http://icu-project.org/userguide/icufaq.html + +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2006 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +provided that the above copyright notice(s) and this permission notice appear +in all copies of the Software and that both the above copyright notice(s) and +this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE +LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not +be used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization of the copyright holder. + +All trademarks and registered trademarks mentioned herein are the property of their respective owners. + +------------------------------------------------------------------------------ +Unicode Terms of Use, from http://www.unicode.org/copyright.html + + For the general privacy policy governing access to this site, see the +Unicode Privacy Policy. For trademark usage, see the Unicode Consortium +Trademarks and Logo Policy. + Notice to End User: Terms of Use + Carefully read the following legal agreement ("Agreement"). Use or copying +of the software and/or codes provided with this agreement (The "Software") +constitutes your acceptance of these terms + + 1. Unicode Copyright. + 1. Copyright 1991-2007 Unicode, Inc. All rights reserved. + 2. Certain documents and files on this website contain a legend +indicating that "Modification is permitted." Any person is hereby authorized, +without fee, to modify such documents and files to create derivative works +conforming to the Unicode Standard, subject to Terms and Conditions herein. + 3. Any person is hereby authorized, without fee, to view, use, +reproduce, and distribute all documents and files solely for informational +purposes in the creation of products supporting the Unicode Standard, subject +to the Terms and Conditions herein. + 4. Further specifications of rights and restrictions pertaining +to the use of the particular set of data files known as the "Unicode Character +Database" can be found in Exhibit 1. + 5. Each version of the Unicode Standard has further specifications +of rights and restrictions of use. For the book editions, these are found on +the back of the title page. For the online edition, certain files (such as the +PDF files for book chapters and code charts) carry specific restrictions. All +other files are covered under these general Terms of Use. To request a +permission to reproduce any part of the Unicode Standard, please contact the +Unicode Consortium. + 6. No license is granted to "mirror" the Unicode website where a +fee is charged for access to the "mirror" site. + 7. Modification is not permitted with respect to this document. +All copies of this document must be verbatim. + 2. Restricted Rights Legend. Any technical data or software which is +licensed to the United States of America, its agencies and/or instrumentalities +under this Agreement is commercial technical data or commercial computer +software developed exclusively at private expense as defined in FAR 2.101, or +DFARS 252.227-7014 (June 1995), as applicable. For technical data, use, +duplication, or disclosure by the Government is subject to restrictions as set +forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995) +and this Agreement. For Software, in accordance with FAR 12-212 or +DFARS 227-7202, as applicable, use, duplication or disclosure by the Government +is subject to the restrictions set forth in this Agreement. + 3. Warranties and Disclaimers. + 1. This publication and/or website may include technical or +typographical errors or other inaccuracies . Changes are periodically added to +the information herein; these changes will be incorporated in new editions of +the publication and/or website. Unicode may make improvements and/or changes +in the product(s) and/or program(s) described in this publication and/or +website at any time. + 2. If this file has been purchased on magnetic or optical media +from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange +of the defective media within ninety (90) days of original purchase. + 3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR +SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS, +IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. +UNICODE AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN +THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR +LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE. + 4. Waiver of Damages. In no event shall Unicode or its licensors be +liable for any special, incidental, indirect or consequential damages of any +kind, or any damages whatsoever, whether or not Unicode was advised of the +possibility of the damage, including, without limitation, those resulting from +the following: loss of use, data or profits, in connection with the use, +modification or distribution of this information or its derivatives. + 5. Trademarks. + 1. Unicode and the Unicode logo are registered trademarks of +Unicode, Inc. + 2. This site contains product names and corporate names of other +companies. All product names and company names and logos mentioned herein are +the trademarks or registered trademarks of their respective owners. Other +products and corporate names mentioned herein which are trademarks of a third +party are used only for explanation and for the owners' benefit and with no +intent to infringe. + 3. Use of third party products or information referred to herein +is at the user\x{2019}s risk. + 6. Miscellaneous. + 1. Jurisdiction and Venue. This server is operated from a location +in the State of California, United States of America. Unicode makes no +representation that the materials are appropriate for use in other locations. +If you access this server from other locations, you are responsible for +compliance with local laws. This Agreement, all use of this site and any +claims and damages resulting from use of this site are governed solely by the +laws of the State of California without regard to any principles which would +apply the laws of a different jurisdiction. The user agrees that any disputes +regarding this site shall be resolved solely in the courts located in Santa +Clara County, California. The user agrees said courts have personal +jurisdiction and agree to waive any right to transfer the dispute to any other +forum. + 2. Modification by Unicode Unicode shall have the right to modify +this Agreement at any time by posting it to this site. The user may not assign +any part of this Agreement without Unicode\x{2019}s prior written consent. + 3. Taxes. The user agrees to pay any taxes arising from access to +this website or use of the information herein, except for those based on +Unicode\x{2019}s net income. + 4. Severability. If any provision of this Agreement is declared +invalid or unenforceable, the remaining provisions of this Agreement shall +remain in effect. + 5. Entire Agreement. This Agreement constitutes the entire +agreement between the parties. + +EXHIBIT 1 +UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE + + Unicode Data Files include all data files under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/ . Unicode Software includes any source code +published in the Unicode Standard or under the directories +http://www.unicode.org/Public/, http://www.unicode.org/reports/, and +http://www.unicode.org/cldr/data/. + + NOTICE TO USER: Carefully read the following legal agreement. BY +DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES +("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND +AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF +YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA +FILES OR SOFTWARE. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright 1991-2007 Unicode, Inc. All rights reserved. Distributed under +the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a +copy of the Unicode data files and any associated documentation (the "Data +Files") or Unicode software and any associated documentation (the "Software") +to deal in the Data Files or Software without restriction, including without +limitation the rights to use, copy, modify, merge, publish, distribute, and/or +sell copies of the Data Files or Software, and to permit persons to whom the +Data Files or Software are furnished to do so, provided that (a) the above +copyright notice(s) and this permission notice appear with all copies of the +Data Files or Software, (b) both the above copyright notice(s) and this +permission notice appear in associated documentation, and (c) there is clear +notice in each modified Data File or in the Software as well as in the +documentation associated with the Data File(s) or Software that the data or +software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN +THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR +SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall +not be used in advertising or otherwise to promote the sale, use or other +dealings in these Data Files or Software without prior written authorization +of the copyright holder. + + Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be +registered in some jurisdictions. All other trademarks and registered +trademarks mentioned herein are the property of their respective owners. + + +**************************** +java/android_libs/exoplayer +**************************** + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +**************************** +java/android_libs/protobuf_nano +**************************** +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + + +**************************** +javascript/jquery_ui +**************************** +The MIT License (MIT) + +Copyright (c) 2015 jQuery Foundation and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +**************************** +javascript/jquery/v2_0_1 +**************************** +Copyright 2013 jQuery Foundation and other contributors +http://jquery.com/ + +https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt +https://github.com/jquery/sizzle/blob/master/LICENSE + +jQuery and Sizzle are released under MIT Licence. + +The text is provided below. + +MIT License +---- + +Copyright 2013 jQuery Foundation and other contributors +http://jquery.com/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +**************************** +javascript/tracing_framework +**************************** +Copyright 2012, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +**************************** +java_src/android_libs/exoplayer +**************************** + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +**************************** +java_src/android_libs/protobuf_nano/v2 +**************************** +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + + +**************************** +jpeg +**************************** +(extracted from src/README) + +LEGAL ISSUES +============ + +In plain English: + +1. We don't promise that this software works. (But if you find any bugs, + please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a + program, you must acknowledge somewhere in your documentation that + you've used the IJG code. + +In legalese: + +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-1998, Thomas G. Lane. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. + + +ansi2knr.c is included in this distribution by permission of L. Peter Deutsch, +sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA. +ansi2knr.c is NOT covered by the above copyright and conditions, but instead +by the usual distribution terms of the Free Software Foundation; principally, +that you must include source code if you redistribute it. (See the file +ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part +of any program generated from the IJG code, this does not limit you more than +the foregoing paragraphs do. + +The Unix configuration script "configure" was produced with GNU Autoconf. +It is copyright by the Free Software Foundation but is freely distributable. +The same holds for its supporting scripts (config.guess, config.sub, +ltconfig, ltmain.sh). Another support script, install-sh, is copyright +by M.I.T. but is also freely distributable. + +It appears that the arithmetic coding option of the JPEG spec is covered by +patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot +legally be used without obtaining one or more licenses. For this reason, +support for arithmetic coding has been removed from the free JPEG software. +(Since arithmetic coding provides only a marginal gain over the unpatented +Huffman mode, it is unlikely that very many implementations will support it.) +So far as we are aware, there are no patent restrictions on the remaining +code. + +The IJG distribution formerly included code to read and write GIF files. +To avoid entanglement with the Unisys LZW patent, GIF reading support has +been removed altogether, and the GIF writer has been simplified to produce +"uncompressed GIFs". This technique does not use the LZW algorithm; the +resulting GIF files are larger than usual, but are readable by all standard +GIF decoders. + +We are required to state that + "The Graphics Interchange Format(c) is the Copyright property of + CompuServe Incorporated. GIF(sm) is a Service Mark property of + CompuServe Incorporated." + + +**************************** +libogg +**************************** +Copyright (c) 2002, Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**************************** +libunwind +**************************** +Copyright (c) 2002 Hewlett-Packard Co. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +**************************** +libvorbis +**************************** +Copyright (c) 2002-2008 Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +**************************** +libxcb +**************************** +Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall +be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors +or their institutions shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this +Software without prior written authorization from the +authors. + + +**************************** +libxml +**************************** +Libxml2, an XML C Parser + +Except where otherwise noted in the source code (e.g. the files hash.c, +list.c and the trio files, which are covered by a similar licence but +with different Copyright notices) all the files are: + + Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is fur- +nished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT- +NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------- + +Copyright (C) 2000,2012 Bjorn Reese and Daniel Veillard. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND +CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + +Author: breese@users.sourceforge.net + +(taken from hash.c) + +-------------------------------------------------------------------- + + Copyright (C) 2000 Gary Pennington and Daniel Veillard. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND +CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + +Author: Gary.Pennington@uk.sun.com + +(taken from list.c) + +-------------------------------------------------------------------- + +Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND +CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + +(taken from trio.h and trio.c) + +-------------------------------------------------------------------- + +Copyright (C) 2001 Bjorn Reese <breese@users.sourceforge.net> + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND +CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + +(taken from triodef.h, trionan.h, and trionan.c) + +-------------------------------------------------------------------- + +Copyright (C) 2000 Bjorn Reese and Daniel Stenberg. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND +CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + +(taken from triop.h) + +-------------------------------------------------------------------- + +Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND +CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. + +(taken from triostr.h and triostr.c) + +************************************************************************* + +http://ctrio.sourceforge.net/ + +************************************************************************* + + +**************************** +lodepng +**************************** +LodePNG + +Copyright (c) 2005-2013 Lode Vandevenne + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + + +**************************** +minizip +**************************** +zlib + +(extracted from README, except for match.S) + +Copyright notice: + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + +(extracted from match.S, for match.S only) + + Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the author be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + +**************************** +mongoose +**************************** +Copyright (c) 2004-2013 Sergey Lyubka + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +**************************** +objective_c/gtm_session_fetcher +**************************** + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +**************************** +openctm +**************************** +Copyright (c) 2009-2010 Marcus Geelnard + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not + be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + + +**************************** +openssl +**************************** +BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL +licensing. Files that are completely new have a Google copyright and an ISC +license. This license is reproduced at the bottom of this file. + +Contributors to BoringSSL are required to follow the CLA rules for Chromium: +https://cla.developers.google.com/clas + +Some files from Intel are under yet another license, which is also included +underneath. + +The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the +OpenSSL License and the original SSLeay license apply to the toolkit. See below +for the actual license texts. Actually both licenses are BSD-style Open Source +licenses. In case of any license issues related to OpenSSL please contact +openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + + +ISC license used for completely new code in BoringSSL: + +/* Copyright (c) 2015, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + + +Some files from Intel carry the following license: + +# Copyright (c) 2012, Intel Corporation +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the +# distribution. +# +# * Neither the name of the Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# +# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION ""AS IS"" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +**************************** +openssl/boringssl +**************************** +BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL +licensing. Files that are completely new have a Google copyright and an ISC +license. This license is reproduced at the bottom of this file. + +Contributors to BoringSSL are required to follow the CLA rules for Chromium: +https://cla.developers.google.com/clas + +Some files from Intel are under yet another license, which is also included +underneath. + +The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the +OpenSSL License and the original SSLeay license apply to the toolkit. See below +for the actual license texts. Actually both licenses are BSD-style Open Source +licenses. In case of any license issues related to OpenSSL please contact +openssl-core@openssl.org. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are aheared to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the rouines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publically available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + + +ISC license used for completely new code in BoringSSL: + +/* Copyright (c) 2015, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + + +Some files from Intel carry the following license: + +# Copyright (c) 2012, Intel Corporation +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the +# distribution. +# +# * Neither the name of the Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# +# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION ""AS IS"" AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +**************************** +pcre +**************************** +PCRE LICENCE +------------ + +PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + +Release 8 of PCRE is distributed under the terms of the "BSD" licence, as +specified below. The documentation for PCRE, supplied in the "doc" +directory, is distributed under the same terms as the software itself. The data +in the testdata directory is not copyrighted and is in the public domain. + +The basic library functions are written in C and are freestanding. Also +included in the distribution is a set of C++ wrapper functions, and a +just-in-time compiler that can be used to optimize pattern matching. These +are both optional features that can be omitted when the library is built. + + +THE BASIC LIBRARY FUNCTIONS +--------------------------- + +Written by: Philip Hazel +Email local part: ph10 +Email domain: cam.ac.uk + +University of Cambridge Computing Service, +Cambridge, England. + +Copyright (c) 1997-2015 University of Cambridge +All rights reserved. + + +PCRE JUST-IN-TIME COMPILATION SUPPORT +------------------------------------- + +Written by: Zoltan Herczeg +Email local part: hzmester +Emain domain: freemail.hu + +Copyright(c) 2010-2015 Zoltan Herczeg +All rights reserved. + + +STACK-LESS JUST-IN-TIME COMPILER +-------------------------------- + +Written by: Zoltan Herczeg +Email local part: hzmester +Emain domain: freemail.hu + +Copyright(c) 2009-2015 Zoltan Herczeg +All rights reserved. + + +THE C++ WRAPPER FUNCTIONS +------------------------- + +Contributed by: Google Inc. + +Copyright (c) 2007-2012, Google Inc. +All rights reserved. + + +THE "BSD" LICENCE +----------------- + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the name of Google + Inc. nor the names of their contributors may be used to endorse or + promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +End + + +**************************** +pffft +**************************** +Copyright (c) 2013 Julien Pommier ( pommier@modartt.com ) + +Based on original fortran 77 code from FFTPACKv4 from NETLIB, +authored by Dr Paul Swarztrauber of NCAR, in 1985. + +As confirmed by the NCAR fftpack software curators, the following +FFTPACKv5 license applies to FFTPACKv4 sources. My changes are +released under the same terms. + +FFTPACK license: + +http://www.cisl.ucar.edu/css/software/fftpack5/ftpk.html + +Copyright (c) 2004 the University Corporation for Atmospheric +Research ("UCAR"). All rights reserved. Developed by NCAR's +Computational and Information Systems Laboratory, UCAR, +www.cisl.ucar.edu. + +Redistribution and use of the Software in source and binary forms, +with or without modification, is permitted provided that the +following conditions are met: + +- Neither the names of NCAR's Computational and Information Systems +Laboratory, the University Corporation for Atmospheric Research, +nor the names of its sponsors or contributors may be used to +endorse or promote products derived from this Software without +specific prior written permission. + +- Redistributions of source code must retain the above copyright +notices, this list of conditions, and the disclaimer below. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions, and the disclaimer below in the +documentation and/or other materials provided with the +distribution. + +THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + + +**************************** +png +**************************** +libpng + +This copy of the libpng notices is provided for your convenience. In case of +any discrepancy between this copy and the notices in the file png.h that is +included in the libpng distribution, the latter shall prevail. + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + +If you modify libpng you may insert additional notices immediately following +this sentence. + +libpng versions 1.2.6, August 15, 2004, through 1.2.27, April 29, 2008, are +Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.2.5 +with the following individual added to the list of Contributing Authors + + Cosmin Truta + +libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are +Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-1.0.6 +with the following individuals added to the list of Contributing Authors + + Simon-Pierre Cadieux + Eric S. Raymond + Gilles Vollant + +and with the following additions to the disclaimer: + + There is no warranty against interference with your enjoyment of the + library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is with + the user. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are +distributed according to the same disclaimer and license as libpng-0.96, +with the following individuals added to the list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (c) 1996, 1997 Andreas Dilger +Distributed according to the same disclaimer and license as libpng-0.88, +with the following individuals added to the list of Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. + +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing Authors +and Group 42, Inc. disclaim all warranties, expressed or implied, +including, without limitation, the warranties of merchantability and of +fitness for any purpose. The Contributing Authors and Group 42, Inc. +assume no liability for direct, indirect, incidental, special, exemplary, +or consequential damages, which may result from the use of the PNG +Reference Library, even if advised of the possibility of such damage. + +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: + +1. The origin of this source code must not be misrepresented. + +2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + +3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + +The Contributing Authors and Group 42, Inc. specifically permit, without +fee, and encourage the use of this source code as a component to +supporting the PNG file format in commercial products. If you use this +source code in a product, acknowledgment is not required but would be +appreciated. + + +A "png_get_copyright" function is available, for convenient use in "about" +boxes and the like: + + printf("%s",png_get_copyright(NULL)); + +Also, the PNG logo (in PNG format, of course) is supplied in the +files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + +Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a +certification mark of the Open Source Initiative. + +Glenn Randers-Pehrson +glennrp at users.sourceforge.net +April 29, 2008 + + +**************************** +protobuf +**************************** +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + + +**************************** +re2 +**************************** +// Copyright (c) 2009 The RE2 Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +**************************** +stblib +**************************** + License for STBLIB - A collection of public-domain single-file C/C++ + libraries, primarily aimed at game developers. + +The compilation and test files are licensed under the MIT license, but the +single-file libraries themselves are in the public domain (free for use and +modification for any purpose without legal friction). + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + +**************************** +stl +**************************** +SGI STL + +The STL portion of GNU libstdc++ that is used with gcc3 and gcc4 is licensed +under the GPL, with the following exception: + +# As a special exception, you may use this file as part of a free software +# library without restriction. Specifically, if other files instantiate +# templates or use macros or inline functions from this file, or you compile +# this file and link it with other files to produce an executable, this +# file does not by itself cause the resulting executable to be covered by +# the GNU General Public License. This exception does not however +# invalidate any other reasons why the executable file might be covered by +# the GNU General Public License. + + + +**************************** +tinyxml +**************************** +TinyXml is released under the zlib license: + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + + + +**************************** +tz +**************************** +With a few exceptions, all files in the tz code and data (including +this one) are in the public domain. The exceptions are tzcode's +date.c, newstrftime.3, and strftime.c, which contain material derived +from BSD and which use the BSD 3-clause license. + + +**************************** +utf +**************************** +UTF-8 Library + +The authors of this software are Rob Pike and Ken Thompson. + Copyright (c) 1998-2002 by Lucent Technologies. +Permission to use, copy, modify, and distribute this software for any +purpose without fee is hereby granted, provided that this entire notice +is included in all copies of any software which is or includes a copy +or modification of this software and in all copies of the supporting +documentation for such software. +THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED +WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY +REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY +OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. + + +**************************** +xmpmeta +**************************** +xmpmeta. A fast XMP metadata parsing and writing library. +Copyright 2016 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +* Neither the name of Google Inc. nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +**************************** +Xorg +**************************** +The following is the 'standard copyright' agreed upon by most contributors, +and is currently the canonical license preferred by the X.Org Foundation. +This is a slight variant of the common MIT license form published by the +Open Source Initiative at http://www.opensource.org/licenses/mit-license.php + +Copyright holders of new code should use this license statement where +possible, and insert their name to this list. Please sort by surname +for people, and by the full name for other entities (e.g. Juliusz +Chroboczek sorts before Intel Corporation sorts before Daniel Stone). + +See each individual source file or directory for the license that applies +to that file. + +Copyright (C) 2003-2006,2008 Jamey Sharp, Josh Triplett +Copyright © 2009 Red Hat, Inc. +Copyright 1990-1992,1999,2000,2004,2009,2010 Oracle and/or its affiliates. +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next +paragraph) shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + ---------------------------------------------------------------------- + +The following licenses are 'legacy' - usually MIT/X11 licenses with the name +of the copyright holder(s) in the license statement: + +Copyright 1984-1994, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +X Window System is a trademark of The Open Group. + + ---------------------------------------- + +Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium +Copyright 2000 The XFree86 Project, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the X Consortium shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from the X Consortium. + +Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by +Digital Equipment Corporation + +Portions Copyright 1990, 1991 by Tektronix, Inc. + +Permission to use, copy, modify and distribute this documentation for +any purpose and without fee is hereby granted, provided that the above +copyright notice appears in all copies and that both that copyright notice +and this permission notice appear in all copies, and that the names of +Digital and Tektronix not be used in in advertising or publicity pertaining +to this documentation without specific, written prior permission. +Digital and Tektronix makes no representations about the suitability +of this documentation for any purpose. +It is provided ``as is'' without express or implied warranty. + + ---------------------------------------- + +Copyright (c) 1999-2000 Free Software Foundation, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of the Free Software Foundation +shall not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization from the +Free Software Foundation. + + ---------------------------------------- + +Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. + All Rights Reserved + +This file is a component of an X Window System-specific implementation +of Xcms based on the TekColor Color Management System. TekColor is a +trademark of Tektronix, Inc. The term "TekHVC" designates a particular +color space that is the subject of U.S. Patent No. 4,985,853 (equivalent +foreign patents pending). Permission is hereby granted to use, copy, +modify, sell, and otherwise distribute this software and its +documentation for any purpose and without fee, provided that: + +1. This copyright, permission, and disclaimer notice is reproduced in + all copies of this software and any modification thereof and in + supporting documentation; +2. Any color-handling application which displays TekHVC color + cooordinates identifies these as TekHVC color coordinates in any + interface that displays these coordinates and in any associated + documentation; +3. The term "TekHVC" is always used, and is only used, in association + with the mathematical derivations of the TekHVC Color Space, + including those provided in this file and any equivalent pathways and + mathematical derivations, regardless of digital (e.g., floating point + or integer) representation. + +Tektronix makes no representation about the suitability of this software +for any purpose. It is provided "as is" and with all faults. + +TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, +INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF +CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +(c) Copyright 1995 FUJITSU LIMITED +This is source code modified by FUJITSU LIMITED under the Joint +Development Agreement for the CDE/Motif PST. + + ---------------------------------------- + +Copyright 1992 by Oki Technosystems Laboratory, Inc. +Copyright 1992 by Fuji Xerox Co., Ltd. + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Oki Technosystems +Laboratory and Fuji Xerox not be used in advertising or publicity +pertaining to distribution of the software without specific, written +prior permission. +Oki Technosystems Laboratory and Fuji Xerox make no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS +LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1990, 1991, 1992, 1993, 1994 by FUJITSU LIMITED + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of FUJITSU LIMITED +not be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +FUJITSU LIMITED makes no representations about the suitability of +this software for any purpose. +It is provided "as is" without express or implied warranty. + +FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + + +Copyright (c) 1995 David E. Wexelblat. All rights reserved + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL DAVID E. WEXELBLAT BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of David E. Wexelblat shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from David E. Wexelblat. + + ---------------------------------------- + +Copyright 1990, 1991 by OMRON Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name OMRON not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. OMRON makes no representations +about the suitability of this software for any purpose. It is provided +"as is" without express or implied warranty. + +OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by +Digital Equipment Corporation + +Portions Copyright 1990, 1991 by Tektronix, Inc + +Rewritten for X.org by Chris Lee <clee@freedesktop.org> + +Permission to use, copy, modify, distribute, and sell this documentation +for any purpose and without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. +Chris Lee makes no representations about the suitability for any purpose +of the information in this document. It is provided \`\`as-is'' without +express or implied warranty. + + ---------------------------------------- + +Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts, +Copyright 1994 by FUJITSU LIMITED +Copyright 1994 by Sony Corporation + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Digital, FUJITSU +LIMITED and Sony Corporation not be used in advertising or publicity +pertaining to distribution of the software without specific, written +prior permission. + +DIGITAL, FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL, FUJITSU LIMITED +AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + + +Copyright 1991 by the Open Software Foundation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Open Software Foundation +not be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. Open Software +Foundation makes no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1990, 1991, 1992,1993, 1994 by FUJITSU LIMITED +Copyright 1993, 1994 by Sony Corporation + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of FUJITSU LIMITED and Sony Corporation +not be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. FUJITSU LIMITED and +Sony Corporation makes no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL FUJITSU LIMITED OR SONY CORPORATION BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE +USE OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright (c) 1993, 1995 by Silicon Graphics Computer Systems, Inc. + +Permission to use, copy, modify, and distribute this +software and its documentation for any purpose and without +fee is hereby granted, provided that the above copyright +notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting +documentation, and that the name of Silicon Graphics not be +used in advertising or publicity pertaining to distribution +of the software without specific prior written permission. +Silicon Graphics makes no representation about the suitability +of this software for any purpose. It is provided "as is" +without any express or implied warranty. + +SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON +GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH +THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED +Copyright 1993 by Digital Equipment Corporation + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of FUJITSU LIMITED and +Digital Equipment Corporation not be used in advertising or publicity +pertaining to distribution of the software without specific, written +prior permission. FUJITSU LIMITED and Digital Equipment Corporation +makes no representations about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. + +FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR +ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1992, 1993 by FUJITSU LIMITED +Copyright 1993 by Fujitsu Open Systems Solutions, Inc. +Copyright 1994 by Sony Corporation + +Permission to use, copy, modify, distribute and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of FUJITSU LIMITED, +Fujitsu Open Systems Solutions, Inc. and Sony Corporation not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. +FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and +Sony Corporation make no representations about the suitability of +this software for any purpose. It is provided "as is" without +express or implied warranty. + +FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY +CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, +IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED +AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1987, 1988, 1990, 1993 by Digital Equipment Corporation, +Maynard, Massachusetts, + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + ---------------------------------------- + +Copyright 1993 by SunSoft, Inc. +Copyright 1999-2000 by Bruno Haible + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the names of SunSoft, Inc. and +Bruno Haible not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. SunSoft, Inc. and Bruno Haible make no representations +about the suitability of this software for any purpose. It is +provided "as is" without express or implied warranty. + +SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1991 by the Open Software Foundation +Copyright 1993 by the TOSHIBA Corp. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Open Software Foundation and TOSHIBA +not be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. Open Software +Foundation and TOSHIBA make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1988 by Wyse Technology, Inc., San Jose, Ca., + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name Wyse not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + ---------------------------------------- + + +Copyright 1991 by the Open Software Foundation +Copyright 1993, 1994 by the Sony Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of Open Software Foundation and +Sony Corporation not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. +Open Software Foundation and Sony Corporation make no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN +SOFTWARE FOUNDATIONN OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL, +INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1992, 1993 by FUJITSU LIMITED +Copyright 1993 by Fujitsu Open Systems Solutions, Inc. + +Permission to use, copy, modify, distribute and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of FUJITSU LIMITED and +Fujitsu Open Systems Solutions, Inc. not be used in advertising or +publicity pertaining to distribution of the software without specific, +written prior permission. +FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no +representations about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS +SOLUTIONS, INC. AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1993, 1994 by Sony Corporation + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Sony Corporation +not be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. +Sony Corporation makes no representations about the suitability of +this software for any purpose. It is provided "as is" without +express or implied warranty. + +SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1986, 1998 The Open Group +Copyright (c) 2000 The XFree86 Project, Inc. + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +X CONSORTIUM OR THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Except as contained in this notice, the name of the X Consortium or of the +XFree86 Project shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the X Consortium and the XFree86 Project. + + ---------------------------------------- + +Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, + and Nippon Telegraph and Telephone Corporation +Copyright 1991 by the Open Software Foundation +Copyright 1993 by the FUJITSU LIMITED + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of OMRON, NTT Software, NTT, and +Open Software Foundation not be used in advertising or publicity +pertaining to distribution of the software without specific, +written prior permission. OMRON, NTT Software, NTT, and Open Software +Foundation make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OMRON, NTT SOFTWARE, NTT, AND OPEN SOFTWARE FOUNDATION +DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT +SHALL OMRON, NTT SOFTWARE, NTT, OR OPEN SOFTWARE FOUNDATION BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 1988 by Wyse Technology, Inc., San Jose, Ca, +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + + +Copyright 1991, 1992 by Fuji Xerox Co., Ltd. +Copyright 1992, 1993, 1994 by FUJITSU LIMITED + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Fuji Xerox, +FUJITSU LIMITED not be used in advertising or publicity pertaining +to distribution of the software without specific, written prior +permission. Fuji Xerox, FUJITSU LIMITED make no representations +about the suitability of this software for any purpose. +It is provided "as is" without express or implied warranty. + +FUJI XEROX, FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJI XEROX, +FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA +OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 2006 Josh Triplett + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + ---------------------------------------- + +(c) Copyright 1996 by Sebastien Marineau and Holger Veit + <marineau@genie.uottawa.ca> + <Holger.Veit@gmd.de> + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Except as contained in this notice, the name of Sebastien Marineau or Holger Veit +shall not be used in advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization from Holger Veit or +Sebastien Marineau. + + ---------------------------------------- + +Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, + and Nippon Telegraph and Telephone Corporation +Copyright 1991 by the Open Software Foundation +Copyright 1993 by the TOSHIBA Corp. +Copyright 1993, 1994 by Sony Corporation +Copyright 1993, 1994 by the FUJITSU LIMITED + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of OMRON, NTT Software, NTT, Open +Software Foundation, and Sony Corporation not be used in advertising +or publicity pertaining to distribution of the software without specific, +written prior permission. OMRON, NTT Software, NTT, Open Software +Foundation, and Sony Corporation make no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY +CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT +SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY +CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright 2000 by Bruno Haible + +Permission to use, copy, modify, distribute, and sell this software +and its documentation for any purpose is hereby granted without fee, +provided that the above copyright notice appear in all copies and +that both that copyright notice and this permission notice appear +in supporting documentation, and that the name of Bruno Haible not +be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. Bruno Haible +makes no representations about the suitability of this software for +any purpose. It is provided "as is" without express or implied +warranty. + +Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN +NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE +OR PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright © 2003 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + ---------------------------------------- + +Copyright (c) 2007-2009, Troy D. Hanson +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ---------------------------------------- + +Copyright 1992, 1993 by TOSHIBA Corp. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of TOSHIBA not be used in advertising +or publicity pertaining to distribution of the software without specific, +written prior permission. TOSHIBA make no representations about the +suitability of this software for any purpose. It is provided "as is" +without express or implied warranty. + +TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + + ---------------------------------------- + +Copyright IBM Corporation 1993 + +All Rights Reserved + +License to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of IBM not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND +NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL +IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + + ---------------------------------------- + +Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, + and Nippon Telegraph and Telephone Corporation + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the names of OMRON, NTT Software, and NTT +not be used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. OMRON, NTT Software, +and NTT make no representations about the suitability of this +software for any purpose. It is provided "as is" without express or +implied warranty. + +OMRON, NTT SOFTWARE, AND NTT, DISCLAIM ALL WARRANTIES WITH REGARD +TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, OR NTT, BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + +**************************** +zlib +**************************** +(extracted from README, except for match.S) + +Copyright notice: + + (C) 1995-2013 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +If you use the zlib library in a product, we would appreciate *not* receiving +lengthy legal documents to sign. The sources are provided for free but without +warranty of any kind. The library has been entirely written by Jean-loup +Gailly and Mark Adler; it does not include third-party code. + +If you redistribute modified sources, we would appreciate that you include in +the file ChangeLog history information documenting your changes. Please read +the FAQ for more information on the distribution of modified source versions. + +(extracted from match.S, for match.S only) + +Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com> + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution.
diff --git a/third_party/gvr-android-sdk/OWNERS b/third_party/gvr-android-sdk/OWNERS new file mode 100644 index 0000000..2b169ac --- /dev/null +++ b/third_party/gvr-android-sdk/OWNERS
@@ -0,0 +1,2 @@ +bajones@chromium.org +bshe@chromium.org
diff --git a/third_party/gvr-android-sdk/README.chromium b/third_party/gvr-android-sdk/README.chromium new file mode 100644 index 0000000..33229db --- /dev/null +++ b/third_party/gvr-android-sdk/README.chromium
@@ -0,0 +1,17 @@ +Name: Google VR SDK +Short Name: gvr +URL: https://github.com/googlevr/gvr-android-sdk +Version: 0.9.0 +Date: 3 Aug 2016 +Revision: cff15311c7c1abbe77b3c714135dccc2009ee473 +License: Apache 2.0 +License File: LICENSE +Security Critical: yes + +Description: +The Google VR SDK for Android supports both Daydream and Cardboard, including a +simple API used for creating apps inserted into Cardboard viewers, and the more +complex API for supporting Daydream-ready phones and the Daydream controller. + +Local Modifications: +None
diff --git a/third_party/polymer/v1_0/components-chromium/iron-dropdown/bower.json b/third_party/polymer/v1_0/components-chromium/iron-dropdown/bower.json index 4f76ba06..110cefc 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-dropdown/bower.json +++ b/third_party/polymer/v1_0/components-chromium/iron-dropdown/bower.json
@@ -1,6 +1,6 @@ { "name": "iron-dropdown", - "version": "1.5.0", + "version": "1.5.1", "description": "An unstyled element that works similarly to a native browser select", "authors": [ "The Polymer Authors" @@ -23,8 +23,7 @@ "iron-behaviors": "polymerelements/iron-behaviors#^1.0.0", "iron-overlay-behavior": "polymerelements/iron-overlay-behavior#^1.0.0", "iron-resizable-behavior": "polymerelements/iron-resizable-behavior#^1.0.0", - "neon-animation": "polymerelements/neon-animation#^1.0.0", - "iron-a11y-keys-behavior": "polymerelements/iron-a11y-keys-behavior#^1.0.0" + "neon-animation": "polymerelements/neon-animation#^1.0.0" }, "devDependencies": { "iron-component-page": "polymerelements/iron-component-page#^1.0.0",
diff --git a/third_party/polymer/v1_0/components-chromium/iron-dropdown/compiled_resources2.gyp b/third_party/polymer/v1_0/components-chromium/iron-dropdown/compiled_resources2.gyp index ab559786..9308e939 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-dropdown/compiled_resources2.gyp +++ b/third_party/polymer/v1_0/components-chromium/iron-dropdown/compiled_resources2.gyp
@@ -20,9 +20,6 @@ }, { 'target_name': 'iron-dropdown-scroll-manager-extracted', - 'dependencies': [ - '../iron-a11y-keys-behavior/compiled_resources2.gyp:iron-a11y-keys-behavior-extracted', - ], 'includes': ['../../../../closure_compiler/compile_js2.gypi'], }, ],
diff --git a/third_party/polymer/v1_0/components-chromium/iron-dropdown/iron-dropdown-scroll-manager-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-dropdown/iron-dropdown-scroll-manager-extracted.js index 04171152..4fc281f 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-dropdown/iron-dropdown-scroll-manager-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/iron-dropdown/iron-dropdown-scroll-manager-extracted.js
@@ -119,11 +119,6 @@ _unlockedElementCache: null, - _isScrollingKeypress: function(event) { - return Polymer.IronA11yKeysBehavior.keyboardEventMatchesKeys( - event, 'pageup pagedown home end up left down right'); - }, - _hasCachedLockedElement: function(element) { return this._lockedElementCache.indexOf(element) > -1; }, @@ -192,8 +187,6 @@ document.addEventListener('touchstart', this._boundScrollHandler, true); // Mobile devices can scroll on touch move: document.addEventListener('touchmove', this._boundScrollHandler, true); - // Capture keydown to prevent scrolling keys (pageup, pagedown etc.) - document.addEventListener('keydown', this._boundScrollHandler, true); }, _unlockScrollInteractions: function() { @@ -202,7 +195,6 @@ document.removeEventListener('DOMMouseScroll', this._boundScrollHandler, true); document.removeEventListener('touchstart', this._boundScrollHandler, true); document.removeEventListener('touchmove', this._boundScrollHandler, true); - document.removeEventListener('keydown', this._boundScrollHandler, true); }, /** @@ -214,11 +206,6 @@ * @private */ _shouldPreventScrolling: function(event) { - // Avoid expensive checks if the event is not one of the observed keys. - if (event.type === 'keydown') { - // Prevent event if it is one of the scrolling keys. - return this._isScrollingKeypress(event); - } // Update if root target changed. For touch events, ensure we don't // update during touchmove.
diff --git a/third_party/polymer/v1_0/components-chromium/iron-dropdown/iron-dropdown-scroll-manager.html b/third_party/polymer/v1_0/components-chromium/iron-dropdown/iron-dropdown-scroll-manager.html index d031d2f..6d66525 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-dropdown/iron-dropdown-scroll-manager.html +++ b/third_party/polymer/v1_0/components-chromium/iron-dropdown/iron-dropdown-scroll-manager.html
@@ -7,6 +7,5 @@ Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt --><html><head><link rel="import" href="../polymer/polymer.html"> -<link rel="import" href="../iron-a11y-keys-behavior/iron-a11y-keys-behavior.html"> </head><body><script src="iron-dropdown-scroll-manager-extracted.js"></script></body></html> \ No newline at end of file
diff --git a/third_party/polymer/v1_0/components-chromium/iron-location/bower.json b/third_party/polymer/v1_0/components-chromium/iron-location/bower.json index 7e96f17..f246e4a 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-location/bower.json +++ b/third_party/polymer/v1_0/components-chromium/iron-location/bower.json
@@ -1,6 +1,6 @@ { "name": "iron-location", - "version": "0.8.6", + "version": "0.8.8", "description": "Bidirectional data binding into the page's URL.", "private": true, "authors": [
diff --git a/third_party/polymer/v1_0/components-chromium/iron-location/iron-query-params-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-location/iron-query-params-extracted.js index 8bd4de5a..1e07ed9 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-location/iron-query-params-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/iron-location/iron-query-params-extracted.js
@@ -55,7 +55,12 @@ }, _decodeParams: function(paramString) { var params = {}; - var paramList = (paramString || '').split('&'); + + // Work around a bug in decodeURIComponent where + is not + // converted to spaces: + paramString = (paramString || '').replace(/\+/g, '%20'); + + var paramList = paramString.split('&'); for (var i = 0; i < paramList.length; i++) { var param = paramList[i].split('='); if (param[0]) {
diff --git a/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/bower.json b/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/bower.json index 9e835a60..0a14e1c 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/bower.json +++ b/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/bower.json
@@ -1,6 +1,6 @@ { "name": "iron-overlay-behavior", - "version": "1.8.5", + "version": "1.8.6", "license": "http://polymer.github.io/LICENSE.txt", "description": "Provides a behavior for making an element an overlay", "private": true,
diff --git a/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/iron-overlay-behavior-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/iron-overlay-behavior-extracted.js index 881e9b55..2f63c920 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/iron-overlay-behavior-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/iron-overlay-behavior-extracted.js
@@ -228,17 +228,17 @@ this.__shouldRemoveTabIndex = false; // Used for wrapping the focus on TAB / Shift+TAB. this.__firstFocusableNode = this.__lastFocusableNode = null; - // Used for requestAnimationFrame when opened changes. - this.__openChangedAsync = null; - // Used for requestAnimationFrame when iron-resize is fired. - this.__onIronResizeAsync = null; + // Used by __onNextAnimationFrame to cancel any previous callback. + this.__raf = null; + // Focused node before overlay gets opened. Can be restored on close. + this.__restoreFocusNode = null; this._ensureSetup(); }, attached: function() { // Call _openedChanged here so that position can be computed correctly. if (this.opened) { - this._openedChanged(); + this._openedChanged(this.opened); } this._observer = Polymer.dom(this).observeNodes(this._onNodesChange); }, @@ -246,7 +246,11 @@ detached: function() { Polymer.dom(this).unobserveNodes(this._observer); this._observer = null; - this.opened = false; + if (this.__raf) { + window.cancelAnimationFrame(this.__raf); + this.__raf = null; + } + this._manager.removeOverlay(this); }, /** @@ -296,29 +300,18 @@ this.style.display = 'none'; }, - _openedChanged: function() { - if (this.opened) { + /** + * Called when `opened` changes. + * @param {boolean=} opened + * @protected + */ + _openedChanged: function(opened) { + if (opened) { this.removeAttribute('aria-hidden'); } else { this.setAttribute('aria-hidden', 'true'); } - // wait to call after ready only if we're initially open - if (!this._overlaySetup) { - return; - } - - if (this.__openChangedAsync) { - window.cancelAnimationFrame(this.__openChangedAsync); - } - - // Synchronously remove the overlay. - // The adding is done asynchronously to go out of the scope of the event - // which might have generated the opening. - if (!this.opened) { - this._manager.removeOverlay(this); - } - // Defer any animation-related code on attached // (_openedChanged gets called again on attached). if (!this.isAttached) { @@ -327,19 +320,8 @@ this.__isAnimating = true; - // requestAnimationFrame for non-blocking rendering - this.__openChangedAsync = window.requestAnimationFrame(function() { - this.__openChangedAsync = null; - if (this.opened) { - this._manager.addOverlay(this); - this._prepareRenderOpened(); - this._renderOpened(); - } else { - // Move the focus before actually closing. - this._applyFocus(); - this._renderClosed(); - } - }.bind(this)); + // Use requestAnimationFrame for non-blocking rendering. + this.__onNextAnimationFrame(this.__openedChanged); }, _canceledChanged: function() { @@ -366,6 +348,8 @@ * @protected */ _prepareRenderOpened: function() { + // Store focused node. + this.__restoreFocusNode = this._manager.deepActiveElement; // Needed to calculate the size of the overlay so that transitions on its size // will have the correct starting points. @@ -373,13 +357,11 @@ this.refit(); this._finishPositioning(); - // Move the focus to the child node with [autofocus]. - this._applyFocus(); - - // Safari will apply the focus to the autofocus element when displayed for the first time, - // so we blur it. Later, _applyFocus will set the focus if necessary. + // Safari will apply the focus to the autofocus element when displayed + // for the first time, so we make sure to return the focus where it was. if (this.noAutoFocus && document.activeElement === this._focusNode) { this._focusNode.blur(); + this.__restoreFocusNode.focus(); } }, @@ -404,7 +386,6 @@ * @protected */ _finishRenderOpened: function() { - this.notifyResize(); this.__isAnimating = false; @@ -421,11 +402,10 @@ * @protected */ _finishRenderClosed: function() { - // Hide the overlay and remove the backdrop. + // Hide the overlay. this.style.display = 'none'; // Reset z-index only at the end of the animation. this.style.zIndex = ''; - this.notifyResize(); this.__isAnimating = false; this.fire('iron-overlay-closed', this.closingReason); @@ -461,10 +441,22 @@ if (!this.noAutoFocus) { this._focusNode.focus(); } - } else { + } + else { this._focusNode.blur(); this._focusedChild = null; - this._manager.focusOverlay(); + // Restore focus. + if (this.restoreFocusOnClose && this.__restoreFocusNode) { + this.__restoreFocusNode.focus(); + } + this.__restoreFocusNode = null; + // If many overlays get closed at the same time, one of them would still + // be the currentOverlay even if already closed, and would call _applyFocus + // infinitely, so we check for this not to be the current overlay. + var currentOverlay = this._manager.currentOverlay(); + if (currentOverlay && this !== currentOverlay) { + currentOverlay._applyFocus(); + } } }, @@ -562,15 +554,8 @@ * @protected */ _onIronResize: function() { - if (this.__onIronResizeAsync) { - window.cancelAnimationFrame(this.__onIronResizeAsync); - this.__onIronResizeAsync = null; - } if (this.opened && !this.__isAnimating) { - this.__onIronResizeAsync = window.requestAnimationFrame(function() { - this.__onIronResizeAsync = null; - this.refit(); - }.bind(this)); + this.__onNextAnimationFrame(this.refit); } }, @@ -583,7 +568,50 @@ if (this.opened && !this.__isAnimating) { this.notifyResize(); } + }, + + /** + * Tasks executed when opened changes: prepare for the opening, move the + * focus, update the manager, render opened/closed. + * @private + */ + __openedChanged: function() { + if (this.opened) { + // Make overlay visible, then add it to the manager. + this._prepareRenderOpened(); + this._manager.addOverlay(this); + // Move the focus to the child node with [autofocus]. + this._applyFocus(); + + this._renderOpened(); + } else { + // Remove overlay, then restore the focus before actually closing. + this._manager.removeOverlay(this); + this._applyFocus(); + + this._renderClosed(); + } + }, + + /** + * Executes a callback on the next animation frame, overriding any previous + * callback awaiting for the next animation frame. e.g. + * `__onNextAnimationFrame(callback1) && __onNextAnimationFrame(callback2)`; + * `callback1` will never be invoked. + * @param {!Function} callback Its `this` parameter is the overlay itself. + * @private + */ + __onNextAnimationFrame: function(callback) { + if (this.__raf) { + window.cancelAnimationFrame(this.__raf); + } + var self = this; + this.__raf = window.requestAnimationFrame(function nextAnimationFrame() { + self.__raf = null; + callback.call(self); + }); } + }; /** @polymerBehavior */
diff --git a/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/iron-overlay-manager-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/iron-overlay-manager-extracted.js index c592af26..096f4320 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/iron-overlay-manager-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/iron-overlay-behavior/iron-overlay-manager-extracted.js
@@ -24,9 +24,8 @@ this._backdropElement = null; // Enable document-wide tap recognizer. - Polymer.Gestures.add(document, 'tap', null); - // Need to have useCapture=true, Polymer.Gestures doesn't offer that. - document.addEventListener('tap', this._onCaptureClick.bind(this), true); + Polymer.Gestures.add(document, 'tap', this._onCaptureClick.bind(this)); + document.addEventListener('focus', this._onCaptureFocus.bind(this), true); document.addEventListener('keydown', this._onCaptureKeyDown.bind(this), true); }; @@ -141,9 +140,6 @@ } this._overlays.splice(insertionIndex, 0, overlay); - // Get focused node. - var element = this.deepActiveElement; - overlay.restoreFocusNode = this._overlayParent(element) ? null : element; this.trackBackdrop(); }, @@ -157,12 +153,6 @@ } this._overlays.splice(i, 1); - var node = overlay.restoreFocusOnClose ? overlay.restoreFocusNode : null; - overlay.restoreFocusNode = null; - // Focus back only if still contained in document.body - if (node && Polymer.dom(document.body).deepContains(node)) { - node.focus(); - } this.trackBackdrop(); }, @@ -194,15 +184,7 @@ focusOverlay: function() { var current = /** @type {?} */ (this.currentOverlay()); - // We have to be careful to focus the next overlay _after_ any current - // transitions are complete (due to the state being toggled prior to the - // transition). Otherwise, we risk infinite recursion when a transitioning - // (closed) overlay becomes the current overlay. - // - // NOTE: We make the assumption that any overlay that completes a transition - // will call into focusOverlay to kick the process back off. Currently: - // transitionend -> _applyFocus -> focusOverlay. - if (current && !current.transitioning) { + if (current) { current._applyFocus(); } }, @@ -291,24 +273,6 @@ }, /** - * Returns the overlay containing the provided node. If the node is an overlay, - * it returns the node. - * @param {Element=} node - * @return {Element|undefined} - * @private - */ - _overlayParent: function(node) { - while (node && node !== document.body) { - // Check if it is an overlay. - if (node._manager === this) { - return node; - } - // Use logical parentNode, or native ShadowRoot host. - node = Polymer.dom(node).parentNode || node.host; - } - }, - - /** * Returns the deepest overlay in the path. * @param {Array<Element>=} path * @return {Element|undefined}
diff --git a/third_party/polymer/v1_0/components-chromium/iron-resizable-behavior/bower.json b/third_party/polymer/v1_0/components-chromium/iron-resizable-behavior/bower.json index 484a7d6b..77d1968 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-resizable-behavior/bower.json +++ b/third_party/polymer/v1_0/components-chromium/iron-resizable-behavior/bower.json
@@ -1,6 +1,6 @@ { "name": "iron-resizable-behavior", - "version": "1.0.4", + "version": "1.0.5", "license": "http://polymer.github.io/LICENSE.txt", "description": "Coordinates the flow of resizeable elements", "private": true,
diff --git a/third_party/polymer/v1_0/components-chromium/iron-resizable-behavior/iron-resizable-behavior-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-resizable-behavior/iron-resizable-behavior-extracted.js index a2a912b..d882cae 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-resizable-behavior/iron-resizable-behavior-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/iron-resizable-behavior/iron-resizable-behavior-extracted.js
@@ -4,13 +4,13 @@ * size or hidden state of their children) and "resizables" (elements that need to be * notified when they are resized or un-hidden by their parents in order to take * action on their new measurements). - * + * * Elements that perform measurement should add the `IronResizableBehavior` behavior to * their element definition and listen for the `iron-resize` event on themselves. * This event will be fired when they become showing after having been hidden, * when they are resized explicitly by another resizable, or when the window has been * resized. - * + * * Note, the `iron-resize` event is non-bubbling. * * @polymerBehavior Polymer.IronResizableBehavior
diff --git a/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/bower.json b/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/bower.json index dea16bf..91e3bcb 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/bower.json +++ b/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/bower.json
@@ -1,6 +1,6 @@ { "name": "iron-scroll-target-behavior", - "version": "1.0.7", + "version": "1.0.8", "description": "Allows to define a scroller target", "private": true, "license": "http://polymer.github.io/LICENSE.txt",
diff --git a/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js index 7e3f09a..7f3da400 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/iron-scroll-target-behavior/iron-scroll-target-behavior-extracted.js
@@ -27,7 +27,7 @@ * </x-element> * </div> *``` - * In this case, the `scrollTarget` will point to the outer div element. + * In this case, the `scrollTarget` will point to the outer div element. * * ### Document scrolling * @@ -44,7 +44,7 @@ *```js * appHeader.scrollTarget = document.querySelector('#scrollable-element'); *``` - * + * * @type {HTMLElement} */ scrollTarget: {
diff --git a/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/bower.json b/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/bower.json index 26bfceb..3fad871 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/bower.json +++ b/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/bower.json
@@ -5,7 +5,7 @@ "web-components", "polymer" ], - "version": "1.0.1", + "version": "1.0.2", "homepage": "https://github.com/PolymerElements/iron-scroll-threshold", "authors": [ "The Polymer Authors"
diff --git a/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold-extracted.js index 3f50aaf..d99fec4 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold-extracted.js
@@ -72,7 +72,7 @@ // throttle the work on the scroll event var THROTTLE_THRESHOLD = 200; if (!this.isDebouncerActive('_checkTheshold')) { - this.debounce('_checkTheshold', function() { + this.debounce('_checkTheshold', function() { this.checkScrollThesholds(); }, THROTTLE_THRESHOLD); } @@ -98,7 +98,7 @@ return; } var upperScrollValue = this.horizontal ? this._scrollLeft : this._scrollTop; - var lowerScrollValue = this.horizontal ? + var lowerScrollValue = this.horizontal ? this.scrollTarget.scrollWidth - this._scrollTargetWidth - this._scrollLeft : this.scrollTarget.scrollHeight - this._scrollTargetHeight - this._scrollTop;
diff --git a/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold.html b/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold.html index 908b1b6..e5bde79 100644 --- a/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold.html +++ b/third_party/polymer/v1_0/components-chromium/iron-scroll-threshold/iron-scroll-threshold.html
@@ -50,11 +50,9 @@ ```html <iron-scroll-threshold on-lower-threshold="loadMoreData"> - <dom-repeat items="[[items]]"> - <template> - <div>[[index]]</div> - </template> - </dom-repeat> + <template is="dom-repeat" items="[[items]]"> + <div>[[index]]</div> + </template> </iron-scroll-threshold> ```
diff --git a/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/bower.json b/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/bower.json index ba8ce10..28eac2f 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/bower.json +++ b/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/bower.json
@@ -1,6 +1,6 @@ { "name": "paper-drawer-panel", - "version": "1.0.9", + "version": "1.0.10", "description": "A responsive drawer panel", "authors": [ "The Polymer Authors"
diff --git a/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/paper-drawer-panel-extracted.js b/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/paper-drawer-panel-extracted.js index e7cb6630..9580766 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/paper-drawer-panel-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/paper-drawer-panel-extracted.js
@@ -157,7 +157,7 @@ */ responsiveWidth: { type: String, - value: '600px' + value: '768px' }, /** @@ -494,7 +494,7 @@ _getAutoFocusedNode: function() { var drawerContent = this._getDrawerContent(); - return this.drawerFocusSelector ? + return this.drawerFocusSelector ? Polymer.dom(drawerContent).querySelector(this.drawerFocusSelector) || drawerContent : null; },
diff --git a/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/paper-drawer-panel.html b/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/paper-drawer-panel.html index 89fc566..1b6bbe1d 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/paper-drawer-panel.html +++ b/third_party/polymer/v1_0/components-chromium/paper-drawer-panel/paper-drawer-panel.html
@@ -1,4 +1,5 @@ <!-- +@license Copyright (c) 2015 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
diff --git a/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/bower.json b/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/bower.json index 64e9588..4b0dcfd 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/bower.json +++ b/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/bower.json
@@ -1,6 +1,6 @@ { "name": "paper-dropdown-menu", - "version": "1.3.2", + "version": "1.3.3", "description": "An element that works similarly to a native browser select", "authors": [ "The Polymer Authors"
diff --git a/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/paper-dropdown-menu-light-extracted.js b/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/paper-dropdown-menu-light-extracted.js index ca4595b..92712716 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/paper-dropdown-menu-light-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/paper-dropdown-menu-light-extracted.js
@@ -83,7 +83,7 @@ type: Boolean, value: false }, - + /** * Set to true to disable the floating label. Bind this to the * `<paper-input-container>`'s `noLabelFloat` property. @@ -228,7 +228,7 @@ if (!selectedItem) { value = ''; } else { - value = selectedItem.label || selectedItem.textContent.trim(); + value = selectedItem.label || selectedItem.getAttribute('label') || selectedItem.textContent.trim(); } this._setValue(value);
diff --git a/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/paper-dropdown-menu-light.html b/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/paper-dropdown-menu-light.html index 4fdeff2..dde7919 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/paper-dropdown-menu-light.html +++ b/third_party/polymer/v1_0/components-chromium/paper-dropdown-menu/paper-dropdown-menu-light.html
@@ -100,6 +100,10 @@ outline: none; } + :host { + width: 200px; /* Default size of an <input> */ + } + /** * All of these styles below are for styling the fake-input display */ @@ -122,10 +126,10 @@ #input { @apply(--paper-font-subhead); @apply(--paper-font-common-nowrap); + line-height: 1.5; border-bottom: 1px solid var(--paper-dropdown-menu-color, --secondary-text-color); color: var(--paper-dropdown-menu-color, --primary-text-color); - width: 200px; /* Default size of an <input> */ - min-height: 24px; + width: 100%; box-sizing: border-box; padding: 12px 20px 0 0; /* Right padding so that text doesn't overlap the icon */ outline: none; @@ -169,6 +173,7 @@ transition-duration: .2s; transition-timing-function: cubic-bezier(.4,0,.2,1); color: var(--paper-dropdown-menu-color, --secondary-text-color); + cursor: pointer; @apply(--paper-dropdown-menu-label); } @@ -235,7 +240,6 @@ right: 0px; bottom: 8px; /* The container has an 8px bottom padding */ @apply(--paper-font-subhead); - margin-top: 12px; color: var(--disabled-text-color); @apply(--paper-dropdown-menu-icon); }
diff --git a/third_party/polymer/v1_0/components-chromium/paper-menu-button/bower.json b/third_party/polymer/v1_0/components-chromium/paper-menu-button/bower.json index 225ef08..28a7a36c 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-menu-button/bower.json +++ b/third_party/polymer/v1_0/components-chromium/paper-menu-button/bower.json
@@ -1,6 +1,6 @@ { "name": "paper-menu-button", - "version": "1.5.0", + "version": "1.5.1", "description": "A material design element that composes a trigger and a dropdown menu", "authors": [ "The Polymer Authors"
diff --git a/third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js b/third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js index e361823..b83e252 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js +++ b/third_party/polymer/v1_0/components-chromium/paper-menu-button/paper-menu-button-extracted.js
@@ -183,7 +183,7 @@ }]; } }, - + /** * By default, the dropdown will constrain scrolling on the page * to itself when opened.
diff --git a/third_party/polymer/v1_0/components-chromium/paper-progress/bower.json b/third_party/polymer/v1_0/components-chromium/paper-progress/bower.json index 69a5c5e..017624b 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-progress/bower.json +++ b/third_party/polymer/v1_0/components-chromium/paper-progress/bower.json
@@ -1,6 +1,6 @@ { "name": "paper-progress", - "version": "1.0.9", + "version": "1.0.10", "license": "http://polymer.github.io/LICENSE.txt", "description": "A material design progress bar", "authors": "The Polymer Authors",
diff --git a/third_party/polymer/v1_0/components-chromium/paper-progress/paper-progress.html b/third_party/polymer/v1_0/components-chromium/paper-progress/paper-progress.html index bce767c..5a2a3a8 100644 --- a/third_party/polymer/v1_0/components-chromium/paper-progress/paper-progress.html +++ b/third_party/polymer/v1_0/components-chromium/paper-progress/paper-progress.html
@@ -58,19 +58,27 @@ --paper-progress-transition-transition-delay: 0s; } +To change the duration of the indeterminate cycle: + + paper-progress { + --paper-progress-indeterminate-cycle-duration: 2s; + } + The following mixins are available for styling: -Custom property | Description | Default -----------------------------------------------|---------------------------------------------|-------------- -`--paper-progress-container-color` | Mixin applied to container | `--google-grey-300` -`--paper-progress-transition-duration` | Duration of the transition | `0.008s` -`--paper-progress-transition-timing-function` | The timing function for the transition | `ease` -`--paper-progress-transition-delay` | delay for the transition | `0s` -`--paper-progress-active-color` | The color of the active bar | `--google-green-500` -`--paper-progress-secondary-color` | The color of the secondary bar | `--google-green-100` -`--paper-progress-disabled-active-color` | The color of the active bar if disabled | `--google-grey-500` -`--paper-progress-disabled-secondary-color` | The color of the secondary bar if disabled | `--google-grey-300` -`--paper-progress-height` | The height of the progress bar | `4px` +Custom property | Description | Default +-------------------------------------------------|---------------------------------------------|-------------- +`--paper-progress-container` | Mixin applied to container | `{}` +`--paper-progress-transition-duration` | Duration of the transition | `0.008s` +`--paper-progress-transition-timing-function` | The timing function for the transition | `ease` +`--paper-progress-transition-delay` | delay for the transition | `0s` +`--paper-progress-container-color` | Color of the container | `--google-grey-300` +`--paper-progress-active-color` | The color of the active bar | `--google-green-500` +`--paper-progress-secondary-color` | The color of the secondary bar | `--google-green-100` +`--paper-progress-disabled-active-color` | The color of the active bar if disabled | `--google-grey-500` +`--paper-progress-disabled-secondary-color` | The color of the secondary bar if disabled | `--google-grey-300` +`--paper-progress-height` | The height of the progress bar | `4px` +`--paper-progress-indeterminate-cycle-duration` | Duration of an indeterminate cycle | `2s` @group Paper Elements @element paper-progress @@ -88,7 +96,12 @@ overflow: hidden; } + :host([hidden]) { + display: none !important; + } + #progressContainer { + @apply(--paper-progress-container); position: relative; } @@ -156,8 +169,8 @@ :host(:not([disabled])) #primaryProgress.indeterminate { -webkit-transform-origin: right center; transform-origin: right center; - -webkit-animation: indeterminate-bar 2s linear infinite; - animation: indeterminate-bar 2s linear infinite; + -webkit-animation: indeterminate-bar var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; + animation: indeterminate-bar var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; } :host(:not([disabled])) #primaryProgress.indeterminate::after { @@ -165,8 +178,8 @@ -webkit-transform-origin: center center; transform-origin: center center; - -webkit-animation: indeterminate-splitter 2s linear infinite; - animation: indeterminate-splitter 2s linear infinite; + -webkit-animation: indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; + animation: indeterminate-splitter var(--paper-progress-indeterminate-cycle-duration, 2s) linear infinite; } @-webkit-keyframes indeterminate-bar {
diff --git a/third_party/polymer/v1_0/components_summary.txt b/third_party/polymer/v1_0/components_summary.txt index da138aa..7aedabc 100644 --- a/third_party/polymer/v1_0/components_summary.txt +++ b/third_party/polymer/v1_0/components_summary.txt
@@ -69,11 +69,11 @@ Tree link: https://github.com/PolymerElements/iron-collapse/tree/v1.2.0 Name: iron-dropdown -Version: 1.5.0 +Version: 1.5.1 Repository: git://github.com/PolymerElements/iron-dropdown.git -Tag: v1.5.0 -Revision: 8930a8884beaf72a4352b0bd5dcf1c63121d0a0f -Tree link: https://github.com/PolymerElements/iron-dropdown/tree/v1.5.0 +Tag: v1.5.1 +Revision: 3b89a43719e82aeb8ea5362f9f0d2974ed059189 +Tree link: https://github.com/PolymerElements/iron-dropdown/tree/v1.5.1 Name: iron-fit-behavior Version: 1.2.5 @@ -132,11 +132,11 @@ Tree link: https://github.com/PolymerElements/iron-list/tree/v1.3.5 Name: iron-location -Version: 0.8.6 +Version: 0.8.8 Repository: git://github.com/PolymerElements/iron-location.git -Tag: 0.8.6 -Revision: 8f628b3477fcba70da47d75e521a8afe8f12e4f7 -Tree link: https://github.com/PolymerElements/iron-location/tree/0.8.6 +Tag: v0.8.8 +Revision: ab65525d349f13c467653a200711202eeae17ff0 +Tree link: https://github.com/PolymerElements/iron-location/tree/v0.8.8 Name: iron-media-query Version: 1.0.8 @@ -160,11 +160,11 @@ Tree link: https://github.com/PolymerElements/iron-meta/tree/v1.1.1 Name: iron-overlay-behavior -Version: 1.8.5 +Version: 1.8.6 Repository: git://github.com/PolymerElements/iron-overlay-behavior.git -Tag: v1.8.5 -Revision: fc4a22e3d846c7ae49b1700b6a66eff41ba0eb48 -Tree link: https://github.com/PolymerElements/iron-overlay-behavior/tree/v1.8.5 +Tag: v1.8.6 +Revision: 4b579d7e47a19b3c1e5a65ee631bd432230b3610 +Tree link: https://github.com/PolymerElements/iron-overlay-behavior/tree/v1.8.6 Name: iron-pages Version: 1.0.8 @@ -181,25 +181,25 @@ Tree link: https://github.com/PolymerElements/iron-range-behavior/tree/v1.0.6 Name: iron-resizable-behavior -Version: 1.0.4 +Version: 1.0.5 Repository: git://github.com/PolymerElements/iron-resizable-behavior.git -Tag: v1.0.4 -Revision: 0fcaf0f96481489f69b54f6172e2f9d430c2a94b -Tree link: https://github.com/PolymerElements/iron-resizable-behavior/tree/v1.0.4 +Tag: v1.0.5 +Revision: 354f287922e497b79797348b31596eebaccb9761 +Tree link: https://github.com/PolymerElements/iron-resizable-behavior/tree/v1.0.5 Name: iron-scroll-target-behavior -Version: 1.0.7 +Version: 1.0.8 Repository: git://github.com/PolymerElements/iron-scroll-target-behavior.git -Tag: v1.0.7 -Revision: e69dc32e6d6a92f4d9f4071ed9c64cd967d3199a -Tree link: https://github.com/PolymerElements/iron-scroll-target-behavior/tree/v1.0.7 +Tag: v1.0.8 +Revision: 4c66bc9869b6475dc1d8b59419a0148bf46d9493 +Tree link: https://github.com/PolymerElements/iron-scroll-target-behavior/tree/v1.0.8 Name: iron-scroll-threshold -Version: 1.0.1 +Version: 1.0.2 Repository: git://github.com/PolymerElements/iron-scroll-threshold.git -Tag: v1.0.1 -Revision: d09176cbef2e4cebb6c44754f7a2582b30f5ecf4 -Tree link: https://github.com/PolymerElements/iron-scroll-threshold/tree/v1.0.1 +Tag: v1.0.2 +Revision: 3b0ded11ea87703a4f1ef48cea93226fb0e71ef1 +Tree link: https://github.com/PolymerElements/iron-scroll-threshold/tree/v1.0.2 Name: iron-selector Version: 1.5.2 @@ -265,18 +265,18 @@ Tree link: https://github.com/PolymerElements/paper-dialog-behavior/tree/v1.2.7 Name: paper-drawer-panel -Version: 1.0.9 +Version: 1.0.10 Repository: git://github.com/PolymerElements/paper-drawer-panel.git -Tag: v1.0.9 -Revision: d0f2c801380397e5d4334b273a2fef63099d4a2f -Tree link: https://github.com/PolymerElements/paper-drawer-panel/tree/v1.0.9 +Tag: v1.0.10 +Revision: 34c1d82dc3048dff33c83047bfaa95414e36d673 +Tree link: https://github.com/PolymerElements/paper-drawer-panel/tree/v1.0.10 Name: paper-dropdown-menu -Version: 1.3.2 +Version: 1.3.3 Repository: git://github.com/PolymerElements/paper-dropdown-menu.git -Tag: v1.3.2 -Revision: f4188cdfc2119b9b94fe33360223212e8de6022d -Tree link: https://github.com/PolymerElements/paper-dropdown-menu/tree/v1.3.2 +Tag: v1.3.3 +Revision: 3684eba30503adb1ae2f395e917f7e5ed1ae38cd +Tree link: https://github.com/PolymerElements/paper-dropdown-menu/tree/v1.3.3 Name: paper-fab Version: 1.2.0 @@ -335,18 +335,18 @@ Tree link: https://github.com/PolymerElements/paper-menu/tree/v1.2.2 Name: paper-menu-button -Version: 1.5.0 +Version: 1.5.1 Repository: git://github.com/PolymerElements/paper-menu-button.git -Tag: v1.5.0 -Revision: 4902e216e1c4f6cb78aef4ec3ea338434e6c2ad1 -Tree link: https://github.com/PolymerElements/paper-menu-button/tree/v1.5.0 +Tag: v1.5.1 +Revision: 1a4d0a04177782beaf7a6c855ad10cf545da338f +Tree link: https://github.com/PolymerElements/paper-menu-button/tree/v1.5.1 Name: paper-progress -Version: 1.0.9 +Version: 1.0.10 Repository: git://github.com/PolymerElements/paper-progress.git -Tag: v1.0.9 -Revision: 389e717d2e600bb44c6cb1537ee12b203b55fca1 -Tree link: https://github.com/PolymerElements/paper-progress/tree/v1.0.9 +Tag: v1.0.10 +Revision: dfdde2b02947fb2dfd3f2d303ec17f7f4919348c +Tree link: https://github.com/PolymerElements/paper-progress/tree/v1.0.10 Name: paper-radio-button Version: 1.2.1
diff --git a/third_party/web-animations-js/sources/.bower.json b/third_party/web-animations-js/sources/.bower.json index b44c2f2e..4a09b17 100644 --- a/third_party/web-animations-js/sources/.bower.json +++ b/third_party/web-animations-js/sources/.bower.json
@@ -28,12 +28,12 @@ "web-animations-next-lite.dev.html", "web-animations-next-lite.dev.js" ], - "version": "2.2.1", - "_release": "2.2.1", + "version": "2.2.2", + "_release": "2.2.2", "_resolution": { "type": "version", - "tag": "2.2.1", - "commit": "45d8e40300e82ff02ccfbbc78c89500de0f5616f" + "tag": "2.2.2", + "commit": "8cf9e3567c8a30e905e6a2aefb2ebf4120da6859" }, "_source": "git://github.com/web-animations/web-animations-js.git", "_target": "^2.0.0",
diff --git a/third_party/web-animations-js/sources/CONTRIBUTING.md b/third_party/web-animations-js/sources/CONTRIBUTING.md new file mode 100644 index 0000000..ad62b8ca --- /dev/null +++ b/third_party/web-animations-js/sources/CONTRIBUTING.md
@@ -0,0 +1,105 @@ +## Developer setup instructions + +1. `git clone git@github.com:web-animations/web-animations-next.git` +1. `git submodule update --init --recursive` (Necessary for running tests.) +1. Install [node](https://nodejs.org/en/) and make sure `npm` is in your $PATH +1. Run `npm install` in the respository to pull in development dependencies. +1. Run `npm install -g grunt grunt-cli` to get the build tools for the command line. +1. Run `grunt` to build the polyfill. +1. Run `grunt test` to run polyfill and web-platform-tests tests. + + +## Debugging tests + +You can run the tests in an interactive mode with `grunt debug`. This starts the +Karma server once for each polyfill target for each test framework. +Navigate to `http://localhost:9876/debug.html` to open the test runner in your +browser of choice, all test results appear in the Javascript console. +Test failures can be accessed via `window.failures` and `window.formattedFailures` +once the tests have completed. + +The polyfill target and tests can be specified as arguments to the `debug` task. +Example: `grunt debug:web-animations-next:test/web-platform-tests/web-animations/animation/pause.html` +Multiple test files may be listed with comma separation. Specifying files will output their URL in the command line. +Example: `http://localhost:9876/base/test/web-platform-tests/web-animations/animation/pause.html` + + +## Design notes + +[Design diagrams](https://drive.google.com/folderview?id=0B9rpPoIDv3vTNlZxOVp6a2tNa1E&usp=sharing) + + +## Publishing a release + +1. Determine the version number for the release + + * Increment the first number and reset others to 0 when there are large breaking changes + * Increment the second number and reset the third to 0 when there are significant new, but backwards compatible features + * Otherwise, increment the third number + +1. Add versioned release notes to `History.md`, for example: + + ### 3.13.37 — *November 1, 2001* + + * Fixed a bug where nothing worked + + Use the following to generate a summary of commits, but edit the list to contain only + relevant information. + + git log --first-parent `git describe --tags --abbrev=0 web-animations-js/master`..web-animations-next/master --pretty=format:" * %s" + +1. Specify the new version inside `package.json` (for NPM), for example: + + ```js + "version": "3.13.37", + ``` + +1. Build the polyfill with `npm install && grunt` then update `README.md`'s Build Target Comparison with the current gzipped sizes. + +1. Submit both changes to web-animations-next then follow the procedure to push from web-animations-next to web-animations-js. + +1. Draft a [new release](https://github.com/web-animations/web-animations-js/releases) at the + commit pushed to web-animations-js in step #4. Copy the release notes from `History.md` + added in step #2. + +1. Once you've pushed to web-animations-js, run `npm publish` from that checked-out folder + + To do this, you'll need to be a collaborator [on the NPM project](https://www.npmjs.com/package/web-animations-js), or have a collaborator help you. + +1. If there are any breaking changes to the API in this release you must notify web-animations-changes@googlegroups.com. + + Only owners of the group may post to it so you may need to request ownership or ask someone to post it for you. + +## Pushing from web-animations-next to web-animations-js + + git fetch web-animations-next + git fetch web-animations-js + git checkout web-animations-js/master + git merge web-animations-next/master --no-edit --quiet + npm install + grunt + # Optional "grunt test" to make sure everything still passes. + git add -f *.min.js* + git rm .gitignore + git commit -m 'Add build artifacts from '`cat .git/refs/remotes/web-animations-next/master` + git push web-animations-js HEAD:refs/heads/master + +## Testing architecture + +This is an overview of what happens when `grunt test` is run. + +1. Polyfill tests written in mocha and chai are run. + 1. grunt creates a karma config with mocha and chai adapters. + 1. grunt adds the test/js files as includes to the karma config. + 1. grunt starts the karma server with the config and waits for the result. + 1. The mocha adaptor runs the included tests and reports the results to karma. + 1. karma outputs results to the console and returns the final pass/fail result to grunt. +1. web-platform-tests/web-animations tests written in testtharness.js are run. + 1. grunt creates a karma config with karma-testharness-adaptor.js included. + 1. grunt adds the web-platform-tests/web-animations files to the custom testharnessTests config in the karma config. + 1. grunt adds failure expectations to the custom testharnessTests config in the karma config. + 1. grunt starts the karma server with the config and waits for the result. + 1. The testharness.js adaptor runs the included tests (ignoring expected failures) and reports the results to karma. + 1. karma outputs results to the console and returns the final pass/fail result to grunt. +1. grunt exits successfully if both test runs passed. +
diff --git a/third_party/web-animations-js/sources/History.md b/third_party/web-animations-js/sources/History.md index 9f2d5e9..833d044 100644 --- a/third_party/web-animations-js/sources/History.md +++ b/third_party/web-animations-js/sources/History.md
@@ -1,3 +1,27 @@ +### 2.2.2 - *August 3 2016* + + * [Fixed handling of keyframes with overlapping offsets.](https://github.com/web-animations/web-animations-next/pull/470) + + * [Throw TypeError on invalid keyframe input.](https://github.com/web-animations/web-animations-next/pull/471) + + * [Fixed display and other animation properties being animated.](https://github.com/web-animations/web-animations-next/pull/474) + + * [Throw InvalidStateError when calling play() on reversed infinite animation.](https://github.com/web-animations/web-animations-next/pull/475) + + * [Fixed infinite loop in cubic-bezier timing function.](https://github.com/web-animations/web-animations-next/pull/476) + + * [Fixed idle animations not becoming paused when seeked.](https://github.com/web-animations/web-animations-next/pull/479) + + * [Fixed pause() not rewinding idl animations.](https://github.com/web-animations/web-animations-next/pull/480) + + * [Extended cubic-bezier timing function domain from [0, 1] to (-Infinity, Infinity).](https://github.com/web-animations/web-animations-next/pull/481) + + * [Fixed timing model to handle corner cases involving Infinity and 0 correctly.](https://github.com/web-animations/web-animations-next/pull/482) + + * [Fixed source files missing from npm package.](https://github.com/web-animations/web-animations-next/pull/483) + + * [Improved performance of starting and updating individual animations.](https://github.com/web-animations/web-animations-next/pull/485) + ### 2.2.1 - *April 28 2016* * [Deprecated invalid timing inputs](https://github.com/web-animations/web-animations-next/pull/437) as they will soon throw [TypeErrors](https://github.com/web-animations/web-animations-next/pull/426) in native browsers.
diff --git a/third_party/web-animations-js/sources/README.md b/third_party/web-animations-js/sources/README.md index c61df59..0739e37 100644 --- a/third_party/web-animations-js/sources/README.md +++ b/third_party/web-animations-js/sources/README.md
@@ -87,7 +87,7 @@ | | web-animations | web-animations-next | web-animations-next-lite | |------------------------|:--------------:|:-------------------:|:------------------------:| -|Size (gzipped) | 12.5kb | 14kb | 10.5kb | +|Size (gzipped) | 15KB | 18KB | 15KB | |Element.animate | ✔ | ✔ | ✔ | |Timing input (easings, duration, fillMode, etc.) for animation effects| ✔ | ✔ | ✔ | |Playback control | ✔ | ✔ | ✔ |
diff --git a/third_party/web-animations-js/sources/web-animations-next-lite.min.js b/third_party/web-animations-js/sources/web-animations-next-lite.min.js index d070cd5..de4cedc7 100644 --- a/third_party/web-animations-js/sources/web-animations-next-lite.min.js +++ b/third_party/web-animations-js/sources/web-animations-next-lite.min.js
@@ -12,5 +12,5 @@ // See the License for the specific language governing permissions and // limitations under the License. -!function(a,b){var c={},d={},e={},f=null;!function(a,b){function c(a){if("number"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=w}function e(){return a.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function f(b,c,e){var f=new d;return c&&(f.fill="both",f.duration="auto"),"number"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if("auto"!=b[c]){if(("number"==typeof f[c]||"duration"==c)&&("number"!=typeof b[c]||isNaN(b[c])))return;if("fill"==c&&-1==u.indexOf(b[c]))return;if("direction"==c&&-1==v.indexOf(b[c]))return;if("playbackRate"==c&&1!==b[c]&&a.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return"number"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return 0>a||a>1||0>c||c>1?w:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(0==e||1==e)return e;for(var g=0,h=1;;){var i=(g+h)/2,j=f(a,c,i);if(Math.abs(e-j)<1e-4)return f(b,d,i);e>j?g=i:h=i}}}function j(a,b){return function(c){if(c>=1)return 1;var d=1/a;return c+=b*d,c-c%d}}function k(a){B||(B=document.createElement("div").style),B.animationTimingFunction="",B.animationTimingFunction=a;var b=B.animationTimingFunction;if(""==b&&e())throw new TypeError(a+" is not a valid value for easing");var c=D.exec(b);if(c)return i.apply(this,c.slice(1).map(Number));var d=E.exec(b);if(d)return j(Number(d[1]),{start:x,middle:y,end:z}[d[2]]);var f=A[b];return f?f:w}function l(a){return Math.abs(m(a)/a.playbackRate)}function m(a){return a.duration*a.iterations}function n(a,b,c){return null==b?F:b<c.delay?G:b>=c.delay+a?H:I}function o(a,b,c,d,e){switch(d){case G:return"backwards"==b||"both"==b?0:null;case I:return c-e;case H:return"forwards"==b||"both"==b?a:null;case F:return null}}function p(a,b,c,d){return(d.playbackRate<0?b-a:b)*d.playbackRate+c}function q(a,b,c,d,e){return c===1/0||c===-(1/0)||c-d==b&&e.iterations&&(e.iterations+e.iterationStart)%1==0?a:c%a}function r(a,b,c,d){return 0===c?0:b==a?d.iterationStart+d.iterations-1:Math.floor(c/a)}function s(a,b,c,d){var e=a%2>=1,f="normal"==d.direction||d.direction==(e?"alternate-reverse":"alternate"),g=f?c:b-c,h=g/b;return b*d._easingFunction(h)}function t(a,b,c){var d=n(a,b,c),e=o(a,c.fill,b,d,c.delay);if(null===e)return null;if(0===a)return d===G?0:1;var f=c.iterationStart*c.duration,g=p(a,e,f,c),h=q(c.duration,m(c),g,f,c),i=r(c.duration,h,g,c);return s(i,c.duration,h,c)/c.duration}var u="backwards|forwards|both|none".split("|"),v="reverse|alternate|alternate-reverse".split("|"),w=function(a){return a};d.prototype={_setMember:function(b,c){this["_"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember("delay",a)},get delay(){return this._delay},set endDelay(a){this._setMember("endDelay",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember("fill",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||0>a)&&e())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",a)},get iterationStart(){return this._iterationStart},set duration(a){if("auto"!=a&&(isNaN(a)||0>a)&&e())throw new TypeError("duration must be non-negative or auto, received: "+a);this._setMember("duration",a)},get duration(){return this._duration},set direction(a){this._setMember("direction",a)},get direction(){return this._direction},set easing(a){this._easingFunction=k(a),this._setMember("easing",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||0>a)&&e())throw new TypeError("iterations must be non-negative, received: "+a);this._setMember("iterations",a)},get iterations(){return this._iterations}};var x=1,y=.5,z=0,A={ease:i(.25,.1,.25,1),"ease-in":i(.42,0,1,1),"ease-out":i(0,0,.58,1),"ease-in-out":i(.42,0,.58,1),"step-start":j(1,x),"step-middle":j(1,y),"step-end":j(1,z)},B=null,C="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",D=new RegExp("cubic-bezier\\("+C+","+C+","+C+","+C+"\\)"),E=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,F=0,G=1,H=2,I=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=l,a.calculateTimeFraction=t,a.calculatePhase=n,a.toTimingFunction=k}(c,f),function(a,b){function c(a,b){return a in j?j[a][b]||b:b}function d(a,b,d){var e=g[a];if(e){h.style[a]=b;for(var f in e){var i=e[f],j=h.style[i];d[i]=c(i,j)}}else d[a]=c(a,b)}function e(a){var b=[];for(var c in a)if(!(c in["easing","offset","composite"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;f>g;g++)e={},"offset"in a?e.offset=a.offset:1==f?e.offset=1:e.offset=g/(f-1),"easing"in a&&(e.easing=a.easing),"composite"in a&&(e.composite=a.composite),e[c]=d[g],b.push(e)}return b.sort(function(a,b){return a.offset-b.offset}),b}function f(a){function b(){var a=c.length;null==c[a-1].offset&&(c[a-1].offset=1),a>1&&null==c[0].offset&&(c[0].offset=0);for(var b=0,d=c[0].offset,e=1;a>e;e++){var f=c[e].offset;if(null!=f){for(var g=1;e-b>g;g++)c[b+g].offset=d+(f-d)*g/(e-b);b=e,d=f}}}if(null==a)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&a[Symbol.iterator]&&(a=Array.from(a)),Array.isArray(a)||(a=e(a));for(var c=a.map(function(a){var b={};for(var c in a){var e=a[c];if("offset"==c){if(null!=e&&(e=Number(e),!isFinite(e)))throw new TypeError("keyframe offsets must be numbers.")}else{if("composite"==c)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};e=""+e}d(c,e,b)}return void 0==b.offset&&(b.offset=null),b}),f=!0,g=-(1/0),h=0;h<c.length;h++){var i=c[h].offset;if(null!=i){if(g>i)throw{code:DOMException.INVALID_MODIFICATION_ERR,name:"InvalidModificationError",message:"Keyframes are not loosely sorted by offset. Sort or specify offsets."};g=i}else f=!1}return c=c.filter(function(a){return a.offset>=0&&a.offset<=1}),f||b(),c}var g={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},h=document.createElementNS("http://www.w3.org/1999/xhtml","div"),i={thin:"1px",medium:"3px",thick:"5px"},j={borderBottomWidth:i,borderLeftWidth:i,borderRightWidth:i,borderTopWidth:i,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:i,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};a.convertToArrayForm=e,a.normalizeKeyframes=f}(c,f),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?"are":"is",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),h>g?(a in b||console.warn("Web Animations: "+a+" "+f+" deprecated and will stop working on "+h.toDateString()+". "+d),b[a]=!0,!1):!0},a.deprecated=function(b,c,d,e){var f=e?"are":"is";if(a.isDeprecated(b,c,d,e))throw new Error(b+" "+f+" no longer supported. "+d)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(c){void 0===a[c]&&(b=!0)})),!b)return}!function(a,b,c){function d(a){for(var b={},c=0;c<a.length;c++)for(var d in a[c])if("offset"!=d&&"easing"!=d&&"composite"!=d){var e={offset:a[c].offset,easing:a[c].easing,value:a[c][d]};b[d]=b[d]||[],b[d].push(e)}for(var f in b){var g=b[f];if(0!=g[0].offset||1!=g[g.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return b}function e(c){var d=[];for(var e in c)for(var f=c[e],g=0;g<f.length-1;g++){var h=f[g].offset,i=f[g+1].offset,j=f[g].value,k=f[g+1].value,l=f[g].easing;h==i&&(1==i?j=k:k=j),d.push({startTime:h,endTime:i,easing:a.toTimingFunction(l?l:"linear"),property:e,interpolation:b.propertyInterpolation(e,j,k)})}return d.sort(function(a,b){return a.startTime-b.startTime}),d}b.convertEffectInput=function(c){var f=a.normalizeKeyframes(c),g=d(f),h=e(g);return function(a,c){if(null!=c)h.filter(function(a){return 0>=c&&0==a.startTime||c>=1&&1==a.endTime||c>=a.startTime&&c<=a.endTime}).forEach(function(d){var e=c-d.startTime,f=d.endTime-d.startTime,g=0==f?0:d.easing(e/f);b.apply(a,d.property,d.interpolation(g))});else for(var d in g)"offset"!=d&&"easing"!=d&&"composite"!=d&&b.clear(a,d)}}}(c,d,f),function(a,b,c){function d(a){return a.replace(/-(.)/g,function(a,b){return b.toUpperCase()})}function e(a,b,c){h[c]=h[c]||[],h[c].push([a,b])}function f(a,b,c){for(var f=0;f<c.length;f++){var g=c[f];e(a,b,d(g))}}function g(c,e,f){var g=c;/-/.test(c)&&!a.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(g=d(c)),"initial"!=e&&"initial"!=f||("initial"==e&&(e=i[g]),"initial"==f&&(f=i[g]));for(var j=e==f?[]:h[g],k=0;j&&k<j.length;k++){var l=j[k][0](e),m=j[k][0](f);if(void 0!==l&&void 0!==m){var n=j[k][1](l,m);if(n){var o=b.Interpolation.apply(null,n);return function(a){return 0==a?e:1==a?f:o(a)}}}}return b.Interpolation(!1,!0,function(a){return a?f:e})}var h={};b.addPropertiesHandler=f;var i={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};b.propertyInterpolation=g}(c,d,f),function(a,b,c){function d(b){var c=a.calculateActiveDuration(b),d=function(d){return a.calculateTimeFraction(c,d,b)};return d._totalDuration=b.delay+c+b.endDelay,d._isCurrent=function(d){var e=a.calculatePhase(c,d,b);return e===PhaseActive||e===PhaseBefore},d}b.KeyframeEffect=function(c,e,f,g){var h,i=d(a.normalizeTimingInput(f)),j=b.convertEffectInput(e),k=function(){j(c,h)};return k._update=function(a){return h=i(a),null!==h},k._clear=function(){j(c,null)},k._hasSameTarget=function(a){return c===a},k._isCurrent=i._isCurrent,k._totalDuration=i._totalDuration,k._id=g,k},b.NullEffect=function(a){var b=function(){a&&(a(),a=null)};return b._update=function(){return null},b._totalDuration=0,b._isCurrent=function(){return!1},b._hasSameTarget=function(){return!1},b}}(c,d,f),function(a,b){a.apply=function(b,c,d){b.style[a.propertyName(c)]=d},a.clear=function(b,c){b.style[a.propertyName(c)]=""}}(d,f),function(a){window.Element.prototype.animate=function(b,c){var d="";return c&&c.id&&(d=c.id),a.timeline._play(a.KeyframeEffect(this,b,c,d))}}(d),function(a,b){function c(a,b,d){if("number"==typeof a&&"number"==typeof b)return a*(1-d)+b*d;if("boolean"==typeof a&&"boolean"==typeof b)return.5>d?a:b;if(a.length==b.length){for(var e=[],f=0;f<a.length;f++)e.push(c(a[f],b[f],d));return e}throw"Mismatched interpolation arguments "+a+":"+b}a.Interpolation=function(a,b,d){return function(e){return d(c(a,b,e))}}}(d,f),function(a,b,c){a.sequenceNumber=0;var d=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};b.Animation=function(b){this.id="",b&&b._id&&(this.id=b._id),this._sequenceNumber=a.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=b,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},b.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,b.timeline._animations.push(this))},_tickCurrentTime:function(a,b){a!=this._currentTime&&(this._currentTime=a,this._isFinished&&!b&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._tickCurrentTime(a,!0),b.invalidateEffects()))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.invalidateEffects())},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var b=this.currentTime;this._playbackRate=a,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&this.play(),null!=b&&(this.currentTime=b)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._currentTime=this._playbackRate>0?0:this._totalDuration,this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.invalidateEffects()},pause:function(){this._isFinished||this._paused||this._idle||(this._currentTimePending=!0),this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.invalidateEffects())},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._finishedFlag=!0,this.currentTime=0,this._startTime=null,this._effect._update(null),b.invalidateEffects())},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){"function"==typeof b&&"finish"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if("finish"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag}}}(c,d,f),function(a,b,c){function d(a){var b=j;j=[],a<p.currentTime&&(a=p.currentTime),h(a,!0),b.forEach(function(b){b[1](a)}),g(),l=void 0}function e(a,b){return a._sequenceNumber-b._sequenceNumber}function f(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function g(){o.forEach(function(a){a()}),o.length=0}function h(a,c){n=!1;var d=b.timeline;d.currentTime=a,d._animations.sort(e),m=!1;var f=d._animations;d._animations=[];var g=[],h=[];f=f.filter(function(b){b._tick(a,c),b._inEffect?h.push(b._effect):g.push(b._effect),b._needsTick&&(m=!0);var d=b._inEffect||b._needsTick;return b._inTimeline=d,d}),o.push.apply(o,g),o.push.apply(o,h),d._animations.push.apply(d._animations,f),m&&requestAnimationFrame(function(){})}var i=window.requestAnimationFrame,j=[],k=0;window.requestAnimationFrame=function(a){var b=k++;return 0==j.length&&i(d),j.push([b,a]),b},window.cancelAnimationFrame=function(a){j.forEach(function(b){b[0]==a&&(b[1]=function(){})})},f.prototype={_play:function(c){c._timing=a.normalizeTimingInput(c.timing);var d=new b.Animation(c);return d._idle=!1,d._timeline=this,this._animations.push(d),b.restart(),b.invalidateEffects(),d}};var l=void 0,m=!1,n=!1;b.restart=function(){return m||(m=!0,requestAnimationFrame(function(){}),n=!0),n},b.invalidateEffects=function(){h(b.timeline.currentTime,!1),g()};var o=[],p=new f;b.timeline=p}(c,d,f),function(a){function b(a,b){var c=a.exec(b);return c?(c=a.ignoreCase?c[0].toLowerCase():c[0],[c,b.substr(c.length)]):void 0}function c(a,b){b=b.replace(/^\s*/,"");var c=a(b);return c?[c[0],c[1].replace(/^\s*/,"")]:void 0}function d(a,d,e){a=c.bind(null,a);for(var f=[];;){var g=a(e);if(!g)return[f,e];if(f.push(g[0]),e=g[1],g=b(d,e),!g||""==g[1])return[f,e];e=g[1]}}function e(a,b){for(var c=0,d=0;d<b.length&&(!/\s|,/.test(b[d])||0!=c);d++)if("("==b[d])c++;else if(")"==b[d]&&(c--,0==c&&d++,0>=c))break;var e=a(b.substr(0,d));return void 0==e?void 0:[e,b.substr(d)]}function f(a,b){for(var c=a,d=b;c&&d;)c>d?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){var d=a(c);return d?d:[b,c]}}function i(b,c){for(var d=[],e=0;e<b.length;e++){var f=a.consumeTrimmed(b[e],c);if(!f||""==f[0])return;void 0!==f[0]&&d.push(f[0]),c=f[1]}return""==c?d:void 0}function j(a,b,c,d,e){for(var g=[],h=[],i=[],j=f(d.length,e.length),k=0;j>k;k++){var l=b(d[k%d.length],e[k%e.length]);if(!l)return;g.push(l[0]),h.push(l[1]),i.push(l[2])}return[g,h,function(b){var d=b.map(function(a,b){return i[b](a)}).join(c);return a?a(d):d}]}function k(a,b,c){for(var d=[],e=[],f=[],g=0,h=0;h<c.length;h++)if("function"==typeof c[h]){var i=c[h](a[g],b[g++]);d.push(i[0]),e.push(i[1]),f.push(i[2])}else!function(a){d.push(!1),e.push(!1),f.push(function(){return c[a]})}(h);return[d,e,function(a){for(var b="",c=0;c<a.length;c++)b+=f[c](a[c]);return b}]}a.consumeToken=b,a.consumeTrimmed=c,a.consumeRepeated=d,a.consumeParenthesised=e,a.ignore=g,a.optional=h,a.consumeList=i,a.mergeNestedRepeated=j.bind(null,null),a.mergeWrappedNestedRepeated=j,a.mergeList=k}(d),function(a){function b(b){function c(b){var c=a.consumeToken(/^inset/i,b);if(c)return d.inset=!0,c;var c=a.consumeLengthOrPercent(b);if(c)return d.lengths.push(c[0]),c;var c=a.consumeColor(b);return c?(d.color=c[0],c):void 0}var d={inset:!1,lengths:[],color:null},e=a.consumeRepeated(c,/^/,b);return e&&e[0].length?[d,e[1]]:void 0}function c(c){var d=a.consumeRepeated(b,/^,/,c);return d&&""==d[1]?d[0]:void 0}function d(b,c){for(;b.lengths.length<Math.max(b.lengths.length,c.lengths.length);)b.lengths.push({px:0});for(;c.lengths.length<Math.max(b.lengths.length,c.lengths.length);)c.lengths.push({px:0});if(b.inset==c.inset&&!!b.color==!!c.color){for(var d,e=[],f=[[],0],g=[[],0],h=0;h<b.lengths.length;h++){var i=a.mergeDimensions(b.lengths[h],c.lengths[h],2==h);f[0].push(i[0]),g[0].push(i[1]),e.push(i[2])}if(b.color&&c.color){var j=a.mergeColors(b.color,c.color);f[1]=j[0],g[1]=j[1],d=j[2]}return[f,g,function(a){for(var c=b.inset?"inset ":" ",f=0;f<e.length;f++)c+=e[f](a[0][f])+" ";return d&&(c+=d(a[1])),c}]}}function e(b,c,d,e){function f(a){return{inset:a,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var g=[],h=[],i=0;i<d.length||i<e.length;i++){var j=d[i]||f(e[i].inset),k=e[i]||f(d[i].inset);g.push(j),h.push(k)}return a.mergeNestedRepeated(b,c,g,h)}var f=e.bind(null,d,", ");a.addPropertiesHandler(c,f,["box-shadow","text-shadow"])}(d),function(a,b){function c(a){return a.toFixed(3).replace(".000","")}function d(a,b,c){return Math.min(b,Math.max(a,c))}function e(a){return/^\s*[-+]?(\d*\.)?\d+\s*$/.test(a)?Number(a):void 0}function f(a,b){return[a,b,c]}function g(a,b){return 0!=a?i(0,1/0)(a,b):void 0}function h(a,b){return[a,b,function(a){return Math.round(d(1,1/0,a))}]}function i(a,b){return function(e,f){return[e,f,function(e){return c(d(a,b,e))}]}}function j(a,b){return[a,b,Math.round]}a.clamp=d,a.addPropertiesHandler(e,i(0,1/0),["border-image-width","line-height"]),a.addPropertiesHandler(e,i(0,1),["opacity","shape-image-threshold"]),a.addPropertiesHandler(e,g,["flex-grow","flex-shrink"]),a.addPropertiesHandler(e,h,["orphans","widows"]),a.addPropertiesHandler(e,j,["z-index"]),a.parseNumber=e,a.mergeNumbers=f,a.numberToString=c}(d,f),function(a,b){function c(a,b){return"visible"==a||"visible"==b?[0,1,function(c){return 0>=c?a:c>=1?b:"visible"}]:void 0}a.addPropertiesHandler(String,c,["visibility"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle="#000",f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle="#fff",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;3>d;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),"rgba("+b.join(",")+")"}]}var e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");e.width=e.height=1;var f=e.getContext("2d");a.addPropertiesHandler(c,d,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(a){return c[a]=null,"U"+a});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(a,b){return e(a,b,!0)}function e(b,c,d){var e,f=[];for(e in b)f.push(e);for(e in c)f.indexOf(e)<0&&f.push(e);return b=f.map(function(a){return b[a]||0}),c=f.map(function(a){return c[a]||0}),[b,c,function(b){var c=b.map(function(c,e){return 1==b.length&&d&&(c=Math.max(c,0)),a.numberToString(c)+f[e]}).join(" + ");return b.length>1?"calc("+c+")":c}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(a){var b=l(a);return b&&""==b[1]?b[0]:void 0},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\)/))],b);return d&&4==d[0].length?d[0]:void 0}function e(b,c){return"auto"==b||"auto"==c?[!0,!1,function(d){var e=d?b:c;if("auto"==e)return"auto";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return"rect("+a+")"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,", ");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,["clip"])}(d,f),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(b=b.toLowerCase().trim(),"none"==b)return[];for(var c,d=/\s*(\w+)\(([^)]*)\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(","),j=h[0];if(j.length<i.length)return;for(var k=[],o=0;o<j.length;o++){var p,q=i[o],r=j[o];if(p=q?{A:function(b){return"0"==b.trim()?m:a.parseAngle(b)},N:a.parseNumber,T:a.parseLengthOrPercent,L:a.parseLength}[r.toUpperCase()](q):{a:m,n:k[0],t:l}[r],void 0===p)return;k.push(p)}if(e.push({t:g,d:k}),d.lastIndex==b.length)return e}}function f(a){return a.toFixed(6).replace(".000000","")}function g(b,c){if(b.decompositionPair!==c){b.decompositionPair=c;var d=a.makeMatrixDecomposition(b)}if(c.decompositionPair!==b){c.decompositionPair=b;var e=a.makeMatrixDecomposition(c)}return null==d[0]||null==e[0]?[[!1],[!0],function(a){return a?c[0].d:b[0].d}]:(d[0].push(0),e[0].push(1),[d,e,function(b){var c=a.quat(d[0][3],e[0][3],b[5]),g=a.composeMatrix(b[0],b[1],b[2],c,b[4]),h=g.map(f).join(",");return h}])}function h(a){return a.replace(/[xy]/,"")}function i(a){return a.replace(/(x|y|z|3d)?$/,"3d")}function j(b,c){var d=a.makeMatrixDecomposition&&!0,e=!1;if(!b.length||!c.length){b.length||(e=!0,b=c,c=[]);for(var f=0;f<b.length;f++){var j=b[f].t,k=b[f].d,l="scale"==j.substr(0,5)?1:0;c.push({t:j,d:k.map(function(a){if("number"==typeof a)return l;var b={};for(var c in a)b[c]=l;return b})})}}var m=function(a,b){return"perspective"==a&&"perspective"==b||("matrix"==a||"matrix3d"==a)&&("matrix"==b||"matrix3d"==b)},o=[],p=[],q=[];if(b.length!=c.length){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]]}else for(var f=0;f<b.length;f++){var j,s=b[f].t,t=c[f].t,u=b[f].d,v=c[f].d,w=n[s],x=n[t];if(m(s,t)){if(!d)return;var r=g([b[f]],[c[f]]);o.push(r[0]),p.push(r[1]),q.push(["matrix",[r[2]]])}else{if(s==t)j=s;else if(w[2]&&x[2]&&h(s)==h(t))j=h(s),u=w[2](u),v=x[2](v);else{if(!w[1]||!x[1]||i(s)!=i(t)){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]];break}j=i(s),u=w[1](u),v=x[1](v)}for(var y=[],z=[],A=[],B=0;B<u.length;B++){var C="number"==typeof u[B]?a.mergeNumbers:a.mergeDimensions,r=C(u[B],v[B]);y[B]=r[0],z[B]=r[1],A.push(r[2])}o.push(y),p.push(z),q.push([j,A])}}if(e){var D=o;o=p,p=D}return[o,p,function(a){return a.map(function(a,b){var c=a.map(function(a,c){return q[b][1][c](a)}).join(",");return"matrix"==q[b][0]&&16==c.split(",").length&&(q[b][0]="matrix3d"),q[b][0]+"("+c+")"}).join(" ")}]}var k=null,l={px:0},m={deg:0},n={matrix:["NNNNNN",[k,k,0,0,k,k,0,0,0,0,1,0,k,k,0,1],d],matrix3d:["NNNNNNNNNNNNNNNN",d],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",c([k,k,1]),d],scalex:["N",c([k,1,1]),c([k,1])],scaley:["N",c([1,k,1]),c([1,k])],scalez:["N",c([1,1,k])],scale3d:["NNN",d],skew:["Aa",null,d],skewx:["A",null,c([k,m])],skewy:["A",null,c([m,k])],translate:["Tt",c([k,k,l]),d],translatex:["T",c([k,l,l]),c([k,l])],translatey:["T",c([l,k,l]),c([l,k])],translatez:["L",c([l,l,k])],translate3d:["TTL",d]};a.addPropertiesHandler(e,j,["transform"])}(d,f),function(a,b){function c(a,b){b.concat([a]).forEach(function(b){b in document.documentElement.style&&(d[a]=b)})}var d={};c("transform",["webkitTransform","msTransform"]),c("transformOrigin",["webkitTransformOrigin"]),c("perspective",["webkitPerspective"]),c("perspectiveOrigin",["webkitPerspectiveOrigin"]),a.propertyName=function(a){return d[a]||a}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var a;if(window.performance&&performance.now)var a=function(){return performance.now()};else var a=function(){return Date.now()};var b=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="cancel",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},c=window.Element.prototype.animate;window.Element.prototype.animate=function(d,e){var f=c.call(this,d,e);f._cancelHandlers=[],f.oncancel=null;var g=f.cancel;f.cancel=function(){g.call(this);var c=new b(this,null,a()),d=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){d.forEach(function(a){a.call(c.target,c)})},0)};var h=f.addEventListener;f.addEventListener=function(a,b){"function"==typeof b&&"cancel"==a?this._cancelHandlers.push(b):h.call(this,a,b)};var i=f.removeEventListener;return f.removeEventListener=function(a,b){if("cancel"==a){var c=this._cancelHandlers.indexOf(b);c>=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue("opacity"),f="0"==e?"1":"0";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue("opacity")==f}catch(g){}finally{c&&c.cancel()}if(!d){var h=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),h.call(this,b,c)}}}(c),!function(a,b,c){function d(a){var b=window.document.timeline;b.currentTime=a,b._discardAnimations(),0==b._animations.length?f=!1:requestAnimationFrame(d); -}var e=window.requestAnimationFrame;window.requestAnimationFrame=function(a){return e(function(b){window.document.timeline._updateAnimationsPromises(),a(b),window.document.timeline._updateAnimationsPromises()})},b.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},b.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){b.animationsWithPromises=b.animationsWithPromises.filter(function(a){return a._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(a){return"finished"!=a.playState&&"idle"!=a.playState})},_play:function(a){var c=new b.Animation(a,this);return this._animations.push(c),b.restartWebAnimationsNextTick(),c._updatePromises(),c._animation.play(),c._updatePromises(),c},play:function(a){return a&&a.remove(),this._play(a)}};var f=!1;b.restartWebAnimationsNextTick=function(){f||(f=!0,requestAnimationFrame(d))};var g=new b.AnimationTimeline;b.timeline=g;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return g}})}catch(h){}try{window.document.timeline=g}catch(h){}}(c,e,f),function(a,b,c){b.animationsWithPromises=[],b.Animation=function(b,c){if(this.id="",b&&b._id&&(this.id=b._id),this.effect=b,b&&(b._animation=this),!c)throw new Error("Animation with null timeline is not supported");this._timeline=c,this._sequenceNumber=a.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},b.Animation.prototype={_updatePromises:function(){var a=this._oldPlayState,b=this.playState;return this._readyPromise&&b!==a&&("idle"==b?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==a?this._resolveReadyPromise():"pending"==b&&(this._readyPromise=void 0)),this._finishedPromise&&b!==a&&("idle"==b?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==b?this._resolveFinishedPromise():"finished"==a&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var a,c,d,e,f=!!this._animation;f&&(a=this.playbackRate,c=this._paused,d=this.startTime,e=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=b.newUnderlyingAnimationForKeyframeEffect(this.effect),b.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=b.newUnderlyingAnimationForGroup(this.effect),b.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&b.bindAnimationForCustomEffect(this),f&&(1!=a&&(this.playbackRate=a),null!==d?this.startTime=d:null!==e?this.currentTime=e:null!==this._holdTime&&(this.currentTime=this._holdTime),c&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var a=this.effect._timing.delay;this._childAnimations.forEach(function(c){this._arrangeChildren(c,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c.effect))}.bind(this))}},_setExternalAnimation:function(a){if(this.effect&&this._isGroup)for(var b=0;b<this.effect.children.length;b++)this.effect.children[b]._animation=a,this._childAnimations[b]._setExternalAnimation(a)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var a=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(c){var d=window.document.timeline._play(c);this._childAnimations.push(d),d.playbackRate=this.playbackRate,this._paused&&d.pause(),c._animation=this.effect._animation,this._arrangeChildren(d,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c))}.bind(this))}},_arrangeChildren:function(a,b){null===this.startTime?a.currentTime=this.currentTime-b/this.playbackRate:a.startTime!==this.startTime+b/this.playbackRate&&(a.startTime=this.startTime+b/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(-1==b.animationsWithPromises.indexOf(this)&&b.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(a,b){this._resolveFinishedPromise=function(){a(this)},this._rejectFinishedPromise=function(){b({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(-1==b.animationsWithPromises.indexOf(this)&&b.animationsWithPromises.push(this),this._readyPromise=new Promise(function(a,b){this._resolveReadyPromise=function(){a(this)},this._rejectReadyPromise=function(){b({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(a){"function"==typeof a?this._animation.onfinish=function(b){b.target=this,a.call(this,b)}.bind(this):this._animation.onfinish=a},get oncancel(){return this._animation.oncancel},set oncancel(a){"function"==typeof a?this._animation.oncancel=function(b){b.target=this,a.call(this,b)}.bind(this):this._animation.oncancel=a},get currentTime(){this._updatePromises();var a=this._animation.currentTime;return this._updatePromises(),a},set currentTime(a){this._updatePromises(),this._animation.currentTime=isFinite(a)?a:Math.sign(a)*Number.MAX_VALUE,this._register(),this._forEachChild(function(b,c){b.currentTime=a-c}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(a){this._updatePromises(),this._animation.startTime=isFinite(a)?a:Math.sign(a)*Number.MAX_VALUE,this._register(),this._forEachChild(function(b,c){b.startTime=a+c}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(a){this._updatePromises();var b=this.currentTime;this._animation.playbackRate=a,this._forEachChild(function(b){b.playbackRate=a}),"paused"!=this.playState&&"idle"!=this.playState&&this.play(),null!==b&&(this.currentTime=b),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),-1==this._timeline._animations.indexOf(this)&&this._timeline._animations.push(this),this._register(),b.awaitStartTime(this),this._forEachChild(function(a){var b=a.currentTime;a.play(),a.currentTime=b}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(a){a.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var a=this.currentTime;this._animation.reverse(),this._forEachChild(function(a){a.reverse()}),null!==a&&(this.currentTime=a),this._updatePromises()},addEventListener:function(a,b){var c=b;"function"==typeof b&&(c=function(a){a.target=this,b.call(this,a)}.bind(this),b._wrapper=c),this._animation.addEventListener(a,c)},removeEventListener:function(a,b){this._animation.removeEventListener(a,b&&b._wrapper||b)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(b){var c=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(a){b.call(this,a,c),this.effect instanceof window.SequenceEffect&&(c+=a.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var d=this.effect._timing,e=this.currentTime;null!==e&&(e=a.calculateTimeFraction(a.calculateActiveDuration(d),e,d)),(null==e||isNaN(e))&&this._removeChildAnimations()}}},window.Animation=b.Animation}(c,e,f),function(a,b,c){function d(b){this._frames=a.normalizeKeyframes(b)}function e(){for(var a=!1;i.length;){var b=i.shift();b._updateChildren(),a=!0}return a}var f=function(a){if(a._animation=void 0,a instanceof window.SequenceEffect||a instanceof window.GroupEffect)for(var b=0;b<a.children.length;b++)f(a.children[b])};b.removeMulti=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c];d._parent?(-1==b.indexOf(d._parent)&&b.push(d._parent),d._parent.children.splice(d._parent.children.indexOf(d),1),d._parent=null,f(d)):d._animation&&d._animation.effect==d&&(d._animation.cancel(),d._animation.effect=new KeyframeEffect(null,[]),d._animation._callback&&(d._animation._callback._animation=null),d._animation._rebuildUnderlyingAnimation(),f(d))}for(c=0;c<b.length;c++)b[c]._rebuild()},b.KeyframeEffect=function(b,c,e,f){return this.target=b,this._parent=null,e=a.numericTimingToObject(e),this._timingInput=a.cloneTimingInput(e),this._timing=a.normalizeTimingInput(e),this.timing=a.makeTiming(e,!1,this),this.timing._effect=this,"function"==typeof c?(a.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=c):this._normalizedKeyframes=new d(c),this._keyframes=c,this.activeDuration=a.calculateActiveDuration(this._timing),this._id=f,this},b.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(a){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=a,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var b=new KeyframeEffect(this.target,[],a.cloneTimingInput(this._timingInput),this._id);return b._normalizedKeyframes=this._normalizedKeyframes,b._keyframes=this._keyframes,b},remove:function(){b.removeMulti([this])}};var g=Element.prototype.animate;Element.prototype.animate=function(a,c){var d="";return c&&c.id&&(d=c.id),b.timeline._play(new b.KeyframeEffect(this,a,c,d))};var h=document.createElementNS("http://www.w3.org/1999/xhtml","div");b.newUnderlyingAnimationForKeyframeEffect=function(a){if(a){var b=a.target||h,c=a._keyframes;"function"==typeof c&&(c=[]);var d=a._timingInput;d.id=a._id}else var b=h,c=[],d=0;return g.apply(b,[c,d])},b.bindAnimationForKeyframeEffect=function(a){a.effect&&"function"==typeof a.effect._normalizedKeyframes&&b.bindAnimationForCustomEffect(a)};var i=[];b.awaitStartTime=function(a){null===a.startTime&&a._isGroup&&(0==i.length&&requestAnimationFrame(e),i.push(a))};var j=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){window.document.timeline._updateAnimationsPromises();var a=j.apply(this,arguments);return e()&&(a=j.apply(this,arguments)),window.document.timeline._updateAnimationsPromises(),a}}),window.KeyframeEffect=b.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(a){return null!==a.effect&&a.effect.target==this}.bind(this))}}(c,e,f),function(a,b,c){function d(a){a._registered||(a._registered=!0,g.push(a),h||(h=!0,requestAnimationFrame(e)))}function e(a){var b=g;g=[],b.sort(function(a,b){return a._sequenceNumber-b._sequenceNumber}),b=b.filter(function(a){a();var b=a._animation?a._animation.playState:"idle";return"running"!=b&&"pending"!=b&&(a._registered=!1),a._registered}),g.push.apply(g,b),g.length?(h=!0,requestAnimationFrame(e)):h=!1}var f=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);b.bindAnimationForCustomEffect=function(b){var c,e=b.effect.target,g="function"==typeof b.effect.getFrames();c=g?b.effect.getFrames():b.effect._onsample;var h=b.effect.timing,i=null;h=a.normalizeTimingInput(h);var j=function(){var d=j._animation?j._animation.currentTime:null;null!==d&&(d=a.calculateTimeFraction(a.calculateActiveDuration(h),d,h),isNaN(d)&&(d=null)),d!==i&&(g?c(d,e,b.effect):c(d,b.effect,b.effect._animation)),i=d};j._animation=b,j._registered=!1,j._sequenceNumber=f++,b._callback=j,d(j)};var g=[],h=!1;b.Animation.prototype._register=function(){this._callback&&d(this._callback)}}(c,e,f),function(a,b,c){function d(a){return a._timing.delay+a.activeDuration+a._timing.endDelay}function e(b,c,d){this._id=d,this._parent=null,this.children=b||[],this._reparent(this.children),c=a.numericTimingToObject(c),this._timingInput=a.cloneTimingInput(c),this._timing=a.normalizeTimingInput(c,!0),this.timing=a.makeTiming(c,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){e.apply(this,arguments)},window.GroupEffect=function(){e.apply(this,arguments)},e.prototype={_isAncestor:function(a){for(var b=this;null!==b;){if(b==a)return!0;b=b._parent}return!1},_rebuild:function(){for(var a=this;a;)"auto"===a.timing.duration&&(a._timing.duration=a.activeDuration),a=a._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(a){b.removeMulti(a);for(var c=0;c<a.length;c++)a[c]._parent=this},_putChild:function(a,b){for(var c=b?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",d=0;d<a.length;d++)if(this._isAncestor(a[d]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:c};for(var d=0;d<a.length;d++)b?this.children.push(a[d]):this.children.unshift(a[d]);this._reparent(a),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var b=a.cloneTimingInput(this._timingInput),c=[],d=0;d<this.children.length;d++)c.push(this.children[d].clone());return this instanceof GroupEffect?new GroupEffect(c,b):new SequenceEffect(c,b)},remove:function(){b.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(e.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var a=0;return this.children.forEach(function(b){a+=d(b)}),Math.max(a,0)}}),window.GroupEffect.prototype=Object.create(e.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var a=0;return this.children.forEach(function(b){a=Math.max(a,d(b))}),a}}),b.newUnderlyingAnimationForGroup=function(c){var d,e=null,f=function(b){var c=d._wrapper;return c&&"pending"!=c.playState&&c.effect?null==b?void c._removeChildAnimations():0==b&&c.playbackRate<0&&(e||(e=a.normalizeTimingInput(c.effect.timing)),b=a.calculateTimeFraction(a.calculateActiveDuration(e),-1,e),isNaN(b)||null==b)?(c._forEachChild(function(a){a.currentTime=-1}),void c._removeChildAnimations()):void 0:void 0},g=new KeyframeEffect(null,[],c._timing,c._id);return g.onsample=f,d=b.timeline._play(g)},b.bindAnimationForGroup=function(a){a._animation._wrapper=a,a._isGroup=!0,b.awaitStartTime(a),a._constructChildAnimations(),a._setExternalAnimation(a)},b.groupChildDuration=d}(c,e,f),b["true"]=a}({},function(){return this}()); +!function(a,b){var c={},d={},e={},f=null;!function(a,b){function c(a){if("number"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=x}function e(){return a.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function f(b,c,e){var f=new d;return c&&(f.fill="both",f.duration="auto"),"number"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if("auto"!=b[c]){if(("number"==typeof f[c]||"duration"==c)&&("number"!=typeof b[c]||isNaN(b[c])))return;if("fill"==c&&v.indexOf(b[c])==-1)return;if("direction"==c&&w.indexOf(b[c])==-1)return;if("playbackRate"==c&&1!==b[c]&&a.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return"number"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return a<0||a>1||c<0||c>1?x:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(e<=0){var g=0;return a>0?g=b/a:!b&&c>0&&(g=d/c),g*e}if(e>=1){var h=0;return c<1?h=(d-1)/(c-1):1==c&&a<1&&(h=(b-1)/(a-1)),1+h*(e-1)}for(var i=0,j=1;i<j;){var k=(i+j)/2,l=f(a,c,k);if(Math.abs(e-l)<1e-5)return f(b,d,k);l<e?i=k:j=k}return f(b,d,k)}}function j(a,b){return function(c){if(c>=1)return 1;var d=1/a;return c+=b*d,c-c%d}}function k(a){C||(C=document.createElement("div").style),C.animationTimingFunction="",C.animationTimingFunction=a;var b=C.animationTimingFunction;if(""==b&&e())throw new TypeError(a+" is not a valid value for easing");return b}function l(a){if("linear"==a)return x;var b=E.exec(a);if(b)return i.apply(this,b.slice(1).map(Number));var c=F.exec(a);if(c)return j(Number(c[1]),{start:y,middle:z,end:A}[c[2]]);var d=B[a];return d?d:x}function m(a){return Math.abs(n(a)/a.playbackRate)}function n(a){return 0===a.duration||0===a.iterations?0:a.duration*a.iterations}function o(a,b,c){if(null==b)return G;var d=c.delay+a+c.endDelay;return b<Math.min(c.delay,d)?H:b>=Math.min(c.delay+a,d)?I:J}function p(a,b,c,d,e){switch(d){case H:return"backwards"==b||"both"==b?0:null;case J:return c-e;case I:return"forwards"==b||"both"==b?a:null;case G:return null}}function q(a,b,c,d,e){var f=e;return 0===a?b!==H&&(f+=c):f+=d/a,f}function r(a,b,c,d,e,f){var g=a===1/0?b%1:a%1;return 0!==g||c!==I||0===d||0===e&&0!==f||(g=1),g}function s(a,b,c,d){return a===I&&b===1/0?1/0:1===c?Math.floor(d)-1:Math.floor(d)}function t(a,b,c){var d=a;if("normal"!==a&&"reverse"!==a){var e=b;"alternate-reverse"===a&&(e+=1),d="normal",e!==1/0&&e%2!==0&&(d="reverse")}return"normal"===d?c:1-c}function u(a,b,c){var d=o(a,b,c),e=p(a,c.fill,b,d,c.delay);if(null===e)return null;var f=q(c.duration,d,c.iterations,e,c.iterationStart),g=r(f,c.iterationStart,d,c.iterations,e,c.duration),h=s(d,c.iterations,g,f),i=t(c.direction,h,g);return c._easingFunction(i)}var v="backwards|forwards|both|none".split("|"),w="reverse|alternate|alternate-reverse".split("|"),x=function(a){return a};d.prototype={_setMember:function(b,c){this["_"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember("delay",a)},get delay(){return this._delay},set endDelay(a){this._setMember("endDelay",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember("fill",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||a<0)&&e())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",a)},get iterationStart(){return this._iterationStart},set duration(a){if("auto"!=a&&(isNaN(a)||a<0)&&e())throw new TypeError("duration must be non-negative or auto, received: "+a);this._setMember("duration",a)},get duration(){return this._duration},set direction(a){this._setMember("direction",a)},get direction(){return this._direction},set easing(a){this._easingFunction=l(k(a)),this._setMember("easing",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||a<0)&&e())throw new TypeError("iterations must be non-negative, received: "+a);this._setMember("iterations",a)},get iterations(){return this._iterations}};var y=1,z=.5,A=0,B={ease:i(.25,.1,.25,1),"ease-in":i(.42,0,1,1),"ease-out":i(0,0,.58,1),"ease-in-out":i(.42,0,.58,1),"step-start":j(1,y),"step-middle":j(1,z),"step-end":j(1,A)},C=null,D="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",E=new RegExp("cubic-bezier\\("+D+","+D+","+D+","+D+"\\)"),F=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,G=0,H=1,I=2,J=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=m,a.calculateIterationProgress=u,a.calculatePhase=o,a.normalizeEasing=k,a.parseEasingFunction=l}(c,f),function(a,b){function c(a,b){return a in k?k[a][b]||b:b}function d(a){return"display"===a||0===a.lastIndexOf("animation",0)||0===a.lastIndexOf("transition",0)}function e(a,b,e){if(!d(a)){var f=h[a];if(f){i.style[a]=b;for(var g in f){var j=f[g],k=i.style[j];e[j]=c(j,k)}}else e[a]=c(a,b)}}function f(a){var b=[];for(var c in a)if(!(c in["easing","offset","composite"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;g<f;g++)e={},"offset"in a?e.offset=a.offset:1==f?e.offset=1:e.offset=g/(f-1),"easing"in a&&(e.easing=a.easing),"composite"in a&&(e.composite=a.composite),e[c]=d[g],b.push(e)}return b.sort(function(a,b){return a.offset-b.offset}),b}function g(b){function c(){var a=d.length;null==d[a-1].offset&&(d[a-1].offset=1),a>1&&null==d[0].offset&&(d[0].offset=0);for(var b=0,c=d[0].offset,e=1;e<a;e++){var f=d[e].offset;if(null!=f){for(var g=1;g<e-b;g++)d[b+g].offset=c+(f-c)*g/(e-b);b=e,c=f}}}if(null==b)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||(b=f(b));for(var d=b.map(function(b){var c={};for(var d in b){var f=b[d];if("offset"==d){if(null!=f){if(f=Number(f),!isFinite(f))throw new TypeError("Keyframe offsets must be numbers.");if(f<0||f>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==d){if("add"==f||"accumulate"==f)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=f)throw new TypeError("Invalid composite mode "+f+".")}else f="easing"==d?a.normalizeEasing(f):""+f;e(d,f,c)}return void 0==c.offset&&(c.offset=null),void 0==c.easing&&(c.easing="linear"),c}),g=!0,h=-(1/0),i=0;i<d.length;i++){var j=d[i].offset;if(null!=j){if(j<h)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");h=j}else g=!1}return d=d.filter(function(a){return a.offset>=0&&a.offset<=1}),g||c(),d}var h={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},i=document.createElementNS("http://www.w3.org/1999/xhtml","div"),j={thin:"1px",medium:"3px",thick:"5px"},k={borderBottomWidth:j,borderLeftWidth:j,borderRightWidth:j,borderTopWidth:j,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:j,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};a.convertToArrayForm=f,a.normalizeKeyframes=g}(c,f),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?"are":"is",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),!(g<h&&(a in b||console.warn("Web Animations: "+a+" "+f+" deprecated and will stop working on "+h.toDateString()+". "+d),b[a]=!0,1))},a.deprecated=function(b,c,d,e){var f=e?"are":"is";if(a.isDeprecated(b,c,d,e))throw new Error(b+" "+f+" no longer supported. "+d)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(c){void 0===a[c]&&(b=!0)})),!b)return}!function(a,b,c){function d(a){for(var b={},c=0;c<a.length;c++)for(var d in a[c])if("offset"!=d&&"easing"!=d&&"composite"!=d){var e={offset:a[c].offset,easing:a[c].easing,value:a[c][d]};b[d]=b[d]||[],b[d].push(e)}for(var f in b){var g=b[f];if(0!=g[0].offset||1!=g[g.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return b}function e(c){var d=[];for(var e in c)for(var f=c[e],g=0;g<f.length-1;g++){var h=g,i=g+1,j=f[h].offset,k=f[i].offset,l=j,m=k;0==g&&(l=-(1/0),0==k&&(i=h)),g==f.length-2&&(m=1/0,1==j&&(h=i)),d.push({applyFrom:l,applyTo:m,startOffset:f[h].offset,endOffset:f[i].offset,easingFunction:a.parseEasingFunction(f[h].easing),property:e,interpolation:b.propertyInterpolation(e,f[h].value,f[i].value)})}return d.sort(function(a,b){return a.startOffset-b.startOffset}),d}b.convertEffectInput=function(c){var f=a.normalizeKeyframes(c),g=d(f),h=e(g);return function(a,c){if(null!=c)h.filter(function(a){return c>=a.applyFrom&&c<a.applyTo}).forEach(function(d){var e=c-d.startOffset,f=d.endOffset-d.startOffset,g=0==f?0:d.easingFunction(e/f);b.apply(a,d.property,d.interpolation(g))});else for(var d in g)"offset"!=d&&"easing"!=d&&"composite"!=d&&b.clear(a,d)}}}(c,d,f),function(a,b,c){function d(a){return a.replace(/-(.)/g,function(a,b){return b.toUpperCase()})}function e(a,b,c){h[c]=h[c]||[],h[c].push([a,b])}function f(a,b,c){for(var f=0;f<c.length;f++){var g=c[f];e(a,b,d(g))}}function g(c,e,f){var g=c;/-/.test(c)&&!a.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(g=d(c)),"initial"!=e&&"initial"!=f||("initial"==e&&(e=i[g]),"initial"==f&&(f=i[g]));for(var j=e==f?[]:h[g],k=0;j&&k<j.length;k++){var l=j[k][0](e),m=j[k][0](f);if(void 0!==l&&void 0!==m){var n=j[k][1](l,m);if(n){var o=b.Interpolation.apply(null,n);return function(a){return 0==a?e:1==a?f:o(a)}}}}return b.Interpolation(!1,!0,function(a){return a?f:e})}var h={};b.addPropertiesHandler=f;var i={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};b.propertyInterpolation=g}(c,d,f),function(a,b,c){function d(b){var c=a.calculateActiveDuration(b),d=function(d){return a.calculateIterationProgress(c,d,b)};return d._totalDuration=b.delay+c+b.endDelay,d}b.KeyframeEffect=function(c,e,f,g){var h,i=d(a.normalizeTimingInput(f)),j=b.convertEffectInput(e),k=function(){j(c,h)};return k._update=function(a){return h=i(a),null!==h},k._clear=function(){j(c,null)},k._hasSameTarget=function(a){return c===a},k._target=c,k._totalDuration=i._totalDuration,k._id=g,k},b.NullEffect=function(a){var b=function(){a&&(a(),a=null)};return b._update=function(){return null},b._totalDuration=0,b._hasSameTarget=function(){return!1},b}}(c,d,f),function(a,b){a.apply=function(b,c,d){b.style[a.propertyName(c)]=d},a.clear=function(b,c){b.style[a.propertyName(c)]=""}}(d,f),function(a){window.Element.prototype.animate=function(b,c){var d="";return c&&c.id&&(d=c.id),a.timeline._play(a.KeyframeEffect(this,b,c,d))}}(d),function(a,b){function c(a,b,d){if("number"==typeof a&&"number"==typeof b)return a*(1-d)+b*d;if("boolean"==typeof a&&"boolean"==typeof b)return d<.5?a:b;if(a.length==b.length){for(var e=[],f=0;f<a.length;f++)e.push(c(a[f],b[f],d));return e}throw"Mismatched interpolation arguments "+a+":"+b}a.Interpolation=function(a,b,d){return function(e){return d(c(a,b,e))}}}(d,f),function(a,b,c){a.sequenceNumber=0;var d=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};b.Animation=function(b){this.id="",b&&b._id&&(this.id=b._id),this._sequenceNumber=a.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=b,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},b.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,b.timeline._animations.push(this))},_tickCurrentTime:function(a,b){a!=this._currentTime&&(this._currentTime=a,this._isFinished&&!b&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(a,!0),b.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var c=this.currentTime;this._playbackRate=a,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)),null!=c&&(this.currentTime=c)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),b.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){"function"==typeof b&&"finish"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if("finish"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var a=this._effect._target;return a._activeAnimations||(a._activeAnimations=[]),a._activeAnimations},_markTarget:function(){var a=this._targetAnimations();a.indexOf(this)===-1&&a.push(this)},_unmarkTarget:function(){var a=this._targetAnimations(),b=a.indexOf(this);b!==-1&&a.splice(b,1)}}}(c,d,f),function(a,b,c){function d(a){var b=j;j=[],a<q.currentTime&&(a=q.currentTime),q._animations.sort(e),q._animations=h(a,!0,q._animations)[0],b.forEach(function(b){b[1](a)}),g(),l=void 0}function e(a,b){return a._sequenceNumber-b._sequenceNumber}function f(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function g(){o.forEach(function(a){a()}),o.length=0}function h(a,c,d){p=!0,n=!1;var e=b.timeline;e.currentTime=a,m=!1;var f=[],g=[],h=[],i=[];return d.forEach(function(b){b._tick(a,c),b._inEffect?(g.push(b._effect),b._markTarget()):(f.push(b._effect),b._unmarkTarget()),b._needsTick&&(m=!0);var d=b._inEffect||b._needsTick;b._inTimeline=d,d?h.push(b):i.push(b)}),o.push.apply(o,f),o.push.apply(o,g),m&&requestAnimationFrame(function(){}),p=!1,[h,i]}var i=window.requestAnimationFrame,j=[],k=0;window.requestAnimationFrame=function(a){var b=k++;return 0==j.length&&i(d),j.push([b,a]),b},window.cancelAnimationFrame=function(a){j.forEach(function(b){b[0]==a&&(b[1]=function(){})})},f.prototype={_play:function(c){c._timing=a.normalizeTimingInput(c.timing);var d=new b.Animation(c);return d._idle=!1,d._timeline=this,this._animations.push(d),b.restart(),b.applyDirtiedAnimation(d),d}};var l=void 0,m=!1,n=!1;b.restart=function(){return m||(m=!0,requestAnimationFrame(function(){}),n=!0),n},b.applyDirtiedAnimation=function(a){if(!p){a._markTarget();var c=a._targetAnimations();c.sort(e);var d=h(b.timeline.currentTime,!1,c.slice())[1];d.forEach(function(a){var b=q._animations.indexOf(a);b!==-1&&q._animations.splice(b,1)}),g()}};var o=[],p=!1,q=new f;b.timeline=q}(c,d,f),function(a){function b(a,b){var c=a.exec(b);if(c)return c=a.ignoreCase?c[0].toLowerCase():c[0],[c,b.substr(c.length)]}function c(a,b){b=b.replace(/^\s*/,"");var c=a(b);if(c)return[c[0],c[1].replace(/^\s*/,"")]}function d(a,d,e){a=c.bind(null,a);for(var f=[];;){var g=a(e);if(!g)return[f,e];if(f.push(g[0]),e=g[1],g=b(d,e),!g||""==g[1])return[f,e];e=g[1]}}function e(a,b){for(var c=0,d=0;d<b.length&&(!/\s|,/.test(b[d])||0!=c);d++)if("("==b[d])c++;else if(")"==b[d]&&(c--,0==c&&d++,c<=0))break;var e=a(b.substr(0,d));return void 0==e?void 0:[e,b.substr(d)]}function f(a,b){for(var c=a,d=b;c&&d;)c>d?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){var d=a(c);return d?d:[b,c]}}function i(b,c){for(var d=[],e=0;e<b.length;e++){var f=a.consumeTrimmed(b[e],c);if(!f||""==f[0])return;void 0!==f[0]&&d.push(f[0]),c=f[1]}if(""==c)return d}function j(a,b,c,d,e){for(var g=[],h=[],i=[],j=f(d.length,e.length),k=0;k<j;k++){var l=b(d[k%d.length],e[k%e.length]);if(!l)return;g.push(l[0]),h.push(l[1]),i.push(l[2])}return[g,h,function(b){var d=b.map(function(a,b){return i[b](a)}).join(c);return a?a(d):d}]}function k(a,b,c){for(var d=[],e=[],f=[],g=0,h=0;h<c.length;h++)if("function"==typeof c[h]){var i=c[h](a[g],b[g++]);d.push(i[0]),e.push(i[1]),f.push(i[2])}else!function(a){d.push(!1),e.push(!1),f.push(function(){return c[a]})}(h);return[d,e,function(a){for(var b="",c=0;c<a.length;c++)b+=f[c](a[c]);return b}]}a.consumeToken=b,a.consumeTrimmed=c,a.consumeRepeated=d,a.consumeParenthesised=e,a.ignore=g,a.optional=h,a.consumeList=i,a.mergeNestedRepeated=j.bind(null,null),a.mergeWrappedNestedRepeated=j,a.mergeList=k}(d),function(a){function b(b){function c(b){var c=a.consumeToken(/^inset/i,b);if(c)return d.inset=!0,c;var c=a.consumeLengthOrPercent(b);if(c)return d.lengths.push(c[0]),c;var c=a.consumeColor(b);return c?(d.color=c[0],c):void 0}var d={inset:!1,lengths:[],color:null},e=a.consumeRepeated(c,/^/,b);if(e&&e[0].length)return[d,e[1]]}function c(c){var d=a.consumeRepeated(b,/^,/,c);if(d&&""==d[1])return d[0]}function d(b,c){for(;b.lengths.length<Math.max(b.lengths.length,c.lengths.length);)b.lengths.push({px:0});for(;c.lengths.length<Math.max(b.lengths.length,c.lengths.length);)c.lengths.push({px:0});if(b.inset==c.inset&&!!b.color==!!c.color){for(var d,e=[],f=[[],0],g=[[],0],h=0;h<b.lengths.length;h++){var i=a.mergeDimensions(b.lengths[h],c.lengths[h],2==h);f[0].push(i[0]),g[0].push(i[1]),e.push(i[2])}if(b.color&&c.color){var j=a.mergeColors(b.color,c.color);f[1]=j[0],g[1]=j[1],d=j[2]}return[f,g,function(a){for(var c=b.inset?"inset ":" ",f=0;f<e.length;f++)c+=e[f](a[0][f])+" ";return d&&(c+=d(a[1])),c}]}}function e(b,c,d,e){function f(a){return{inset:a,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var g=[],h=[],i=0;i<d.length||i<e.length;i++){var j=d[i]||f(e[i].inset),k=e[i]||f(d[i].inset);g.push(j),h.push(k)}return a.mergeNestedRepeated(b,c,g,h)}var f=e.bind(null,d,", ");a.addPropertiesHandler(c,f,["box-shadow","text-shadow"])}(d),function(a,b){function c(a){return a.toFixed(3).replace(".000","")}function d(a,b,c){return Math.min(b,Math.max(a,c))}function e(a){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(a))return Number(a)}function f(a,b){return[a,b,c]}function g(a,b){if(0!=a)return i(0,1/0)(a,b)}function h(a,b){return[a,b,function(a){return Math.round(d(1,1/0,a))}]}function i(a,b){return function(e,f){return[e,f,function(e){return c(d(a,b,e))}]}}function j(a,b){return[a,b,Math.round]}a.clamp=d,a.addPropertiesHandler(e,i(0,1/0),["border-image-width","line-height"]),a.addPropertiesHandler(e,i(0,1),["opacity","shape-image-threshold"]),a.addPropertiesHandler(e,g,["flex-grow","flex-shrink"]),a.addPropertiesHandler(e,h,["orphans","widows"]),a.addPropertiesHandler(e,j,["z-index"]),a.parseNumber=e,a.mergeNumbers=f,a.numberToString=c}(d,f),function(a,b){function c(a,b){if("visible"==a||"visible"==b)return[0,1,function(c){return c<=0?a:c>=1?b:"visible"}]}a.addPropertiesHandler(String,c,["visibility"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle="#000",f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle="#fff",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;d<3;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),"rgba("+b.join(",")+")"}]}var e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");e.width=e.height=1;var f=e.getContext("2d");a.addPropertiesHandler(c,d,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(a){return c[a]=null,"U"+a});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(a,b){return e(a,b,!0)}function e(b,c,d){var e,f=[];for(e in b)f.push(e);for(e in c)f.indexOf(e)<0&&f.push(e);return b=f.map(function(a){return b[a]||0}),c=f.map(function(a){return c[a]||0}),[b,c,function(b){var c=b.map(function(c,e){return 1==b.length&&d&&(c=Math.max(c,0)),a.numberToString(c)+f[e]}).join(" + ");return b.length>1?"calc("+c+")":c}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(a){var b=l(a);if(b&&""==b[1])return b[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\)/))],b);if(d&&4==d[0].length)return d[0]}function e(b,c){return"auto"==b||"auto"==c?[!0,!1,function(d){var e=d?b:c;if("auto"==e)return"auto";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return"rect("+a+")"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,", ");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,["clip"])}(d,f),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(b=b.toLowerCase().trim(),"none"==b)return[];for(var c,d=/\s*(\w+)\(([^)]*)\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(","),j=h[0];if(j.length<i.length)return;for(var k=[],o=0;o<j.length;o++){var p,q=i[o],r=j[o];if(p=q?{A:function(b){return"0"==b.trim()?m:a.parseAngle(b)},N:a.parseNumber,T:a.parseLengthOrPercent,L:a.parseLength}[r.toUpperCase()](q):{a:m,n:k[0],t:l}[r],void 0===p)return;k.push(p)}if(e.push({t:g,d:k}),d.lastIndex==b.length)return e}}function f(a){return a.toFixed(6).replace(".000000","")}function g(b,c){if(b.decompositionPair!==c){b.decompositionPair=c;var d=a.makeMatrixDecomposition(b)}if(c.decompositionPair!==b){c.decompositionPair=b;var e=a.makeMatrixDecomposition(c)}return null==d[0]||null==e[0]?[[!1],[!0],function(a){return a?c[0].d:b[0].d}]:(d[0].push(0),e[0].push(1),[d,e,function(b){var c=a.quat(d[0][3],e[0][3],b[5]),g=a.composeMatrix(b[0],b[1],b[2],c,b[4]),h=g.map(f).join(",");return h}])}function h(a){return a.replace(/[xy]/,"")}function i(a){return a.replace(/(x|y|z|3d)?$/,"3d")}function j(b,c){var d=a.makeMatrixDecomposition&&!0,e=!1;if(!b.length||!c.length){b.length||(e=!0,b=c,c=[]);for(var f=0;f<b.length;f++){var j=b[f].t,k=b[f].d,l="scale"==j.substr(0,5)?1:0;c.push({t:j,d:k.map(function(a){if("number"==typeof a)return l;var b={};for(var c in a)b[c]=l;return b})})}}var m=function(a,b){return"perspective"==a&&"perspective"==b||("matrix"==a||"matrix3d"==a)&&("matrix"==b||"matrix3d"==b)},o=[],p=[],q=[];if(b.length!=c.length){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]]}else for(var f=0;f<b.length;f++){var j,s=b[f].t,t=c[f].t,u=b[f].d,v=c[f].d,w=n[s],x=n[t];if(m(s,t)){if(!d)return;var r=g([b[f]],[c[f]]);o.push(r[0]),p.push(r[1]),q.push(["matrix",[r[2]]])}else{if(s==t)j=s;else if(w[2]&&x[2]&&h(s)==h(t))j=h(s),u=w[2](u),v=x[2](v);else{if(!w[1]||!x[1]||i(s)!=i(t)){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]];break}j=i(s),u=w[1](u),v=x[1](v)}for(var y=[],z=[],A=[],B=0;B<u.length;B++){var C="number"==typeof u[B]?a.mergeNumbers:a.mergeDimensions,r=C(u[B],v[B]);y[B]=r[0],z[B]=r[1],A.push(r[2])}o.push(y),p.push(z),q.push([j,A])}}if(e){var D=o;o=p,p=D}return[o,p,function(a){return a.map(function(a,b){var c=a.map(function(a,c){return q[b][1][c](a)}).join(",");return"matrix"==q[b][0]&&16==c.split(",").length&&(q[b][0]="matrix3d"),q[b][0]+"("+c+")"}).join(" ")}]}var k=null,l={px:0},m={deg:0},n={matrix:["NNNNNN",[k,k,0,0,k,k,0,0,0,0,1,0,k,k,0,1],d],matrix3d:["NNNNNNNNNNNNNNNN",d],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",c([k,k,1]),d],scalex:["N",c([k,1,1]),c([k,1])],scaley:["N",c([1,k,1]),c([1,k])],scalez:["N",c([1,1,k])],scale3d:["NNN",d],skew:["Aa",null,d],skewx:["A",null,c([k,m])],skewy:["A",null,c([m,k])],translate:["Tt",c([k,k,l]),d],translatex:["T",c([k,l,l]),c([k,l])],translatey:["T",c([l,k,l]),c([l,k])],translatez:["L",c([l,l,k])],translate3d:["TTL",d]};a.addPropertiesHandler(e,j,["transform"])}(d,f),function(a,b){function c(a,b){b.concat([a]).forEach(function(b){b in document.documentElement.style&&(d[a]=b)})}var d={};c("transform",["webkitTransform","msTransform"]),c("transformOrigin",["webkitTransformOrigin"]),c("perspective",["webkitPerspective"]),c("perspectiveOrigin",["webkitPerspectiveOrigin"]),a.propertyName=function(a){return d[a]||a}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var a;if(window.performance&&performance.now)var a=function(){return performance.now()};else var a=function(){return Date.now()};var b=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="cancel",this.bubbles=!1,this.cancelable=!1, +this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},c=window.Element.prototype.animate;window.Element.prototype.animate=function(d,e){var f=c.call(this,d,e);f._cancelHandlers=[],f.oncancel=null;var g=f.cancel;f.cancel=function(){g.call(this);var c=new b(this,null,a()),d=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){d.forEach(function(a){a.call(c.target,c)})},0)};var h=f.addEventListener;f.addEventListener=function(a,b){"function"==typeof b&&"cancel"==a?this._cancelHandlers.push(b):h.call(this,a,b)};var i=f.removeEventListener;return f.removeEventListener=function(a,b){if("cancel"==a){var c=this._cancelHandlers.indexOf(b);c>=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue("opacity"),f="0"==e?"1":"0";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue("opacity")==f}catch(a){}finally{c&&c.cancel()}if(!d){var g=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),g.call(this,b,c)}}}(c),!function(a,b,c){function d(a){var c=b.timeline;c.currentTime=a,c._discardAnimations(),0==c._animations.length?f=!1:requestAnimationFrame(d)}var e=window.requestAnimationFrame;window.requestAnimationFrame=function(a){return e(function(c){b.timeline._updateAnimationsPromises(),a(c),b.timeline._updateAnimationsPromises()})},b.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},b.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){b.animationsWithPromises=b.animationsWithPromises.filter(function(a){return a._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(a){return"finished"!=a.playState&&"idle"!=a.playState})},_play:function(a){var c=new b.Animation(a,this);return this._animations.push(c),b.restartWebAnimationsNextTick(),c._updatePromises(),c._animation.play(),c._updatePromises(),c},play:function(a){return a&&a.remove(),this._play(a)}};var f=!1;b.restartWebAnimationsNextTick=function(){f||(f=!0,requestAnimationFrame(d))};var g=new b.AnimationTimeline;b.timeline=g;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return g}})}catch(a){}try{window.document.timeline=g}catch(a){}}(c,e,f),function(a,b,c){b.animationsWithPromises=[],b.Animation=function(b,c){if(this.id="",b&&b._id&&(this.id=b._id),this.effect=b,b&&(b._animation=this),!c)throw new Error("Animation with null timeline is not supported");this._timeline=c,this._sequenceNumber=a.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},b.Animation.prototype={_updatePromises:function(){var a=this._oldPlayState,b=this.playState;return this._readyPromise&&b!==a&&("idle"==b?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==a?this._resolveReadyPromise():"pending"==b&&(this._readyPromise=void 0)),this._finishedPromise&&b!==a&&("idle"==b?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==b?this._resolveFinishedPromise():"finished"==a&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var a,c,d,e,f=!!this._animation;f&&(a=this.playbackRate,c=this._paused,d=this.startTime,e=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=b.newUnderlyingAnimationForKeyframeEffect(this.effect),b.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=b.newUnderlyingAnimationForGroup(this.effect),b.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&b.bindAnimationForCustomEffect(this),f&&(1!=a&&(this.playbackRate=a),null!==d?this.startTime=d:null!==e?this.currentTime=e:null!==this._holdTime&&(this.currentTime=this._holdTime),c&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var a=this.effect._timing.delay;this._childAnimations.forEach(function(c){this._arrangeChildren(c,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c.effect))}.bind(this))}},_setExternalAnimation:function(a){if(this.effect&&this._isGroup)for(var b=0;b<this.effect.children.length;b++)this.effect.children[b]._animation=a,this._childAnimations[b]._setExternalAnimation(a)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var a=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(c){var d=b.timeline._play(c);this._childAnimations.push(d),d.playbackRate=this.playbackRate,this._paused&&d.pause(),c._animation=this.effect._animation,this._arrangeChildren(d,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c))}.bind(this))}},_arrangeChildren:function(a,b){null===this.startTime?a.currentTime=this.currentTime-b/this.playbackRate:a.startTime!==this.startTime+b/this.playbackRate&&(a.startTime=this.startTime+b/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(b.animationsWithPromises.indexOf(this)==-1&&b.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(a,b){this._resolveFinishedPromise=function(){a(this)},this._rejectFinishedPromise=function(){b({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(b.animationsWithPromises.indexOf(this)==-1&&b.animationsWithPromises.push(this),this._readyPromise=new Promise(function(a,b){this._resolveReadyPromise=function(){a(this)},this._rejectReadyPromise=function(){b({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(a){"function"==typeof a?this._animation.onfinish=function(b){b.target=this,a.call(this,b)}.bind(this):this._animation.onfinish=a},get oncancel(){return this._animation.oncancel},set oncancel(a){"function"==typeof a?this._animation.oncancel=function(b){b.target=this,a.call(this,b)}.bind(this):this._animation.oncancel=a},get currentTime(){this._updatePromises();var a=this._animation.currentTime;return this._updatePromises(),a},set currentTime(a){this._updatePromises(),this._animation.currentTime=isFinite(a)?a:Math.sign(a)*Number.MAX_VALUE,this._register(),this._forEachChild(function(b,c){b.currentTime=a-c}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(a){this._updatePromises(),this._animation.startTime=isFinite(a)?a:Math.sign(a)*Number.MAX_VALUE,this._register(),this._forEachChild(function(b,c){b.startTime=a+c}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(a){this._updatePromises();var b=this.currentTime;this._animation.playbackRate=a,this._forEachChild(function(b){b.playbackRate=a}),null!==b&&(this.currentTime=b),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),b.awaitStartTime(this),this._forEachChild(function(a){var b=a.currentTime;a.play(),a.currentTime=b}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(a){a.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var a=this.currentTime;this._animation.reverse(),this._forEachChild(function(a){a.reverse()}),null!==a&&(this.currentTime=a),this._updatePromises()},addEventListener:function(a,b){var c=b;"function"==typeof b&&(c=function(a){a.target=this,b.call(this,a)}.bind(this),b._wrapper=c),this._animation.addEventListener(a,c)},removeEventListener:function(a,b){this._animation.removeEventListener(a,b&&b._wrapper||b)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(b){var c=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(a){b.call(this,a,c),this.effect instanceof window.SequenceEffect&&(c+=a.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var d=this.effect._timing,e=this.currentTime;null!==e&&(e=a.calculateIterationProgress(a.calculateActiveDuration(d),e,d)),(null==e||isNaN(e))&&this._removeChildAnimations()}}},window.Animation=b.Animation}(c,e,f),function(a,b,c){function d(b){this._frames=a.normalizeKeyframes(b)}function e(){for(var a=!1;i.length;){var b=i.shift();b._updateChildren(),a=!0}return a}var f=function(a){if(a._animation=void 0,a instanceof window.SequenceEffect||a instanceof window.GroupEffect)for(var b=0;b<a.children.length;b++)f(a.children[b])};b.removeMulti=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c];d._parent?(b.indexOf(d._parent)==-1&&b.push(d._parent),d._parent.children.splice(d._parent.children.indexOf(d),1),d._parent=null,f(d)):d._animation&&d._animation.effect==d&&(d._animation.cancel(),d._animation.effect=new KeyframeEffect(null,[]),d._animation._callback&&(d._animation._callback._animation=null),d._animation._rebuildUnderlyingAnimation(),f(d))}for(c=0;c<b.length;c++)b[c]._rebuild()},b.KeyframeEffect=function(b,c,e,f){return this.target=b,this._parent=null,e=a.numericTimingToObject(e),this._timingInput=a.cloneTimingInput(e),this._timing=a.normalizeTimingInput(e),this.timing=a.makeTiming(e,!1,this),this.timing._effect=this,"function"==typeof c?(a.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=c):this._normalizedKeyframes=new d(c),this._keyframes=c,this.activeDuration=a.calculateActiveDuration(this._timing),this._id=f,this},b.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(a){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=a,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var b=new KeyframeEffect(this.target,[],a.cloneTimingInput(this._timingInput),this._id);return b._normalizedKeyframes=this._normalizedKeyframes,b._keyframes=this._keyframes,b},remove:function(){b.removeMulti([this])}};var g=Element.prototype.animate;Element.prototype.animate=function(a,c){var d="";return c&&c.id&&(d=c.id),b.timeline._play(new b.KeyframeEffect(this,a,c,d))};var h=document.createElementNS("http://www.w3.org/1999/xhtml","div");b.newUnderlyingAnimationForKeyframeEffect=function(a){if(a){var b=a.target||h,c=a._keyframes;"function"==typeof c&&(c=[]);var d=a._timingInput;d.id=a._id}else var b=h,c=[],d=0;return g.apply(b,[c,d])},b.bindAnimationForKeyframeEffect=function(a){a.effect&&"function"==typeof a.effect._normalizedKeyframes&&b.bindAnimationForCustomEffect(a)};var i=[];b.awaitStartTime=function(a){null===a.startTime&&a._isGroup&&(0==i.length&&requestAnimationFrame(e),i.push(a))};var j=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){b.timeline._updateAnimationsPromises();var a=j.apply(this,arguments);return e()&&(a=j.apply(this,arguments)),b.timeline._updateAnimationsPromises(),a}}),window.KeyframeEffect=b.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(a){return null!==a.effect&&a.effect.target==this}.bind(this))}}(c,e,f),function(a,b,c){function d(a){a._registered||(a._registered=!0,g.push(a),h||(h=!0,requestAnimationFrame(e)))}function e(a){var b=g;g=[],b.sort(function(a,b){return a._sequenceNumber-b._sequenceNumber}),b=b.filter(function(a){a();var b=a._animation?a._animation.playState:"idle";return"running"!=b&&"pending"!=b&&(a._registered=!1),a._registered}),g.push.apply(g,b),g.length?(h=!0,requestAnimationFrame(e)):h=!1}var f=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);b.bindAnimationForCustomEffect=function(b){var c,e=b.effect.target,g="function"==typeof b.effect.getFrames();c=g?b.effect.getFrames():b.effect._onsample;var h=b.effect.timing,i=null;h=a.normalizeTimingInput(h);var j=function(){var d=j._animation?j._animation.currentTime:null;null!==d&&(d=a.calculateIterationProgress(a.calculateActiveDuration(h),d,h),isNaN(d)&&(d=null)),d!==i&&(g?c(d,e,b.effect):c(d,b.effect,b.effect._animation)),i=d};j._animation=b,j._registered=!1,j._sequenceNumber=f++,b._callback=j,d(j)};var g=[],h=!1;b.Animation.prototype._register=function(){this._callback&&d(this._callback)}}(c,e,f),function(a,b,c){function d(a){return a._timing.delay+a.activeDuration+a._timing.endDelay}function e(b,c,d){this._id=d,this._parent=null,this.children=b||[],this._reparent(this.children),c=a.numericTimingToObject(c),this._timingInput=a.cloneTimingInput(c),this._timing=a.normalizeTimingInput(c,!0),this.timing=a.makeTiming(c,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){e.apply(this,arguments)},window.GroupEffect=function(){e.apply(this,arguments)},e.prototype={_isAncestor:function(a){for(var b=this;null!==b;){if(b==a)return!0;b=b._parent}return!1},_rebuild:function(){for(var a=this;a;)"auto"===a.timing.duration&&(a._timing.duration=a.activeDuration),a=a._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(a){b.removeMulti(a);for(var c=0;c<a.length;c++)a[c]._parent=this},_putChild:function(a,b){for(var c=b?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",d=0;d<a.length;d++)if(this._isAncestor(a[d]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:c};for(var d=0;d<a.length;d++)b?this.children.push(a[d]):this.children.unshift(a[d]);this._reparent(a),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var b=a.cloneTimingInput(this._timingInput),c=[],d=0;d<this.children.length;d++)c.push(this.children[d].clone());return this instanceof GroupEffect?new GroupEffect(c,b):new SequenceEffect(c,b)},remove:function(){b.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(e.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var a=0;return this.children.forEach(function(b){a+=d(b)}),Math.max(a,0)}}),window.GroupEffect.prototype=Object.create(e.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var a=0;return this.children.forEach(function(b){a=Math.max(a,d(b))}),a}}),b.newUnderlyingAnimationForGroup=function(c){var d,e=null,f=function(b){var c=d._wrapper;if(c&&"pending"!=c.playState&&c.effect)return null==b?void c._removeChildAnimations():0==b&&c.playbackRate<0&&(e||(e=a.normalizeTimingInput(c.effect.timing)),b=a.calculateIterationProgress(a.calculateActiveDuration(e),-1,e),isNaN(b)||null==b)?(c._forEachChild(function(a){a.currentTime=-1}),void c._removeChildAnimations()):void 0},g=new KeyframeEffect(null,[],c._timing,c._id);return g.onsample=f,d=b.timeline._play(g)},b.bindAnimationForGroup=function(a){a._animation._wrapper=a,a._isGroup=!0,b.awaitStartTime(a),a._constructChildAnimations(),a._setExternalAnimation(a)},b.groupChildDuration=d}(c,e,f),b.true=a}({},function(){return this}());
diff --git a/third_party/web-animations-js/sources/web-animations-next-lite.min.js.map b/third_party/web-animations-js/sources/web-animations-next-lite.min.js.map index 0352ea27..49ff9a1 100644 --- a/third_party/web-animations-js/sources/web-animations-next-lite.min.js.map +++ b/third_party/web-animations-js/sources/web-animations-next-lite.min.js.map
@@ -1 +1 @@ -{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js","src/timeline.js","src/web-animations-next-animation.js","src/keyframe-effect-constructor.js","src/effect-callback.js","src/group-constructors.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","toTimingFunction","easing","styleForCleaning","document","createElement","style","animationTimingFunction","validatedEasing","TypeError","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","delay","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateScaledActiveTime","activeTime","startOffset","calculateIterationTime","iterationDuration","scaledActiveTime","Infinity","iterationStart","calculateCurrentIteration","iterationTime","floor","calculateTransformedTime","currentIteration","currentIterationIsOdd","currentDirectionIsForwards","direction","directedTime","timeFraction","calculateTimeFraction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","endDelay","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","code","INVALID_MODIFICATION_ERR","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","rotate","makePropertySpecificKeyframeGroups","rotate3d","propertySpecificKeyframeGroups","scaley","_","scalez","propertySpecificKeyframe","cast","groupName","group","scope","concat","candidate","makeInterpolations","interpolations","alias","startTime","endTime","startValue","animate","oncancel","now","performance","AnimationCancelEvent","target","currentTime","timelineTime","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","timeStamp","originalElementAnimate","Element","options","animation","call","_cancelHandlers","originalCancel","cancel","event","handlers","setTimeout","handler","originalAddEventListener","addEventListener","originalRemoveEventListener","removeEventListener","index","splice","element","documentElement","animated","originalOpacity","getComputedStyle","getPropertyValue","testOpacity","opacity","error","webAnimationsNextTick","t","timeline","_discardAnimations","_animations","ticking","requestAnimationFrame","originalRequestAnimationFrame","_updateAnimationsPromises","AnimationTimeline","getAnimations","animationsWithPromises","_updatePromises","playState","_play","Animation","restartWebAnimationsNextTick","play","remove","defineProperty","configurable","get","e","id","_id","_timeline","_sequenceNumber","sequenceNumber","_holdTime","_paused","_isGroup","_childAnimations","_callback","_oldPlayState","oldPlayState","newPlayState","_readyPromise","_rejectReadyPromise","_resolveReadyPromise","_finishedPromise","_rejectFinishedPromise","_resolveFinishedPromise","oldPlaybackRate","oldPaused","oldStartTime","oldCurrentTime","hadUnderlying","_wrapper","KeyframeEffect","newUnderlyingAnimationForKeyframeEffect","bindAnimationForKeyframeEffect","SequenceEffect","GroupEffect","newUnderlyingAnimationForGroup","bindAnimationForGroup","_onsample","bindAnimationForCustomEffect","pause","_updateChildren","childAnimation","_arrangeChildren","groupChildDuration","bind","_setExternalAnimation","children","_constructChildAnimations","_removeChildAnimations","child","finished","Promise","resolve","reject","ABORT_ERR","ready","onfinish","v","sign","MAX_VALUE","_register","_forEachChild","awaitStartTime","time","finish","reverse","wrapped","pop","KeyframeList","_frames","updatePendingGroups","updated","pendingGroups","shift","disassociate","removeMulti","effects","oldParents","_parent","_rebuild","_normalizedKeyframes","_keyframes","getFrames","onsample","callback","parent","nullTarget","keyframeEffect","groupAnimation","originalGetComputedStyle","enumerable","arguments","register","_registered","callbacks","tick","updating","left","right","effectFunction","isKeyframeEffect","last","node","constructor","_reparent","_isAncestor","newChildren","_putChild","args","isAppend","HIERARCHY_REQUEST_ERR","unshift","append","prepend","firstChild","lastChild","clonedTiming","clonedChildren","create","total","max","underlyingAnimation","ticker","tf","underlyingEffect","exports"],"mappings":"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","file":"web-animations-next-lite.min.js"} \ No newline at end of file +{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js","src/timeline.js","src/web-animations-next-animation.js","src/keyframe-effect-constructor.js","src/effect-callback.js","src/group-constructors.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start_gradient","end_gradient","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","normalizeEasing","easing","styleForCleaning","document","createElement","style","animationTimingFunction","normalizedEasing","TypeError","parseEasingFunction","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","endTime","delay","endDelay","min","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateOverallProgress","iterationDuration","activeTime","iterationStart","overallProgress","calculateSimpleIterationProgress","simpleIterationProgress","Infinity","calculateCurrentIteration","floor","calculateDirectedProgress","playbackDirection","currentIteration","currentDirection","calculateIterationProgress","directedProgress","direction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","isNotAnimatable","lastIndexOf","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","matrixModulesLoaded","merged","makePropertySpecificKeyframeGroups","rightResult","propertySpecificKeyframeGroups","typeTo3D","rightArgs","propertySpecificKeyframe","groupName","group","tmp","leftResult","list","args","makeInterpolations","interpolations","types","join","px","startIndex","endIndex","startOffset","endOffset","applyTo","applyFrom","cast","easingFunction","interpolation","scope","propertyInterpolation","_","leftInterpolation","rightInterpolation","convertEffectInput","alias","fraction","offsetFraction","animate","oncancel","now","performance","AnimationCancelEvent","target","currentTime","timelineTime","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","timeStamp","originalElementAnimate","Element","options","animation","call","_cancelHandlers","originalCancel","cancel","event","handlers","concat","setTimeout","handler","originalAddEventListener","addEventListener","originalRemoveEventListener","removeEventListener","index","splice","element","documentElement","animated","originalOpacity","getComputedStyle","getPropertyValue","testOpacity","opacity","error","webAnimationsNextTick","t","timeline","_discardAnimations","_animations","ticking","requestAnimationFrame","originalRequestAnimationFrame","_updateAnimationsPromises","AnimationTimeline","getAnimations","animationsWithPromises","_updatePromises","playState","_play","Animation","restartWebAnimationsNextTick","play","remove","defineProperty","configurable","get","e","id","_id","_timeline","_sequenceNumber","sequenceNumber","_holdTime","_paused","_isGroup","_childAnimations","_callback","_oldPlayState","oldPlayState","newPlayState","_readyPromise","_rejectReadyPromise","_resolveReadyPromise","_finishedPromise","_rejectFinishedPromise","_resolveFinishedPromise","oldPlaybackRate","oldPaused","oldStartTime","oldCurrentTime","hadUnderlying","startTime","_wrapper","KeyframeEffect","newUnderlyingAnimationForKeyframeEffect","bindAnimationForKeyframeEffect","SequenceEffect","GroupEffect","newUnderlyingAnimationForGroup","bindAnimationForGroup","_onsample","bindAnimationForCustomEffect","pause","_updateChildren","childAnimation","_arrangeChildren","groupChildDuration","bind","_setExternalAnimation","children","_constructChildAnimations","_removeChildAnimations","child","finished","Promise","resolve","reject","ABORT_ERR","ready","onfinish","v","sign","MAX_VALUE","_register","_forEachChild","awaitStartTime","time","finish","reverse","wrapped","pop","KeyframeList","_frames","updatePendingGroups","updated","pendingGroups","shift","disassociate","removeMulti","effects","oldParents","_parent","_rebuild","_normalizedKeyframes","_keyframes","getFrames","onsample","callback","parent","nullTarget","keyframeEffect","groupAnimation","originalGetComputedStyle","enumerable","arguments","register","_registered","callbacks","tick","updating","left","right","effectFunction","isKeyframeEffect","last","node","constructor","_reparent","_isAncestor","newChildren","_putChild","isAppend","HIERARCHY_REQUEST_ERR","unshift","append","prepend","firstChild","lastChild","clonedTiming","clonedChildren","create","total","max","underlyingAnimation","ticker","tf","underlyingEffect","exports"],"mappings":"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","file":"web-animations-next-lite.min.js"} \ No newline at end of file
diff --git a/third_party/web-animations-js/sources/web-animations-next.min.js b/third_party/web-animations-js/sources/web-animations-next.min.js index 4907396..85467a2 100644 --- a/third_party/web-animations-js/sources/web-animations-next.min.js +++ b/third_party/web-animations-js/sources/web-animations-next.min.js
@@ -12,5 +12,5 @@ // See the License for the specific language governing permissions and // limitations under the License. -!function(a,b){var c={},d={},e={},f=null;!function(a,b){function c(a){if("number"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=w}function e(){return a.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function f(b,c,e){var f=new d;return c&&(f.fill="both",f.duration="auto"),"number"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if("auto"!=b[c]){if(("number"==typeof f[c]||"duration"==c)&&("number"!=typeof b[c]||isNaN(b[c])))return;if("fill"==c&&-1==u.indexOf(b[c]))return;if("direction"==c&&-1==v.indexOf(b[c]))return;if("playbackRate"==c&&1!==b[c]&&a.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return"number"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return 0>a||a>1||0>c||c>1?w:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(0==e||1==e)return e;for(var g=0,h=1;;){var i=(g+h)/2,j=f(a,c,i);if(Math.abs(e-j)<1e-4)return f(b,d,i);e>j?g=i:h=i}}}function j(a,b){return function(c){if(c>=1)return 1;var d=1/a;return c+=b*d,c-c%d}}function k(a){B||(B=document.createElement("div").style),B.animationTimingFunction="",B.animationTimingFunction=a;var b=B.animationTimingFunction;if(""==b&&e())throw new TypeError(a+" is not a valid value for easing");var c=D.exec(b);if(c)return i.apply(this,c.slice(1).map(Number));var d=E.exec(b);if(d)return j(Number(d[1]),{start:x,middle:y,end:z}[d[2]]);var f=A[b];return f?f:w}function l(a){return Math.abs(m(a)/a.playbackRate)}function m(a){return a.duration*a.iterations}function n(a,b,c){return null==b?F:b<c.delay?G:b>=c.delay+a?H:I}function o(a,b,c,d,e){switch(d){case G:return"backwards"==b||"both"==b?0:null;case I:return c-e;case H:return"forwards"==b||"both"==b?a:null;case F:return null}}function p(a,b,c,d){return(d.playbackRate<0?b-a:b)*d.playbackRate+c}function q(a,b,c,d,e){return c===1/0||c===-(1/0)||c-d==b&&e.iterations&&(e.iterations+e.iterationStart)%1==0?a:c%a}function r(a,b,c,d){return 0===c?0:b==a?d.iterationStart+d.iterations-1:Math.floor(c/a)}function s(a,b,c,d){var e=a%2>=1,f="normal"==d.direction||d.direction==(e?"alternate-reverse":"alternate"),g=f?c:b-c,h=g/b;return b*d._easingFunction(h)}function t(a,b,c){var d=n(a,b,c),e=o(a,c.fill,b,d,c.delay);if(null===e)return null;if(0===a)return d===G?0:1;var f=c.iterationStart*c.duration,g=p(a,e,f,c),h=q(c.duration,m(c),g,f,c),i=r(c.duration,h,g,c);return s(i,c.duration,h,c)/c.duration}var u="backwards|forwards|both|none".split("|"),v="reverse|alternate|alternate-reverse".split("|"),w=function(a){return a};d.prototype={_setMember:function(b,c){this["_"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember("delay",a)},get delay(){return this._delay},set endDelay(a){this._setMember("endDelay",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember("fill",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||0>a)&&e())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",a)},get iterationStart(){return this._iterationStart},set duration(a){if("auto"!=a&&(isNaN(a)||0>a)&&e())throw new TypeError("duration must be non-negative or auto, received: "+a);this._setMember("duration",a)},get duration(){return this._duration},set direction(a){this._setMember("direction",a)},get direction(){return this._direction},set easing(a){this._easingFunction=k(a),this._setMember("easing",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||0>a)&&e())throw new TypeError("iterations must be non-negative, received: "+a);this._setMember("iterations",a)},get iterations(){return this._iterations}};var x=1,y=.5,z=0,A={ease:i(.25,.1,.25,1),"ease-in":i(.42,0,1,1),"ease-out":i(0,0,.58,1),"ease-in-out":i(.42,0,.58,1),"step-start":j(1,x),"step-middle":j(1,y),"step-end":j(1,z)},B=null,C="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",D=new RegExp("cubic-bezier\\("+C+","+C+","+C+","+C+"\\)"),E=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,F=0,G=1,H=2,I=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=l,a.calculateTimeFraction=t,a.calculatePhase=n,a.toTimingFunction=k}(c,f),function(a,b){function c(a,b){return a in j?j[a][b]||b:b}function d(a,b,d){var e=g[a];if(e){h.style[a]=b;for(var f in e){var i=e[f],j=h.style[i];d[i]=c(i,j)}}else d[a]=c(a,b)}function e(a){var b=[];for(var c in a)if(!(c in["easing","offset","composite"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;f>g;g++)e={},"offset"in a?e.offset=a.offset:1==f?e.offset=1:e.offset=g/(f-1),"easing"in a&&(e.easing=a.easing),"composite"in a&&(e.composite=a.composite),e[c]=d[g],b.push(e)}return b.sort(function(a,b){return a.offset-b.offset}),b}function f(a){function b(){var a=c.length;null==c[a-1].offset&&(c[a-1].offset=1),a>1&&null==c[0].offset&&(c[0].offset=0);for(var b=0,d=c[0].offset,e=1;a>e;e++){var f=c[e].offset;if(null!=f){for(var g=1;e-b>g;g++)c[b+g].offset=d+(f-d)*g/(e-b);b=e,d=f}}}if(null==a)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&a[Symbol.iterator]&&(a=Array.from(a)),Array.isArray(a)||(a=e(a));for(var c=a.map(function(a){var b={};for(var c in a){var e=a[c];if("offset"==c){if(null!=e&&(e=Number(e),!isFinite(e)))throw new TypeError("keyframe offsets must be numbers.")}else{if("composite"==c)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};e=""+e}d(c,e,b)}return void 0==b.offset&&(b.offset=null),b}),f=!0,g=-(1/0),h=0;h<c.length;h++){var i=c[h].offset;if(null!=i){if(g>i)throw{code:DOMException.INVALID_MODIFICATION_ERR,name:"InvalidModificationError",message:"Keyframes are not loosely sorted by offset. Sort or specify offsets."};g=i}else f=!1}return c=c.filter(function(a){return a.offset>=0&&a.offset<=1}),f||b(),c}var g={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},h=document.createElementNS("http://www.w3.org/1999/xhtml","div"),i={thin:"1px",medium:"3px",thick:"5px"},j={borderBottomWidth:i,borderLeftWidth:i,borderRightWidth:i,borderTopWidth:i,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:i,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};a.convertToArrayForm=e,a.normalizeKeyframes=f}(c,f),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?"are":"is",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),h>g?(a in b||console.warn("Web Animations: "+a+" "+f+" deprecated and will stop working on "+h.toDateString()+". "+d),b[a]=!0,!1):!0},a.deprecated=function(b,c,d,e){var f=e?"are":"is";if(a.isDeprecated(b,c,d,e))throw new Error(b+" "+f+" no longer supported. "+d)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(c){void 0===a[c]&&(b=!0)})),!b)return}!function(a,b,c){function d(a){for(var b={},c=0;c<a.length;c++)for(var d in a[c])if("offset"!=d&&"easing"!=d&&"composite"!=d){var e={offset:a[c].offset,easing:a[c].easing,value:a[c][d]};b[d]=b[d]||[],b[d].push(e)}for(var f in b){var g=b[f];if(0!=g[0].offset||1!=g[g.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return b}function e(c){var d=[];for(var e in c)for(var f=c[e],g=0;g<f.length-1;g++){var h=f[g].offset,i=f[g+1].offset,j=f[g].value,k=f[g+1].value,l=f[g].easing;h==i&&(1==i?j=k:k=j),d.push({startTime:h,endTime:i,easing:a.toTimingFunction(l?l:"linear"),property:e,interpolation:b.propertyInterpolation(e,j,k)})}return d.sort(function(a,b){return a.startTime-b.startTime}),d}b.convertEffectInput=function(c){var f=a.normalizeKeyframes(c),g=d(f),h=e(g);return function(a,c){if(null!=c)h.filter(function(a){return 0>=c&&0==a.startTime||c>=1&&1==a.endTime||c>=a.startTime&&c<=a.endTime}).forEach(function(d){var e=c-d.startTime,f=d.endTime-d.startTime,g=0==f?0:d.easing(e/f);b.apply(a,d.property,d.interpolation(g))});else for(var d in g)"offset"!=d&&"easing"!=d&&"composite"!=d&&b.clear(a,d)}}}(c,d,f),function(a,b,c){function d(a){return a.replace(/-(.)/g,function(a,b){return b.toUpperCase()})}function e(a,b,c){h[c]=h[c]||[],h[c].push([a,b])}function f(a,b,c){for(var f=0;f<c.length;f++){var g=c[f];e(a,b,d(g))}}function g(c,e,f){var g=c;/-/.test(c)&&!a.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(g=d(c)),"initial"!=e&&"initial"!=f||("initial"==e&&(e=i[g]),"initial"==f&&(f=i[g]));for(var j=e==f?[]:h[g],k=0;j&&k<j.length;k++){var l=j[k][0](e),m=j[k][0](f);if(void 0!==l&&void 0!==m){var n=j[k][1](l,m);if(n){var o=b.Interpolation.apply(null,n);return function(a){return 0==a?e:1==a?f:o(a)}}}}return b.Interpolation(!1,!0,function(a){return a?f:e})}var h={};b.addPropertiesHandler=f;var i={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};b.propertyInterpolation=g}(c,d,f),function(a,b,c){function d(b){var c=a.calculateActiveDuration(b),d=function(d){return a.calculateTimeFraction(c,d,b)};return d._totalDuration=b.delay+c+b.endDelay,d._isCurrent=function(d){var e=a.calculatePhase(c,d,b);return e===PhaseActive||e===PhaseBefore},d}b.KeyframeEffect=function(c,e,f,g){var h,i=d(a.normalizeTimingInput(f)),j=b.convertEffectInput(e),k=function(){j(c,h)};return k._update=function(a){return h=i(a),null!==h},k._clear=function(){j(c,null)},k._hasSameTarget=function(a){return c===a},k._isCurrent=i._isCurrent,k._totalDuration=i._totalDuration,k._id=g,k},b.NullEffect=function(a){var b=function(){a&&(a(),a=null)};return b._update=function(){return null},b._totalDuration=0,b._isCurrent=function(){return!1},b._hasSameTarget=function(){return!1},b}}(c,d,f),function(a,b){function c(a,b,c){c.enumerable=!0,c.configurable=!0,Object.defineProperty(a,b,c)}function d(a){this._surrogateStyle=document.createElementNS("http://www.w3.org/1999/xhtml","div").style,this._style=a.style,this._length=0,this._isAnimatedProperty={};for(var b=0;b<this._style.length;b++){var c=this._style[b];this._surrogateStyle[c]=this._style[c]}this._updateIndices()}function e(a){if(!a._webAnimationsPatchedStyle){var b=new d(a);try{c(a,"style",{get:function(){return b}})}catch(e){a.style._set=function(b,c){a.style[b]=c},a.style._clear=function(b){a.style[b]=""}}a._webAnimationsPatchedStyle=a.style}}var f={cssText:1,length:1,parentRule:1},g={getPropertyCSSValue:1,getPropertyPriority:1,getPropertyValue:1,item:1,removeProperty:1,setProperty:1},h={removeProperty:1,setProperty:1};d.prototype={get cssText(){return this._surrogateStyle.cssText},set cssText(a){for(var b={},c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;this._surrogateStyle.cssText=a,this._updateIndices();for(var c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;for(var d in b)this._isAnimatedProperty[d]||this._style.setProperty(d,this._surrogateStyle.getPropertyValue(d))},get length(){return this._surrogateStyle.length},get parentRule(){return this._style.parentRule},_updateIndices:function(){for(;this._length<this._surrogateStyle.length;)Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,get:function(a){return function(){return this._surrogateStyle[a]}}(this._length)}),this._length++;for(;this._length>this._surrogateStyle.length;)this._length--,Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,value:void 0})},_set:function(a,b){this._style[a]=b,this._isAnimatedProperty[a]=!0},_clear:function(a){this._style[a]=this._surrogateStyle[a],delete this._isAnimatedProperty[a]}};for(var i in g)d.prototype[i]=function(a,b){return function(){var c=this._surrogateStyle[a].apply(this._surrogateStyle,arguments);return b&&(this._isAnimatedProperty[arguments[0]]||this._style[a].apply(this._style,arguments),this._updateIndices()),c}}(i,i in h);for(var j in document.documentElement.style)j in f||j in g||!function(a){c(d.prototype,a,{get:function(){return this._surrogateStyle[a]},set:function(b){this._surrogateStyle[a]=b,this._updateIndices(),this._isAnimatedProperty[a]||(this._style[a]=b)}})}(j);a.apply=function(b,c,d){e(b),b.style._set(a.propertyName(c),d)},a.clear=function(b,c){b._webAnimationsPatchedStyle&&b.style._clear(a.propertyName(c))}}(d,f),function(a){window.Element.prototype.animate=function(b,c){var d="";return c&&c.id&&(d=c.id),a.timeline._play(a.KeyframeEffect(this,b,c,d))}}(d),function(a,b){function c(a,b,d){if("number"==typeof a&&"number"==typeof b)return a*(1-d)+b*d;if("boolean"==typeof a&&"boolean"==typeof b)return.5>d?a:b;if(a.length==b.length){for(var e=[],f=0;f<a.length;f++)e.push(c(a[f],b[f],d));return e}throw"Mismatched interpolation arguments "+a+":"+b}a.Interpolation=function(a,b,d){return function(e){return d(c(a,b,e))}}}(d,f),function(a,b){function c(a,b,c){return Math.max(Math.min(a,c),b)}function d(b,d,e){var f=a.dot(b,d);f=c(f,-1,1);var g=[];if(1===f)g=b;else for(var h=Math.acos(f),i=1*Math.sin(e*h)/Math.sqrt(1-f*f),j=0;4>j;j++)g.push(b[j]*(Math.cos(e*h)-f*i)+d[j]*i);return g}var e=function(){function a(a,b){for(var c=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],d=0;4>d;d++)for(var e=0;4>e;e++)for(var f=0;4>f;f++)c[d][e]+=b[d][f]*a[f][e];return c}function b(a){return 0==a[0][2]&&0==a[0][3]&&0==a[1][2]&&0==a[1][3]&&0==a[2][0]&&0==a[2][1]&&1==a[2][2]&&0==a[2][3]&&0==a[3][2]&&1==a[3][3]}function c(c,d,e,f,g){for(var h=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],i=0;4>i;i++)h[i][3]=g[i];for(var i=0;3>i;i++)for(var j=0;3>j;j++)h[3][i]+=c[j]*h[j][i];var k=f[0],l=f[1],m=f[2],n=f[3],o=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];o[0][0]=1-2*(l*l+m*m),o[0][1]=2*(k*l-m*n),o[0][2]=2*(k*m+l*n),o[1][0]=2*(k*l+m*n),o[1][1]=1-2*(k*k+m*m),o[1][2]=2*(l*m-k*n),o[2][0]=2*(k*m-l*n),o[2][1]=2*(l*m+k*n),o[2][2]=1-2*(k*k+l*l),h=a(h,o);var p=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];e[2]&&(p[2][1]=e[2],h=a(h,p)),e[1]&&(p[2][1]=0,p[2][0]=e[0],h=a(h,p)),e[0]&&(p[2][0]=0,p[1][0]=e[0],h=a(h,p));for(var i=0;3>i;i++)for(var j=0;3>j;j++)h[i][j]*=d[i];return b(h)?[h[0][0],h[0][1],h[1][0],h[1][1],h[3][0],h[3][1]]:h[0].concat(h[1],h[2],h[3])}return c}();a.composeMatrix=e,a.quat=d}(d,f),function(a,b,c){a.sequenceNumber=0;var d=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};b.Animation=function(b){this.id="",b&&b._id&&(this.id=b._id),this._sequenceNumber=a.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=b,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},b.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,b.timeline._animations.push(this))},_tickCurrentTime:function(a,b){a!=this._currentTime&&(this._currentTime=a,this._isFinished&&!b&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._tickCurrentTime(a,!0),b.invalidateEffects()))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.invalidateEffects())},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var b=this.currentTime;this._playbackRate=a,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&this.play(),null!=b&&(this.currentTime=b)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._currentTime=this._playbackRate>0?0:this._totalDuration,this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.invalidateEffects()},pause:function(){this._isFinished||this._paused||this._idle||(this._currentTimePending=!0),this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.invalidateEffects())},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._finishedFlag=!0,this.currentTime=0,this._startTime=null,this._effect._update(null),b.invalidateEffects())},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){"function"==typeof b&&"finish"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if("finish"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag}}}(c,d,f),function(a,b,c){function d(a){var b=j;j=[],a<p.currentTime&&(a=p.currentTime),h(a,!0),b.forEach(function(b){b[1](a)}),g(),l=void 0}function e(a,b){return a._sequenceNumber-b._sequenceNumber}function f(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function g(){o.forEach(function(a){a()}),o.length=0}function h(a,c){n=!1;var d=b.timeline;d.currentTime=a,d._animations.sort(e),m=!1;var f=d._animations;d._animations=[];var g=[],h=[];f=f.filter(function(b){b._tick(a,c),b._inEffect?h.push(b._effect):g.push(b._effect),b._needsTick&&(m=!0);var d=b._inEffect||b._needsTick;return b._inTimeline=d,d}),o.push.apply(o,g),o.push.apply(o,h),d._animations.push.apply(d._animations,f),m&&requestAnimationFrame(function(){})}var i=window.requestAnimationFrame,j=[],k=0;window.requestAnimationFrame=function(a){var b=k++;return 0==j.length&&i(d),j.push([b,a]),b},window.cancelAnimationFrame=function(a){j.forEach(function(b){b[0]==a&&(b[1]=function(){})})},f.prototype={_play:function(c){c._timing=a.normalizeTimingInput(c.timing);var d=new b.Animation(c);return d._idle=!1,d._timeline=this,this._animations.push(d),b.restart(),b.invalidateEffects(),d}};var l=void 0,m=!1,n=!1;b.restart=function(){return m||(m=!0,requestAnimationFrame(function(){}),n=!0),n},b.invalidateEffects=function(){h(b.timeline.currentTime,!1),g()};var o=[],p=new f;b.timeline=p}(c,d,f),function(a,b){function c(a,b){for(var c=0,d=0;d<a.length;d++)c+=a[d]*b[d];return c}function d(a,b){return[a[0]*b[0]+a[4]*b[1]+a[8]*b[2]+a[12]*b[3],a[1]*b[0]+a[5]*b[1]+a[9]*b[2]+a[13]*b[3],a[2]*b[0]+a[6]*b[1]+a[10]*b[2]+a[14]*b[3],a[3]*b[0]+a[7]*b[1]+a[11]*b[2]+a[15]*b[3],a[0]*b[4]+a[4]*b[5]+a[8]*b[6]+a[12]*b[7],a[1]*b[4]+a[5]*b[5]+a[9]*b[6]+a[13]*b[7],a[2]*b[4]+a[6]*b[5]+a[10]*b[6]+a[14]*b[7],a[3]*b[4]+a[7]*b[5]+a[11]*b[6]+a[15]*b[7],a[0]*b[8]+a[4]*b[9]+a[8]*b[10]+a[12]*b[11],a[1]*b[8]+a[5]*b[9]+a[9]*b[10]+a[13]*b[11],a[2]*b[8]+a[6]*b[9]+a[10]*b[10]+a[14]*b[11],a[3]*b[8]+a[7]*b[9]+a[11]*b[10]+a[15]*b[11],a[0]*b[12]+a[4]*b[13]+a[8]*b[14]+a[12]*b[15],a[1]*b[12]+a[5]*b[13]+a[9]*b[14]+a[13]*b[15],a[2]*b[12]+a[6]*b[13]+a[10]*b[14]+a[14]*b[15],a[3]*b[12]+a[7]*b[13]+a[11]*b[14]+a[15]*b[15]]}function e(a){var b=a.rad||0,c=a.deg||0,d=a.grad||0,e=a.turn||0,f=(c/360+d/400+e)*(2*Math.PI)+b;return f}function f(a){switch(a.t){case"rotatex":var b=e(a.d[0]);return[1,0,0,0,0,Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1];case"rotatey":var b=e(a.d[0]);return[Math.cos(b),0,-Math.sin(b),0,0,1,0,0,Math.sin(b),0,Math.cos(b),0,0,0,0,1];case"rotate":case"rotatez":var b=e(a.d[0]);return[Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1,0,0,0,0,1];case"rotate3d":var c=a.d[0],d=a.d[1],f=a.d[2],b=e(a.d[3]),g=c*c+d*d+f*f;if(0===g)c=1,d=0,f=0;else if(1!==g){var h=Math.sqrt(g);c/=h,d/=h,f/=h}var i=Math.sin(b/2),j=i*Math.cos(b/2),k=i*i;return[1-2*(d*d+f*f)*k,2*(c*d*k+f*j),2*(c*f*k-d*j),0,2*(c*d*k-f*j),1-2*(c*c+f*f)*k,2*(d*f*k+c*j),0,2*(c*f*k+d*j),2*(d*f*k-c*j),1-2*(c*c+d*d)*k,0,0,0,0,1];case"scale":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,1,0,0,0,0,1];case"scalex":return[a.d[0],0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];case"scaley":return[1,0,0,0,0,a.d[0],0,0,0,0,1,0,0,0,0,1];case"scalez":return[1,0,0,0,0,1,0,0,0,0,a.d[0],0,0,0,0,1];case"scale3d":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,a.d[2],0,0,0,0,1];case"skew":var l=e(a.d[0]),m=e(a.d[1]);return[1,Math.tan(m),0,0,Math.tan(l),1,0,0,0,0,1,0,0,0,0,1];case"skewx":var b=e(a.d[0]);return[1,0,0,0,Math.tan(b),1,0,0,0,0,1,0,0,0,0,1];case"skewy":var b=e(a.d[0]);return[1,Math.tan(b),0,0,0,1,0,0,0,0,1,0,0,0,0,1];case"translate":var c=a.d[0].px||0,d=a.d[1].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,0,1];case"translatex":var c=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,0,0,1];case"translatey":var d=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,d,0,1];case"translatez":var f=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,f,1];case"translate3d":var c=a.d[0].px||0,d=a.d[1].px||0,f=a.d[2].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,f,1];case"perspective":var n=a.d[0].px?-1/a.d[0].px:0;return[1,0,0,0,0,1,0,0,0,0,1,n,0,0,0,1];case"matrix":return[a.d[0],a.d[1],0,0,a.d[2],a.d[3],0,0,0,0,1,0,a.d[4],a.d[5],0,1];case"matrix3d":return a.d}}function g(a){return 0===a.length?[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]:a.map(f).reduce(d)}function h(a){return[i(g(a))]}var i=function(){function a(a){return a[0][0]*a[1][1]*a[2][2]+a[1][0]*a[2][1]*a[0][2]+a[2][0]*a[0][1]*a[1][2]-a[0][2]*a[1][1]*a[2][0]-a[1][2]*a[2][1]*a[0][0]-a[2][2]*a[0][1]*a[1][0]}function b(b){for(var c=1/a(b),d=b[0][0],e=b[0][1],f=b[0][2],g=b[1][0],h=b[1][1],i=b[1][2],j=b[2][0],k=b[2][1],l=b[2][2],m=[[(h*l-i*k)*c,(f*k-e*l)*c,(e*i-f*h)*c,0],[(i*j-g*l)*c,(d*l-f*j)*c,(f*g-d*i)*c,0],[(g*k-h*j)*c,(j*e-d*k)*c,(d*h-e*g)*c,0]],n=[],o=0;3>o;o++){for(var p=0,q=0;3>q;q++)p+=b[3][q]*m[q][o];n.push(p)}return n.push(1),m.push(n),m}function d(a){return[[a[0][0],a[1][0],a[2][0],a[3][0]],[a[0][1],a[1][1],a[2][1],a[3][1]],[a[0][2],a[1][2],a[2][2],a[3][2]],[a[0][3],a[1][3],a[2][3],a[3][3]]]}function e(a,b){for(var c=[],d=0;4>d;d++){for(var e=0,f=0;4>f;f++)e+=a[f]*b[f][d];c.push(e)}return c}function f(a){var b=g(a);return[a[0]/b,a[1]/b,a[2]/b]}function g(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2])}function h(a,b,c,d){return[c*a[0]+d*b[0],c*a[1]+d*b[1],c*a[2]+d*b[2]]}function i(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function j(j){var k=[j.slice(0,4),j.slice(4,8),j.slice(8,12),j.slice(12,16)];if(1!==k[3][3])return null;for(var l=[],m=0;4>m;m++)l.push(k[m].slice());for(var m=0;3>m;m++)l[m][3]=0;if(0===a(l))return!1;var n,o=[];if(k[0][3]||k[1][3]||k[2][3]){o.push(k[0][3]),o.push(k[1][3]),o.push(k[2][3]),o.push(k[3][3]);var p=b(l),q=d(p);n=e(o,q)}else n=[0,0,0,1];var r=k[3].slice(0,3),s=[];s.push(k[0].slice(0,3));var t=[];t.push(g(s[0])),s[0]=f(s[0]);var u=[];s.push(k[1].slice(0,3)),u.push(c(s[0],s[1])),s[1]=h(s[1],s[0],1,-u[0]),t.push(g(s[1])),s[1]=f(s[1]),u[0]/=t[1],s.push(k[2].slice(0,3)),u.push(c(s[0],s[2])),s[2]=h(s[2],s[0],1,-u[1]),u.push(c(s[1],s[2])),s[2]=h(s[2],s[1],1,-u[2]),t.push(g(s[2])),s[2]=f(s[2]),u[1]/=t[2],u[2]/=t[2];var v=i(s[1],s[2]);if(c(s[0],v)<0)for(var m=0;3>m;m++)t[m]*=-1,s[m][0]*=-1,s[m][1]*=-1,s[m][2]*=-1;var w,x,y=s[0][0]+s[1][1]+s[2][2]+1;return y>1e-4?(w=.5/Math.sqrt(y),x=[(s[2][1]-s[1][2])*w,(s[0][2]-s[2][0])*w,(s[1][0]-s[0][1])*w,.25/w]):s[0][0]>s[1][1]&&s[0][0]>s[2][2]?(w=2*Math.sqrt(1+s[0][0]-s[1][1]-s[2][2]),x=[.25*w,(s[0][1]+s[1][0])/w,(s[0][2]+s[2][0])/w,(s[2][1]-s[1][2])/w]):s[1][1]>s[2][2]?(w=2*Math.sqrt(1+s[1][1]-s[0][0]-s[2][2]),x=[(s[0][1]+s[1][0])/w,.25*w,(s[1][2]+s[2][1])/w,(s[0][2]-s[2][0])/w]):(w=2*Math.sqrt(1+s[2][2]-s[0][0]-s[1][1]),x=[(s[0][2]+s[2][0])/w,(s[1][2]+s[2][1])/w,.25*w,(s[1][0]-s[0][1])/w]),[r,t,u,x,n]}return j}();a.dot=c,a.makeMatrixDecomposition=h}(d,f),function(a){function b(a,b){var c=a.exec(b);return c?(c=a.ignoreCase?c[0].toLowerCase():c[0],[c,b.substr(c.length)]):void 0}function c(a,b){b=b.replace(/^\s*/,"");var c=a(b);return c?[c[0],c[1].replace(/^\s*/,"")]:void 0}function d(a,d,e){a=c.bind(null,a);for(var f=[];;){var g=a(e);if(!g)return[f,e];if(f.push(g[0]),e=g[1],g=b(d,e),!g||""==g[1])return[f,e];e=g[1]}}function e(a,b){for(var c=0,d=0;d<b.length&&(!/\s|,/.test(b[d])||0!=c);d++)if("("==b[d])c++;else if(")"==b[d]&&(c--,0==c&&d++,0>=c))break;var e=a(b.substr(0,d));return void 0==e?void 0:[e,b.substr(d)]}function f(a,b){for(var c=a,d=b;c&&d;)c>d?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){var d=a(c);return d?d:[b,c]}}function i(b,c){for(var d=[],e=0;e<b.length;e++){var f=a.consumeTrimmed(b[e],c);if(!f||""==f[0])return;void 0!==f[0]&&d.push(f[0]),c=f[1]}return""==c?d:void 0}function j(a,b,c,d,e){for(var g=[],h=[],i=[],j=f(d.length,e.length),k=0;j>k;k++){var l=b(d[k%d.length],e[k%e.length]);if(!l)return;g.push(l[0]),h.push(l[1]),i.push(l[2])}return[g,h,function(b){var d=b.map(function(a,b){return i[b](a)}).join(c);return a?a(d):d}]}function k(a,b,c){for(var d=[],e=[],f=[],g=0,h=0;h<c.length;h++)if("function"==typeof c[h]){var i=c[h](a[g],b[g++]);d.push(i[0]),e.push(i[1]),f.push(i[2])}else!function(a){d.push(!1),e.push(!1),f.push(function(){return c[a]})}(h);return[d,e,function(a){for(var b="",c=0;c<a.length;c++)b+=f[c](a[c]);return b}]}a.consumeToken=b,a.consumeTrimmed=c,a.consumeRepeated=d,a.consumeParenthesised=e,a.ignore=g,a.optional=h,a.consumeList=i,a.mergeNestedRepeated=j.bind(null,null),a.mergeWrappedNestedRepeated=j,a.mergeList=k}(d),function(a){function b(b){function c(b){var c=a.consumeToken(/^inset/i,b);if(c)return d.inset=!0,c;var c=a.consumeLengthOrPercent(b);if(c)return d.lengths.push(c[0]),c;var c=a.consumeColor(b);return c?(d.color=c[0],c):void 0}var d={inset:!1,lengths:[],color:null},e=a.consumeRepeated(c,/^/,b);return e&&e[0].length?[d,e[1]]:void 0}function c(c){var d=a.consumeRepeated(b,/^,/,c);return d&&""==d[1]?d[0]:void 0}function d(b,c){for(;b.lengths.length<Math.max(b.lengths.length,c.lengths.length);)b.lengths.push({px:0});for(;c.lengths.length<Math.max(b.lengths.length,c.lengths.length);)c.lengths.push({px:0});if(b.inset==c.inset&&!!b.color==!!c.color){for(var d,e=[],f=[[],0],g=[[],0],h=0;h<b.lengths.length;h++){var i=a.mergeDimensions(b.lengths[h],c.lengths[h],2==h);f[0].push(i[0]),g[0].push(i[1]),e.push(i[2])}if(b.color&&c.color){var j=a.mergeColors(b.color,c.color);f[1]=j[0],g[1]=j[1],d=j[2]}return[f,g,function(a){for(var c=b.inset?"inset ":" ",f=0;f<e.length;f++)c+=e[f](a[0][f])+" ";return d&&(c+=d(a[1])),c}]}}function e(b,c,d,e){function f(a){return{inset:a,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var g=[],h=[],i=0;i<d.length||i<e.length;i++){var j=d[i]||f(e[i].inset),k=e[i]||f(d[i].inset);g.push(j),h.push(k)}return a.mergeNestedRepeated(b,c,g,h)}var f=e.bind(null,d,", ");a.addPropertiesHandler(c,f,["box-shadow","text-shadow"])}(d),function(a,b){function c(a){return a.toFixed(3).replace(".000","")}function d(a,b,c){return Math.min(b,Math.max(a,c))}function e(a){return/^\s*[-+]?(\d*\.)?\d+\s*$/.test(a)?Number(a):void 0}function f(a,b){return[a,b,c]}function g(a,b){return 0!=a?i(0,1/0)(a,b):void 0}function h(a,b){return[a,b,function(a){return Math.round(d(1,1/0,a))}]}function i(a,b){return function(e,f){return[e,f,function(e){return c(d(a,b,e))}]}}function j(a,b){return[a,b,Math.round]}a.clamp=d,a.addPropertiesHandler(e,i(0,1/0),["border-image-width","line-height"]),a.addPropertiesHandler(e,i(0,1),["opacity","shape-image-threshold"]),a.addPropertiesHandler(e,g,["flex-grow","flex-shrink"]),a.addPropertiesHandler(e,h,["orphans","widows"]),a.addPropertiesHandler(e,j,["z-index"]),a.parseNumber=e,a.mergeNumbers=f,a.numberToString=c}(d,f),function(a,b){function c(a,b){return"visible"==a||"visible"==b?[0,1,function(c){return 0>=c?a:c>=1?b:"visible"}]:void 0}a.addPropertiesHandler(String,c,["visibility"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle="#000", -f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle="#fff",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;3>d;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),"rgba("+b.join(",")+")"}]}var e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");e.width=e.height=1;var f=e.getContext("2d");a.addPropertiesHandler(c,d,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(a){return c[a]=null,"U"+a});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(a,b){return e(a,b,!0)}function e(b,c,d){var e,f=[];for(e in b)f.push(e);for(e in c)f.indexOf(e)<0&&f.push(e);return b=f.map(function(a){return b[a]||0}),c=f.map(function(a){return c[a]||0}),[b,c,function(b){var c=b.map(function(c,e){return 1==b.length&&d&&(c=Math.max(c,0)),a.numberToString(c)+f[e]}).join(" + ");return b.length>1?"calc("+c+")":c}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(a){var b=l(a);return b&&""==b[1]?b[0]:void 0},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\)/))],b);return d&&4==d[0].length?d[0]:void 0}function e(b,c){return"auto"==b||"auto"==c?[!0,!1,function(d){var e=d?b:c;if("auto"==e)return"auto";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return"rect("+a+")"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,", ");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,["clip"])}(d,f),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(b=b.toLowerCase().trim(),"none"==b)return[];for(var c,d=/\s*(\w+)\(([^)]*)\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(","),j=h[0];if(j.length<i.length)return;for(var k=[],o=0;o<j.length;o++){var p,q=i[o],r=j[o];if(p=q?{A:function(b){return"0"==b.trim()?m:a.parseAngle(b)},N:a.parseNumber,T:a.parseLengthOrPercent,L:a.parseLength}[r.toUpperCase()](q):{a:m,n:k[0],t:l}[r],void 0===p)return;k.push(p)}if(e.push({t:g,d:k}),d.lastIndex==b.length)return e}}function f(a){return a.toFixed(6).replace(".000000","")}function g(b,c){if(b.decompositionPair!==c){b.decompositionPair=c;var d=a.makeMatrixDecomposition(b)}if(c.decompositionPair!==b){c.decompositionPair=b;var e=a.makeMatrixDecomposition(c)}return null==d[0]||null==e[0]?[[!1],[!0],function(a){return a?c[0].d:b[0].d}]:(d[0].push(0),e[0].push(1),[d,e,function(b){var c=a.quat(d[0][3],e[0][3],b[5]),g=a.composeMatrix(b[0],b[1],b[2],c,b[4]),h=g.map(f).join(",");return h}])}function h(a){return a.replace(/[xy]/,"")}function i(a){return a.replace(/(x|y|z|3d)?$/,"3d")}function j(b,c){var d=a.makeMatrixDecomposition&&!0,e=!1;if(!b.length||!c.length){b.length||(e=!0,b=c,c=[]);for(var f=0;f<b.length;f++){var j=b[f].t,k=b[f].d,l="scale"==j.substr(0,5)?1:0;c.push({t:j,d:k.map(function(a){if("number"==typeof a)return l;var b={};for(var c in a)b[c]=l;return b})})}}var m=function(a,b){return"perspective"==a&&"perspective"==b||("matrix"==a||"matrix3d"==a)&&("matrix"==b||"matrix3d"==b)},o=[],p=[],q=[];if(b.length!=c.length){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]]}else for(var f=0;f<b.length;f++){var j,s=b[f].t,t=c[f].t,u=b[f].d,v=c[f].d,w=n[s],x=n[t];if(m(s,t)){if(!d)return;var r=g([b[f]],[c[f]]);o.push(r[0]),p.push(r[1]),q.push(["matrix",[r[2]]])}else{if(s==t)j=s;else if(w[2]&&x[2]&&h(s)==h(t))j=h(s),u=w[2](u),v=x[2](v);else{if(!w[1]||!x[1]||i(s)!=i(t)){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]];break}j=i(s),u=w[1](u),v=x[1](v)}for(var y=[],z=[],A=[],B=0;B<u.length;B++){var C="number"==typeof u[B]?a.mergeNumbers:a.mergeDimensions,r=C(u[B],v[B]);y[B]=r[0],z[B]=r[1],A.push(r[2])}o.push(y),p.push(z),q.push([j,A])}}if(e){var D=o;o=p,p=D}return[o,p,function(a){return a.map(function(a,b){var c=a.map(function(a,c){return q[b][1][c](a)}).join(",");return"matrix"==q[b][0]&&16==c.split(",").length&&(q[b][0]="matrix3d"),q[b][0]+"("+c+")"}).join(" ")}]}var k=null,l={px:0},m={deg:0},n={matrix:["NNNNNN",[k,k,0,0,k,k,0,0,0,0,1,0,k,k,0,1],d],matrix3d:["NNNNNNNNNNNNNNNN",d],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",c([k,k,1]),d],scalex:["N",c([k,1,1]),c([k,1])],scaley:["N",c([1,k,1]),c([1,k])],scalez:["N",c([1,1,k])],scale3d:["NNN",d],skew:["Aa",null,d],skewx:["A",null,c([k,m])],skewy:["A",null,c([m,k])],translate:["Tt",c([k,k,l]),d],translatex:["T",c([k,l,l]),c([k,l])],translatey:["T",c([l,k,l]),c([l,k])],translatez:["L",c([l,l,k])],translate3d:["TTL",d]};a.addPropertiesHandler(e,j,["transform"])}(d,f),function(a){function b(a){var b=Number(a);return isNaN(b)||100>b||b>900||b%100!==0?void 0:b}function c(b){return b=100*Math.round(b/100),b=a.clamp(100,900,b),400===b?"normal":700===b?"bold":String(b)}function d(a,b){return[a,b,c]}a.addPropertiesHandler(b,d,["font-weight"])}(d),function(a){function b(a){var b={};for(var c in a)b[c]=-a[c];return b}function c(b){return a.consumeToken(/^(left|center|right|top|bottom)\b/i,b)||a.consumeLengthOrPercent(b)}function d(b,d){var e=a.consumeRepeated(c,/^/,d);if(e&&""==e[1]){var f=e[0];if(f[0]=f[0]||"center",f[1]=f[1]||"center",3==b&&(f[2]=f[2]||{px:0}),f.length==b){if(/top|bottom/.test(f[0])||/left|right/.test(f[1])){var h=f[0];f[0]=f[1],f[1]=h}if(/left|right|center|Object/.test(f[0])&&/top|bottom|center|Object/.test(f[1]))return f.map(function(a){return"object"==typeof a?a:g[a]})}}}function e(d){var e=a.consumeRepeated(c,/^/,d);if(e){for(var f=e[0],h=[{"%":50},{"%":50}],i=0,j=!1,k=0;k<f.length;k++){var l=f[k];"string"==typeof l?(j=/bottom|right/.test(l),i={left:0,right:0,center:i,top:1,bottom:1}[l],h[i]=g[l],"center"==l&&i++):(j&&(l=b(l),l["%"]=(l["%"]||0)+100),h[i]=l,i++,j=!1)}return[h,e[1]]}}function f(b){var c=a.consumeRepeated(e,/^,/,b);return c&&""==c[1]?c[0]:void 0}var g={left:{"%":0},center:{"%":50},right:{"%":100},top:{"%":0},bottom:{"%":100}},h=a.mergeNestedRepeated.bind(null,a.mergeDimensions," ");a.addPropertiesHandler(d.bind(null,3),h,["transform-origin"]),a.addPropertiesHandler(d.bind(null,2),h,["perspective-origin"]),a.consumePosition=e,a.mergeOffsetList=h;var i=a.mergeNestedRepeated.bind(null,h,", ");a.addPropertiesHandler(f,i,["background-position","object-position"])}(d),function(a){function b(b){var c=a.consumeToken(/^circle/,b);if(c&&c[0])return["circle"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),d,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\)/))],c[1]));var f=a.consumeToken(/^ellipse/,b);if(f&&f[0])return["ellipse"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),e,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\)/))],f[1]));var g=a.consumeToken(/^polygon/,b);return g&&g[0]?["polygon"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),a.optional(a.consumeToken.bind(void 0,/^nonzero\s*,|^evenodd\s*,/),"nonzero,"),a.consumeSizePairList,a.ignore(a.consumeToken.bind(void 0,/^\)/))],g[1])):void 0}function c(b,c){return b[0]===c[0]?"circle"==b[0]?a.mergeList(b.slice(1),c.slice(1),["circle(",a.mergeDimensions," at ",a.mergeOffsetList,")"]):"ellipse"==b[0]?a.mergeList(b.slice(1),c.slice(1),["ellipse(",a.mergeNonNegativeSizePair," at ",a.mergeOffsetList,")"]):"polygon"==b[0]&&b[1]==c[1]?a.mergeList(b.slice(2),c.slice(2),["polygon(",b[1],g,")"]):void 0:void 0}var d=a.consumeParenthesised.bind(null,a.parseLengthOrPercent),e=a.consumeRepeated.bind(void 0,d,/^/),f=a.mergeNestedRepeated.bind(void 0,a.mergeDimensions," "),g=a.mergeNestedRepeated.bind(void 0,f,",");a.addPropertiesHandler(b,c,["shape-outside"])}(d),function(a,b){function c(a,b){b.concat([a]).forEach(function(b){b in document.documentElement.style&&(d[a]=b)})}var d={};c("transform",["webkitTransform","msTransform"]),c("transformOrigin",["webkitTransformOrigin"]),c("perspective",["webkitPerspective"]),c("perspectiveOrigin",["webkitPerspectiveOrigin"]),a.propertyName=function(a){return d[a]||a}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var a;if(window.performance&&performance.now)var a=function(){return performance.now()};else var a=function(){return Date.now()};var b=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="cancel",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},c=window.Element.prototype.animate;window.Element.prototype.animate=function(d,e){var f=c.call(this,d,e);f._cancelHandlers=[],f.oncancel=null;var g=f.cancel;f.cancel=function(){g.call(this);var c=new b(this,null,a()),d=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){d.forEach(function(a){a.call(c.target,c)})},0)};var h=f.addEventListener;f.addEventListener=function(a,b){"function"==typeof b&&"cancel"==a?this._cancelHandlers.push(b):h.call(this,a,b)};var i=f.removeEventListener;return f.removeEventListener=function(a,b){if("cancel"==a){var c=this._cancelHandlers.indexOf(b);c>=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue("opacity"),f="0"==e?"1":"0";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue("opacity")==f}catch(g){}finally{c&&c.cancel()}if(!d){var h=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),h.call(this,b,c)}}}(c),!function(a,b,c){function d(a){var b=window.document.timeline;b.currentTime=a,b._discardAnimations(),0==b._animations.length?f=!1:requestAnimationFrame(d)}var e=window.requestAnimationFrame;window.requestAnimationFrame=function(a){return e(function(b){window.document.timeline._updateAnimationsPromises(),a(b),window.document.timeline._updateAnimationsPromises()})},b.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},b.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){b.animationsWithPromises=b.animationsWithPromises.filter(function(a){return a._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(a){return"finished"!=a.playState&&"idle"!=a.playState})},_play:function(a){var c=new b.Animation(a,this);return this._animations.push(c),b.restartWebAnimationsNextTick(),c._updatePromises(),c._animation.play(),c._updatePromises(),c},play:function(a){return a&&a.remove(),this._play(a)}};var f=!1;b.restartWebAnimationsNextTick=function(){f||(f=!0,requestAnimationFrame(d))};var g=new b.AnimationTimeline;b.timeline=g;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return g}})}catch(h){}try{window.document.timeline=g}catch(h){}}(c,e,f),function(a,b,c){b.animationsWithPromises=[],b.Animation=function(b,c){if(this.id="",b&&b._id&&(this.id=b._id),this.effect=b,b&&(b._animation=this),!c)throw new Error("Animation with null timeline is not supported");this._timeline=c,this._sequenceNumber=a.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},b.Animation.prototype={_updatePromises:function(){var a=this._oldPlayState,b=this.playState;return this._readyPromise&&b!==a&&("idle"==b?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==a?this._resolveReadyPromise():"pending"==b&&(this._readyPromise=void 0)),this._finishedPromise&&b!==a&&("idle"==b?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==b?this._resolveFinishedPromise():"finished"==a&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var a,c,d,e,f=!!this._animation;f&&(a=this.playbackRate,c=this._paused,d=this.startTime,e=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=b.newUnderlyingAnimationForKeyframeEffect(this.effect),b.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=b.newUnderlyingAnimationForGroup(this.effect),b.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&b.bindAnimationForCustomEffect(this),f&&(1!=a&&(this.playbackRate=a),null!==d?this.startTime=d:null!==e?this.currentTime=e:null!==this._holdTime&&(this.currentTime=this._holdTime),c&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var a=this.effect._timing.delay;this._childAnimations.forEach(function(c){this._arrangeChildren(c,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c.effect))}.bind(this))}},_setExternalAnimation:function(a){if(this.effect&&this._isGroup)for(var b=0;b<this.effect.children.length;b++)this.effect.children[b]._animation=a,this._childAnimations[b]._setExternalAnimation(a)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var a=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(c){var d=window.document.timeline._play(c);this._childAnimations.push(d),d.playbackRate=this.playbackRate,this._paused&&d.pause(),c._animation=this.effect._animation,this._arrangeChildren(d,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c))}.bind(this))}},_arrangeChildren:function(a,b){null===this.startTime?a.currentTime=this.currentTime-b/this.playbackRate:a.startTime!==this.startTime+b/this.playbackRate&&(a.startTime=this.startTime+b/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(-1==b.animationsWithPromises.indexOf(this)&&b.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(a,b){this._resolveFinishedPromise=function(){a(this)},this._rejectFinishedPromise=function(){b({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(-1==b.animationsWithPromises.indexOf(this)&&b.animationsWithPromises.push(this),this._readyPromise=new Promise(function(a,b){this._resolveReadyPromise=function(){a(this)},this._rejectReadyPromise=function(){b({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(a){"function"==typeof a?this._animation.onfinish=function(b){b.target=this,a.call(this,b)}.bind(this):this._animation.onfinish=a},get oncancel(){return this._animation.oncancel},set oncancel(a){"function"==typeof a?this._animation.oncancel=function(b){b.target=this,a.call(this,b)}.bind(this):this._animation.oncancel=a},get currentTime(){this._updatePromises();var a=this._animation.currentTime;return this._updatePromises(),a},set currentTime(a){this._updatePromises(),this._animation.currentTime=isFinite(a)?a:Math.sign(a)*Number.MAX_VALUE,this._register(),this._forEachChild(function(b,c){b.currentTime=a-c}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(a){this._updatePromises(),this._animation.startTime=isFinite(a)?a:Math.sign(a)*Number.MAX_VALUE,this._register(),this._forEachChild(function(b,c){b.startTime=a+c}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(a){this._updatePromises();var b=this.currentTime;this._animation.playbackRate=a,this._forEachChild(function(b){b.playbackRate=a}),"paused"!=this.playState&&"idle"!=this.playState&&this.play(),null!==b&&(this.currentTime=b),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),-1==this._timeline._animations.indexOf(this)&&this._timeline._animations.push(this),this._register(),b.awaitStartTime(this),this._forEachChild(function(a){var b=a.currentTime;a.play(),a.currentTime=b}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(a){a.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var a=this.currentTime;this._animation.reverse(),this._forEachChild(function(a){a.reverse()}),null!==a&&(this.currentTime=a),this._updatePromises()},addEventListener:function(a,b){var c=b;"function"==typeof b&&(c=function(a){a.target=this,b.call(this,a)}.bind(this),b._wrapper=c),this._animation.addEventListener(a,c)},removeEventListener:function(a,b){this._animation.removeEventListener(a,b&&b._wrapper||b)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(b){var c=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(a){b.call(this,a,c),this.effect instanceof window.SequenceEffect&&(c+=a.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var d=this.effect._timing,e=this.currentTime;null!==e&&(e=a.calculateTimeFraction(a.calculateActiveDuration(d),e,d)),(null==e||isNaN(e))&&this._removeChildAnimations()}}},window.Animation=b.Animation}(c,e,f),function(a,b,c){function d(b){this._frames=a.normalizeKeyframes(b)}function e(){for(var a=!1;i.length;){var b=i.shift();b._updateChildren(),a=!0}return a}var f=function(a){if(a._animation=void 0,a instanceof window.SequenceEffect||a instanceof window.GroupEffect)for(var b=0;b<a.children.length;b++)f(a.children[b])};b.removeMulti=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c];d._parent?(-1==b.indexOf(d._parent)&&b.push(d._parent),d._parent.children.splice(d._parent.children.indexOf(d),1),d._parent=null,f(d)):d._animation&&d._animation.effect==d&&(d._animation.cancel(),d._animation.effect=new KeyframeEffect(null,[]),d._animation._callback&&(d._animation._callback._animation=null),d._animation._rebuildUnderlyingAnimation(),f(d))}for(c=0;c<b.length;c++)b[c]._rebuild()},b.KeyframeEffect=function(b,c,e,f){return this.target=b,this._parent=null,e=a.numericTimingToObject(e),this._timingInput=a.cloneTimingInput(e),this._timing=a.normalizeTimingInput(e),this.timing=a.makeTiming(e,!1,this),this.timing._effect=this,"function"==typeof c?(a.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=c):this._normalizedKeyframes=new d(c),this._keyframes=c,this.activeDuration=a.calculateActiveDuration(this._timing),this._id=f,this},b.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(a){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=a,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var b=new KeyframeEffect(this.target,[],a.cloneTimingInput(this._timingInput),this._id);return b._normalizedKeyframes=this._normalizedKeyframes,b._keyframes=this._keyframes,b},remove:function(){b.removeMulti([this])}};var g=Element.prototype.animate;Element.prototype.animate=function(a,c){var d="";return c&&c.id&&(d=c.id),b.timeline._play(new b.KeyframeEffect(this,a,c,d))};var h=document.createElementNS("http://www.w3.org/1999/xhtml","div");b.newUnderlyingAnimationForKeyframeEffect=function(a){if(a){var b=a.target||h,c=a._keyframes;"function"==typeof c&&(c=[]);var d=a._timingInput;d.id=a._id}else var b=h,c=[],d=0;return g.apply(b,[c,d])},b.bindAnimationForKeyframeEffect=function(a){a.effect&&"function"==typeof a.effect._normalizedKeyframes&&b.bindAnimationForCustomEffect(a)};var i=[];b.awaitStartTime=function(a){null===a.startTime&&a._isGroup&&(0==i.length&&requestAnimationFrame(e),i.push(a))};var j=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){window.document.timeline._updateAnimationsPromises();var a=j.apply(this,arguments);return e()&&(a=j.apply(this,arguments)),window.document.timeline._updateAnimationsPromises(),a}}),window.KeyframeEffect=b.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(a){return null!==a.effect&&a.effect.target==this}.bind(this))}}(c,e,f),function(a,b,c){function d(a){a._registered||(a._registered=!0,g.push(a),h||(h=!0,requestAnimationFrame(e)))}function e(a){var b=g;g=[],b.sort(function(a,b){return a._sequenceNumber-b._sequenceNumber}),b=b.filter(function(a){a();var b=a._animation?a._animation.playState:"idle";return"running"!=b&&"pending"!=b&&(a._registered=!1),a._registered}),g.push.apply(g,b),g.length?(h=!0,requestAnimationFrame(e)):h=!1}var f=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);b.bindAnimationForCustomEffect=function(b){var c,e=b.effect.target,g="function"==typeof b.effect.getFrames();c=g?b.effect.getFrames():b.effect._onsample;var h=b.effect.timing,i=null;h=a.normalizeTimingInput(h);var j=function(){var d=j._animation?j._animation.currentTime:null;null!==d&&(d=a.calculateTimeFraction(a.calculateActiveDuration(h),d,h),isNaN(d)&&(d=null)),d!==i&&(g?c(d,e,b.effect):c(d,b.effect,b.effect._animation)),i=d};j._animation=b,j._registered=!1,j._sequenceNumber=f++,b._callback=j,d(j)};var g=[],h=!1;b.Animation.prototype._register=function(){this._callback&&d(this._callback)}}(c,e,f),function(a,b,c){function d(a){return a._timing.delay+a.activeDuration+a._timing.endDelay}function e(b,c,d){this._id=d,this._parent=null,this.children=b||[],this._reparent(this.children),c=a.numericTimingToObject(c),this._timingInput=a.cloneTimingInput(c),this._timing=a.normalizeTimingInput(c,!0),this.timing=a.makeTiming(c,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){e.apply(this,arguments)},window.GroupEffect=function(){e.apply(this,arguments)},e.prototype={_isAncestor:function(a){for(var b=this;null!==b;){if(b==a)return!0;b=b._parent}return!1},_rebuild:function(){for(var a=this;a;)"auto"===a.timing.duration&&(a._timing.duration=a.activeDuration),a=a._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(a){b.removeMulti(a);for(var c=0;c<a.length;c++)a[c]._parent=this},_putChild:function(a,b){for(var c=b?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",d=0;d<a.length;d++)if(this._isAncestor(a[d]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:c};for(var d=0;d<a.length;d++)b?this.children.push(a[d]):this.children.unshift(a[d]);this._reparent(a),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var b=a.cloneTimingInput(this._timingInput),c=[],d=0;d<this.children.length;d++)c.push(this.children[d].clone());return this instanceof GroupEffect?new GroupEffect(c,b):new SequenceEffect(c,b)},remove:function(){b.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(e.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var a=0;return this.children.forEach(function(b){a+=d(b)}),Math.max(a,0)}}),window.GroupEffect.prototype=Object.create(e.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var a=0;return this.children.forEach(function(b){a=Math.max(a,d(b))}),a}}),b.newUnderlyingAnimationForGroup=function(c){var d,e=null,f=function(b){var c=d._wrapper;return c&&"pending"!=c.playState&&c.effect?null==b?void c._removeChildAnimations():0==b&&c.playbackRate<0&&(e||(e=a.normalizeTimingInput(c.effect.timing)),b=a.calculateTimeFraction(a.calculateActiveDuration(e),-1,e),isNaN(b)||null==b)?(c._forEachChild(function(a){a.currentTime=-1}),void c._removeChildAnimations()):void 0:void 0},g=new KeyframeEffect(null,[],c._timing,c._id);return g.onsample=f,d=b.timeline._play(g)},b.bindAnimationForGroup=function(a){a._animation._wrapper=a,a._isGroup=!0,b.awaitStartTime(a),a._constructChildAnimations(),a._setExternalAnimation(a)},b.groupChildDuration=d}(c,e,f),b["true"]=a}({},function(){return this}()); +!function(a,b){var c={},d={},e={},f=null;!function(a,b){function c(a){if("number"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=x}function e(){return a.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function f(b,c,e){var f=new d;return c&&(f.fill="both",f.duration="auto"),"number"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if("auto"!=b[c]){if(("number"==typeof f[c]||"duration"==c)&&("number"!=typeof b[c]||isNaN(b[c])))return;if("fill"==c&&v.indexOf(b[c])==-1)return;if("direction"==c&&w.indexOf(b[c])==-1)return;if("playbackRate"==c&&1!==b[c]&&a.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return"number"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return a<0||a>1||c<0||c>1?x:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(e<=0){var g=0;return a>0?g=b/a:!b&&c>0&&(g=d/c),g*e}if(e>=1){var h=0;return c<1?h=(d-1)/(c-1):1==c&&a<1&&(h=(b-1)/(a-1)),1+h*(e-1)}for(var i=0,j=1;i<j;){var k=(i+j)/2,l=f(a,c,k);if(Math.abs(e-l)<1e-5)return f(b,d,k);l<e?i=k:j=k}return f(b,d,k)}}function j(a,b){return function(c){if(c>=1)return 1;var d=1/a;return c+=b*d,c-c%d}}function k(a){C||(C=document.createElement("div").style),C.animationTimingFunction="",C.animationTimingFunction=a;var b=C.animationTimingFunction;if(""==b&&e())throw new TypeError(a+" is not a valid value for easing");return b}function l(a){if("linear"==a)return x;var b=E.exec(a);if(b)return i.apply(this,b.slice(1).map(Number));var c=F.exec(a);if(c)return j(Number(c[1]),{start:y,middle:z,end:A}[c[2]]);var d=B[a];return d?d:x}function m(a){return Math.abs(n(a)/a.playbackRate)}function n(a){return 0===a.duration||0===a.iterations?0:a.duration*a.iterations}function o(a,b,c){if(null==b)return G;var d=c.delay+a+c.endDelay;return b<Math.min(c.delay,d)?H:b>=Math.min(c.delay+a,d)?I:J}function p(a,b,c,d,e){switch(d){case H:return"backwards"==b||"both"==b?0:null;case J:return c-e;case I:return"forwards"==b||"both"==b?a:null;case G:return null}}function q(a,b,c,d,e){var f=e;return 0===a?b!==H&&(f+=c):f+=d/a,f}function r(a,b,c,d,e,f){var g=a===1/0?b%1:a%1;return 0!==g||c!==I||0===d||0===e&&0!==f||(g=1),g}function s(a,b,c,d){return a===I&&b===1/0?1/0:1===c?Math.floor(d)-1:Math.floor(d)}function t(a,b,c){var d=a;if("normal"!==a&&"reverse"!==a){var e=b;"alternate-reverse"===a&&(e+=1),d="normal",e!==1/0&&e%2!==0&&(d="reverse")}return"normal"===d?c:1-c}function u(a,b,c){var d=o(a,b,c),e=p(a,c.fill,b,d,c.delay);if(null===e)return null;var f=q(c.duration,d,c.iterations,e,c.iterationStart),g=r(f,c.iterationStart,d,c.iterations,e,c.duration),h=s(d,c.iterations,g,f),i=t(c.direction,h,g);return c._easingFunction(i)}var v="backwards|forwards|both|none".split("|"),w="reverse|alternate|alternate-reverse".split("|"),x=function(a){return a};d.prototype={_setMember:function(b,c){this["_"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember("delay",a)},get delay(){return this._delay},set endDelay(a){this._setMember("endDelay",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember("fill",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||a<0)&&e())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",a)},get iterationStart(){return this._iterationStart},set duration(a){if("auto"!=a&&(isNaN(a)||a<0)&&e())throw new TypeError("duration must be non-negative or auto, received: "+a);this._setMember("duration",a)},get duration(){return this._duration},set direction(a){this._setMember("direction",a)},get direction(){return this._direction},set easing(a){this._easingFunction=l(k(a)),this._setMember("easing",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||a<0)&&e())throw new TypeError("iterations must be non-negative, received: "+a);this._setMember("iterations",a)},get iterations(){return this._iterations}};var y=1,z=.5,A=0,B={ease:i(.25,.1,.25,1),"ease-in":i(.42,0,1,1),"ease-out":i(0,0,.58,1),"ease-in-out":i(.42,0,.58,1),"step-start":j(1,y),"step-middle":j(1,z),"step-end":j(1,A)},C=null,D="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",E=new RegExp("cubic-bezier\\("+D+","+D+","+D+","+D+"\\)"),F=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,G=0,H=1,I=2,J=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=m,a.calculateIterationProgress=u,a.calculatePhase=o,a.normalizeEasing=k,a.parseEasingFunction=l}(c,f),function(a,b){function c(a,b){return a in k?k[a][b]||b:b}function d(a){return"display"===a||0===a.lastIndexOf("animation",0)||0===a.lastIndexOf("transition",0)}function e(a,b,e){if(!d(a)){var f=h[a];if(f){i.style[a]=b;for(var g in f){var j=f[g],k=i.style[j];e[j]=c(j,k)}}else e[a]=c(a,b)}}function f(a){var b=[];for(var c in a)if(!(c in["easing","offset","composite"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;g<f;g++)e={},"offset"in a?e.offset=a.offset:1==f?e.offset=1:e.offset=g/(f-1),"easing"in a&&(e.easing=a.easing),"composite"in a&&(e.composite=a.composite),e[c]=d[g],b.push(e)}return b.sort(function(a,b){return a.offset-b.offset}),b}function g(b){function c(){var a=d.length;null==d[a-1].offset&&(d[a-1].offset=1),a>1&&null==d[0].offset&&(d[0].offset=0);for(var b=0,c=d[0].offset,e=1;e<a;e++){var f=d[e].offset;if(null!=f){for(var g=1;g<e-b;g++)d[b+g].offset=c+(f-c)*g/(e-b);b=e,c=f}}}if(null==b)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||(b=f(b));for(var d=b.map(function(b){var c={};for(var d in b){var f=b[d];if("offset"==d){if(null!=f){if(f=Number(f),!isFinite(f))throw new TypeError("Keyframe offsets must be numbers.");if(f<0||f>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==d){if("add"==f||"accumulate"==f)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=f)throw new TypeError("Invalid composite mode "+f+".")}else f="easing"==d?a.normalizeEasing(f):""+f;e(d,f,c)}return void 0==c.offset&&(c.offset=null),void 0==c.easing&&(c.easing="linear"),c}),g=!0,h=-(1/0),i=0;i<d.length;i++){var j=d[i].offset;if(null!=j){if(j<h)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");h=j}else g=!1}return d=d.filter(function(a){return a.offset>=0&&a.offset<=1}),g||c(),d}var h={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},i=document.createElementNS("http://www.w3.org/1999/xhtml","div"),j={thin:"1px",medium:"3px",thick:"5px"},k={borderBottomWidth:j,borderLeftWidth:j,borderRightWidth:j,borderTopWidth:j,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:j,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};a.convertToArrayForm=f,a.normalizeKeyframes=g}(c,f),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?"are":"is",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),!(g<h&&(a in b||console.warn("Web Animations: "+a+" "+f+" deprecated and will stop working on "+h.toDateString()+". "+d),b[a]=!0,1))},a.deprecated=function(b,c,d,e){var f=e?"are":"is";if(a.isDeprecated(b,c,d,e))throw new Error(b+" "+f+" no longer supported. "+d)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(c){void 0===a[c]&&(b=!0)})),!b)return}!function(a,b,c){function d(a){for(var b={},c=0;c<a.length;c++)for(var d in a[c])if("offset"!=d&&"easing"!=d&&"composite"!=d){var e={offset:a[c].offset,easing:a[c].easing,value:a[c][d]};b[d]=b[d]||[],b[d].push(e)}for(var f in b){var g=b[f];if(0!=g[0].offset||1!=g[g.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return b}function e(c){var d=[];for(var e in c)for(var f=c[e],g=0;g<f.length-1;g++){var h=g,i=g+1,j=f[h].offset,k=f[i].offset,l=j,m=k;0==g&&(l=-(1/0),0==k&&(i=h)),g==f.length-2&&(m=1/0,1==j&&(h=i)),d.push({applyFrom:l,applyTo:m,startOffset:f[h].offset,endOffset:f[i].offset,easingFunction:a.parseEasingFunction(f[h].easing),property:e,interpolation:b.propertyInterpolation(e,f[h].value,f[i].value)})}return d.sort(function(a,b){return a.startOffset-b.startOffset}),d}b.convertEffectInput=function(c){var f=a.normalizeKeyframes(c),g=d(f),h=e(g);return function(a,c){if(null!=c)h.filter(function(a){return c>=a.applyFrom&&c<a.applyTo}).forEach(function(d){var e=c-d.startOffset,f=d.endOffset-d.startOffset,g=0==f?0:d.easingFunction(e/f);b.apply(a,d.property,d.interpolation(g))});else for(var d in g)"offset"!=d&&"easing"!=d&&"composite"!=d&&b.clear(a,d)}}}(c,d,f),function(a,b,c){function d(a){return a.replace(/-(.)/g,function(a,b){return b.toUpperCase()})}function e(a,b,c){h[c]=h[c]||[],h[c].push([a,b])}function f(a,b,c){for(var f=0;f<c.length;f++){var g=c[f];e(a,b,d(g))}}function g(c,e,f){var g=c;/-/.test(c)&&!a.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(g=d(c)),"initial"!=e&&"initial"!=f||("initial"==e&&(e=i[g]),"initial"==f&&(f=i[g]));for(var j=e==f?[]:h[g],k=0;j&&k<j.length;k++){var l=j[k][0](e),m=j[k][0](f);if(void 0!==l&&void 0!==m){var n=j[k][1](l,m);if(n){var o=b.Interpolation.apply(null,n);return function(a){return 0==a?e:1==a?f:o(a)}}}}return b.Interpolation(!1,!0,function(a){return a?f:e})}var h={};b.addPropertiesHandler=f;var i={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};b.propertyInterpolation=g}(c,d,f),function(a,b,c){function d(b){var c=a.calculateActiveDuration(b),d=function(d){return a.calculateIterationProgress(c,d,b)};return d._totalDuration=b.delay+c+b.endDelay,d}b.KeyframeEffect=function(c,e,f,g){var h,i=d(a.normalizeTimingInput(f)),j=b.convertEffectInput(e),k=function(){j(c,h)};return k._update=function(a){return h=i(a),null!==h},k._clear=function(){j(c,null)},k._hasSameTarget=function(a){return c===a},k._target=c,k._totalDuration=i._totalDuration,k._id=g,k},b.NullEffect=function(a){var b=function(){a&&(a(),a=null)};return b._update=function(){return null},b._totalDuration=0,b._hasSameTarget=function(){return!1},b}}(c,d,f),function(a,b){function c(a,b,c){c.enumerable=!0,c.configurable=!0,Object.defineProperty(a,b,c)}function d(a){this._surrogateStyle=document.createElementNS("http://www.w3.org/1999/xhtml","div").style,this._style=a.style,this._length=0,this._isAnimatedProperty={};for(var b=0;b<this._style.length;b++){var c=this._style[b];this._surrogateStyle[c]=this._style[c]}this._updateIndices()}function e(a){if(!a._webAnimationsPatchedStyle){var b=new d(a);try{c(a,"style",{get:function(){return b}})}catch(b){a.style._set=function(b,c){a.style[b]=c},a.style._clear=function(b){a.style[b]=""}}a._webAnimationsPatchedStyle=a.style}}var f={cssText:1,length:1,parentRule:1},g={getPropertyCSSValue:1,getPropertyPriority:1,getPropertyValue:1,item:1,removeProperty:1,setProperty:1},h={removeProperty:1,setProperty:1};d.prototype={get cssText(){return this._surrogateStyle.cssText},set cssText(a){for(var b={},c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;this._surrogateStyle.cssText=a,this._updateIndices();for(var c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;for(var d in b)this._isAnimatedProperty[d]||this._style.setProperty(d,this._surrogateStyle.getPropertyValue(d))},get length(){return this._surrogateStyle.length},get parentRule(){return this._style.parentRule},_updateIndices:function(){for(;this._length<this._surrogateStyle.length;)Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,get:function(a){return function(){return this._surrogateStyle[a]}}(this._length)}),this._length++;for(;this._length>this._surrogateStyle.length;)this._length--,Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,value:void 0})},_set:function(a,b){this._style[a]=b,this._isAnimatedProperty[a]=!0},_clear:function(a){this._style[a]=this._surrogateStyle[a],delete this._isAnimatedProperty[a]}};for(var i in g)d.prototype[i]=function(a,b){return function(){var c=this._surrogateStyle[a].apply(this._surrogateStyle,arguments);return b&&(this._isAnimatedProperty[arguments[0]]||this._style[a].apply(this._style,arguments),this._updateIndices()),c}}(i,i in h);for(var j in document.documentElement.style)j in f||j in g||!function(a){c(d.prototype,a,{get:function(){return this._surrogateStyle[a]},set:function(b){this._surrogateStyle[a]=b,this._updateIndices(),this._isAnimatedProperty[a]||(this._style[a]=b)}})}(j);a.apply=function(b,c,d){e(b),b.style._set(a.propertyName(c),d)},a.clear=function(b,c){b._webAnimationsPatchedStyle&&b.style._clear(a.propertyName(c))}}(d,f),function(a){window.Element.prototype.animate=function(b,c){var d="";return c&&c.id&&(d=c.id),a.timeline._play(a.KeyframeEffect(this,b,c,d))}}(d),function(a,b){function c(a,b,d){if("number"==typeof a&&"number"==typeof b)return a*(1-d)+b*d;if("boolean"==typeof a&&"boolean"==typeof b)return d<.5?a:b;if(a.length==b.length){for(var e=[],f=0;f<a.length;f++)e.push(c(a[f],b[f],d));return e}throw"Mismatched interpolation arguments "+a+":"+b}a.Interpolation=function(a,b,d){return function(e){return d(c(a,b,e))}}}(d,f),function(a,b){function c(a,b,c){return Math.max(Math.min(a,c),b)}function d(b,d,e){var f=a.dot(b,d);f=c(f,-1,1);var g=[];if(1===f)g=b;else for(var h=Math.acos(f),i=1*Math.sin(e*h)/Math.sqrt(1-f*f),j=0;j<4;j++)g.push(b[j]*(Math.cos(e*h)-f*i)+d[j]*i);return g}var e=function(){function a(a,b){for(var c=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],d=0;d<4;d++)for(var e=0;e<4;e++)for(var f=0;f<4;f++)c[d][e]+=b[d][f]*a[f][e];return c}function b(a){return 0==a[0][2]&&0==a[0][3]&&0==a[1][2]&&0==a[1][3]&&0==a[2][0]&&0==a[2][1]&&1==a[2][2]&&0==a[2][3]&&0==a[3][2]&&1==a[3][3]}function c(c,d,e,f,g){for(var h=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],i=0;i<4;i++)h[i][3]=g[i];for(var i=0;i<3;i++)for(var j=0;j<3;j++)h[3][i]+=c[j]*h[j][i];var k=f[0],l=f[1],m=f[2],n=f[3],o=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];o[0][0]=1-2*(l*l+m*m),o[0][1]=2*(k*l-m*n),o[0][2]=2*(k*m+l*n),o[1][0]=2*(k*l+m*n),o[1][1]=1-2*(k*k+m*m),o[1][2]=2*(l*m-k*n),o[2][0]=2*(k*m-l*n),o[2][1]=2*(l*m+k*n),o[2][2]=1-2*(k*k+l*l),h=a(h,o);var p=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];e[2]&&(p[2][1]=e[2],h=a(h,p)),e[1]&&(p[2][1]=0,p[2][0]=e[0],h=a(h,p)),e[0]&&(p[2][0]=0,p[1][0]=e[0],h=a(h,p));for(var i=0;i<3;i++)for(var j=0;j<3;j++)h[i][j]*=d[i];return b(h)?[h[0][0],h[0][1],h[1][0],h[1][1],h[3][0],h[3][1]]:h[0].concat(h[1],h[2],h[3])}return c}();a.composeMatrix=e,a.quat=d}(d,f),function(a,b,c){a.sequenceNumber=0;var d=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};b.Animation=function(b){this.id="",b&&b._id&&(this.id=b._id),this._sequenceNumber=a.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=b,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},b.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,b.timeline._animations.push(this))},_tickCurrentTime:function(a,b){a!=this._currentTime&&(this._currentTime=a,this._isFinished&&!b&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(a,!0),b.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var c=this.currentTime;this._playbackRate=a,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)),null!=c&&(this.currentTime=c)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),b.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){"function"==typeof b&&"finish"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if("finish"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var a=this._effect._target;return a._activeAnimations||(a._activeAnimations=[]),a._activeAnimations},_markTarget:function(){var a=this._targetAnimations();a.indexOf(this)===-1&&a.push(this)},_unmarkTarget:function(){var a=this._targetAnimations(),b=a.indexOf(this);b!==-1&&a.splice(b,1)}}}(c,d,f),function(a,b,c){function d(a){var b=j;j=[],a<q.currentTime&&(a=q.currentTime),q._animations.sort(e),q._animations=h(a,!0,q._animations)[0],b.forEach(function(b){b[1](a)}),g(),l=void 0}function e(a,b){return a._sequenceNumber-b._sequenceNumber}function f(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function g(){o.forEach(function(a){a()}),o.length=0}function h(a,c,d){p=!0,n=!1;var e=b.timeline;e.currentTime=a,m=!1;var f=[],g=[],h=[],i=[];return d.forEach(function(b){b._tick(a,c),b._inEffect?(g.push(b._effect),b._markTarget()):(f.push(b._effect),b._unmarkTarget()),b._needsTick&&(m=!0);var d=b._inEffect||b._needsTick;b._inTimeline=d,d?h.push(b):i.push(b)}),o.push.apply(o,f),o.push.apply(o,g),m&&requestAnimationFrame(function(){}),p=!1,[h,i]}var i=window.requestAnimationFrame,j=[],k=0;window.requestAnimationFrame=function(a){var b=k++;return 0==j.length&&i(d),j.push([b,a]),b},window.cancelAnimationFrame=function(a){j.forEach(function(b){b[0]==a&&(b[1]=function(){})})},f.prototype={_play:function(c){c._timing=a.normalizeTimingInput(c.timing);var d=new b.Animation(c);return d._idle=!1,d._timeline=this,this._animations.push(d),b.restart(),b.applyDirtiedAnimation(d),d}};var l=void 0,m=!1,n=!1;b.restart=function(){return m||(m=!0,requestAnimationFrame(function(){}),n=!0),n},b.applyDirtiedAnimation=function(a){if(!p){a._markTarget();var c=a._targetAnimations();c.sort(e);var d=h(b.timeline.currentTime,!1,c.slice())[1];d.forEach(function(a){var b=q._animations.indexOf(a);b!==-1&&q._animations.splice(b,1)}),g()}};var o=[],p=!1,q=new f;b.timeline=q}(c,d,f),function(a,b){function c(a,b){for(var c=0,d=0;d<a.length;d++)c+=a[d]*b[d];return c}function d(a,b){return[a[0]*b[0]+a[4]*b[1]+a[8]*b[2]+a[12]*b[3],a[1]*b[0]+a[5]*b[1]+a[9]*b[2]+a[13]*b[3],a[2]*b[0]+a[6]*b[1]+a[10]*b[2]+a[14]*b[3],a[3]*b[0]+a[7]*b[1]+a[11]*b[2]+a[15]*b[3],a[0]*b[4]+a[4]*b[5]+a[8]*b[6]+a[12]*b[7],a[1]*b[4]+a[5]*b[5]+a[9]*b[6]+a[13]*b[7],a[2]*b[4]+a[6]*b[5]+a[10]*b[6]+a[14]*b[7],a[3]*b[4]+a[7]*b[5]+a[11]*b[6]+a[15]*b[7],a[0]*b[8]+a[4]*b[9]+a[8]*b[10]+a[12]*b[11],a[1]*b[8]+a[5]*b[9]+a[9]*b[10]+a[13]*b[11],a[2]*b[8]+a[6]*b[9]+a[10]*b[10]+a[14]*b[11],a[3]*b[8]+a[7]*b[9]+a[11]*b[10]+a[15]*b[11],a[0]*b[12]+a[4]*b[13]+a[8]*b[14]+a[12]*b[15],a[1]*b[12]+a[5]*b[13]+a[9]*b[14]+a[13]*b[15],a[2]*b[12]+a[6]*b[13]+a[10]*b[14]+a[14]*b[15],a[3]*b[12]+a[7]*b[13]+a[11]*b[14]+a[15]*b[15]]}function e(a){var b=a.rad||0,c=a.deg||0,d=a.grad||0,e=a.turn||0,f=(c/360+d/400+e)*(2*Math.PI)+b;return f}function f(a){switch(a.t){case"rotatex":var b=e(a.d[0]);return[1,0,0,0,0,Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1];case"rotatey":var b=e(a.d[0]);return[Math.cos(b),0,-Math.sin(b),0,0,1,0,0,Math.sin(b),0,Math.cos(b),0,0,0,0,1];case"rotate":case"rotatez":var b=e(a.d[0]);return[Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1,0,0,0,0,1];case"rotate3d":var c=a.d[0],d=a.d[1],f=a.d[2],b=e(a.d[3]),g=c*c+d*d+f*f;if(0===g)c=1,d=0,f=0;else if(1!==g){var h=Math.sqrt(g);c/=h,d/=h,f/=h}var i=Math.sin(b/2),j=i*Math.cos(b/2),k=i*i;return[1-2*(d*d+f*f)*k,2*(c*d*k+f*j),2*(c*f*k-d*j),0,2*(c*d*k-f*j),1-2*(c*c+f*f)*k,2*(d*f*k+c*j),0,2*(c*f*k+d*j),2*(d*f*k-c*j),1-2*(c*c+d*d)*k,0,0,0,0,1];case"scale":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,1,0,0,0,0,1];case"scalex":return[a.d[0],0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];case"scaley":return[1,0,0,0,0,a.d[0],0,0,0,0,1,0,0,0,0,1];case"scalez":return[1,0,0,0,0,1,0,0,0,0,a.d[0],0,0,0,0,1];case"scale3d":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,a.d[2],0,0,0,0,1];case"skew":var l=e(a.d[0]),m=e(a.d[1]);return[1,Math.tan(m),0,0,Math.tan(l),1,0,0,0,0,1,0,0,0,0,1];case"skewx":var b=e(a.d[0]);return[1,0,0,0,Math.tan(b),1,0,0,0,0,1,0,0,0,0,1];case"skewy":var b=e(a.d[0]);return[1,Math.tan(b),0,0,0,1,0,0,0,0,1,0,0,0,0,1];case"translate":var c=a.d[0].px||0,d=a.d[1].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,0,1];case"translatex":var c=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,0,0,1];case"translatey":var d=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,d,0,1];case"translatez":var f=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,f,1];case"translate3d":var c=a.d[0].px||0,d=a.d[1].px||0,f=a.d[2].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,f,1];case"perspective":var n=a.d[0].px?-1/a.d[0].px:0;return[1,0,0,0,0,1,0,0,0,0,1,n,0,0,0,1];case"matrix":return[a.d[0],a.d[1],0,0,a.d[2],a.d[3],0,0,0,0,1,0,a.d[4],a.d[5],0,1];case"matrix3d":return a.d}}function g(a){return 0===a.length?[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]:a.map(f).reduce(d)}function h(a){return[i(g(a))]}var i=function(){function a(a){return a[0][0]*a[1][1]*a[2][2]+a[1][0]*a[2][1]*a[0][2]+a[2][0]*a[0][1]*a[1][2]-a[0][2]*a[1][1]*a[2][0]-a[1][2]*a[2][1]*a[0][0]-a[2][2]*a[0][1]*a[1][0]}function b(b){for(var c=1/a(b),d=b[0][0],e=b[0][1],f=b[0][2],g=b[1][0],h=b[1][1],i=b[1][2],j=b[2][0],k=b[2][1],l=b[2][2],m=[[(h*l-i*k)*c,(f*k-e*l)*c,(e*i-f*h)*c,0],[(i*j-g*l)*c,(d*l-f*j)*c,(f*g-d*i)*c,0],[(g*k-h*j)*c,(j*e-d*k)*c,(d*h-e*g)*c,0]],n=[],o=0;o<3;o++){for(var p=0,q=0;q<3;q++)p+=b[3][q]*m[q][o];n.push(p)}return n.push(1),m.push(n),m}function d(a){return[[a[0][0],a[1][0],a[2][0],a[3][0]],[a[0][1],a[1][1],a[2][1],a[3][1]],[a[0][2],a[1][2],a[2][2],a[3][2]],[a[0][3],a[1][3],a[2][3],a[3][3]]]}function e(a,b){for(var c=[],d=0;d<4;d++){for(var e=0,f=0;f<4;f++)e+=a[f]*b[f][d];c.push(e)}return c}function f(a){var b=g(a);return[a[0]/b,a[1]/b,a[2]/b]}function g(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2])}function h(a,b,c,d){return[c*a[0]+d*b[0],c*a[1]+d*b[1],c*a[2]+d*b[2]]}function i(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function j(j){var k=[j.slice(0,4),j.slice(4,8),j.slice(8,12),j.slice(12,16)];if(1!==k[3][3])return null;for(var l=[],m=0;m<4;m++)l.push(k[m].slice());for(var m=0;m<3;m++)l[m][3]=0;if(0===a(l))return!1;var n,o=[];if(k[0][3]||k[1][3]||k[2][3]){o.push(k[0][3]),o.push(k[1][3]),o.push(k[2][3]),o.push(k[3][3]);var p=b(l),q=d(p);n=e(o,q)}else n=[0,0,0,1];var r=k[3].slice(0,3),s=[];s.push(k[0].slice(0,3));var t=[];t.push(g(s[0])),s[0]=f(s[0]);var u=[];s.push(k[1].slice(0,3)),u.push(c(s[0],s[1])),s[1]=h(s[1],s[0],1,-u[0]),t.push(g(s[1])),s[1]=f(s[1]),u[0]/=t[1],s.push(k[2].slice(0,3)),u.push(c(s[0],s[2])),s[2]=h(s[2],s[0],1,-u[1]),u.push(c(s[1],s[2])),s[2]=h(s[2],s[1],1,-u[2]),t.push(g(s[2])),s[2]=f(s[2]),u[1]/=t[2],u[2]/=t[2];var v=i(s[1],s[2]);if(c(s[0],v)<0)for(var m=0;m<3;m++)t[m]*=-1,s[m][0]*=-1,s[m][1]*=-1,s[m][2]*=-1;var w,x,y=s[0][0]+s[1][1]+s[2][2]+1;return y>1e-4?(w=.5/Math.sqrt(y),x=[(s[2][1]-s[1][2])*w,(s[0][2]-s[2][0])*w,(s[1][0]-s[0][1])*w,.25/w]):s[0][0]>s[1][1]&&s[0][0]>s[2][2]?(w=2*Math.sqrt(1+s[0][0]-s[1][1]-s[2][2]),x=[.25*w,(s[0][1]+s[1][0])/w,(s[0][2]+s[2][0])/w,(s[2][1]-s[1][2])/w]):s[1][1]>s[2][2]?(w=2*Math.sqrt(1+s[1][1]-s[0][0]-s[2][2]),x=[(s[0][1]+s[1][0])/w,.25*w,(s[1][2]+s[2][1])/w,(s[0][2]-s[2][0])/w]):(w=2*Math.sqrt(1+s[2][2]-s[0][0]-s[1][1]),x=[(s[0][2]+s[2][0])/w,(s[1][2]+s[2][1])/w,.25*w,(s[1][0]-s[0][1])/w]),[r,t,u,x,n]}return j}();a.dot=c,a.makeMatrixDecomposition=h}(d,f),function(a){function b(a,b){var c=a.exec(b);if(c)return c=a.ignoreCase?c[0].toLowerCase():c[0],[c,b.substr(c.length)]}function c(a,b){b=b.replace(/^\s*/,"");var c=a(b);if(c)return[c[0],c[1].replace(/^\s*/,"")]}function d(a,d,e){a=c.bind(null,a);for(var f=[];;){var g=a(e);if(!g)return[f,e];if(f.push(g[0]),e=g[1],g=b(d,e),!g||""==g[1])return[f,e];e=g[1]}}function e(a,b){for(var c=0,d=0;d<b.length&&(!/\s|,/.test(b[d])||0!=c);d++)if("("==b[d])c++;else if(")"==b[d]&&(c--,0==c&&d++,c<=0))break;var e=a(b.substr(0,d));return void 0==e?void 0:[e,b.substr(d)]}function f(a,b){for(var c=a,d=b;c&&d;)c>d?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){var d=a(c);return d?d:[b,c]}}function i(b,c){for(var d=[],e=0;e<b.length;e++){var f=a.consumeTrimmed(b[e],c);if(!f||""==f[0])return;void 0!==f[0]&&d.push(f[0]),c=f[1]}if(""==c)return d}function j(a,b,c,d,e){for(var g=[],h=[],i=[],j=f(d.length,e.length),k=0;k<j;k++){var l=b(d[k%d.length],e[k%e.length]);if(!l)return;g.push(l[0]),h.push(l[1]),i.push(l[2])}return[g,h,function(b){var d=b.map(function(a,b){return i[b](a)}).join(c);return a?a(d):d}]}function k(a,b,c){for(var d=[],e=[],f=[],g=0,h=0;h<c.length;h++)if("function"==typeof c[h]){var i=c[h](a[g],b[g++]);d.push(i[0]),e.push(i[1]),f.push(i[2])}else!function(a){d.push(!1),e.push(!1),f.push(function(){return c[a]})}(h);return[d,e,function(a){for(var b="",c=0;c<a.length;c++)b+=f[c](a[c]);return b}]}a.consumeToken=b,a.consumeTrimmed=c,a.consumeRepeated=d,a.consumeParenthesised=e,a.ignore=g,a.optional=h,a.consumeList=i,a.mergeNestedRepeated=j.bind(null,null),a.mergeWrappedNestedRepeated=j,a.mergeList=k}(d),function(a){function b(b){function c(b){var c=a.consumeToken(/^inset/i,b);if(c)return d.inset=!0,c;var c=a.consumeLengthOrPercent(b);if(c)return d.lengths.push(c[0]),c;var c=a.consumeColor(b);return c?(d.color=c[0],c):void 0}var d={inset:!1,lengths:[],color:null},e=a.consumeRepeated(c,/^/,b);if(e&&e[0].length)return[d,e[1]]}function c(c){var d=a.consumeRepeated(b,/^,/,c);if(d&&""==d[1])return d[0]}function d(b,c){for(;b.lengths.length<Math.max(b.lengths.length,c.lengths.length);)b.lengths.push({px:0});for(;c.lengths.length<Math.max(b.lengths.length,c.lengths.length);)c.lengths.push({px:0});if(b.inset==c.inset&&!!b.color==!!c.color){for(var d,e=[],f=[[],0],g=[[],0],h=0;h<b.lengths.length;h++){var i=a.mergeDimensions(b.lengths[h],c.lengths[h],2==h);f[0].push(i[0]),g[0].push(i[1]),e.push(i[2])}if(b.color&&c.color){var j=a.mergeColors(b.color,c.color);f[1]=j[0],g[1]=j[1],d=j[2]; +}return[f,g,function(a){for(var c=b.inset?"inset ":" ",f=0;f<e.length;f++)c+=e[f](a[0][f])+" ";return d&&(c+=d(a[1])),c}]}}function e(b,c,d,e){function f(a){return{inset:a,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var g=[],h=[],i=0;i<d.length||i<e.length;i++){var j=d[i]||f(e[i].inset),k=e[i]||f(d[i].inset);g.push(j),h.push(k)}return a.mergeNestedRepeated(b,c,g,h)}var f=e.bind(null,d,", ");a.addPropertiesHandler(c,f,["box-shadow","text-shadow"])}(d),function(a,b){function c(a){return a.toFixed(3).replace(".000","")}function d(a,b,c){return Math.min(b,Math.max(a,c))}function e(a){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(a))return Number(a)}function f(a,b){return[a,b,c]}function g(a,b){if(0!=a)return i(0,1/0)(a,b)}function h(a,b){return[a,b,function(a){return Math.round(d(1,1/0,a))}]}function i(a,b){return function(e,f){return[e,f,function(e){return c(d(a,b,e))}]}}function j(a,b){return[a,b,Math.round]}a.clamp=d,a.addPropertiesHandler(e,i(0,1/0),["border-image-width","line-height"]),a.addPropertiesHandler(e,i(0,1),["opacity","shape-image-threshold"]),a.addPropertiesHandler(e,g,["flex-grow","flex-shrink"]),a.addPropertiesHandler(e,h,["orphans","widows"]),a.addPropertiesHandler(e,j,["z-index"]),a.parseNumber=e,a.mergeNumbers=f,a.numberToString=c}(d,f),function(a,b){function c(a,b){if("visible"==a||"visible"==b)return[0,1,function(c){return c<=0?a:c>=1?b:"visible"}]}a.addPropertiesHandler(String,c,["visibility"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle="#000",f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle="#fff",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;d<3;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),"rgba("+b.join(",")+")"}]}var e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");e.width=e.height=1;var f=e.getContext("2d");a.addPropertiesHandler(c,d,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(a){return c[a]=null,"U"+a});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(a,b){return e(a,b,!0)}function e(b,c,d){var e,f=[];for(e in b)f.push(e);for(e in c)f.indexOf(e)<0&&f.push(e);return b=f.map(function(a){return b[a]||0}),c=f.map(function(a){return c[a]||0}),[b,c,function(b){var c=b.map(function(c,e){return 1==b.length&&d&&(c=Math.max(c,0)),a.numberToString(c)+f[e]}).join(" + ");return b.length>1?"calc("+c+")":c}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(a){var b=l(a);if(b&&""==b[1])return b[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\)/))],b);if(d&&4==d[0].length)return d[0]}function e(b,c){return"auto"==b||"auto"==c?[!0,!1,function(d){var e=d?b:c;if("auto"==e)return"auto";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return"rect("+a+")"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,", ");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,["clip"])}(d,f),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(b=b.toLowerCase().trim(),"none"==b)return[];for(var c,d=/\s*(\w+)\(([^)]*)\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(","),j=h[0];if(j.length<i.length)return;for(var k=[],o=0;o<j.length;o++){var p,q=i[o],r=j[o];if(p=q?{A:function(b){return"0"==b.trim()?m:a.parseAngle(b)},N:a.parseNumber,T:a.parseLengthOrPercent,L:a.parseLength}[r.toUpperCase()](q):{a:m,n:k[0],t:l}[r],void 0===p)return;k.push(p)}if(e.push({t:g,d:k}),d.lastIndex==b.length)return e}}function f(a){return a.toFixed(6).replace(".000000","")}function g(b,c){if(b.decompositionPair!==c){b.decompositionPair=c;var d=a.makeMatrixDecomposition(b)}if(c.decompositionPair!==b){c.decompositionPair=b;var e=a.makeMatrixDecomposition(c)}return null==d[0]||null==e[0]?[[!1],[!0],function(a){return a?c[0].d:b[0].d}]:(d[0].push(0),e[0].push(1),[d,e,function(b){var c=a.quat(d[0][3],e[0][3],b[5]),g=a.composeMatrix(b[0],b[1],b[2],c,b[4]),h=g.map(f).join(",");return h}])}function h(a){return a.replace(/[xy]/,"")}function i(a){return a.replace(/(x|y|z|3d)?$/,"3d")}function j(b,c){var d=a.makeMatrixDecomposition&&!0,e=!1;if(!b.length||!c.length){b.length||(e=!0,b=c,c=[]);for(var f=0;f<b.length;f++){var j=b[f].t,k=b[f].d,l="scale"==j.substr(0,5)?1:0;c.push({t:j,d:k.map(function(a){if("number"==typeof a)return l;var b={};for(var c in a)b[c]=l;return b})})}}var m=function(a,b){return"perspective"==a&&"perspective"==b||("matrix"==a||"matrix3d"==a)&&("matrix"==b||"matrix3d"==b)},o=[],p=[],q=[];if(b.length!=c.length){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]]}else for(var f=0;f<b.length;f++){var j,s=b[f].t,t=c[f].t,u=b[f].d,v=c[f].d,w=n[s],x=n[t];if(m(s,t)){if(!d)return;var r=g([b[f]],[c[f]]);o.push(r[0]),p.push(r[1]),q.push(["matrix",[r[2]]])}else{if(s==t)j=s;else if(w[2]&&x[2]&&h(s)==h(t))j=h(s),u=w[2](u),v=x[2](v);else{if(!w[1]||!x[1]||i(s)!=i(t)){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]];break}j=i(s),u=w[1](u),v=x[1](v)}for(var y=[],z=[],A=[],B=0;B<u.length;B++){var C="number"==typeof u[B]?a.mergeNumbers:a.mergeDimensions,r=C(u[B],v[B]);y[B]=r[0],z[B]=r[1],A.push(r[2])}o.push(y),p.push(z),q.push([j,A])}}if(e){var D=o;o=p,p=D}return[o,p,function(a){return a.map(function(a,b){var c=a.map(function(a,c){return q[b][1][c](a)}).join(",");return"matrix"==q[b][0]&&16==c.split(",").length&&(q[b][0]="matrix3d"),q[b][0]+"("+c+")"}).join(" ")}]}var k=null,l={px:0},m={deg:0},n={matrix:["NNNNNN",[k,k,0,0,k,k,0,0,0,0,1,0,k,k,0,1],d],matrix3d:["NNNNNNNNNNNNNNNN",d],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",c([k,k,1]),d],scalex:["N",c([k,1,1]),c([k,1])],scaley:["N",c([1,k,1]),c([1,k])],scalez:["N",c([1,1,k])],scale3d:["NNN",d],skew:["Aa",null,d],skewx:["A",null,c([k,m])],skewy:["A",null,c([m,k])],translate:["Tt",c([k,k,l]),d],translatex:["T",c([k,l,l]),c([k,l])],translatey:["T",c([l,k,l]),c([l,k])],translatez:["L",c([l,l,k])],translate3d:["TTL",d]};a.addPropertiesHandler(e,j,["transform"])}(d,f),function(a){function b(a){var b=Number(a);if(!(isNaN(b)||b<100||b>900||b%100!==0))return b}function c(b){return b=100*Math.round(b/100),b=a.clamp(100,900,b),400===b?"normal":700===b?"bold":String(b)}function d(a,b){return[a,b,c]}a.addPropertiesHandler(b,d,["font-weight"])}(d),function(a){function b(a){var b={};for(var c in a)b[c]=-a[c];return b}function c(b){return a.consumeToken(/^(left|center|right|top|bottom)\b/i,b)||a.consumeLengthOrPercent(b)}function d(b,d){var e=a.consumeRepeated(c,/^/,d);if(e&&""==e[1]){var f=e[0];if(f[0]=f[0]||"center",f[1]=f[1]||"center",3==b&&(f[2]=f[2]||{px:0}),f.length==b){if(/top|bottom/.test(f[0])||/left|right/.test(f[1])){var h=f[0];f[0]=f[1],f[1]=h}if(/left|right|center|Object/.test(f[0])&&/top|bottom|center|Object/.test(f[1]))return f.map(function(a){return"object"==typeof a?a:g[a]})}}}function e(d){var e=a.consumeRepeated(c,/^/,d);if(e){for(var f=e[0],h=[{"%":50},{"%":50}],i=0,j=!1,k=0;k<f.length;k++){var l=f[k];"string"==typeof l?(j=/bottom|right/.test(l),i={left:0,right:0,center:i,top:1,bottom:1}[l],h[i]=g[l],"center"==l&&i++):(j&&(l=b(l),l["%"]=(l["%"]||0)+100),h[i]=l,i++,j=!1)}return[h,e[1]]}}function f(b){var c=a.consumeRepeated(e,/^,/,b);if(c&&""==c[1])return c[0]}var g={left:{"%":0},center:{"%":50},right:{"%":100},top:{"%":0},bottom:{"%":100}},h=a.mergeNestedRepeated.bind(null,a.mergeDimensions," ");a.addPropertiesHandler(d.bind(null,3),h,["transform-origin"]),a.addPropertiesHandler(d.bind(null,2),h,["perspective-origin"]),a.consumePosition=e,a.mergeOffsetList=h;var i=a.mergeNestedRepeated.bind(null,h,", ");a.addPropertiesHandler(f,i,["background-position","object-position"])}(d),function(a){function b(b){var c=a.consumeToken(/^circle/,b);if(c&&c[0])return["circle"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),d,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\)/))],c[1]));var f=a.consumeToken(/^ellipse/,b);if(f&&f[0])return["ellipse"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),e,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\)/))],f[1]));var g=a.consumeToken(/^polygon/,b);return g&&g[0]?["polygon"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),a.optional(a.consumeToken.bind(void 0,/^nonzero\s*,|^evenodd\s*,/),"nonzero,"),a.consumeSizePairList,a.ignore(a.consumeToken.bind(void 0,/^\)/))],g[1])):void 0}function c(b,c){if(b[0]===c[0])return"circle"==b[0]?a.mergeList(b.slice(1),c.slice(1),["circle(",a.mergeDimensions," at ",a.mergeOffsetList,")"]):"ellipse"==b[0]?a.mergeList(b.slice(1),c.slice(1),["ellipse(",a.mergeNonNegativeSizePair," at ",a.mergeOffsetList,")"]):"polygon"==b[0]&&b[1]==c[1]?a.mergeList(b.slice(2),c.slice(2),["polygon(",b[1],g,")"]):void 0}var d=a.consumeParenthesised.bind(null,a.parseLengthOrPercent),e=a.consumeRepeated.bind(void 0,d,/^/),f=a.mergeNestedRepeated.bind(void 0,a.mergeDimensions," "),g=a.mergeNestedRepeated.bind(void 0,f,",");a.addPropertiesHandler(b,c,["shape-outside"])}(d),function(a,b){function c(a,b){b.concat([a]).forEach(function(b){b in document.documentElement.style&&(d[a]=b)})}var d={};c("transform",["webkitTransform","msTransform"]),c("transformOrigin",["webkitTransformOrigin"]),c("perspective",["webkitPerspective"]),c("perspectiveOrigin",["webkitPerspectiveOrigin"]),a.propertyName=function(a){return d[a]||a}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var a;if(window.performance&&performance.now)var a=function(){return performance.now()};else var a=function(){return Date.now()};var b=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="cancel",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},c=window.Element.prototype.animate;window.Element.prototype.animate=function(d,e){var f=c.call(this,d,e);f._cancelHandlers=[],f.oncancel=null;var g=f.cancel;f.cancel=function(){g.call(this);var c=new b(this,null,a()),d=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){d.forEach(function(a){a.call(c.target,c)})},0)};var h=f.addEventListener;f.addEventListener=function(a,b){"function"==typeof b&&"cancel"==a?this._cancelHandlers.push(b):h.call(this,a,b)};var i=f.removeEventListener;return f.removeEventListener=function(a,b){if("cancel"==a){var c=this._cancelHandlers.indexOf(b);c>=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue("opacity"),f="0"==e?"1":"0";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue("opacity")==f}catch(a){}finally{c&&c.cancel()}if(!d){var g=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),g.call(this,b,c)}}}(c),!function(a,b,c){function d(a){var c=b.timeline;c.currentTime=a,c._discardAnimations(),0==c._animations.length?f=!1:requestAnimationFrame(d)}var e=window.requestAnimationFrame;window.requestAnimationFrame=function(a){return e(function(c){b.timeline._updateAnimationsPromises(),a(c),b.timeline._updateAnimationsPromises()})},b.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},b.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){b.animationsWithPromises=b.animationsWithPromises.filter(function(a){return a._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(a){return"finished"!=a.playState&&"idle"!=a.playState})},_play:function(a){var c=new b.Animation(a,this);return this._animations.push(c),b.restartWebAnimationsNextTick(),c._updatePromises(),c._animation.play(),c._updatePromises(),c},play:function(a){return a&&a.remove(),this._play(a)}};var f=!1;b.restartWebAnimationsNextTick=function(){f||(f=!0,requestAnimationFrame(d))};var g=new b.AnimationTimeline;b.timeline=g;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return g}})}catch(a){}try{window.document.timeline=g}catch(a){}}(c,e,f),function(a,b,c){b.animationsWithPromises=[],b.Animation=function(b,c){if(this.id="",b&&b._id&&(this.id=b._id),this.effect=b,b&&(b._animation=this),!c)throw new Error("Animation with null timeline is not supported");this._timeline=c,this._sequenceNumber=a.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},b.Animation.prototype={_updatePromises:function(){var a=this._oldPlayState,b=this.playState;return this._readyPromise&&b!==a&&("idle"==b?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==a?this._resolveReadyPromise():"pending"==b&&(this._readyPromise=void 0)),this._finishedPromise&&b!==a&&("idle"==b?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==b?this._resolveFinishedPromise():"finished"==a&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var a,c,d,e,f=!!this._animation;f&&(a=this.playbackRate,c=this._paused,d=this.startTime,e=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=b.newUnderlyingAnimationForKeyframeEffect(this.effect),b.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=b.newUnderlyingAnimationForGroup(this.effect),b.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&b.bindAnimationForCustomEffect(this),f&&(1!=a&&(this.playbackRate=a),null!==d?this.startTime=d:null!==e?this.currentTime=e:null!==this._holdTime&&(this.currentTime=this._holdTime),c&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var a=this.effect._timing.delay;this._childAnimations.forEach(function(c){this._arrangeChildren(c,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c.effect))}.bind(this))}},_setExternalAnimation:function(a){if(this.effect&&this._isGroup)for(var b=0;b<this.effect.children.length;b++)this.effect.children[b]._animation=a,this._childAnimations[b]._setExternalAnimation(a)},_constructChildAnimations:function(){if(this.effect&&this._isGroup){var a=this.effect._timing.delay;this._removeChildAnimations(),this.effect.children.forEach(function(c){var d=b.timeline._play(c);this._childAnimations.push(d),d.playbackRate=this.playbackRate,this._paused&&d.pause(),c._animation=this.effect._animation,this._arrangeChildren(d,a),this.effect instanceof window.SequenceEffect&&(a+=b.groupChildDuration(c))}.bind(this))}},_arrangeChildren:function(a,b){null===this.startTime?a.currentTime=this.currentTime-b/this.playbackRate:a.startTime!==this.startTime+b/this.playbackRate&&(a.startTime=this.startTime+b/this.playbackRate)},get timeline(){return this._timeline},get playState(){return this._animation?this._animation.playState:"idle"},get finished(){return window.Promise?(this._finishedPromise||(b.animationsWithPromises.indexOf(this)==-1&&b.animationsWithPromises.push(this),this._finishedPromise=new Promise(function(a,b){this._resolveFinishedPromise=function(){a(this)},this._rejectFinishedPromise=function(){b({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"finished"==this.playState&&this._resolveFinishedPromise()),this._finishedPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get ready(){return window.Promise?(this._readyPromise||(b.animationsWithPromises.indexOf(this)==-1&&b.animationsWithPromises.push(this),this._readyPromise=new Promise(function(a,b){this._resolveReadyPromise=function(){a(this)},this._rejectReadyPromise=function(){b({type:DOMException.ABORT_ERR,name:"AbortError"})}}.bind(this)),"pending"!==this.playState&&this._resolveReadyPromise()),this._readyPromise):(console.warn("Animation Promises require JavaScript Promise constructor"),null)},get onfinish(){return this._animation.onfinish},set onfinish(a){"function"==typeof a?this._animation.onfinish=function(b){b.target=this,a.call(this,b)}.bind(this):this._animation.onfinish=a},get oncancel(){return this._animation.oncancel},set oncancel(a){"function"==typeof a?this._animation.oncancel=function(b){b.target=this,a.call(this,b)}.bind(this):this._animation.oncancel=a},get currentTime(){this._updatePromises();var a=this._animation.currentTime;return this._updatePromises(),a},set currentTime(a){this._updatePromises(),this._animation.currentTime=isFinite(a)?a:Math.sign(a)*Number.MAX_VALUE,this._register(),this._forEachChild(function(b,c){b.currentTime=a-c}),this._updatePromises()},get startTime(){return this._animation.startTime},set startTime(a){this._updatePromises(),this._animation.startTime=isFinite(a)?a:Math.sign(a)*Number.MAX_VALUE,this._register(),this._forEachChild(function(b,c){b.startTime=a+c}),this._updatePromises()},get playbackRate(){return this._animation.playbackRate},set playbackRate(a){this._updatePromises();var b=this.currentTime;this._animation.playbackRate=a,this._forEachChild(function(b){b.playbackRate=a}),null!==b&&(this.currentTime=b),this._updatePromises()},play:function(){this._updatePromises(),this._paused=!1,this._animation.play(),this._timeline._animations.indexOf(this)==-1&&this._timeline._animations.push(this),this._register(),b.awaitStartTime(this),this._forEachChild(function(a){var b=a.currentTime;a.play(),a.currentTime=b}),this._updatePromises()},pause:function(){this._updatePromises(),this.currentTime&&(this._holdTime=this.currentTime),this._animation.pause(),this._register(),this._forEachChild(function(a){a.pause()}),this._paused=!0,this._updatePromises()},finish:function(){this._updatePromises(),this._animation.finish(),this._register(),this._updatePromises()},cancel:function(){this._updatePromises(),this._animation.cancel(),this._register(),this._removeChildAnimations(),this._updatePromises()},reverse:function(){this._updatePromises();var a=this.currentTime;this._animation.reverse(),this._forEachChild(function(a){a.reverse()}),null!==a&&(this.currentTime=a),this._updatePromises()},addEventListener:function(a,b){var c=b;"function"==typeof b&&(c=function(a){a.target=this,b.call(this,a)}.bind(this),b._wrapper=c),this._animation.addEventListener(a,c)},removeEventListener:function(a,b){this._animation.removeEventListener(a,b&&b._wrapper||b)},_removeChildAnimations:function(){for(;this._childAnimations.length;)this._childAnimations.pop().cancel()},_forEachChild:function(b){var c=0;if(this.effect.children&&this._childAnimations.length<this.effect.children.length&&this._constructChildAnimations(),this._childAnimations.forEach(function(a){b.call(this,a,c),this.effect instanceof window.SequenceEffect&&(c+=a.effect.activeDuration)}.bind(this)),"pending"!=this.playState){var d=this.effect._timing,e=this.currentTime;null!==e&&(e=a.calculateIterationProgress(a.calculateActiveDuration(d),e,d)),(null==e||isNaN(e))&&this._removeChildAnimations()}}},window.Animation=b.Animation}(c,e,f),function(a,b,c){function d(b){this._frames=a.normalizeKeyframes(b)}function e(){for(var a=!1;i.length;){var b=i.shift();b._updateChildren(),a=!0}return a}var f=function(a){if(a._animation=void 0,a instanceof window.SequenceEffect||a instanceof window.GroupEffect)for(var b=0;b<a.children.length;b++)f(a.children[b])};b.removeMulti=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c];d._parent?(b.indexOf(d._parent)==-1&&b.push(d._parent),d._parent.children.splice(d._parent.children.indexOf(d),1),d._parent=null,f(d)):d._animation&&d._animation.effect==d&&(d._animation.cancel(),d._animation.effect=new KeyframeEffect(null,[]),d._animation._callback&&(d._animation._callback._animation=null),d._animation._rebuildUnderlyingAnimation(),f(d))}for(c=0;c<b.length;c++)b[c]._rebuild()},b.KeyframeEffect=function(b,c,e,f){return this.target=b,this._parent=null,e=a.numericTimingToObject(e),this._timingInput=a.cloneTimingInput(e),this._timing=a.normalizeTimingInput(e),this.timing=a.makeTiming(e,!1,this),this.timing._effect=this,"function"==typeof c?(a.deprecated("Custom KeyframeEffect","2015-06-22","Use KeyframeEffect.onsample instead."),this._normalizedKeyframes=c):this._normalizedKeyframes=new d(c),this._keyframes=c,this.activeDuration=a.calculateActiveDuration(this._timing),this._id=f,this},b.KeyframeEffect.prototype={getFrames:function(){return"function"==typeof this._normalizedKeyframes?this._normalizedKeyframes:this._normalizedKeyframes._frames},set onsample(a){if("function"==typeof this.getFrames())throw new Error("Setting onsample on custom effect KeyframeEffect is not supported.");this._onsample=a,this._animation&&this._animation._rebuildUnderlyingAnimation()},get parent(){return this._parent},clone:function(){if("function"==typeof this.getFrames())throw new Error("Cloning custom effects is not supported.");var b=new KeyframeEffect(this.target,[],a.cloneTimingInput(this._timingInput),this._id);return b._normalizedKeyframes=this._normalizedKeyframes,b._keyframes=this._keyframes,b},remove:function(){b.removeMulti([this])}};var g=Element.prototype.animate;Element.prototype.animate=function(a,c){var d="";return c&&c.id&&(d=c.id),b.timeline._play(new b.KeyframeEffect(this,a,c,d))};var h=document.createElementNS("http://www.w3.org/1999/xhtml","div");b.newUnderlyingAnimationForKeyframeEffect=function(a){if(a){var b=a.target||h,c=a._keyframes;"function"==typeof c&&(c=[]);var d=a._timingInput;d.id=a._id}else var b=h,c=[],d=0;return g.apply(b,[c,d])},b.bindAnimationForKeyframeEffect=function(a){a.effect&&"function"==typeof a.effect._normalizedKeyframes&&b.bindAnimationForCustomEffect(a)};var i=[];b.awaitStartTime=function(a){null===a.startTime&&a._isGroup&&(0==i.length&&requestAnimationFrame(e),i.push(a))};var j=window.getComputedStyle;Object.defineProperty(window,"getComputedStyle",{configurable:!0,enumerable:!0,value:function(){b.timeline._updateAnimationsPromises();var a=j.apply(this,arguments);return e()&&(a=j.apply(this,arguments)),b.timeline._updateAnimationsPromises(),a}}),window.KeyframeEffect=b.KeyframeEffect,window.Element.prototype.getAnimations=function(){return document.timeline.getAnimations().filter(function(a){return null!==a.effect&&a.effect.target==this}.bind(this))}}(c,e,f),function(a,b,c){function d(a){a._registered||(a._registered=!0,g.push(a),h||(h=!0,requestAnimationFrame(e)))}function e(a){var b=g;g=[],b.sort(function(a,b){return a._sequenceNumber-b._sequenceNumber}),b=b.filter(function(a){a();var b=a._animation?a._animation.playState:"idle";return"running"!=b&&"pending"!=b&&(a._registered=!1),a._registered}),g.push.apply(g,b),g.length?(h=!0,requestAnimationFrame(e)):h=!1}var f=(document.createElementNS("http://www.w3.org/1999/xhtml","div"),0);b.bindAnimationForCustomEffect=function(b){var c,e=b.effect.target,g="function"==typeof b.effect.getFrames();c=g?b.effect.getFrames():b.effect._onsample;var h=b.effect.timing,i=null;h=a.normalizeTimingInput(h);var j=function(){var d=j._animation?j._animation.currentTime:null;null!==d&&(d=a.calculateIterationProgress(a.calculateActiveDuration(h),d,h),isNaN(d)&&(d=null)),d!==i&&(g?c(d,e,b.effect):c(d,b.effect,b.effect._animation)),i=d};j._animation=b,j._registered=!1,j._sequenceNumber=f++,b._callback=j,d(j)};var g=[],h=!1;b.Animation.prototype._register=function(){this._callback&&d(this._callback)}}(c,e,f),function(a,b,c){function d(a){return a._timing.delay+a.activeDuration+a._timing.endDelay}function e(b,c,d){this._id=d,this._parent=null,this.children=b||[],this._reparent(this.children),c=a.numericTimingToObject(c),this._timingInput=a.cloneTimingInput(c),this._timing=a.normalizeTimingInput(c,!0),this.timing=a.makeTiming(c,!0,this),this.timing._effect=this,"auto"===this._timing.duration&&(this._timing.duration=this.activeDuration)}window.SequenceEffect=function(){e.apply(this,arguments)},window.GroupEffect=function(){e.apply(this,arguments)},e.prototype={_isAncestor:function(a){for(var b=this;null!==b;){if(b==a)return!0;b=b._parent}return!1},_rebuild:function(){for(var a=this;a;)"auto"===a.timing.duration&&(a._timing.duration=a.activeDuration),a=a._parent;this._animation&&this._animation._rebuildUnderlyingAnimation()},_reparent:function(a){b.removeMulti(a);for(var c=0;c<a.length;c++)a[c]._parent=this},_putChild:function(a,b){for(var c=b?"Cannot append an ancestor or self":"Cannot prepend an ancestor or self",d=0;d<a.length;d++)if(this._isAncestor(a[d]))throw{type:DOMException.HIERARCHY_REQUEST_ERR,name:"HierarchyRequestError",message:c};for(var d=0;d<a.length;d++)b?this.children.push(a[d]):this.children.unshift(a[d]);this._reparent(a),this._rebuild()},append:function(){this._putChild(arguments,!0)},prepend:function(){this._putChild(arguments,!1)},get parent(){return this._parent},get firstChild(){return this.children.length?this.children[0]:null},get lastChild(){return this.children.length?this.children[this.children.length-1]:null},clone:function(){for(var b=a.cloneTimingInput(this._timingInput),c=[],d=0;d<this.children.length;d++)c.push(this.children[d].clone());return this instanceof GroupEffect?new GroupEffect(c,b):new SequenceEffect(c,b)},remove:function(){b.removeMulti([this])}},window.SequenceEffect.prototype=Object.create(e.prototype),Object.defineProperty(window.SequenceEffect.prototype,"activeDuration",{get:function(){var a=0;return this.children.forEach(function(b){a+=d(b)}),Math.max(a,0)}}),window.GroupEffect.prototype=Object.create(e.prototype),Object.defineProperty(window.GroupEffect.prototype,"activeDuration",{get:function(){var a=0;return this.children.forEach(function(b){a=Math.max(a,d(b))}),a}}),b.newUnderlyingAnimationForGroup=function(c){var d,e=null,f=function(b){var c=d._wrapper;if(c&&"pending"!=c.playState&&c.effect)return null==b?void c._removeChildAnimations():0==b&&c.playbackRate<0&&(e||(e=a.normalizeTimingInput(c.effect.timing)),b=a.calculateIterationProgress(a.calculateActiveDuration(e),-1,e),isNaN(b)||null==b)?(c._forEachChild(function(a){a.currentTime=-1}),void c._removeChildAnimations()):void 0},g=new KeyframeEffect(null,[],c._timing,c._id);return g.onsample=f,d=b.timeline._play(g)},b.bindAnimationForGroup=function(a){a._animation._wrapper=a,a._isGroup=!0,b.awaitStartTime(a),a._constructChildAnimations(),a._setExternalAnimation(a)},b.groupChildDuration=d}(c,e,f),b.true=a}({},function(){return this}());
diff --git a/third_party/web-animations-js/sources/web-animations-next.min.js.map b/third_party/web-animations-js/sources/web-animations-next.min.js.map index c478544dc..6949267 100644 --- a/third_party/web-animations-js/sources/web-animations-next.min.js.map +++ b/third_party/web-animations-js/sources/web-animations-next.min.js.map
@@ -1 +1 @@ -{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/property-interpolation.js","src/keyframe-effect.js","src/apply-preserving-inline-style.js","src/element-animatable.js","src/interpolation.js","src/matrix-interpolation.js","src/animation.js","src/tick.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js","src/timeline.js","src/web-animations-next-animation.js","src/keyframe-effect-constructor.js","src/effect-callback.js","src/group-constructors.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","toTimingFunction","easing","styleForCleaning","document","createElement","style","animationTimingFunction","validatedEasing","TypeError","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","delay","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateScaledActiveTime","activeTime","startOffset","calculateIterationTime","iterationDuration","scaledActiveTime","Infinity","iterationStart","calculateCurrentIteration","iterationTime","floor","calculateTransformedTime","currentIteration","currentIterationIsOdd","currentDirectionIsForwards","direction","directedTime","timeFraction","calculateTimeFraction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","endDelay","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","code","INVALID_MODIFICATION_ERR","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","scope","r","makePropertySpecificKeyframeGroups","leftCopy","propertySpecificKeyframeGroups","bind","addPropertiesHandler","parseShadowList","mergeShadowList","propertySpecificKeyframe","groupName","group","mergeFlex","left","right","round","makeInterpolations","interpolations","startTime","endTime","startValue","endValue","propertyInterpolation","leftInterpolation","rightInterpolation","convertEffectInput","trim","context","target","fraction","interpolation","fillStyle","offsetFraction","localDuration","scaledLocalTime","clamp","join","canvas","toCamelCase","parseColor","toUpperCase","addPropertyHandler","merger","propertyHandlers","parser","properties","ucProperty","test","matchedUnits","string","replace","unitRegExp","initialValues","handlers","parsedRight","parsedLeft","interpolationArgs","interp","Interpolation","t","taggedUnitRegExp","unit","bool","backgroundColor","nonNegative","backgroundPosition","units","borderBottomColor","borderBottomLeftRadius","borderBottomRightRadius","borderLeftColor","borderRightColor","borderSpacing","borderTopColor","borderTopLeftRadius","borderTopRightRadius","numberToString","clip","color","height","marginBottom","marginLeft","marginRight","lengthUnits","marginTop","parseLengthOrPercent","maxWidth","minHeight","minWidth","opacity","parseAngle","outlineColor","outlineOffset","paddingBottom","paddingLeft","transform","verticalAlign","visibility","width","wordSpacing","consumeLength","zIndex","consumeParenthesised","consumeSizePairList","EffectTime","effectTime","_totalDuration","_isCurrent","KeyframeEffect","keyframeEffect","_update","_clear","_hasSameTarget","id","NullEffect","clear","nullEffect","configureProperty","object","descriptor","enumerable","configurable","defineProperty","AnimatedCSSStyleDeclaration","element","_surrogateStyle","ignore","consumeToken","_style","_length","_isAnimatedProperty","_updateIndices","ensureStyleIsPatched","_webAnimationsPatchedStyle","merged","animatedStyle","mergeDimensions","get","mergeWrappedNestedRepeated","_","styleAttributes","cssText","parentRule","styleMethods","getPropertyCSSValue","getPropertyPriority","getPropertyValue","item","removeProperty","setProperty","styleMutatingMethods","text","transformRegExp","isAffectedProperty","functionName","argTypes","s","T","parsedArgs","index","method","modifiesStyle","list","arguments","documentElement","matrixModulesLoaded","set","_set","propertyName","Element","animate","options","mergeMatrices","timeline","interpolate","leftArgs","to","transformFunctions","leftType","leftResult","convertToString","typeTo2D","max","rightArgs","quat","product","dot","fromQ","theta","sqrt","cos","toQ","w","composeMatrix","leftFunctionData","multiply","leftArgsCopy","k","mergeNumbers","merge","rightArgsCopy","translate","skew","perspective","matrix","types","stringConversions","tmp","rightResult","rotMatrix","stringifiedArgs","args","arg","y","z","deg","temp","rotate","rotatez","scale","cast","scaley","scale3d","is2D","concat","translatey","sequenceNumber","AnimationEvent","currentTime","timelineTime","out","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","timeStamp","now","Animation","_id","_sequenceNumber","_currentTime","dimension","_paused","_inTimeline","_finishedFlag","onfinish","consumeOffset","_finishHandlers","_idle","consumeLengthOrPercent","_currentTimePending","_ensureAlive","_inEffect","_animations","_tickCurrentTime","newTime","ignoreLimit","_isFinished","position","restart","_startTime","_timeline","bottomOrRight","invalidateEffects","token","center","oldCurrentTime","mergeNestedRepeated","playState","play","parseOrigin","consumePosition","mergeOffsetList","circle","consumeList","pause","finish","ellipse","cancel","reverse","polygon","addEventListener","handler","_fireEvents","baseTime","event","setTimeout","mergeNonNegativeSizePair","call","_tick","isAnimationFrame","_needsTick","running","mergeSizePair","processRafCallbacks","processing","rafCallbacks","candidate","entry","applyPendingEffects","compareAnimations","rightAnimation","leftAnimation","InternalTimeline","performance","oncancel","AnimationCancelEvent","originalElementAnimate","animation","_cancelHandlers","originalCancel","originalAddEventListener","originalRemoveEventListener","removeEventListener","splice","animated","originalOpacity","getComputedStyle","testOpacity","error","webAnimationsNextTick","_discardAnimations","ticking","requestAnimationFrame","originalRequestAnimationFrame","_updateAnimationsPromises","AnimationTimeline","getAnimations","animationsWithPromises","_updatePromises","_play","restartWebAnimationsNextTick","remove","e","_holdTime","_isGroup","_childAnimations","_callback","_oldPlayState","oldPlayState","newPlayState","_readyPromise","_rejectReadyPromise","_resolveReadyPromise","_finishedPromise","_rejectFinishedPromise","_resolveFinishedPromise","oldPlaybackRate","oldPaused","oldStartTime","hadUnderlying","_wrapper","newUnderlyingAnimationForKeyframeEffect","bindAnimationForKeyframeEffect","SequenceEffect","GroupEffect","newUnderlyingAnimationForGroup","bindAnimationForGroup","_onsample","bindAnimationForCustomEffect","_updateChildren","childAnimation","_arrangeChildren","groupChildDuration","_setExternalAnimation","children","_constructChildAnimations","_removeChildAnimations","child","finished","Promise","resolve","reject","ABORT_ERR","ready","v","sign","MAX_VALUE","_register","_forEachChild","awaitStartTime","time","wrapped","pop","KeyframeList","_frames","updatePendingGroups","updated","pendingGroups","shift","disassociate","removeMulti","effects","oldParents","_parent","_rebuild","_normalizedKeyframes","_keyframes","getFrames","onsample","callback","parent","nullTarget","groupAnimation","originalGetComputedStyle","register","_registered","callbacks","tick","updating","effectFunction","isKeyframeEffect","last","node","constructor","_reparent","_isAncestor","newChildren","_putChild","isAppend","HIERARCHY_REQUEST_ERR","unshift","append","prepend","firstChild","lastChild","clonedTiming","clonedChildren","create","total","underlyingAnimation","ticker","tf","underlyingEffect","exports"],"mappings":"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","file":"web-animations-next.min.js"} \ No newline at end of file +{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/property-interpolation.js","src/keyframe-effect.js","src/apply-preserving-inline-style.js","src/element-animatable.js","src/interpolation.js","src/matrix-interpolation.js","src/animation.js","src/tick.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js","src/timeline.js","src/web-animations-next-animation.js","src/keyframe-effect-constructor.js","src/effect-callback.js","src/group-constructors.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start_gradient","end_gradient","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","normalizeEasing","easing","styleForCleaning","document","createElement","style","animationTimingFunction","normalizedEasing","TypeError","parseEasingFunction","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","endTime","delay","endDelay","min","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateOverallProgress","iterationDuration","activeTime","iterationStart","overallProgress","calculateSimpleIterationProgress","simpleIterationProgress","Infinity","calculateCurrentIteration","floor","calculateDirectedProgress","playbackDirection","currentIteration","currentDirection","calculateIterationProgress","directedProgress","direction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","isNotAnimatable","lastIndexOf","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","scope","left","makePropertySpecificKeyframeGroups","lengthReconstitution","propertySpecificKeyframeGroups","mergedDimensions","mergeDimensions","lengths","right","propertySpecificKeyframe","groupName","group","colorReconstitution","makeInterpolations","interpolations","color","startIndex","endIndex","startOffset","endOffset","applyFrom","applyTo","mergeNestedRepeated","easingFunction","interpolation","propertyInterpolation","string","leftInterpolation","rightInterpolation","convertEffectInput","mergePositiveIntegers","numberToString","fraction","max","offsetFraction","localDuration","scaledLocalTime","target","parseNumber","toCamelCase","replace","_","toUpperCase","addPropertyHandler","merger","propertyHandlers","parser","fillStyle","addPropertiesHandler","properties","fillRect","ucProperty","clearRect","pixelColor","alpha","initialValues","v","handlers","canvas","parsedLeft","parsedRight","interpolationArgs","mergeColors","t","Interpolation","consumeColor","bool","backgroundColor","parseDimension","backgroundPosition","borderBottomColor","trim","toLowerCase","borderBottomLeftRadius","search","borderBottomRightRadius","px","test","borderLeftColor","borderRightColor","borderSpacing","matchedUnits","borderTopColor","match","borderTopLeftRadius","borderTopRightRadius","taggedUnitRegExp","letterSpacing","lineHeight","marginBottom","marginLeft","reductions","marginRight","maxHeight","typeCheck","maxWidth","minHeight","minWidth","opacity","outlineColor","unit","outlineOffset","paddingBottom","paddingLeft","paddingRight","paddingTop","textIndent","top","verticalAlign","width","wordSpacing","zIndex","units","EffectTime","effectTime","_totalDuration","KeyframeEffect","join","timeFraction","keyframeEffect","parseLengthOrPercent","_update","parseAngle","_clear","_hasSameTarget","consumeParenthesised","bind","_target","NullEffect","clear","consumeRepeated","consumeSizePairList","nullEffect","consumeSizePair","parseSizePairList","configureProperty","descriptor","enumerable","mergeDimensionsNonNegative","AnimatedCSSStyleDeclaration","_surrogateStyle","element","_isAnimatedProperty","_style","_updateIndices","ensureStyleIsPatched","_webAnimationsPatchedStyle","animatedStyle","styleAttributes","cssText","styleMethods","getPropertyCSSValue","getPropertyPriority","getPropertyValue","item","removeProperty","setProperty","styleMutatingMethods","text","consumeToken","isAffectedProperty","parentRule","_length","defineProperty","configurable","get","index","mergeWrappedNestedRepeated","cast","pattern","method","prevLastIndex","modifiesStyle","arguments","documentElement","parsedArg","T","_set","propertyName","mergeMatrices","Element","options","id","timeline","_play","rightArgs","leftArgs","interpolate","quat","composeMatrix","list","to","r","typeTo3D","convertToString","matrixModulesLoaded","clamp","fromQ","toQ","product","dot","args","theta","acos","arg","w","rt","multiply","leftResult","rightResult","types","k","merged","translate","scale","skew","perspective","matrix","leftFunctionData","transformFunctions","isMatrixOrPerspective","leftType","z","rotMatrix","y","rightFunctionData","typeTo2D","rightType","temp","is2D","stringConversions","merge","sequenceNumber","AnimationEvent","currentTime","timelineTime","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","now","Animation","_id","_sequenceNumber","_currentTime","_startTime","_paused","Opx","_inTimeline","onfinish","_finishHandlers","_idle","_currentTimePending","rotate3d","_ensureAlive","_inEffect","_finishedFlag","_animations","_tickCurrentTime","newTime","ignoreLimit","_isFinished","restart","_timeline","toCss","parse","applyDirtiedAnimation","startTime","oldCurrentTime","tokens","playState","slots","position","%","bottomOrRight","_rewind","center","token","out","offsetMap","negateDimension","play","consumePosition","pause","mergePositionList","reverse","addEventListener","input","handler","circle","removeEventListener","ignore","splice","_fireEvents","baseTime","ellipse","event","concat","setTimeout","call","_tick","isAnimationFrame","_needsTick","pending","running","mergeShapes","_targetAnimations","_activeAnimations","_markTarget","animations","mergeNonNegativeSizePair","_unmarkTarget","mergeOffsetList","processRafCallbacks","processing","rafCallbacks","compareAnimations","entry","applyPendingEffects","leftAnimation","rightAnimation","InternalTimeline","performance","alias","pendingEffects","tick","inTick","hasRestartedThisFrame","ticking","newPendingClears","newPendingEffects","activeAnimations","animate","oncancel","AnimationCancelEvent","timeStamp","originalElementAnimate","animation","_cancelHandlers","originalCancel","cancel","originalAddEventListener","originalRemoveEventListener","animated","originalOpacity","getComputedStyle","testOpacity","error","webAnimationsNextTick","_discardAnimations","requestAnimationFrame","originalRequestAnimationFrame","_updateAnimationsPromises","AnimationTimeline","getAnimations","animationsWithPromises","_updatePromises","restartWebAnimationsNextTick","remove","e","_holdTime","_isGroup","_childAnimations","_callback","_oldPlayState","oldPlayState","newPlayState","_readyPromise","_rejectReadyPromise","_resolveReadyPromise","_finishedPromise","_rejectFinishedPromise","_resolveFinishedPromise","oldPlaybackRate","oldPaused","oldStartTime","hadUnderlying","_wrapper","newUnderlyingAnimationForKeyframeEffect","bindAnimationForKeyframeEffect","SequenceEffect","GroupEffect","newUnderlyingAnimationForGroup","bindAnimationForGroup","_onsample","bindAnimationForCustomEffect","_updateChildren","childAnimation","_arrangeChildren","groupChildDuration","_setExternalAnimation","children","_constructChildAnimations","_removeChildAnimations","child","finished","Promise","resolve","reject","ABORT_ERR","ready","sign","MAX_VALUE","_register","_forEachChild","awaitStartTime","time","finish","wrapped","pop","KeyframeList","_frames","updatePendingGroups","updated","pendingGroups","shift","disassociate","removeMulti","effects","oldParents","_parent","_rebuild","_normalizedKeyframes","_keyframes","getFrames","onsample","callback","parent","nullTarget","groupAnimation","originalGetComputedStyle","register","_registered","callbacks","updating","effectFunction","isKeyframeEffect","last","node","constructor","_reparent","_isAncestor","newChildren","_putChild","isAppend","HIERARCHY_REQUEST_ERR","unshift","append","prepend","firstChild","lastChild","clonedTiming","clonedChildren","create","total","underlyingAnimation","ticker","tf","underlyingEffect","exports"],"mappings":"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","file":"web-animations-next.min.js"} \ No newline at end of file
diff --git a/third_party/web-animations-js/sources/web-animations.min.js b/third_party/web-animations-js/sources/web-animations.min.js index 3767f5a..5aeb39b60 100644 --- a/third_party/web-animations-js/sources/web-animations.min.js +++ b/third_party/web-animations-js/sources/web-animations.min.js
@@ -12,5 +12,5 @@ // See the License for the specific language governing permissions and // limitations under the License. -!function(a,b){var c={},d={},e={},f=null;!function(a,b){function c(a){if("number"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=w}function e(){return a.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function f(b,c,e){var f=new d;return c&&(f.fill="both",f.duration="auto"),"number"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if("auto"!=b[c]){if(("number"==typeof f[c]||"duration"==c)&&("number"!=typeof b[c]||isNaN(b[c])))return;if("fill"==c&&-1==u.indexOf(b[c]))return;if("direction"==c&&-1==v.indexOf(b[c]))return;if("playbackRate"==c&&1!==b[c]&&a.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return"number"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return 0>a||a>1||0>c||c>1?w:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(0==e||1==e)return e;for(var g=0,h=1;;){var i=(g+h)/2,j=f(a,c,i);if(Math.abs(e-j)<1e-4)return f(b,d,i);e>j?g=i:h=i}}}function j(a,b){return function(c){if(c>=1)return 1;var d=1/a;return c+=b*d,c-c%d}}function k(a){B||(B=document.createElement("div").style),B.animationTimingFunction="",B.animationTimingFunction=a;var b=B.animationTimingFunction;if(""==b&&e())throw new TypeError(a+" is not a valid value for easing");var c=D.exec(b);if(c)return i.apply(this,c.slice(1).map(Number));var d=E.exec(b);if(d)return j(Number(d[1]),{start:x,middle:y,end:z}[d[2]]);var f=A[b];return f?f:w}function l(a){return Math.abs(m(a)/a.playbackRate)}function m(a){return a.duration*a.iterations}function n(a,b,c){return null==b?F:b<c.delay?G:b>=c.delay+a?H:I}function o(a,b,c,d,e){switch(d){case G:return"backwards"==b||"both"==b?0:null;case I:return c-e;case H:return"forwards"==b||"both"==b?a:null;case F:return null}}function p(a,b,c,d){return(d.playbackRate<0?b-a:b)*d.playbackRate+c}function q(a,b,c,d,e){return c===1/0||c===-(1/0)||c-d==b&&e.iterations&&(e.iterations+e.iterationStart)%1==0?a:c%a}function r(a,b,c,d){return 0===c?0:b==a?d.iterationStart+d.iterations-1:Math.floor(c/a)}function s(a,b,c,d){var e=a%2>=1,f="normal"==d.direction||d.direction==(e?"alternate-reverse":"alternate"),g=f?c:b-c,h=g/b;return b*d._easingFunction(h)}function t(a,b,c){var d=n(a,b,c),e=o(a,c.fill,b,d,c.delay);if(null===e)return null;if(0===a)return d===G?0:1;var f=c.iterationStart*c.duration,g=p(a,e,f,c),h=q(c.duration,m(c),g,f,c),i=r(c.duration,h,g,c);return s(i,c.duration,h,c)/c.duration}var u="backwards|forwards|both|none".split("|"),v="reverse|alternate|alternate-reverse".split("|"),w=function(a){return a};d.prototype={_setMember:function(b,c){this["_"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember("delay",a)},get delay(){return this._delay},set endDelay(a){this._setMember("endDelay",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember("fill",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||0>a)&&e())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",a)},get iterationStart(){return this._iterationStart},set duration(a){if("auto"!=a&&(isNaN(a)||0>a)&&e())throw new TypeError("duration must be non-negative or auto, received: "+a);this._setMember("duration",a)},get duration(){return this._duration},set direction(a){this._setMember("direction",a)},get direction(){return this._direction},set easing(a){this._easingFunction=k(a),this._setMember("easing",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||0>a)&&e())throw new TypeError("iterations must be non-negative, received: "+a);this._setMember("iterations",a)},get iterations(){return this._iterations}};var x=1,y=.5,z=0,A={ease:i(.25,.1,.25,1),"ease-in":i(.42,0,1,1),"ease-out":i(0,0,.58,1),"ease-in-out":i(.42,0,.58,1),"step-start":j(1,x),"step-middle":j(1,y),"step-end":j(1,z)},B=null,C="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",D=new RegExp("cubic-bezier\\("+C+","+C+","+C+","+C+"\\)"),E=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,F=0,G=1,H=2,I=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=l,a.calculateTimeFraction=t,a.calculatePhase=n,a.toTimingFunction=k}(c,f),function(a,b){function c(a,b){return a in j?j[a][b]||b:b}function d(a,b,d){var e=g[a];if(e){h.style[a]=b;for(var f in e){var i=e[f],j=h.style[i];d[i]=c(i,j)}}else d[a]=c(a,b)}function e(a){var b=[];for(var c in a)if(!(c in["easing","offset","composite"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;f>g;g++)e={},"offset"in a?e.offset=a.offset:1==f?e.offset=1:e.offset=g/(f-1),"easing"in a&&(e.easing=a.easing),"composite"in a&&(e.composite=a.composite),e[c]=d[g],b.push(e)}return b.sort(function(a,b){return a.offset-b.offset}),b}function f(a){function b(){var a=c.length;null==c[a-1].offset&&(c[a-1].offset=1),a>1&&null==c[0].offset&&(c[0].offset=0);for(var b=0,d=c[0].offset,e=1;a>e;e++){var f=c[e].offset;if(null!=f){for(var g=1;e-b>g;g++)c[b+g].offset=d+(f-d)*g/(e-b);b=e,d=f}}}if(null==a)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&a[Symbol.iterator]&&(a=Array.from(a)),Array.isArray(a)||(a=e(a));for(var c=a.map(function(a){var b={};for(var c in a){var e=a[c];if("offset"==c){if(null!=e&&(e=Number(e),!isFinite(e)))throw new TypeError("keyframe offsets must be numbers.")}else{if("composite"==c)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};e=""+e}d(c,e,b)}return void 0==b.offset&&(b.offset=null),b}),f=!0,g=-(1/0),h=0;h<c.length;h++){var i=c[h].offset;if(null!=i){if(g>i)throw{code:DOMException.INVALID_MODIFICATION_ERR,name:"InvalidModificationError",message:"Keyframes are not loosely sorted by offset. Sort or specify offsets."};g=i}else f=!1}return c=c.filter(function(a){return a.offset>=0&&a.offset<=1}),f||b(),c}var g={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},h=document.createElementNS("http://www.w3.org/1999/xhtml","div"),i={thin:"1px",medium:"3px",thick:"5px"},j={borderBottomWidth:i,borderLeftWidth:i,borderRightWidth:i,borderTopWidth:i,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:i,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};a.convertToArrayForm=e,a.normalizeKeyframes=f}(c,f),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?"are":"is",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),h>g?(a in b||console.warn("Web Animations: "+a+" "+f+" deprecated and will stop working on "+h.toDateString()+". "+d),b[a]=!0,!1):!0},a.deprecated=function(b,c,d,e){var f=e?"are":"is";if(a.isDeprecated(b,c,d,e))throw new Error(b+" "+f+" no longer supported. "+d)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(c){void 0===a[c]&&(b=!0)})),!b)return}!function(a,b,c){function d(a){for(var b={},c=0;c<a.length;c++)for(var d in a[c])if("offset"!=d&&"easing"!=d&&"composite"!=d){var e={offset:a[c].offset,easing:a[c].easing,value:a[c][d]};b[d]=b[d]||[],b[d].push(e)}for(var f in b){var g=b[f];if(0!=g[0].offset||1!=g[g.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return b}function e(c){var d=[];for(var e in c)for(var f=c[e],g=0;g<f.length-1;g++){var h=f[g].offset,i=f[g+1].offset,j=f[g].value,k=f[g+1].value,l=f[g].easing;h==i&&(1==i?j=k:k=j),d.push({startTime:h,endTime:i,easing:a.toTimingFunction(l?l:"linear"),property:e,interpolation:b.propertyInterpolation(e,j,k)})}return d.sort(function(a,b){return a.startTime-b.startTime}),d}b.convertEffectInput=function(c){var f=a.normalizeKeyframes(c),g=d(f),h=e(g);return function(a,c){if(null!=c)h.filter(function(a){return 0>=c&&0==a.startTime||c>=1&&1==a.endTime||c>=a.startTime&&c<=a.endTime}).forEach(function(d){var e=c-d.startTime,f=d.endTime-d.startTime,g=0==f?0:d.easing(e/f);b.apply(a,d.property,d.interpolation(g))});else for(var d in g)"offset"!=d&&"easing"!=d&&"composite"!=d&&b.clear(a,d)}}}(c,d,f),function(a,b,c){function d(a){return a.replace(/-(.)/g,function(a,b){return b.toUpperCase()})}function e(a,b,c){h[c]=h[c]||[],h[c].push([a,b])}function f(a,b,c){for(var f=0;f<c.length;f++){var g=c[f];e(a,b,d(g))}}function g(c,e,f){var g=c;/-/.test(c)&&!a.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(g=d(c)),"initial"!=e&&"initial"!=f||("initial"==e&&(e=i[g]),"initial"==f&&(f=i[g]));for(var j=e==f?[]:h[g],k=0;j&&k<j.length;k++){var l=j[k][0](e),m=j[k][0](f);if(void 0!==l&&void 0!==m){var n=j[k][1](l,m);if(n){var o=b.Interpolation.apply(null,n);return function(a){return 0==a?e:1==a?f:o(a)}}}}return b.Interpolation(!1,!0,function(a){return a?f:e})}var h={};b.addPropertiesHandler=f;var i={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};b.propertyInterpolation=g}(c,d,f),function(a,b,c){function d(b){var c=a.calculateActiveDuration(b),d=function(d){return a.calculateTimeFraction(c,d,b)};return d._totalDuration=b.delay+c+b.endDelay,d._isCurrent=function(d){var e=a.calculatePhase(c,d,b);return e===PhaseActive||e===PhaseBefore},d}b.KeyframeEffect=function(c,e,f,g){var h,i=d(a.normalizeTimingInput(f)),j=b.convertEffectInput(e),k=function(){j(c,h)};return k._update=function(a){return h=i(a),null!==h},k._clear=function(){j(c,null)},k._hasSameTarget=function(a){return c===a},k._isCurrent=i._isCurrent,k._totalDuration=i._totalDuration,k._id=g,k},b.NullEffect=function(a){var b=function(){a&&(a(),a=null)};return b._update=function(){return null},b._totalDuration=0,b._isCurrent=function(){return!1},b._hasSameTarget=function(){return!1},b}}(c,d,f),function(a,b){function c(a,b,c){c.enumerable=!0,c.configurable=!0,Object.defineProperty(a,b,c)}function d(a){this._surrogateStyle=document.createElementNS("http://www.w3.org/1999/xhtml","div").style,this._style=a.style,this._length=0,this._isAnimatedProperty={};for(var b=0;b<this._style.length;b++){var c=this._style[b];this._surrogateStyle[c]=this._style[c]}this._updateIndices()}function e(a){if(!a._webAnimationsPatchedStyle){var b=new d(a);try{c(a,"style",{get:function(){return b}})}catch(e){a.style._set=function(b,c){a.style[b]=c},a.style._clear=function(b){a.style[b]=""}}a._webAnimationsPatchedStyle=a.style}}var f={cssText:1,length:1,parentRule:1},g={getPropertyCSSValue:1,getPropertyPriority:1,getPropertyValue:1,item:1,removeProperty:1,setProperty:1},h={removeProperty:1,setProperty:1};d.prototype={get cssText(){return this._surrogateStyle.cssText},set cssText(a){for(var b={},c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;this._surrogateStyle.cssText=a,this._updateIndices();for(var c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;for(var d in b)this._isAnimatedProperty[d]||this._style.setProperty(d,this._surrogateStyle.getPropertyValue(d))},get length(){return this._surrogateStyle.length},get parentRule(){return this._style.parentRule},_updateIndices:function(){for(;this._length<this._surrogateStyle.length;)Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,get:function(a){return function(){return this._surrogateStyle[a]}}(this._length)}),this._length++;for(;this._length>this._surrogateStyle.length;)this._length--,Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,value:void 0})},_set:function(a,b){this._style[a]=b,this._isAnimatedProperty[a]=!0},_clear:function(a){this._style[a]=this._surrogateStyle[a],delete this._isAnimatedProperty[a]}};for(var i in g)d.prototype[i]=function(a,b){return function(){var c=this._surrogateStyle[a].apply(this._surrogateStyle,arguments);return b&&(this._isAnimatedProperty[arguments[0]]||this._style[a].apply(this._style,arguments),this._updateIndices()),c}}(i,i in h);for(var j in document.documentElement.style)j in f||j in g||!function(a){c(d.prototype,a,{get:function(){return this._surrogateStyle[a]},set:function(b){this._surrogateStyle[a]=b,this._updateIndices(),this._isAnimatedProperty[a]||(this._style[a]=b)}})}(j);a.apply=function(b,c,d){e(b),b.style._set(a.propertyName(c),d)},a.clear=function(b,c){b._webAnimationsPatchedStyle&&b.style._clear(a.propertyName(c))}}(d,f),function(a){window.Element.prototype.animate=function(b,c){var d="";return c&&c.id&&(d=c.id),a.timeline._play(a.KeyframeEffect(this,b,c,d))}}(d),function(a,b){function c(a,b,d){if("number"==typeof a&&"number"==typeof b)return a*(1-d)+b*d;if("boolean"==typeof a&&"boolean"==typeof b)return.5>d?a:b;if(a.length==b.length){for(var e=[],f=0;f<a.length;f++)e.push(c(a[f],b[f],d));return e}throw"Mismatched interpolation arguments "+a+":"+b}a.Interpolation=function(a,b,d){return function(e){return d(c(a,b,e))}}}(d,f),function(a,b){function c(a,b,c){return Math.max(Math.min(a,c),b)}function d(b,d,e){var f=a.dot(b,d);f=c(f,-1,1);var g=[];if(1===f)g=b;else for(var h=Math.acos(f),i=1*Math.sin(e*h)/Math.sqrt(1-f*f),j=0;4>j;j++)g.push(b[j]*(Math.cos(e*h)-f*i)+d[j]*i);return g}var e=function(){function a(a,b){for(var c=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],d=0;4>d;d++)for(var e=0;4>e;e++)for(var f=0;4>f;f++)c[d][e]+=b[d][f]*a[f][e];return c}function b(a){return 0==a[0][2]&&0==a[0][3]&&0==a[1][2]&&0==a[1][3]&&0==a[2][0]&&0==a[2][1]&&1==a[2][2]&&0==a[2][3]&&0==a[3][2]&&1==a[3][3]}function c(c,d,e,f,g){for(var h=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],i=0;4>i;i++)h[i][3]=g[i];for(var i=0;3>i;i++)for(var j=0;3>j;j++)h[3][i]+=c[j]*h[j][i];var k=f[0],l=f[1],m=f[2],n=f[3],o=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];o[0][0]=1-2*(l*l+m*m),o[0][1]=2*(k*l-m*n),o[0][2]=2*(k*m+l*n),o[1][0]=2*(k*l+m*n),o[1][1]=1-2*(k*k+m*m),o[1][2]=2*(l*m-k*n),o[2][0]=2*(k*m-l*n),o[2][1]=2*(l*m+k*n),o[2][2]=1-2*(k*k+l*l),h=a(h,o);var p=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];e[2]&&(p[2][1]=e[2],h=a(h,p)),e[1]&&(p[2][1]=0,p[2][0]=e[0],h=a(h,p)),e[0]&&(p[2][0]=0,p[1][0]=e[0],h=a(h,p));for(var i=0;3>i;i++)for(var j=0;3>j;j++)h[i][j]*=d[i];return b(h)?[h[0][0],h[0][1],h[1][0],h[1][1],h[3][0],h[3][1]]:h[0].concat(h[1],h[2],h[3])}return c}();a.composeMatrix=e,a.quat=d}(d,f),function(a,b,c){a.sequenceNumber=0;var d=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};b.Animation=function(b){this.id="",b&&b._id&&(this.id=b._id),this._sequenceNumber=a.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=b,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},b.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,b.timeline._animations.push(this))},_tickCurrentTime:function(a,b){a!=this._currentTime&&(this._currentTime=a,this._isFinished&&!b&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._tickCurrentTime(a,!0),b.invalidateEffects()))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.invalidateEffects())},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var b=this.currentTime;this._playbackRate=a,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&this.play(),null!=b&&(this.currentTime=b)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._currentTime=this._playbackRate>0?0:this._totalDuration,this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.invalidateEffects()},pause:function(){this._isFinished||this._paused||this._idle||(this._currentTimePending=!0),this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.invalidateEffects())},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._finishedFlag=!0,this.currentTime=0,this._startTime=null,this._effect._update(null),b.invalidateEffects())},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){"function"==typeof b&&"finish"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if("finish"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag}}}(c,d,f),function(a,b,c){function d(a){var b=j;j=[],a<p.currentTime&&(a=p.currentTime),h(a,!0),b.forEach(function(b){b[1](a)}),g(),l=void 0}function e(a,b){return a._sequenceNumber-b._sequenceNumber}function f(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function g(){o.forEach(function(a){a()}),o.length=0}function h(a,c){n=!1;var d=b.timeline;d.currentTime=a,d._animations.sort(e),m=!1;var f=d._animations;d._animations=[];var g=[],h=[];f=f.filter(function(b){b._tick(a,c),b._inEffect?h.push(b._effect):g.push(b._effect),b._needsTick&&(m=!0);var d=b._inEffect||b._needsTick;return b._inTimeline=d,d}),o.push.apply(o,g),o.push.apply(o,h),d._animations.push.apply(d._animations,f),m&&requestAnimationFrame(function(){})}var i=window.requestAnimationFrame,j=[],k=0;window.requestAnimationFrame=function(a){var b=k++;return 0==j.length&&i(d),j.push([b,a]),b},window.cancelAnimationFrame=function(a){j.forEach(function(b){b[0]==a&&(b[1]=function(){})})},f.prototype={_play:function(c){c._timing=a.normalizeTimingInput(c.timing);var d=new b.Animation(c);return d._idle=!1,d._timeline=this,this._animations.push(d),b.restart(),b.invalidateEffects(),d}};var l=void 0,m=!1,n=!1;b.restart=function(){return m||(m=!0,requestAnimationFrame(function(){}),n=!0),n},b.invalidateEffects=function(){h(b.timeline.currentTime,!1),g()};var o=[],p=new f;b.timeline=p}(c,d,f),function(a,b){function c(a,b){for(var c=0,d=0;d<a.length;d++)c+=a[d]*b[d];return c}function d(a,b){return[a[0]*b[0]+a[4]*b[1]+a[8]*b[2]+a[12]*b[3],a[1]*b[0]+a[5]*b[1]+a[9]*b[2]+a[13]*b[3],a[2]*b[0]+a[6]*b[1]+a[10]*b[2]+a[14]*b[3],a[3]*b[0]+a[7]*b[1]+a[11]*b[2]+a[15]*b[3],a[0]*b[4]+a[4]*b[5]+a[8]*b[6]+a[12]*b[7],a[1]*b[4]+a[5]*b[5]+a[9]*b[6]+a[13]*b[7],a[2]*b[4]+a[6]*b[5]+a[10]*b[6]+a[14]*b[7],a[3]*b[4]+a[7]*b[5]+a[11]*b[6]+a[15]*b[7],a[0]*b[8]+a[4]*b[9]+a[8]*b[10]+a[12]*b[11],a[1]*b[8]+a[5]*b[9]+a[9]*b[10]+a[13]*b[11],a[2]*b[8]+a[6]*b[9]+a[10]*b[10]+a[14]*b[11],a[3]*b[8]+a[7]*b[9]+a[11]*b[10]+a[15]*b[11],a[0]*b[12]+a[4]*b[13]+a[8]*b[14]+a[12]*b[15],a[1]*b[12]+a[5]*b[13]+a[9]*b[14]+a[13]*b[15],a[2]*b[12]+a[6]*b[13]+a[10]*b[14]+a[14]*b[15],a[3]*b[12]+a[7]*b[13]+a[11]*b[14]+a[15]*b[15]]}function e(a){var b=a.rad||0,c=a.deg||0,d=a.grad||0,e=a.turn||0,f=(c/360+d/400+e)*(2*Math.PI)+b;return f}function f(a){switch(a.t){case"rotatex":var b=e(a.d[0]);return[1,0,0,0,0,Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1];case"rotatey":var b=e(a.d[0]);return[Math.cos(b),0,-Math.sin(b),0,0,1,0,0,Math.sin(b),0,Math.cos(b),0,0,0,0,1];case"rotate":case"rotatez":var b=e(a.d[0]);return[Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1,0,0,0,0,1];case"rotate3d":var c=a.d[0],d=a.d[1],f=a.d[2],b=e(a.d[3]),g=c*c+d*d+f*f;if(0===g)c=1,d=0,f=0;else if(1!==g){var h=Math.sqrt(g);c/=h,d/=h,f/=h}var i=Math.sin(b/2),j=i*Math.cos(b/2),k=i*i;return[1-2*(d*d+f*f)*k,2*(c*d*k+f*j),2*(c*f*k-d*j),0,2*(c*d*k-f*j),1-2*(c*c+f*f)*k,2*(d*f*k+c*j),0,2*(c*f*k+d*j),2*(d*f*k-c*j),1-2*(c*c+d*d)*k,0,0,0,0,1];case"scale":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,1,0,0,0,0,1];case"scalex":return[a.d[0],0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];case"scaley":return[1,0,0,0,0,a.d[0],0,0,0,0,1,0,0,0,0,1];case"scalez":return[1,0,0,0,0,1,0,0,0,0,a.d[0],0,0,0,0,1];case"scale3d":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,a.d[2],0,0,0,0,1];case"skew":var l=e(a.d[0]),m=e(a.d[1]);return[1,Math.tan(m),0,0,Math.tan(l),1,0,0,0,0,1,0,0,0,0,1];case"skewx":var b=e(a.d[0]);return[1,0,0,0,Math.tan(b),1,0,0,0,0,1,0,0,0,0,1];case"skewy":var b=e(a.d[0]);return[1,Math.tan(b),0,0,0,1,0,0,0,0,1,0,0,0,0,1];case"translate":var c=a.d[0].px||0,d=a.d[1].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,0,1];case"translatex":var c=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,0,0,1];case"translatey":var d=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,d,0,1];case"translatez":var f=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,f,1];case"translate3d":var c=a.d[0].px||0,d=a.d[1].px||0,f=a.d[2].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,f,1];case"perspective":var n=a.d[0].px?-1/a.d[0].px:0;return[1,0,0,0,0,1,0,0,0,0,1,n,0,0,0,1];case"matrix":return[a.d[0],a.d[1],0,0,a.d[2],a.d[3],0,0,0,0,1,0,a.d[4],a.d[5],0,1];case"matrix3d":return a.d}}function g(a){return 0===a.length?[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]:a.map(f).reduce(d)}function h(a){return[i(g(a))]}var i=function(){function a(a){return a[0][0]*a[1][1]*a[2][2]+a[1][0]*a[2][1]*a[0][2]+a[2][0]*a[0][1]*a[1][2]-a[0][2]*a[1][1]*a[2][0]-a[1][2]*a[2][1]*a[0][0]-a[2][2]*a[0][1]*a[1][0]}function b(b){for(var c=1/a(b),d=b[0][0],e=b[0][1],f=b[0][2],g=b[1][0],h=b[1][1],i=b[1][2],j=b[2][0],k=b[2][1],l=b[2][2],m=[[(h*l-i*k)*c,(f*k-e*l)*c,(e*i-f*h)*c,0],[(i*j-g*l)*c,(d*l-f*j)*c,(f*g-d*i)*c,0],[(g*k-h*j)*c,(j*e-d*k)*c,(d*h-e*g)*c,0]],n=[],o=0;3>o;o++){for(var p=0,q=0;3>q;q++)p+=b[3][q]*m[q][o];n.push(p)}return n.push(1),m.push(n),m}function d(a){return[[a[0][0],a[1][0],a[2][0],a[3][0]],[a[0][1],a[1][1],a[2][1],a[3][1]],[a[0][2],a[1][2],a[2][2],a[3][2]],[a[0][3],a[1][3],a[2][3],a[3][3]]]}function e(a,b){for(var c=[],d=0;4>d;d++){for(var e=0,f=0;4>f;f++)e+=a[f]*b[f][d];c.push(e)}return c}function f(a){var b=g(a);return[a[0]/b,a[1]/b,a[2]/b]}function g(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2])}function h(a,b,c,d){return[c*a[0]+d*b[0],c*a[1]+d*b[1],c*a[2]+d*b[2]]}function i(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function j(j){var k=[j.slice(0,4),j.slice(4,8),j.slice(8,12),j.slice(12,16)];if(1!==k[3][3])return null;for(var l=[],m=0;4>m;m++)l.push(k[m].slice());for(var m=0;3>m;m++)l[m][3]=0;if(0===a(l))return!1;var n,o=[];if(k[0][3]||k[1][3]||k[2][3]){o.push(k[0][3]),o.push(k[1][3]),o.push(k[2][3]),o.push(k[3][3]);var p=b(l),q=d(p);n=e(o,q)}else n=[0,0,0,1];var r=k[3].slice(0,3),s=[];s.push(k[0].slice(0,3));var t=[];t.push(g(s[0])),s[0]=f(s[0]);var u=[];s.push(k[1].slice(0,3)),u.push(c(s[0],s[1])),s[1]=h(s[1],s[0],1,-u[0]),t.push(g(s[1])),s[1]=f(s[1]),u[0]/=t[1],s.push(k[2].slice(0,3)),u.push(c(s[0],s[2])),s[2]=h(s[2],s[0],1,-u[1]),u.push(c(s[1],s[2])),s[2]=h(s[2],s[1],1,-u[2]),t.push(g(s[2])),s[2]=f(s[2]),u[1]/=t[2],u[2]/=t[2];var v=i(s[1],s[2]);if(c(s[0],v)<0)for(var m=0;3>m;m++)t[m]*=-1,s[m][0]*=-1,s[m][1]*=-1,s[m][2]*=-1;var w,x,y=s[0][0]+s[1][1]+s[2][2]+1;return y>1e-4?(w=.5/Math.sqrt(y),x=[(s[2][1]-s[1][2])*w,(s[0][2]-s[2][0])*w,(s[1][0]-s[0][1])*w,.25/w]):s[0][0]>s[1][1]&&s[0][0]>s[2][2]?(w=2*Math.sqrt(1+s[0][0]-s[1][1]-s[2][2]),x=[.25*w,(s[0][1]+s[1][0])/w,(s[0][2]+s[2][0])/w,(s[2][1]-s[1][2])/w]):s[1][1]>s[2][2]?(w=2*Math.sqrt(1+s[1][1]-s[0][0]-s[2][2]),x=[(s[0][1]+s[1][0])/w,.25*w,(s[1][2]+s[2][1])/w,(s[0][2]-s[2][0])/w]):(w=2*Math.sqrt(1+s[2][2]-s[0][0]-s[1][1]),x=[(s[0][2]+s[2][0])/w,(s[1][2]+s[2][1])/w,.25*w,(s[1][0]-s[0][1])/w]),[r,t,u,x,n]}return j}();a.dot=c,a.makeMatrixDecomposition=h}(d,f),function(a){function b(a,b){var c=a.exec(b);return c?(c=a.ignoreCase?c[0].toLowerCase():c[0],[c,b.substr(c.length)]):void 0}function c(a,b){b=b.replace(/^\s*/,"");var c=a(b);return c?[c[0],c[1].replace(/^\s*/,"")]:void 0}function d(a,d,e){a=c.bind(null,a);for(var f=[];;){var g=a(e);if(!g)return[f,e];if(f.push(g[0]),e=g[1],g=b(d,e),!g||""==g[1])return[f,e];e=g[1]}}function e(a,b){for(var c=0,d=0;d<b.length&&(!/\s|,/.test(b[d])||0!=c);d++)if("("==b[d])c++;else if(")"==b[d]&&(c--,0==c&&d++,0>=c))break;var e=a(b.substr(0,d));return void 0==e?void 0:[e,b.substr(d)]}function f(a,b){for(var c=a,d=b;c&&d;)c>d?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){var d=a(c);return d?d:[b,c]}}function i(b,c){for(var d=[],e=0;e<b.length;e++){var f=a.consumeTrimmed(b[e],c);if(!f||""==f[0])return;void 0!==f[0]&&d.push(f[0]),c=f[1]}return""==c?d:void 0}function j(a,b,c,d,e){for(var g=[],h=[],i=[],j=f(d.length,e.length),k=0;j>k;k++){var l=b(d[k%d.length],e[k%e.length]);if(!l)return;g.push(l[0]),h.push(l[1]),i.push(l[2])}return[g,h,function(b){var d=b.map(function(a,b){return i[b](a)}).join(c);return a?a(d):d}]}function k(a,b,c){for(var d=[],e=[],f=[],g=0,h=0;h<c.length;h++)if("function"==typeof c[h]){var i=c[h](a[g],b[g++]);d.push(i[0]),e.push(i[1]),f.push(i[2])}else!function(a){d.push(!1),e.push(!1),f.push(function(){return c[a]})}(h);return[d,e,function(a){for(var b="",c=0;c<a.length;c++)b+=f[c](a[c]);return b}]}a.consumeToken=b,a.consumeTrimmed=c,a.consumeRepeated=d,a.consumeParenthesised=e,a.ignore=g,a.optional=h,a.consumeList=i,a.mergeNestedRepeated=j.bind(null,null),a.mergeWrappedNestedRepeated=j,a.mergeList=k}(d),function(a){function b(b){function c(b){var c=a.consumeToken(/^inset/i,b);if(c)return d.inset=!0,c;var c=a.consumeLengthOrPercent(b);if(c)return d.lengths.push(c[0]),c;var c=a.consumeColor(b);return c?(d.color=c[0],c):void 0}var d={inset:!1,lengths:[],color:null},e=a.consumeRepeated(c,/^/,b);return e&&e[0].length?[d,e[1]]:void 0}function c(c){var d=a.consumeRepeated(b,/^,/,c);return d&&""==d[1]?d[0]:void 0}function d(b,c){for(;b.lengths.length<Math.max(b.lengths.length,c.lengths.length);)b.lengths.push({px:0});for(;c.lengths.length<Math.max(b.lengths.length,c.lengths.length);)c.lengths.push({px:0});if(b.inset==c.inset&&!!b.color==!!c.color){for(var d,e=[],f=[[],0],g=[[],0],h=0;h<b.lengths.length;h++){var i=a.mergeDimensions(b.lengths[h],c.lengths[h],2==h);f[0].push(i[0]),g[0].push(i[1]),e.push(i[2])}if(b.color&&c.color){var j=a.mergeColors(b.color,c.color);f[1]=j[0],g[1]=j[1],d=j[2]}return[f,g,function(a){for(var c=b.inset?"inset ":" ",f=0;f<e.length;f++)c+=e[f](a[0][f])+" ";return d&&(c+=d(a[1])),c}]}}function e(b,c,d,e){function f(a){return{inset:a,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var g=[],h=[],i=0;i<d.length||i<e.length;i++){var j=d[i]||f(e[i].inset),k=e[i]||f(d[i].inset);g.push(j),h.push(k)}return a.mergeNestedRepeated(b,c,g,h)}var f=e.bind(null,d,", ");a.addPropertiesHandler(c,f,["box-shadow","text-shadow"])}(d),function(a,b){function c(a){return a.toFixed(3).replace(".000","")}function d(a,b,c){return Math.min(b,Math.max(a,c))}function e(a){return/^\s*[-+]?(\d*\.)?\d+\s*$/.test(a)?Number(a):void 0}function f(a,b){return[a,b,c]}function g(a,b){return 0!=a?i(0,1/0)(a,b):void 0}function h(a,b){return[a,b,function(a){return Math.round(d(1,1/0,a))}]}function i(a,b){return function(e,f){return[e,f,function(e){return c(d(a,b,e))}]}}function j(a,b){return[a,b,Math.round]}a.clamp=d,a.addPropertiesHandler(e,i(0,1/0),["border-image-width","line-height"]),a.addPropertiesHandler(e,i(0,1),["opacity","shape-image-threshold"]),a.addPropertiesHandler(e,g,["flex-grow","flex-shrink"]),a.addPropertiesHandler(e,h,["orphans","widows"]),a.addPropertiesHandler(e,j,["z-index"]),a.parseNumber=e,a.mergeNumbers=f,a.numberToString=c}(d,f),function(a,b){function c(a,b){return"visible"==a||"visible"==b?[0,1,function(c){return 0>=c?a:c>=1?b:"visible"}]:void 0}a.addPropertiesHandler(String,c,["visibility"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle="#000", -f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle="#fff",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;3>d;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),"rgba("+b.join(",")+")"}]}var e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");e.width=e.height=1;var f=e.getContext("2d");a.addPropertiesHandler(c,d,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(a){return c[a]=null,"U"+a});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(a,b){return e(a,b,!0)}function e(b,c,d){var e,f=[];for(e in b)f.push(e);for(e in c)f.indexOf(e)<0&&f.push(e);return b=f.map(function(a){return b[a]||0}),c=f.map(function(a){return c[a]||0}),[b,c,function(b){var c=b.map(function(c,e){return 1==b.length&&d&&(c=Math.max(c,0)),a.numberToString(c)+f[e]}).join(" + ");return b.length>1?"calc("+c+")":c}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(a){var b=l(a);return b&&""==b[1]?b[0]:void 0},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\)/))],b);return d&&4==d[0].length?d[0]:void 0}function e(b,c){return"auto"==b||"auto"==c?[!0,!1,function(d){var e=d?b:c;if("auto"==e)return"auto";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return"rect("+a+")"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,", ");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,["clip"])}(d,f),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(b=b.toLowerCase().trim(),"none"==b)return[];for(var c,d=/\s*(\w+)\(([^)]*)\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(","),j=h[0];if(j.length<i.length)return;for(var k=[],o=0;o<j.length;o++){var p,q=i[o],r=j[o];if(p=q?{A:function(b){return"0"==b.trim()?m:a.parseAngle(b)},N:a.parseNumber,T:a.parseLengthOrPercent,L:a.parseLength}[r.toUpperCase()](q):{a:m,n:k[0],t:l}[r],void 0===p)return;k.push(p)}if(e.push({t:g,d:k}),d.lastIndex==b.length)return e}}function f(a){return a.toFixed(6).replace(".000000","")}function g(b,c){if(b.decompositionPair!==c){b.decompositionPair=c;var d=a.makeMatrixDecomposition(b)}if(c.decompositionPair!==b){c.decompositionPair=b;var e=a.makeMatrixDecomposition(c)}return null==d[0]||null==e[0]?[[!1],[!0],function(a){return a?c[0].d:b[0].d}]:(d[0].push(0),e[0].push(1),[d,e,function(b){var c=a.quat(d[0][3],e[0][3],b[5]),g=a.composeMatrix(b[0],b[1],b[2],c,b[4]),h=g.map(f).join(",");return h}])}function h(a){return a.replace(/[xy]/,"")}function i(a){return a.replace(/(x|y|z|3d)?$/,"3d")}function j(b,c){var d=a.makeMatrixDecomposition&&!0,e=!1;if(!b.length||!c.length){b.length||(e=!0,b=c,c=[]);for(var f=0;f<b.length;f++){var j=b[f].t,k=b[f].d,l="scale"==j.substr(0,5)?1:0;c.push({t:j,d:k.map(function(a){if("number"==typeof a)return l;var b={};for(var c in a)b[c]=l;return b})})}}var m=function(a,b){return"perspective"==a&&"perspective"==b||("matrix"==a||"matrix3d"==a)&&("matrix"==b||"matrix3d"==b)},o=[],p=[],q=[];if(b.length!=c.length){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]]}else for(var f=0;f<b.length;f++){var j,s=b[f].t,t=c[f].t,u=b[f].d,v=c[f].d,w=n[s],x=n[t];if(m(s,t)){if(!d)return;var r=g([b[f]],[c[f]]);o.push(r[0]),p.push(r[1]),q.push(["matrix",[r[2]]])}else{if(s==t)j=s;else if(w[2]&&x[2]&&h(s)==h(t))j=h(s),u=w[2](u),v=x[2](v);else{if(!w[1]||!x[1]||i(s)!=i(t)){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]];break}j=i(s),u=w[1](u),v=x[1](v)}for(var y=[],z=[],A=[],B=0;B<u.length;B++){var C="number"==typeof u[B]?a.mergeNumbers:a.mergeDimensions,r=C(u[B],v[B]);y[B]=r[0],z[B]=r[1],A.push(r[2])}o.push(y),p.push(z),q.push([j,A])}}if(e){var D=o;o=p,p=D}return[o,p,function(a){return a.map(function(a,b){var c=a.map(function(a,c){return q[b][1][c](a)}).join(",");return"matrix"==q[b][0]&&16==c.split(",").length&&(q[b][0]="matrix3d"),q[b][0]+"("+c+")"}).join(" ")}]}var k=null,l={px:0},m={deg:0},n={matrix:["NNNNNN",[k,k,0,0,k,k,0,0,0,0,1,0,k,k,0,1],d],matrix3d:["NNNNNNNNNNNNNNNN",d],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",c([k,k,1]),d],scalex:["N",c([k,1,1]),c([k,1])],scaley:["N",c([1,k,1]),c([1,k])],scalez:["N",c([1,1,k])],scale3d:["NNN",d],skew:["Aa",null,d],skewx:["A",null,c([k,m])],skewy:["A",null,c([m,k])],translate:["Tt",c([k,k,l]),d],translatex:["T",c([k,l,l]),c([k,l])],translatey:["T",c([l,k,l]),c([l,k])],translatez:["L",c([l,l,k])],translate3d:["TTL",d]};a.addPropertiesHandler(e,j,["transform"])}(d,f),function(a){function b(a){var b=Number(a);return isNaN(b)||100>b||b>900||b%100!==0?void 0:b}function c(b){return b=100*Math.round(b/100),b=a.clamp(100,900,b),400===b?"normal":700===b?"bold":String(b)}function d(a,b){return[a,b,c]}a.addPropertiesHandler(b,d,["font-weight"])}(d),function(a){function b(a){var b={};for(var c in a)b[c]=-a[c];return b}function c(b){return a.consumeToken(/^(left|center|right|top|bottom)\b/i,b)||a.consumeLengthOrPercent(b)}function d(b,d){var e=a.consumeRepeated(c,/^/,d);if(e&&""==e[1]){var f=e[0];if(f[0]=f[0]||"center",f[1]=f[1]||"center",3==b&&(f[2]=f[2]||{px:0}),f.length==b){if(/top|bottom/.test(f[0])||/left|right/.test(f[1])){var h=f[0];f[0]=f[1],f[1]=h}if(/left|right|center|Object/.test(f[0])&&/top|bottom|center|Object/.test(f[1]))return f.map(function(a){return"object"==typeof a?a:g[a]})}}}function e(d){var e=a.consumeRepeated(c,/^/,d);if(e){for(var f=e[0],h=[{"%":50},{"%":50}],i=0,j=!1,k=0;k<f.length;k++){var l=f[k];"string"==typeof l?(j=/bottom|right/.test(l),i={left:0,right:0,center:i,top:1,bottom:1}[l],h[i]=g[l],"center"==l&&i++):(j&&(l=b(l),l["%"]=(l["%"]||0)+100),h[i]=l,i++,j=!1)}return[h,e[1]]}}function f(b){var c=a.consumeRepeated(e,/^,/,b);return c&&""==c[1]?c[0]:void 0}var g={left:{"%":0},center:{"%":50},right:{"%":100},top:{"%":0},bottom:{"%":100}},h=a.mergeNestedRepeated.bind(null,a.mergeDimensions," ");a.addPropertiesHandler(d.bind(null,3),h,["transform-origin"]),a.addPropertiesHandler(d.bind(null,2),h,["perspective-origin"]),a.consumePosition=e,a.mergeOffsetList=h;var i=a.mergeNestedRepeated.bind(null,h,", ");a.addPropertiesHandler(f,i,["background-position","object-position"])}(d),function(a){function b(b){var c=a.consumeToken(/^circle/,b);if(c&&c[0])return["circle"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),d,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\)/))],c[1]));var f=a.consumeToken(/^ellipse/,b);if(f&&f[0])return["ellipse"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),e,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\)/))],f[1]));var g=a.consumeToken(/^polygon/,b);return g&&g[0]?["polygon"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),a.optional(a.consumeToken.bind(void 0,/^nonzero\s*,|^evenodd\s*,/),"nonzero,"),a.consumeSizePairList,a.ignore(a.consumeToken.bind(void 0,/^\)/))],g[1])):void 0}function c(b,c){return b[0]===c[0]?"circle"==b[0]?a.mergeList(b.slice(1),c.slice(1),["circle(",a.mergeDimensions," at ",a.mergeOffsetList,")"]):"ellipse"==b[0]?a.mergeList(b.slice(1),c.slice(1),["ellipse(",a.mergeNonNegativeSizePair," at ",a.mergeOffsetList,")"]):"polygon"==b[0]&&b[1]==c[1]?a.mergeList(b.slice(2),c.slice(2),["polygon(",b[1],g,")"]):void 0:void 0}var d=a.consumeParenthesised.bind(null,a.parseLengthOrPercent),e=a.consumeRepeated.bind(void 0,d,/^/),f=a.mergeNestedRepeated.bind(void 0,a.mergeDimensions," "),g=a.mergeNestedRepeated.bind(void 0,f,",");a.addPropertiesHandler(b,c,["shape-outside"])}(d),function(a,b){function c(a,b){b.concat([a]).forEach(function(b){b in document.documentElement.style&&(d[a]=b)})}var d={};c("transform",["webkitTransform","msTransform"]),c("transformOrigin",["webkitTransformOrigin"]),c("perspective",["webkitPerspective"]),c("perspectiveOrigin",["webkitPerspectiveOrigin"]),a.propertyName=function(a){return d[a]||a}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var a;if(window.performance&&performance.now)var a=function(){return performance.now()};else var a=function(){return Date.now()};var b=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="cancel",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},c=window.Element.prototype.animate;window.Element.prototype.animate=function(d,e){var f=c.call(this,d,e);f._cancelHandlers=[],f.oncancel=null;var g=f.cancel;f.cancel=function(){g.call(this);var c=new b(this,null,a()),d=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){d.forEach(function(a){a.call(c.target,c)})},0)};var h=f.addEventListener;f.addEventListener=function(a,b){"function"==typeof b&&"cancel"==a?this._cancelHandlers.push(b):h.call(this,a,b)};var i=f.removeEventListener;return f.removeEventListener=function(a,b){if("cancel"==a){var c=this._cancelHandlers.indexOf(b);c>=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue("opacity"),f="0"==e?"1":"0";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue("opacity")==f}catch(g){}finally{c&&c.cancel()}if(!d){var h=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),h.call(this,b,c)}}}(c),b["true"]=a}({},function(){return this}()); +!function(a,b){var c={},d={},e={},f=null;!function(a,b){function c(a){if("number"==typeof a)return a;var b={};for(var c in a)b[c]=a[c];return b}function d(){this._delay=0,this._endDelay=0,this._fill="none",this._iterationStart=0,this._iterations=1,this._duration=0,this._playbackRate=1,this._direction="normal",this._easing="linear",this._easingFunction=x}function e(){return a.isDeprecated("Invalid timing inputs","2016-03-02","TypeError exceptions will be thrown instead.",!0)}function f(b,c,e){var f=new d;return c&&(f.fill="both",f.duration="auto"),"number"!=typeof b||isNaN(b)?void 0!==b&&Object.getOwnPropertyNames(b).forEach(function(c){if("auto"!=b[c]){if(("number"==typeof f[c]||"duration"==c)&&("number"!=typeof b[c]||isNaN(b[c])))return;if("fill"==c&&v.indexOf(b[c])==-1)return;if("direction"==c&&w.indexOf(b[c])==-1)return;if("playbackRate"==c&&1!==b[c]&&a.isDeprecated("AnimationEffectTiming.playbackRate","2014-11-28","Use Animation.playbackRate instead."))return;f[c]=b[c]}}):f.duration=b,f}function g(a){return"number"==typeof a&&(a=isNaN(a)?{duration:0}:{duration:a}),a}function h(b,c){return b=a.numericTimingToObject(b),f(b,c)}function i(a,b,c,d){return a<0||a>1||c<0||c>1?x:function(e){function f(a,b,c){return 3*a*(1-c)*(1-c)*c+3*b*(1-c)*c*c+c*c*c}if(e<=0){var g=0;return a>0?g=b/a:!b&&c>0&&(g=d/c),g*e}if(e>=1){var h=0;return c<1?h=(d-1)/(c-1):1==c&&a<1&&(h=(b-1)/(a-1)),1+h*(e-1)}for(var i=0,j=1;i<j;){var k=(i+j)/2,l=f(a,c,k);if(Math.abs(e-l)<1e-5)return f(b,d,k);l<e?i=k:j=k}return f(b,d,k)}}function j(a,b){return function(c){if(c>=1)return 1;var d=1/a;return c+=b*d,c-c%d}}function k(a){C||(C=document.createElement("div").style),C.animationTimingFunction="",C.animationTimingFunction=a;var b=C.animationTimingFunction;if(""==b&&e())throw new TypeError(a+" is not a valid value for easing");return b}function l(a){if("linear"==a)return x;var b=E.exec(a);if(b)return i.apply(this,b.slice(1).map(Number));var c=F.exec(a);if(c)return j(Number(c[1]),{start:y,middle:z,end:A}[c[2]]);var d=B[a];return d?d:x}function m(a){return Math.abs(n(a)/a.playbackRate)}function n(a){return 0===a.duration||0===a.iterations?0:a.duration*a.iterations}function o(a,b,c){if(null==b)return G;var d=c.delay+a+c.endDelay;return b<Math.min(c.delay,d)?H:b>=Math.min(c.delay+a,d)?I:J}function p(a,b,c,d,e){switch(d){case H:return"backwards"==b||"both"==b?0:null;case J:return c-e;case I:return"forwards"==b||"both"==b?a:null;case G:return null}}function q(a,b,c,d,e){var f=e;return 0===a?b!==H&&(f+=c):f+=d/a,f}function r(a,b,c,d,e,f){var g=a===1/0?b%1:a%1;return 0!==g||c!==I||0===d||0===e&&0!==f||(g=1),g}function s(a,b,c,d){return a===I&&b===1/0?1/0:1===c?Math.floor(d)-1:Math.floor(d)}function t(a,b,c){var d=a;if("normal"!==a&&"reverse"!==a){var e=b;"alternate-reverse"===a&&(e+=1),d="normal",e!==1/0&&e%2!==0&&(d="reverse")}return"normal"===d?c:1-c}function u(a,b,c){var d=o(a,b,c),e=p(a,c.fill,b,d,c.delay);if(null===e)return null;var f=q(c.duration,d,c.iterations,e,c.iterationStart),g=r(f,c.iterationStart,d,c.iterations,e,c.duration),h=s(d,c.iterations,g,f),i=t(c.direction,h,g);return c._easingFunction(i)}var v="backwards|forwards|both|none".split("|"),w="reverse|alternate|alternate-reverse".split("|"),x=function(a){return a};d.prototype={_setMember:function(b,c){this["_"+b]=c,this._effect&&(this._effect._timingInput[b]=c,this._effect._timing=a.normalizeTimingInput(this._effect._timingInput),this._effect.activeDuration=a.calculateActiveDuration(this._effect._timing),this._effect._animation&&this._effect._animation._rebuildUnderlyingAnimation())},get playbackRate(){return this._playbackRate},set delay(a){this._setMember("delay",a)},get delay(){return this._delay},set endDelay(a){this._setMember("endDelay",a)},get endDelay(){return this._endDelay},set fill(a){this._setMember("fill",a)},get fill(){return this._fill},set iterationStart(a){if((isNaN(a)||a<0)&&e())throw new TypeError("iterationStart must be a non-negative number, received: "+timing.iterationStart);this._setMember("iterationStart",a)},get iterationStart(){return this._iterationStart},set duration(a){if("auto"!=a&&(isNaN(a)||a<0)&&e())throw new TypeError("duration must be non-negative or auto, received: "+a);this._setMember("duration",a)},get duration(){return this._duration},set direction(a){this._setMember("direction",a)},get direction(){return this._direction},set easing(a){this._easingFunction=l(k(a)),this._setMember("easing",a)},get easing(){return this._easing},set iterations(a){if((isNaN(a)||a<0)&&e())throw new TypeError("iterations must be non-negative, received: "+a);this._setMember("iterations",a)},get iterations(){return this._iterations}};var y=1,z=.5,A=0,B={ease:i(.25,.1,.25,1),"ease-in":i(.42,0,1,1),"ease-out":i(0,0,.58,1),"ease-in-out":i(.42,0,.58,1),"step-start":j(1,y),"step-middle":j(1,z),"step-end":j(1,A)},C=null,D="\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*",E=new RegExp("cubic-bezier\\("+D+","+D+","+D+","+D+"\\)"),F=/steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/,G=0,H=1,I=2,J=3;a.cloneTimingInput=c,a.makeTiming=f,a.numericTimingToObject=g,a.normalizeTimingInput=h,a.calculateActiveDuration=m,a.calculateIterationProgress=u,a.calculatePhase=o,a.normalizeEasing=k,a.parseEasingFunction=l}(c,f),function(a,b){function c(a,b){return a in k?k[a][b]||b:b}function d(a){return"display"===a||0===a.lastIndexOf("animation",0)||0===a.lastIndexOf("transition",0)}function e(a,b,e){if(!d(a)){var f=h[a];if(f){i.style[a]=b;for(var g in f){var j=f[g],k=i.style[j];e[j]=c(j,k)}}else e[a]=c(a,b)}}function f(a){var b=[];for(var c in a)if(!(c in["easing","offset","composite"])){var d=a[c];Array.isArray(d)||(d=[d]);for(var e,f=d.length,g=0;g<f;g++)e={},"offset"in a?e.offset=a.offset:1==f?e.offset=1:e.offset=g/(f-1),"easing"in a&&(e.easing=a.easing),"composite"in a&&(e.composite=a.composite),e[c]=d[g],b.push(e)}return b.sort(function(a,b){return a.offset-b.offset}),b}function g(b){function c(){var a=d.length;null==d[a-1].offset&&(d[a-1].offset=1),a>1&&null==d[0].offset&&(d[0].offset=0);for(var b=0,c=d[0].offset,e=1;e<a;e++){var f=d[e].offset;if(null!=f){for(var g=1;g<e-b;g++)d[b+g].offset=c+(f-c)*g/(e-b);b=e,c=f}}}if(null==b)return[];window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||(b=f(b));for(var d=b.map(function(b){var c={};for(var d in b){var f=b[d];if("offset"==d){if(null!=f){if(f=Number(f),!isFinite(f))throw new TypeError("Keyframe offsets must be numbers.");if(f<0||f>1)throw new TypeError("Keyframe offsets must be between 0 and 1.")}}else if("composite"==d){if("add"==f||"accumulate"==f)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"add compositing is not supported"};if("replace"!=f)throw new TypeError("Invalid composite mode "+f+".")}else f="easing"==d?a.normalizeEasing(f):""+f;e(d,f,c)}return void 0==c.offset&&(c.offset=null),void 0==c.easing&&(c.easing="linear"),c}),g=!0,h=-(1/0),i=0;i<d.length;i++){var j=d[i].offset;if(null!=j){if(j<h)throw new TypeError("Keyframes are not loosely sorted by offset. Sort or specify offsets.");h=j}else g=!1}return d=d.filter(function(a){return a.offset>=0&&a.offset<=1}),g||c(),d}var h={background:["backgroundImage","backgroundPosition","backgroundSize","backgroundRepeat","backgroundAttachment","backgroundOrigin","backgroundClip","backgroundColor"],border:["borderTopColor","borderTopStyle","borderTopWidth","borderRightColor","borderRightStyle","borderRightWidth","borderBottomColor","borderBottomStyle","borderBottomWidth","borderLeftColor","borderLeftStyle","borderLeftWidth"],borderBottom:["borderBottomWidth","borderBottomStyle","borderBottomColor"],borderColor:["borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"],borderLeft:["borderLeftWidth","borderLeftStyle","borderLeftColor"],borderRadius:["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],borderRight:["borderRightWidth","borderRightStyle","borderRightColor"],borderTop:["borderTopWidth","borderTopStyle","borderTopColor"],borderWidth:["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"],flex:["flexGrow","flexShrink","flexBasis"],font:["fontFamily","fontSize","fontStyle","fontVariant","fontWeight","lineHeight"],margin:["marginTop","marginRight","marginBottom","marginLeft"],outline:["outlineColor","outlineStyle","outlineWidth"],padding:["paddingTop","paddingRight","paddingBottom","paddingLeft"]},i=document.createElementNS("http://www.w3.org/1999/xhtml","div"),j={thin:"1px",medium:"3px",thick:"5px"},k={borderBottomWidth:j,borderLeftWidth:j,borderRightWidth:j,borderTopWidth:j,fontSize:{"xx-small":"60%","x-small":"75%",small:"89%",medium:"100%",large:"120%","x-large":"150%","xx-large":"200%"},fontWeight:{normal:"400",bold:"700"},outlineWidth:j,textShadow:{none:"0px 0px 0px transparent"},boxShadow:{none:"0px 0px 0px 0px transparent"}};a.convertToArrayForm=f,a.normalizeKeyframes=g}(c,f),function(a){var b={};a.isDeprecated=function(a,c,d,e){var f=e?"are":"is",g=new Date,h=new Date(c);return h.setMonth(h.getMonth()+3),!(g<h&&(a in b||console.warn("Web Animations: "+a+" "+f+" deprecated and will stop working on "+h.toDateString()+". "+d),b[a]=!0,1))},a.deprecated=function(b,c,d,e){var f=e?"are":"is";if(a.isDeprecated(b,c,d,e))throw new Error(b+" "+f+" no longer supported. "+d)}}(c),function(){if(document.documentElement.animate){var a=document.documentElement.animate([],0),b=!0;if(a&&(b=!1,"play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState".split("|").forEach(function(c){void 0===a[c]&&(b=!0)})),!b)return}!function(a,b,c){function d(a){for(var b={},c=0;c<a.length;c++)for(var d in a[c])if("offset"!=d&&"easing"!=d&&"composite"!=d){var e={offset:a[c].offset,easing:a[c].easing,value:a[c][d]};b[d]=b[d]||[],b[d].push(e)}for(var f in b){var g=b[f];if(0!=g[0].offset||1!=g[g.length-1].offset)throw{type:DOMException.NOT_SUPPORTED_ERR,name:"NotSupportedError",message:"Partial keyframes are not supported"}}return b}function e(c){var d=[];for(var e in c)for(var f=c[e],g=0;g<f.length-1;g++){var h=g,i=g+1,j=f[h].offset,k=f[i].offset,l=j,m=k;0==g&&(l=-(1/0),0==k&&(i=h)),g==f.length-2&&(m=1/0,1==j&&(h=i)),d.push({applyFrom:l,applyTo:m,startOffset:f[h].offset,endOffset:f[i].offset,easingFunction:a.parseEasingFunction(f[h].easing),property:e,interpolation:b.propertyInterpolation(e,f[h].value,f[i].value)})}return d.sort(function(a,b){return a.startOffset-b.startOffset}),d}b.convertEffectInput=function(c){var f=a.normalizeKeyframes(c),g=d(f),h=e(g);return function(a,c){if(null!=c)h.filter(function(a){return c>=a.applyFrom&&c<a.applyTo}).forEach(function(d){var e=c-d.startOffset,f=d.endOffset-d.startOffset,g=0==f?0:d.easingFunction(e/f);b.apply(a,d.property,d.interpolation(g))});else for(var d in g)"offset"!=d&&"easing"!=d&&"composite"!=d&&b.clear(a,d)}}}(c,d,f),function(a,b,c){function d(a){return a.replace(/-(.)/g,function(a,b){return b.toUpperCase()})}function e(a,b,c){h[c]=h[c]||[],h[c].push([a,b])}function f(a,b,c){for(var f=0;f<c.length;f++){var g=c[f];e(a,b,d(g))}}function g(c,e,f){var g=c;/-/.test(c)&&!a.isDeprecated("Hyphenated property names","2016-03-22","Use camelCase instead.",!0)&&(g=d(c)),"initial"!=e&&"initial"!=f||("initial"==e&&(e=i[g]),"initial"==f&&(f=i[g]));for(var j=e==f?[]:h[g],k=0;j&&k<j.length;k++){var l=j[k][0](e),m=j[k][0](f);if(void 0!==l&&void 0!==m){var n=j[k][1](l,m);if(n){var o=b.Interpolation.apply(null,n);return function(a){return 0==a?e:1==a?f:o(a)}}}}return b.Interpolation(!1,!0,function(a){return a?f:e})}var h={};b.addPropertiesHandler=f;var i={backgroundColor:"transparent",backgroundPosition:"0% 0%",borderBottomColor:"currentColor",borderBottomLeftRadius:"0px",borderBottomRightRadius:"0px",borderBottomWidth:"3px",borderLeftColor:"currentColor",borderLeftWidth:"3px",borderRightColor:"currentColor",borderRightWidth:"3px",borderSpacing:"2px",borderTopColor:"currentColor",borderTopLeftRadius:"0px",borderTopRightRadius:"0px",borderTopWidth:"3px",bottom:"auto",clip:"rect(0px, 0px, 0px, 0px)",color:"black",fontSize:"100%",fontWeight:"400",height:"auto",left:"auto",letterSpacing:"normal",lineHeight:"120%",marginBottom:"0px",marginLeft:"0px",marginRight:"0px",marginTop:"0px",maxHeight:"none",maxWidth:"none",minHeight:"0px",minWidth:"0px",opacity:"1.0",outlineColor:"invert",outlineOffset:"0px",outlineWidth:"3px",paddingBottom:"0px",paddingLeft:"0px",paddingRight:"0px",paddingTop:"0px",right:"auto",textIndent:"0px",textShadow:"0px 0px 0px transparent",top:"auto",transform:"",verticalAlign:"0px",visibility:"visible",width:"auto",wordSpacing:"normal",zIndex:"auto"};b.propertyInterpolation=g}(c,d,f),function(a,b,c){function d(b){var c=a.calculateActiveDuration(b),d=function(d){return a.calculateIterationProgress(c,d,b)};return d._totalDuration=b.delay+c+b.endDelay,d}b.KeyframeEffect=function(c,e,f,g){var h,i=d(a.normalizeTimingInput(f)),j=b.convertEffectInput(e),k=function(){j(c,h)};return k._update=function(a){return h=i(a),null!==h},k._clear=function(){j(c,null)},k._hasSameTarget=function(a){return c===a},k._target=c,k._totalDuration=i._totalDuration,k._id=g,k},b.NullEffect=function(a){var b=function(){a&&(a(),a=null)};return b._update=function(){return null},b._totalDuration=0,b._hasSameTarget=function(){return!1},b}}(c,d,f),function(a,b){function c(a,b,c){c.enumerable=!0,c.configurable=!0,Object.defineProperty(a,b,c)}function d(a){this._surrogateStyle=document.createElementNS("http://www.w3.org/1999/xhtml","div").style,this._style=a.style,this._length=0,this._isAnimatedProperty={};for(var b=0;b<this._style.length;b++){var c=this._style[b];this._surrogateStyle[c]=this._style[c]}this._updateIndices()}function e(a){if(!a._webAnimationsPatchedStyle){var b=new d(a);try{c(a,"style",{get:function(){return b}})}catch(b){a.style._set=function(b,c){a.style[b]=c},a.style._clear=function(b){a.style[b]=""}}a._webAnimationsPatchedStyle=a.style}}var f={cssText:1,length:1,parentRule:1},g={getPropertyCSSValue:1,getPropertyPriority:1,getPropertyValue:1,item:1,removeProperty:1,setProperty:1},h={removeProperty:1,setProperty:1};d.prototype={get cssText(){return this._surrogateStyle.cssText},set cssText(a){for(var b={},c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;this._surrogateStyle.cssText=a,this._updateIndices();for(var c=0;c<this._surrogateStyle.length;c++)b[this._surrogateStyle[c]]=!0;for(var d in b)this._isAnimatedProperty[d]||this._style.setProperty(d,this._surrogateStyle.getPropertyValue(d))},get length(){return this._surrogateStyle.length},get parentRule(){return this._style.parentRule},_updateIndices:function(){for(;this._length<this._surrogateStyle.length;)Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,get:function(a){return function(){return this._surrogateStyle[a]}}(this._length)}),this._length++;for(;this._length>this._surrogateStyle.length;)this._length--,Object.defineProperty(this,this._length,{configurable:!0,enumerable:!1,value:void 0})},_set:function(a,b){this._style[a]=b,this._isAnimatedProperty[a]=!0},_clear:function(a){this._style[a]=this._surrogateStyle[a],delete this._isAnimatedProperty[a]}};for(var i in g)d.prototype[i]=function(a,b){return function(){var c=this._surrogateStyle[a].apply(this._surrogateStyle,arguments);return b&&(this._isAnimatedProperty[arguments[0]]||this._style[a].apply(this._style,arguments),this._updateIndices()),c}}(i,i in h);for(var j in document.documentElement.style)j in f||j in g||!function(a){c(d.prototype,a,{get:function(){return this._surrogateStyle[a]},set:function(b){this._surrogateStyle[a]=b,this._updateIndices(),this._isAnimatedProperty[a]||(this._style[a]=b)}})}(j);a.apply=function(b,c,d){e(b),b.style._set(a.propertyName(c),d)},a.clear=function(b,c){b._webAnimationsPatchedStyle&&b.style._clear(a.propertyName(c))}}(d,f),function(a){window.Element.prototype.animate=function(b,c){var d="";return c&&c.id&&(d=c.id),a.timeline._play(a.KeyframeEffect(this,b,c,d))}}(d),function(a,b){function c(a,b,d){if("number"==typeof a&&"number"==typeof b)return a*(1-d)+b*d;if("boolean"==typeof a&&"boolean"==typeof b)return d<.5?a:b;if(a.length==b.length){for(var e=[],f=0;f<a.length;f++)e.push(c(a[f],b[f],d));return e}throw"Mismatched interpolation arguments "+a+":"+b}a.Interpolation=function(a,b,d){return function(e){return d(c(a,b,e))}}}(d,f),function(a,b){function c(a,b,c){return Math.max(Math.min(a,c),b)}function d(b,d,e){var f=a.dot(b,d);f=c(f,-1,1);var g=[];if(1===f)g=b;else for(var h=Math.acos(f),i=1*Math.sin(e*h)/Math.sqrt(1-f*f),j=0;j<4;j++)g.push(b[j]*(Math.cos(e*h)-f*i)+d[j]*i);return g}var e=function(){function a(a,b){for(var c=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],d=0;d<4;d++)for(var e=0;e<4;e++)for(var f=0;f<4;f++)c[d][e]+=b[d][f]*a[f][e];return c}function b(a){return 0==a[0][2]&&0==a[0][3]&&0==a[1][2]&&0==a[1][3]&&0==a[2][0]&&0==a[2][1]&&1==a[2][2]&&0==a[2][3]&&0==a[3][2]&&1==a[3][3]}function c(c,d,e,f,g){for(var h=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],i=0;i<4;i++)h[i][3]=g[i];for(var i=0;i<3;i++)for(var j=0;j<3;j++)h[3][i]+=c[j]*h[j][i];var k=f[0],l=f[1],m=f[2],n=f[3],o=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];o[0][0]=1-2*(l*l+m*m),o[0][1]=2*(k*l-m*n),o[0][2]=2*(k*m+l*n),o[1][0]=2*(k*l+m*n),o[1][1]=1-2*(k*k+m*m),o[1][2]=2*(l*m-k*n),o[2][0]=2*(k*m-l*n),o[2][1]=2*(l*m+k*n),o[2][2]=1-2*(k*k+l*l),h=a(h,o);var p=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]];e[2]&&(p[2][1]=e[2],h=a(h,p)),e[1]&&(p[2][1]=0,p[2][0]=e[0],h=a(h,p)),e[0]&&(p[2][0]=0,p[1][0]=e[0],h=a(h,p));for(var i=0;i<3;i++)for(var j=0;j<3;j++)h[i][j]*=d[i];return b(h)?[h[0][0],h[0][1],h[1][0],h[1][1],h[3][0],h[3][1]]:h[0].concat(h[1],h[2],h[3])}return c}();a.composeMatrix=e,a.quat=d}(d,f),function(a,b,c){a.sequenceNumber=0;var d=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="finish",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()};b.Animation=function(b){this.id="",b&&b._id&&(this.id=b._id),this._sequenceNumber=a.sequenceNumber++,this._currentTime=0,this._startTime=null,this._paused=!1,this._playbackRate=1,this._inTimeline=!0,this._finishedFlag=!0,this.onfinish=null,this._finishHandlers=[],this._effect=b,this._inEffect=this._effect._update(0),this._idle=!0,this._currentTimePending=!1},b.Animation.prototype={_ensureAlive:function(){this.playbackRate<0&&0===this.currentTime?this._inEffect=this._effect._update(-1):this._inEffect=this._effect._update(this.currentTime),this._inTimeline||!this._inEffect&&this._finishedFlag||(this._inTimeline=!0,b.timeline._animations.push(this))},_tickCurrentTime:function(a,b){a!=this._currentTime&&(this._currentTime=a,this._isFinished&&!b&&(this._currentTime=this._playbackRate>0?this._totalDuration:0),this._ensureAlive())},get currentTime(){return this._idle||this._currentTimePending?null:this._currentTime},set currentTime(a){a=+a,isNaN(a)||(b.restart(),this._paused||null==this._startTime||(this._startTime=this._timeline.currentTime-a/this._playbackRate),this._currentTimePending=!1,this._currentTime!=a&&(this._idle&&(this._idle=!1,this._paused=!0),this._tickCurrentTime(a,!0),b.applyDirtiedAnimation(this)))},get startTime(){return this._startTime},set startTime(a){a=+a,isNaN(a)||this._paused||this._idle||(this._startTime=a,this._tickCurrentTime((this._timeline.currentTime-this._startTime)*this.playbackRate),b.applyDirtiedAnimation(this))},get playbackRate(){return this._playbackRate},set playbackRate(a){if(a!=this._playbackRate){var c=this.currentTime;this._playbackRate=a,this._startTime=null,"paused"!=this.playState&&"idle"!=this.playState&&(this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)),null!=c&&(this.currentTime=c)}},get _isFinished(){return!this._idle&&(this._playbackRate>0&&this._currentTime>=this._totalDuration||this._playbackRate<0&&this._currentTime<=0)},get _totalDuration(){return this._effect._totalDuration},get playState(){return this._idle?"idle":null==this._startTime&&!this._paused&&0!=this.playbackRate||this._currentTimePending?"pending":this._paused?"paused":this._isFinished?"finished":"running"},_rewind:function(){if(this._playbackRate>=0)this._currentTime=0;else{if(!(this._totalDuration<1/0))throw new DOMException("Unable to rewind negative playback rate animation with infinite duration","InvalidStateError");this._currentTime=this._totalDuration}},play:function(){this._paused=!1,(this._isFinished||this._idle)&&(this._rewind(),this._startTime=null),this._finishedFlag=!1,this._idle=!1,this._ensureAlive(),b.applyDirtiedAnimation(this)},pause:function(){this._isFinished||this._paused||this._idle?this._idle&&(this._rewind(),this._idle=!1):this._currentTimePending=!0,this._startTime=null,this._paused=!0},finish:function(){this._idle||(this.currentTime=this._playbackRate>0?this._totalDuration:0,this._startTime=this._totalDuration-this.currentTime,this._currentTimePending=!1,b.applyDirtiedAnimation(this))},cancel:function(){this._inEffect&&(this._inEffect=!1,this._idle=!0,this._paused=!1,this._isFinished=!0,this._finishedFlag=!0,this._currentTime=0,this._startTime=null,this._effect._update(null),b.applyDirtiedAnimation(this))},reverse:function(){this.playbackRate*=-1,this.play()},addEventListener:function(a,b){"function"==typeof b&&"finish"==a&&this._finishHandlers.push(b)},removeEventListener:function(a,b){if("finish"==a){var c=this._finishHandlers.indexOf(b);c>=0&&this._finishHandlers.splice(c,1)}},_fireEvents:function(a){if(this._isFinished){if(!this._finishedFlag){var b=new d(this,this._currentTime,a),c=this._finishHandlers.concat(this.onfinish?[this.onfinish]:[]);setTimeout(function(){c.forEach(function(a){a.call(b.target,b)})},0),this._finishedFlag=!0}}else this._finishedFlag=!1},_tick:function(a,b){this._idle||this._paused||(null==this._startTime?b&&(this.startTime=a-this._currentTime/this.playbackRate):this._isFinished||this._tickCurrentTime((a-this._startTime)*this.playbackRate)),b&&(this._currentTimePending=!1,this._fireEvents(a))},get _needsTick(){return this.playState in{pending:1,running:1}||!this._finishedFlag},_targetAnimations:function(){var a=this._effect._target;return a._activeAnimations||(a._activeAnimations=[]),a._activeAnimations},_markTarget:function(){var a=this._targetAnimations();a.indexOf(this)===-1&&a.push(this)},_unmarkTarget:function(){var a=this._targetAnimations(),b=a.indexOf(this);b!==-1&&a.splice(b,1)}}}(c,d,f),function(a,b,c){function d(a){var b=j;j=[],a<q.currentTime&&(a=q.currentTime),q._animations.sort(e),q._animations=h(a,!0,q._animations)[0],b.forEach(function(b){b[1](a)}),g(),l=void 0}function e(a,b){return a._sequenceNumber-b._sequenceNumber}function f(){this._animations=[],this.currentTime=window.performance&&performance.now?performance.now():0}function g(){o.forEach(function(a){a()}),o.length=0}function h(a,c,d){p=!0,n=!1;var e=b.timeline;e.currentTime=a,m=!1;var f=[],g=[],h=[],i=[];return d.forEach(function(b){b._tick(a,c),b._inEffect?(g.push(b._effect),b._markTarget()):(f.push(b._effect),b._unmarkTarget()),b._needsTick&&(m=!0);var d=b._inEffect||b._needsTick;b._inTimeline=d,d?h.push(b):i.push(b)}),o.push.apply(o,f),o.push.apply(o,g),m&&requestAnimationFrame(function(){}),p=!1,[h,i]}var i=window.requestAnimationFrame,j=[],k=0;window.requestAnimationFrame=function(a){var b=k++;return 0==j.length&&i(d),j.push([b,a]),b},window.cancelAnimationFrame=function(a){j.forEach(function(b){b[0]==a&&(b[1]=function(){})})},f.prototype={_play:function(c){c._timing=a.normalizeTimingInput(c.timing);var d=new b.Animation(c);return d._idle=!1,d._timeline=this,this._animations.push(d),b.restart(),b.applyDirtiedAnimation(d),d}};var l=void 0,m=!1,n=!1;b.restart=function(){return m||(m=!0,requestAnimationFrame(function(){}),n=!0),n},b.applyDirtiedAnimation=function(a){if(!p){a._markTarget();var c=a._targetAnimations();c.sort(e);var d=h(b.timeline.currentTime,!1,c.slice())[1];d.forEach(function(a){var b=q._animations.indexOf(a);b!==-1&&q._animations.splice(b,1)}),g()}};var o=[],p=!1,q=new f;b.timeline=q}(c,d,f),function(a,b){function c(a,b){for(var c=0,d=0;d<a.length;d++)c+=a[d]*b[d];return c}function d(a,b){return[a[0]*b[0]+a[4]*b[1]+a[8]*b[2]+a[12]*b[3],a[1]*b[0]+a[5]*b[1]+a[9]*b[2]+a[13]*b[3],a[2]*b[0]+a[6]*b[1]+a[10]*b[2]+a[14]*b[3],a[3]*b[0]+a[7]*b[1]+a[11]*b[2]+a[15]*b[3],a[0]*b[4]+a[4]*b[5]+a[8]*b[6]+a[12]*b[7],a[1]*b[4]+a[5]*b[5]+a[9]*b[6]+a[13]*b[7],a[2]*b[4]+a[6]*b[5]+a[10]*b[6]+a[14]*b[7],a[3]*b[4]+a[7]*b[5]+a[11]*b[6]+a[15]*b[7],a[0]*b[8]+a[4]*b[9]+a[8]*b[10]+a[12]*b[11],a[1]*b[8]+a[5]*b[9]+a[9]*b[10]+a[13]*b[11],a[2]*b[8]+a[6]*b[9]+a[10]*b[10]+a[14]*b[11],a[3]*b[8]+a[7]*b[9]+a[11]*b[10]+a[15]*b[11],a[0]*b[12]+a[4]*b[13]+a[8]*b[14]+a[12]*b[15],a[1]*b[12]+a[5]*b[13]+a[9]*b[14]+a[13]*b[15],a[2]*b[12]+a[6]*b[13]+a[10]*b[14]+a[14]*b[15],a[3]*b[12]+a[7]*b[13]+a[11]*b[14]+a[15]*b[15]]}function e(a){var b=a.rad||0,c=a.deg||0,d=a.grad||0,e=a.turn||0,f=(c/360+d/400+e)*(2*Math.PI)+b;return f}function f(a){switch(a.t){case"rotatex":var b=e(a.d[0]);return[1,0,0,0,0,Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1];case"rotatey":var b=e(a.d[0]);return[Math.cos(b),0,-Math.sin(b),0,0,1,0,0,Math.sin(b),0,Math.cos(b),0,0,0,0,1];case"rotate":case"rotatez":var b=e(a.d[0]);return[Math.cos(b),Math.sin(b),0,0,-Math.sin(b),Math.cos(b),0,0,0,0,1,0,0,0,0,1];case"rotate3d":var c=a.d[0],d=a.d[1],f=a.d[2],b=e(a.d[3]),g=c*c+d*d+f*f;if(0===g)c=1,d=0,f=0;else if(1!==g){var h=Math.sqrt(g);c/=h,d/=h,f/=h}var i=Math.sin(b/2),j=i*Math.cos(b/2),k=i*i;return[1-2*(d*d+f*f)*k,2*(c*d*k+f*j),2*(c*f*k-d*j),0,2*(c*d*k-f*j),1-2*(c*c+f*f)*k,2*(d*f*k+c*j),0,2*(c*f*k+d*j),2*(d*f*k-c*j),1-2*(c*c+d*d)*k,0,0,0,0,1];case"scale":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,1,0,0,0,0,1];case"scalex":return[a.d[0],0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];case"scaley":return[1,0,0,0,0,a.d[0],0,0,0,0,1,0,0,0,0,1];case"scalez":return[1,0,0,0,0,1,0,0,0,0,a.d[0],0,0,0,0,1];case"scale3d":return[a.d[0],0,0,0,0,a.d[1],0,0,0,0,a.d[2],0,0,0,0,1];case"skew":var l=e(a.d[0]),m=e(a.d[1]);return[1,Math.tan(m),0,0,Math.tan(l),1,0,0,0,0,1,0,0,0,0,1];case"skewx":var b=e(a.d[0]);return[1,0,0,0,Math.tan(b),1,0,0,0,0,1,0,0,0,0,1];case"skewy":var b=e(a.d[0]);return[1,Math.tan(b),0,0,0,1,0,0,0,0,1,0,0,0,0,1];case"translate":var c=a.d[0].px||0,d=a.d[1].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,0,1];case"translatex":var c=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,0,0,1];case"translatey":var d=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,d,0,1];case"translatez":var f=a.d[0].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,f,1];case"translate3d":var c=a.d[0].px||0,d=a.d[1].px||0,f=a.d[2].px||0;return[1,0,0,0,0,1,0,0,0,0,1,0,c,d,f,1];case"perspective":var n=a.d[0].px?-1/a.d[0].px:0;return[1,0,0,0,0,1,0,0,0,0,1,n,0,0,0,1];case"matrix":return[a.d[0],a.d[1],0,0,a.d[2],a.d[3],0,0,0,0,1,0,a.d[4],a.d[5],0,1];case"matrix3d":return a.d}}function g(a){return 0===a.length?[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]:a.map(f).reduce(d)}function h(a){return[i(g(a))]}var i=function(){function a(a){return a[0][0]*a[1][1]*a[2][2]+a[1][0]*a[2][1]*a[0][2]+a[2][0]*a[0][1]*a[1][2]-a[0][2]*a[1][1]*a[2][0]-a[1][2]*a[2][1]*a[0][0]-a[2][2]*a[0][1]*a[1][0]}function b(b){for(var c=1/a(b),d=b[0][0],e=b[0][1],f=b[0][2],g=b[1][0],h=b[1][1],i=b[1][2],j=b[2][0],k=b[2][1],l=b[2][2],m=[[(h*l-i*k)*c,(f*k-e*l)*c,(e*i-f*h)*c,0],[(i*j-g*l)*c,(d*l-f*j)*c,(f*g-d*i)*c,0],[(g*k-h*j)*c,(j*e-d*k)*c,(d*h-e*g)*c,0]],n=[],o=0;o<3;o++){for(var p=0,q=0;q<3;q++)p+=b[3][q]*m[q][o];n.push(p)}return n.push(1),m.push(n),m}function d(a){return[[a[0][0],a[1][0],a[2][0],a[3][0]],[a[0][1],a[1][1],a[2][1],a[3][1]],[a[0][2],a[1][2],a[2][2],a[3][2]],[a[0][3],a[1][3],a[2][3],a[3][3]]]}function e(a,b){for(var c=[],d=0;d<4;d++){for(var e=0,f=0;f<4;f++)e+=a[f]*b[f][d];c.push(e)}return c}function f(a){var b=g(a);return[a[0]/b,a[1]/b,a[2]/b]}function g(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2])}function h(a,b,c,d){return[c*a[0]+d*b[0],c*a[1]+d*b[1],c*a[2]+d*b[2]]}function i(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function j(j){var k=[j.slice(0,4),j.slice(4,8),j.slice(8,12),j.slice(12,16)];if(1!==k[3][3])return null;for(var l=[],m=0;m<4;m++)l.push(k[m].slice());for(var m=0;m<3;m++)l[m][3]=0;if(0===a(l))return!1;var n,o=[];if(k[0][3]||k[1][3]||k[2][3]){o.push(k[0][3]),o.push(k[1][3]),o.push(k[2][3]),o.push(k[3][3]);var p=b(l),q=d(p);n=e(o,q)}else n=[0,0,0,1];var r=k[3].slice(0,3),s=[];s.push(k[0].slice(0,3));var t=[];t.push(g(s[0])),s[0]=f(s[0]);var u=[];s.push(k[1].slice(0,3)),u.push(c(s[0],s[1])),s[1]=h(s[1],s[0],1,-u[0]),t.push(g(s[1])),s[1]=f(s[1]),u[0]/=t[1],s.push(k[2].slice(0,3)),u.push(c(s[0],s[2])),s[2]=h(s[2],s[0],1,-u[1]),u.push(c(s[1],s[2])),s[2]=h(s[2],s[1],1,-u[2]),t.push(g(s[2])),s[2]=f(s[2]),u[1]/=t[2],u[2]/=t[2];var v=i(s[1],s[2]);if(c(s[0],v)<0)for(var m=0;m<3;m++)t[m]*=-1,s[m][0]*=-1,s[m][1]*=-1,s[m][2]*=-1;var w,x,y=s[0][0]+s[1][1]+s[2][2]+1;return y>1e-4?(w=.5/Math.sqrt(y),x=[(s[2][1]-s[1][2])*w,(s[0][2]-s[2][0])*w,(s[1][0]-s[0][1])*w,.25/w]):s[0][0]>s[1][1]&&s[0][0]>s[2][2]?(w=2*Math.sqrt(1+s[0][0]-s[1][1]-s[2][2]),x=[.25*w,(s[0][1]+s[1][0])/w,(s[0][2]+s[2][0])/w,(s[2][1]-s[1][2])/w]):s[1][1]>s[2][2]?(w=2*Math.sqrt(1+s[1][1]-s[0][0]-s[2][2]),x=[(s[0][1]+s[1][0])/w,.25*w,(s[1][2]+s[2][1])/w,(s[0][2]-s[2][0])/w]):(w=2*Math.sqrt(1+s[2][2]-s[0][0]-s[1][1]),x=[(s[0][2]+s[2][0])/w,(s[1][2]+s[2][1])/w,.25*w,(s[1][0]-s[0][1])/w]),[r,t,u,x,n]}return j}();a.dot=c,a.makeMatrixDecomposition=h}(d,f),function(a){function b(a,b){var c=a.exec(b);if(c)return c=a.ignoreCase?c[0].toLowerCase():c[0],[c,b.substr(c.length)]}function c(a,b){b=b.replace(/^\s*/,"");var c=a(b);if(c)return[c[0],c[1].replace(/^\s*/,"")]}function d(a,d,e){a=c.bind(null,a);for(var f=[];;){var g=a(e);if(!g)return[f,e];if(f.push(g[0]),e=g[1],g=b(d,e),!g||""==g[1])return[f,e];e=g[1]}}function e(a,b){for(var c=0,d=0;d<b.length&&(!/\s|,/.test(b[d])||0!=c);d++)if("("==b[d])c++;else if(")"==b[d]&&(c--,0==c&&d++,c<=0))break;var e=a(b.substr(0,d));return void 0==e?void 0:[e,b.substr(d)]}function f(a,b){for(var c=a,d=b;c&&d;)c>d?c%=d:d%=c;return c=a*b/(c+d)}function g(a){return function(b){var c=a(b);return c&&(c[0]=void 0),c}}function h(a,b){return function(c){var d=a(c);return d?d:[b,c]}}function i(b,c){for(var d=[],e=0;e<b.length;e++){var f=a.consumeTrimmed(b[e],c);if(!f||""==f[0])return;void 0!==f[0]&&d.push(f[0]),c=f[1]}if(""==c)return d}function j(a,b,c,d,e){for(var g=[],h=[],i=[],j=f(d.length,e.length),k=0;k<j;k++){var l=b(d[k%d.length],e[k%e.length]);if(!l)return;g.push(l[0]),h.push(l[1]),i.push(l[2])}return[g,h,function(b){var d=b.map(function(a,b){return i[b](a)}).join(c);return a?a(d):d}]}function k(a,b,c){for(var d=[],e=[],f=[],g=0,h=0;h<c.length;h++)if("function"==typeof c[h]){var i=c[h](a[g],b[g++]);d.push(i[0]),e.push(i[1]),f.push(i[2])}else!function(a){d.push(!1),e.push(!1),f.push(function(){return c[a]})}(h);return[d,e,function(a){for(var b="",c=0;c<a.length;c++)b+=f[c](a[c]);return b}]}a.consumeToken=b,a.consumeTrimmed=c,a.consumeRepeated=d,a.consumeParenthesised=e,a.ignore=g,a.optional=h,a.consumeList=i,a.mergeNestedRepeated=j.bind(null,null),a.mergeWrappedNestedRepeated=j,a.mergeList=k}(d),function(a){function b(b){function c(b){var c=a.consumeToken(/^inset/i,b);if(c)return d.inset=!0,c;var c=a.consumeLengthOrPercent(b);if(c)return d.lengths.push(c[0]),c;var c=a.consumeColor(b);return c?(d.color=c[0],c):void 0}var d={inset:!1,lengths:[],color:null},e=a.consumeRepeated(c,/^/,b);if(e&&e[0].length)return[d,e[1]]}function c(c){var d=a.consumeRepeated(b,/^,/,c);if(d&&""==d[1])return d[0]}function d(b,c){for(;b.lengths.length<Math.max(b.lengths.length,c.lengths.length);)b.lengths.push({px:0});for(;c.lengths.length<Math.max(b.lengths.length,c.lengths.length);)c.lengths.push({px:0});if(b.inset==c.inset&&!!b.color==!!c.color){for(var d,e=[],f=[[],0],g=[[],0],h=0;h<b.lengths.length;h++){var i=a.mergeDimensions(b.lengths[h],c.lengths[h],2==h);f[0].push(i[0]),g[0].push(i[1]),e.push(i[2])}if(b.color&&c.color){var j=a.mergeColors(b.color,c.color);f[1]=j[0],g[1]=j[1],d=j[2]; +}return[f,g,function(a){for(var c=b.inset?"inset ":" ",f=0;f<e.length;f++)c+=e[f](a[0][f])+" ";return d&&(c+=d(a[1])),c}]}}function e(b,c,d,e){function f(a){return{inset:a,color:[0,0,0,0],lengths:[{px:0},{px:0},{px:0},{px:0}]}}for(var g=[],h=[],i=0;i<d.length||i<e.length;i++){var j=d[i]||f(e[i].inset),k=e[i]||f(d[i].inset);g.push(j),h.push(k)}return a.mergeNestedRepeated(b,c,g,h)}var f=e.bind(null,d,", ");a.addPropertiesHandler(c,f,["box-shadow","text-shadow"])}(d),function(a,b){function c(a){return a.toFixed(3).replace(".000","")}function d(a,b,c){return Math.min(b,Math.max(a,c))}function e(a){if(/^\s*[-+]?(\d*\.)?\d+\s*$/.test(a))return Number(a)}function f(a,b){return[a,b,c]}function g(a,b){if(0!=a)return i(0,1/0)(a,b)}function h(a,b){return[a,b,function(a){return Math.round(d(1,1/0,a))}]}function i(a,b){return function(e,f){return[e,f,function(e){return c(d(a,b,e))}]}}function j(a,b){return[a,b,Math.round]}a.clamp=d,a.addPropertiesHandler(e,i(0,1/0),["border-image-width","line-height"]),a.addPropertiesHandler(e,i(0,1),["opacity","shape-image-threshold"]),a.addPropertiesHandler(e,g,["flex-grow","flex-shrink"]),a.addPropertiesHandler(e,h,["orphans","widows"]),a.addPropertiesHandler(e,j,["z-index"]),a.parseNumber=e,a.mergeNumbers=f,a.numberToString=c}(d,f),function(a,b){function c(a,b){if("visible"==a||"visible"==b)return[0,1,function(c){return c<=0?a:c>=1?b:"visible"}]}a.addPropertiesHandler(String,c,["visibility"])}(d),function(a,b){function c(a){a=a.trim(),f.fillStyle="#000",f.fillStyle=a;var b=f.fillStyle;if(f.fillStyle="#fff",f.fillStyle=a,b==f.fillStyle){f.fillRect(0,0,1,1);var c=f.getImageData(0,0,1,1).data;f.clearRect(0,0,1,1);var d=c[3]/255;return[c[0]*d,c[1]*d,c[2]*d,d]}}function d(b,c){return[b,c,function(b){function c(a){return Math.max(0,Math.min(255,a))}if(b[3])for(var d=0;d<3;d++)b[d]=Math.round(c(b[d]/b[3]));return b[3]=a.numberToString(a.clamp(0,1,b[3])),"rgba("+b.join(",")+")"}]}var e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");e.width=e.height=1;var f=e.getContext("2d");a.addPropertiesHandler(c,d,["background-color","border-bottom-color","border-left-color","border-right-color","border-top-color","color","outline-color","text-decoration-color"]),a.consumeColor=a.consumeParenthesised.bind(null,c),a.mergeColors=d}(d,f),function(a,b){function c(a,b){if(b=b.trim().toLowerCase(),"0"==b&&"px".search(a)>=0)return{px:0};if(/^[^(]*$|^calc/.test(b)){b=b.replace(/calc\(/g,"(");var c={};b=b.replace(a,function(a){return c[a]=null,"U"+a});for(var d="U("+a.source+")",e=b.replace(/[-+]?(\d*\.)?\d+/g,"N").replace(new RegExp("N"+d,"g"),"D").replace(/\s[+-]\s/g,"O").replace(/\s/g,""),f=[/N\*(D)/g,/(N|D)[*\/]N/g,/(N|D)O\1/g,/\((N|D)\)/g],g=0;g<f.length;)f[g].test(e)?(e=e.replace(f[g],"$1"),g=0):g++;if("D"==e){for(var h in c){var i=eval(b.replace(new RegExp("U"+h,"g"),"").replace(new RegExp(d,"g"),"*0"));if(!isFinite(i))return;c[h]=i}return c}}}function d(a,b){return e(a,b,!0)}function e(b,c,d){var e,f=[];for(e in b)f.push(e);for(e in c)f.indexOf(e)<0&&f.push(e);return b=f.map(function(a){return b[a]||0}),c=f.map(function(a){return c[a]||0}),[b,c,function(b){var c=b.map(function(c,e){return 1==b.length&&d&&(c=Math.max(c,0)),a.numberToString(c)+f[e]}).join(" + ");return b.length>1?"calc("+c+")":c}]}var f="px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc",g=c.bind(null,new RegExp(f,"g")),h=c.bind(null,new RegExp(f+"|%","g")),i=c.bind(null,/deg|rad|grad|turn/g);a.parseLength=g,a.parseLengthOrPercent=h,a.consumeLengthOrPercent=a.consumeParenthesised.bind(null,h),a.parseAngle=i,a.mergeDimensions=e;var j=a.consumeParenthesised.bind(null,g),k=a.consumeRepeated.bind(void 0,j,/^/),l=a.consumeRepeated.bind(void 0,k,/^,/);a.consumeSizePairList=l;var m=function(a){var b=l(a);if(b&&""==b[1])return b[0]},n=a.mergeNestedRepeated.bind(void 0,d," "),o=a.mergeNestedRepeated.bind(void 0,n,",");a.mergeNonNegativeSizePair=n,a.addPropertiesHandler(m,o,["background-size"]),a.addPropertiesHandler(h,d,["border-bottom-width","border-image-width","border-left-width","border-right-width","border-top-width","flex-basis","font-size","height","line-height","max-height","max-width","outline-width","width"]),a.addPropertiesHandler(h,e,["border-bottom-left-radius","border-bottom-right-radius","border-top-left-radius","border-top-right-radius","bottom","left","letter-spacing","margin-bottom","margin-left","margin-right","margin-top","min-height","min-width","outline-offset","padding-bottom","padding-left","padding-right","padding-top","perspective","right","shape-margin","text-indent","top","vertical-align","word-spacing"])}(d,f),function(a,b){function c(b){return a.consumeLengthOrPercent(b)||a.consumeToken(/^auto/,b)}function d(b){var d=a.consumeList([a.ignore(a.consumeToken.bind(null,/^rect/)),a.ignore(a.consumeToken.bind(null,/^\(/)),a.consumeRepeated.bind(null,c,/^,/),a.ignore(a.consumeToken.bind(null,/^\)/))],b);if(d&&4==d[0].length)return d[0]}function e(b,c){return"auto"==b||"auto"==c?[!0,!1,function(d){var e=d?b:c;if("auto"==e)return"auto";var f=a.mergeDimensions(e,e);return f[2](f[0])}]:a.mergeDimensions(b,c)}function f(a){return"rect("+a+")"}var g=a.mergeWrappedNestedRepeated.bind(null,f,e,", ");a.parseBox=d,a.mergeBoxes=g,a.addPropertiesHandler(d,g,["clip"])}(d,f),function(a,b){function c(a){return function(b){var c=0;return a.map(function(a){return a===k?b[c++]:a})}}function d(a){return a}function e(b){if(b=b.toLowerCase().trim(),"none"==b)return[];for(var c,d=/\s*(\w+)\(([^)]*)\)/g,e=[],f=0;c=d.exec(b);){if(c.index!=f)return;f=c.index+c[0].length;var g=c[1],h=n[g];if(!h)return;var i=c[2].split(","),j=h[0];if(j.length<i.length)return;for(var k=[],o=0;o<j.length;o++){var p,q=i[o],r=j[o];if(p=q?{A:function(b){return"0"==b.trim()?m:a.parseAngle(b)},N:a.parseNumber,T:a.parseLengthOrPercent,L:a.parseLength}[r.toUpperCase()](q):{a:m,n:k[0],t:l}[r],void 0===p)return;k.push(p)}if(e.push({t:g,d:k}),d.lastIndex==b.length)return e}}function f(a){return a.toFixed(6).replace(".000000","")}function g(b,c){if(b.decompositionPair!==c){b.decompositionPair=c;var d=a.makeMatrixDecomposition(b)}if(c.decompositionPair!==b){c.decompositionPair=b;var e=a.makeMatrixDecomposition(c)}return null==d[0]||null==e[0]?[[!1],[!0],function(a){return a?c[0].d:b[0].d}]:(d[0].push(0),e[0].push(1),[d,e,function(b){var c=a.quat(d[0][3],e[0][3],b[5]),g=a.composeMatrix(b[0],b[1],b[2],c,b[4]),h=g.map(f).join(",");return h}])}function h(a){return a.replace(/[xy]/,"")}function i(a){return a.replace(/(x|y|z|3d)?$/,"3d")}function j(b,c){var d=a.makeMatrixDecomposition&&!0,e=!1;if(!b.length||!c.length){b.length||(e=!0,b=c,c=[]);for(var f=0;f<b.length;f++){var j=b[f].t,k=b[f].d,l="scale"==j.substr(0,5)?1:0;c.push({t:j,d:k.map(function(a){if("number"==typeof a)return l;var b={};for(var c in a)b[c]=l;return b})})}}var m=function(a,b){return"perspective"==a&&"perspective"==b||("matrix"==a||"matrix3d"==a)&&("matrix"==b||"matrix3d"==b)},o=[],p=[],q=[];if(b.length!=c.length){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]]}else for(var f=0;f<b.length;f++){var j,s=b[f].t,t=c[f].t,u=b[f].d,v=c[f].d,w=n[s],x=n[t];if(m(s,t)){if(!d)return;var r=g([b[f]],[c[f]]);o.push(r[0]),p.push(r[1]),q.push(["matrix",[r[2]]])}else{if(s==t)j=s;else if(w[2]&&x[2]&&h(s)==h(t))j=h(s),u=w[2](u),v=x[2](v);else{if(!w[1]||!x[1]||i(s)!=i(t)){if(!d)return;var r=g(b,c);o=[r[0]],p=[r[1]],q=[["matrix",[r[2]]]];break}j=i(s),u=w[1](u),v=x[1](v)}for(var y=[],z=[],A=[],B=0;B<u.length;B++){var C="number"==typeof u[B]?a.mergeNumbers:a.mergeDimensions,r=C(u[B],v[B]);y[B]=r[0],z[B]=r[1],A.push(r[2])}o.push(y),p.push(z),q.push([j,A])}}if(e){var D=o;o=p,p=D}return[o,p,function(a){return a.map(function(a,b){var c=a.map(function(a,c){return q[b][1][c](a)}).join(",");return"matrix"==q[b][0]&&16==c.split(",").length&&(q[b][0]="matrix3d"),q[b][0]+"("+c+")"}).join(" ")}]}var k=null,l={px:0},m={deg:0},n={matrix:["NNNNNN",[k,k,0,0,k,k,0,0,0,0,1,0,k,k,0,1],d],matrix3d:["NNNNNNNNNNNNNNNN",d],rotate:["A"],rotatex:["A"],rotatey:["A"],rotatez:["A"],rotate3d:["NNNA"],perspective:["L"],scale:["Nn",c([k,k,1]),d],scalex:["N",c([k,1,1]),c([k,1])],scaley:["N",c([1,k,1]),c([1,k])],scalez:["N",c([1,1,k])],scale3d:["NNN",d],skew:["Aa",null,d],skewx:["A",null,c([k,m])],skewy:["A",null,c([m,k])],translate:["Tt",c([k,k,l]),d],translatex:["T",c([k,l,l]),c([k,l])],translatey:["T",c([l,k,l]),c([l,k])],translatez:["L",c([l,l,k])],translate3d:["TTL",d]};a.addPropertiesHandler(e,j,["transform"])}(d,f),function(a){function b(a){var b=Number(a);if(!(isNaN(b)||b<100||b>900||b%100!==0))return b}function c(b){return b=100*Math.round(b/100),b=a.clamp(100,900,b),400===b?"normal":700===b?"bold":String(b)}function d(a,b){return[a,b,c]}a.addPropertiesHandler(b,d,["font-weight"])}(d),function(a){function b(a){var b={};for(var c in a)b[c]=-a[c];return b}function c(b){return a.consumeToken(/^(left|center|right|top|bottom)\b/i,b)||a.consumeLengthOrPercent(b)}function d(b,d){var e=a.consumeRepeated(c,/^/,d);if(e&&""==e[1]){var f=e[0];if(f[0]=f[0]||"center",f[1]=f[1]||"center",3==b&&(f[2]=f[2]||{px:0}),f.length==b){if(/top|bottom/.test(f[0])||/left|right/.test(f[1])){var h=f[0];f[0]=f[1],f[1]=h}if(/left|right|center|Object/.test(f[0])&&/top|bottom|center|Object/.test(f[1]))return f.map(function(a){return"object"==typeof a?a:g[a]})}}}function e(d){var e=a.consumeRepeated(c,/^/,d);if(e){for(var f=e[0],h=[{"%":50},{"%":50}],i=0,j=!1,k=0;k<f.length;k++){var l=f[k];"string"==typeof l?(j=/bottom|right/.test(l),i={left:0,right:0,center:i,top:1,bottom:1}[l],h[i]=g[l],"center"==l&&i++):(j&&(l=b(l),l["%"]=(l["%"]||0)+100),h[i]=l,i++,j=!1)}return[h,e[1]]}}function f(b){var c=a.consumeRepeated(e,/^,/,b);if(c&&""==c[1])return c[0]}var g={left:{"%":0},center:{"%":50},right:{"%":100},top:{"%":0},bottom:{"%":100}},h=a.mergeNestedRepeated.bind(null,a.mergeDimensions," ");a.addPropertiesHandler(d.bind(null,3),h,["transform-origin"]),a.addPropertiesHandler(d.bind(null,2),h,["perspective-origin"]),a.consumePosition=e,a.mergeOffsetList=h;var i=a.mergeNestedRepeated.bind(null,h,", ");a.addPropertiesHandler(f,i,["background-position","object-position"])}(d),function(a){function b(b){var c=a.consumeToken(/^circle/,b);if(c&&c[0])return["circle"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),d,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\)/))],c[1]));var f=a.consumeToken(/^ellipse/,b);if(f&&f[0])return["ellipse"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),e,a.ignore(a.consumeToken.bind(void 0,/^at/)),a.consumePosition,a.ignore(a.consumeToken.bind(void 0,/^\)/))],f[1]));var g=a.consumeToken(/^polygon/,b);return g&&g[0]?["polygon"].concat(a.consumeList([a.ignore(a.consumeToken.bind(void 0,/^\(/)),a.optional(a.consumeToken.bind(void 0,/^nonzero\s*,|^evenodd\s*,/),"nonzero,"),a.consumeSizePairList,a.ignore(a.consumeToken.bind(void 0,/^\)/))],g[1])):void 0}function c(b,c){if(b[0]===c[0])return"circle"==b[0]?a.mergeList(b.slice(1),c.slice(1),["circle(",a.mergeDimensions," at ",a.mergeOffsetList,")"]):"ellipse"==b[0]?a.mergeList(b.slice(1),c.slice(1),["ellipse(",a.mergeNonNegativeSizePair," at ",a.mergeOffsetList,")"]):"polygon"==b[0]&&b[1]==c[1]?a.mergeList(b.slice(2),c.slice(2),["polygon(",b[1],g,")"]):void 0}var d=a.consumeParenthesised.bind(null,a.parseLengthOrPercent),e=a.consumeRepeated.bind(void 0,d,/^/),f=a.mergeNestedRepeated.bind(void 0,a.mergeDimensions," "),g=a.mergeNestedRepeated.bind(void 0,f,",");a.addPropertiesHandler(b,c,["shape-outside"])}(d),function(a,b){function c(a,b){b.concat([a]).forEach(function(b){b in document.documentElement.style&&(d[a]=b)})}var d={};c("transform",["webkitTransform","msTransform"]),c("transformOrigin",["webkitTransformOrigin"]),c("perspective",["webkitPerspective"]),c("perspectiveOrigin",["webkitPerspectiveOrigin"]),a.propertyName=function(a){return d[a]||a}}(d,f)}(),!function(){if(void 0===document.createElement("div").animate([]).oncancel){var a;if(window.performance&&performance.now)var a=function(){return performance.now()};else var a=function(){return Date.now()};var b=function(a,b,c){this.target=a,this.currentTime=b,this.timelineTime=c,this.type="cancel",this.bubbles=!1,this.cancelable=!1,this.currentTarget=a,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,this.timeStamp=Date.now()},c=window.Element.prototype.animate;window.Element.prototype.animate=function(d,e){var f=c.call(this,d,e);f._cancelHandlers=[],f.oncancel=null;var g=f.cancel;f.cancel=function(){g.call(this);var c=new b(this,null,a()),d=this._cancelHandlers.concat(this.oncancel?[this.oncancel]:[]);setTimeout(function(){d.forEach(function(a){a.call(c.target,c)})},0)};var h=f.addEventListener;f.addEventListener=function(a,b){"function"==typeof b&&"cancel"==a?this._cancelHandlers.push(b):h.call(this,a,b)};var i=f.removeEventListener;return f.removeEventListener=function(a,b){if("cancel"==a){var c=this._cancelHandlers.indexOf(b);c>=0&&this._cancelHandlers.splice(c,1)}else i.call(this,a,b)},f}}}(),function(a){var b=document.documentElement,c=null,d=!1;try{var e=getComputedStyle(b).getPropertyValue("opacity"),f="0"==e?"1":"0";c=b.animate({opacity:[f,f]},{duration:1}),c.currentTime=0,d=getComputedStyle(b).getPropertyValue("opacity")==f}catch(a){}finally{c&&c.cancel()}if(!d){var g=window.Element.prototype.animate;window.Element.prototype.animate=function(b,c){return window.Symbol&&Symbol.iterator&&Array.prototype.from&&b[Symbol.iterator]&&(b=Array.from(b)),Array.isArray(b)||null===b||(b=a.convertToArrayForm(b)),g.call(this,b,c)}}}(c),b.true=a}({},function(){return this}());
diff --git a/third_party/web-animations-js/sources/web-animations.min.js.map b/third_party/web-animations-js/sources/web-animations.min.js.map index 8c6d307..9471da94 100644 --- a/third_party/web-animations-js/sources/web-animations.min.js.map +++ b/third_party/web-animations-js/sources/web-animations.min.js.map
@@ -1 +1 @@ -{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/property-interpolation.js","src/keyframe-effect.js","src/apply-preserving-inline-style.js","src/element-animatable.js","src/interpolation.js","src/matrix-interpolation.js","src/animation.js","src/tick.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","toTimingFunction","easing","styleForCleaning","document","createElement","style","animationTimingFunction","validatedEasing","TypeError","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","delay","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateScaledActiveTime","activeTime","startOffset","calculateIterationTime","iterationDuration","scaledActiveTime","Infinity","iterationStart","calculateCurrentIteration","iterationTime","floor","calculateTransformedTime","currentIteration","currentIterationIsOdd","currentDirectionIsForwards","direction","directedTime","timeFraction","calculateTimeFraction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","endDelay","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","code","INVALID_MODIFICATION_ERR","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","scope","r","makePropertySpecificKeyframeGroups","leftCopy","propertySpecificKeyframeGroups","bind","addPropertiesHandler","parseShadowList","mergeShadowList","propertySpecificKeyframe","groupName","group","mergeFlex","left","right","round","makeInterpolations","interpolations","startTime","endTime","startValue","endValue","propertyInterpolation","leftInterpolation","rightInterpolation","convertEffectInput","trim","context","target","fraction","interpolation","fillStyle","offsetFraction","localDuration","scaledLocalTime","clamp","join","canvas","toCamelCase","parseColor","toUpperCase","addPropertyHandler","merger","propertyHandlers","parser","properties","ucProperty","test","matchedUnits","string","replace","unitRegExp","initialValues","handlers","parsedRight","parsedLeft","interpolationArgs","interp","Interpolation","t","taggedUnitRegExp","unit","bool","backgroundColor","nonNegative","backgroundPosition","units","borderBottomColor","borderBottomLeftRadius","borderBottomRightRadius","borderLeftColor","borderRightColor","borderSpacing","borderTopColor","borderTopLeftRadius","borderTopRightRadius","numberToString","clip","color","height","marginBottom","marginLeft","marginRight","lengthUnits","marginTop","parseLengthOrPercent","maxWidth","minHeight","minWidth","opacity","parseAngle","outlineColor","outlineOffset","paddingBottom","paddingLeft","transform","verticalAlign","visibility","width","wordSpacing","consumeLength","zIndex","consumeParenthesised","consumeSizePairList","EffectTime","effectTime","_totalDuration","_isCurrent","KeyframeEffect","keyframeEffect","_update","_clear","_hasSameTarget","id","NullEffect","clear","nullEffect","configureProperty","object","descriptor","enumerable","configurable","defineProperty","AnimatedCSSStyleDeclaration","element","_surrogateStyle","ignore","consumeToken","_style","_length","_isAnimatedProperty","_updateIndices","ensureStyleIsPatched","_webAnimationsPatchedStyle","merged","animatedStyle","mergeDimensions","get","mergeWrappedNestedRepeated","_","styleAttributes","cssText","parentRule","styleMethods","getPropertyCSSValue","getPropertyPriority","getPropertyValue","item","removeProperty","setProperty","styleMutatingMethods","text","transformRegExp","isAffectedProperty","functionName","argTypes","s","T","parsedArgs","index","method","modifiesStyle","list","arguments","documentElement","matrixModulesLoaded","set","_set","propertyName","Element","animate","options","mergeMatrices","timeline","interpolate","leftArgs","to","transformFunctions","leftType","leftResult","convertToString","typeTo2D","max","rightArgs","quat","product","dot","fromQ","theta","sqrt","cos","toQ","w","composeMatrix","leftFunctionData","multiply","leftArgsCopy","k","mergeNumbers","merge","rightArgsCopy","translate","skew","perspective","matrix","types","stringConversions","tmp","rightResult","rotMatrix","stringifiedArgs","args","arg","y","z","deg","temp","rotate","rotatez","scale","cast","scaley","scale3d","is2D","concat","translatey","sequenceNumber","AnimationEvent","currentTime","timelineTime","out","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","timeStamp","now","Animation","_id","_sequenceNumber","_currentTime","dimension","_paused","_inTimeline","_finishedFlag","onfinish","consumeOffset","_finishHandlers","_idle","consumeLengthOrPercent","_currentTimePending","_ensureAlive","_inEffect","_animations","_tickCurrentTime","newTime","ignoreLimit","_isFinished","position","restart","_startTime","_timeline","bottomOrRight","invalidateEffects","token","center","oldCurrentTime","mergeNestedRepeated","playState","play","parseOrigin","consumePosition","mergeOffsetList","circle","consumeList","pause","finish","ellipse","cancel","reverse","polygon","addEventListener","handler","_fireEvents","baseTime","event","setTimeout","mergeNonNegativeSizePair","call","_tick","isAnimationFrame","_needsTick","running","mergeSizePair","processRafCallbacks","processing","rafCallbacks","candidate","entry","applyPendingEffects","compareAnimations","rightAnimation","leftAnimation","InternalTimeline","performance","oncancel","AnimationCancelEvent","originalElementAnimate","animation","_cancelHandlers","originalCancel","originalAddEventListener","originalRemoveEventListener","removeEventListener","splice","animated","originalOpacity","getComputedStyle","testOpacity","error","exports"],"mappings":"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","file":"web-animations.min.js"} \ No newline at end of file +{"version":3,"sources":["src/scope.js","src/timing-utilities.js","src/normalize-keyframes.js","src/deprecation.js","src/keyframe-interpolations.js","src/property-interpolation.js","src/keyframe-effect.js","src/apply-preserving-inline-style.js","src/element-animatable.js","src/interpolation.js","src/matrix-interpolation.js","src/animation.js","src/tick.js","src/web-animations-bonus-cancel-events.js","src/web-animations-bonus-object-form-keyframes.js"],"names":["webAnimationsShared","webAnimations1","webAnimationsNext","webAnimationsTesting","shared","testing","cloneTimingInput","timingInput","clone","m","AnimationEffectTiming","this","_delay","_endDelay","_fill","_iterationStart","_iterations","_duration","_playbackRate","_direction","_easing","_easingFunction","linear","isInvalidTimingDeprecated","isDeprecated","makeTiming","forGroup","effect","timing","fill","duration","isNaN","undefined","Object","getOwnPropertyNames","forEach","property","fills","indexOf","directions","numericTimingToObject","normalizeTimingInput","cubic","a","b","c","d","x","f","start_gradient","end_gradient","start","end","mid","xEst","Math","abs","step","count","pos","stepSize","normalizeEasing","easing","styleForCleaning","document","createElement","style","animationTimingFunction","normalizedEasing","TypeError","parseEasingFunction","cubicData","cubicBezierRe","exec","apply","slice","map","Number","stepData","stepRe","Start","middle","Middle","End","preset","presets","calculateActiveDuration","repeatedDuration","playbackRate","iterations","calculatePhase","activeDuration","localTime","PhaseNone","endTime","delay","endDelay","min","PhaseBefore","PhaseAfter","PhaseActive","calculateActiveTime","fillMode","phase","calculateOverallProgress","iterationDuration","activeTime","iterationStart","overallProgress","calculateSimpleIterationProgress","simpleIterationProgress","Infinity","calculateCurrentIteration","floor","calculateDirectedProgress","playbackDirection","currentIteration","currentDirection","calculateIterationProgress","directedProgress","direction","split","prototype","_setMember","member","value","_effect","_timingInput","_timing","_animation","_rebuildUnderlyingAnimation","ease","ease-in","ease-out","ease-in-out","step-start","step-middle","step-end","numberString","RegExp","antiAlias","aliases","isNotAnimatable","lastIndexOf","expandShorthandAndAntiAlias","result","longProperties","shorthandToLonghand","shorthandExpanderElem","i","longProperty","longhandValue","convertToArrayForm","effectInput","normalizedEffectInput","values","Array","isArray","keyframe","numKeyframes","length","offset","composite","push","sort","normalizeKeyframes","spaceKeyframes","keyframes","previousIndex","previousOffset","j","window","Symbol","iterator","from","originalKeyframe","memberValue","isFinite","type","DOMException","NOT_SUPPORTED_ERR","name","message","everyFrameHasOffset","filter","background","border","borderBottom","borderColor","borderLeft","borderRadius","borderRight","borderTop","borderWidth","flex","font","margin","outline","padding","createElementNS","borderWidthAliases","thin","medium","thick","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth","fontSize","xx-small","x-small","small","large","x-large","xx-large","fontWeight","normal","bold","outlineWidth","textShadow","none","boxShadow","silenced","feature","date","advice","plural","auxVerb","today","Date","expiry","setMonth","getMonth","console","warn","toDateString","deprecated","Error","scope","left","makePropertySpecificKeyframeGroups","lengthReconstitution","propertySpecificKeyframeGroups","mergedDimensions","mergeDimensions","lengths","right","propertySpecificKeyframe","groupName","group","colorReconstitution","makeInterpolations","interpolations","color","startIndex","endIndex","startOffset","endOffset","applyFrom","applyTo","mergeNestedRepeated","easingFunction","interpolation","propertyInterpolation","string","leftInterpolation","rightInterpolation","convertEffectInput","mergePositiveIntegers","numberToString","fraction","max","offsetFraction","localDuration","scaledLocalTime","target","parseNumber","toCamelCase","replace","_","toUpperCase","addPropertyHandler","merger","propertyHandlers","parser","fillStyle","addPropertiesHandler","properties","fillRect","ucProperty","clearRect","pixelColor","alpha","initialValues","v","handlers","canvas","parsedLeft","parsedRight","interpolationArgs","mergeColors","t","Interpolation","consumeColor","bool","backgroundColor","parseDimension","backgroundPosition","borderBottomColor","trim","toLowerCase","borderBottomLeftRadius","search","borderBottomRightRadius","px","test","borderLeftColor","borderRightColor","borderSpacing","matchedUnits","borderTopColor","match","borderTopLeftRadius","borderTopRightRadius","taggedUnitRegExp","letterSpacing","lineHeight","marginBottom","marginLeft","reductions","marginRight","maxHeight","typeCheck","maxWidth","minHeight","minWidth","opacity","outlineColor","unit","outlineOffset","paddingBottom","paddingLeft","paddingRight","paddingTop","textIndent","top","verticalAlign","width","wordSpacing","zIndex","units","EffectTime","effectTime","_totalDuration","KeyframeEffect","join","timeFraction","keyframeEffect","parseLengthOrPercent","_update","parseAngle","_clear","_hasSameTarget","consumeParenthesised","bind","_target","NullEffect","clear","consumeRepeated","consumeSizePairList","nullEffect","consumeSizePair","parseSizePairList","configureProperty","descriptor","enumerable","mergeDimensionsNonNegative","AnimatedCSSStyleDeclaration","_surrogateStyle","element","_isAnimatedProperty","_style","_updateIndices","ensureStyleIsPatched","_webAnimationsPatchedStyle","animatedStyle","styleAttributes","cssText","styleMethods","getPropertyCSSValue","getPropertyPriority","getPropertyValue","item","removeProperty","setProperty","styleMutatingMethods","text","consumeToken","isAffectedProperty","parentRule","_length","defineProperty","configurable","get","index","mergeWrappedNestedRepeated","cast","pattern","method","prevLastIndex","modifiesStyle","arguments","documentElement","parsedArg","T","_set","propertyName","mergeMatrices","Element","options","id","timeline","_play","rightArgs","leftArgs","interpolate","quat","composeMatrix","list","to","r","typeTo3D","convertToString","matrixModulesLoaded","clamp","fromQ","toQ","product","dot","args","theta","acos","arg","w","rt","multiply","leftResult","rightResult","types","k","merged","translate","scale","skew","perspective","matrix","leftFunctionData","transformFunctions","isMatrixOrPerspective","leftType","z","rotMatrix","y","rightFunctionData","typeTo2D","rightType","temp","is2D","stringConversions","merge","sequenceNumber","AnimationEvent","currentTime","timelineTime","bubbles","cancelable","currentTarget","defaultPrevented","eventPhase","Event","AT_TARGET","now","Animation","_id","_sequenceNumber","_currentTime","_startTime","_paused","Opx","_inTimeline","onfinish","_finishHandlers","_idle","_currentTimePending","rotate3d","_ensureAlive","_inEffect","_finishedFlag","_animations","_tickCurrentTime","newTime","ignoreLimit","_isFinished","restart","_timeline","toCss","parse","applyDirtiedAnimation","startTime","oldCurrentTime","tokens","playState","slots","position","%","bottomOrRight","_rewind","center","token","out","offsetMap","negateDimension","play","consumePosition","pause","mergePositionList","reverse","addEventListener","input","handler","circle","removeEventListener","ignore","splice","_fireEvents","baseTime","ellipse","event","concat","setTimeout","call","_tick","isAnimationFrame","_needsTick","pending","running","mergeShapes","_targetAnimations","_activeAnimations","_markTarget","animations","mergeNonNegativeSizePair","_unmarkTarget","mergeOffsetList","processRafCallbacks","processing","rafCallbacks","compareAnimations","entry","applyPendingEffects","leftAnimation","rightAnimation","InternalTimeline","performance","alias","pendingEffects","tick","inTick","hasRestartedThisFrame","ticking","newPendingClears","newPendingEffects","activeAnimations","animate","oncancel","AnimationCancelEvent","timeStamp","originalElementAnimate","animation","_cancelHandlers","originalCancel","cancel","originalAddEventListener","originalRemoveEventListener","animated","originalOpacity","getComputedStyle","testOpacity","error","exports"],"mappings":"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","file":"web-animations.min.js"} \ No newline at end of file
diff --git a/tools/checklicenses/checklicenses.py b/tools/checklicenses/checklicenses.py index 6dd1c18..17da23b 100755 --- a/tools/checklicenses/checklicenses.py +++ b/tools/checklicenses/checklicenses.py
@@ -176,11 +176,6 @@ 'UNKNOWN', ], - # https://bugs.chromium.org/p/swiftshader/issues/detail?id=1 - 'third_party/swiftshader': [ - 'UNKNOWN', - ], - # http://code.google.com/p/angleproject/issues/detail?id=217 'third_party/angle': [ 'UNKNOWN',
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py index 5cdfbae..07f61f1 100755 --- a/tools/clang/scripts/update.py +++ b/tools/clang/scripts/update.py
@@ -373,6 +373,24 @@ CopyFile(dia_dll, target_dir) +def VeryifyVersionOfBuiltClangMatchesVERSION(): + """Checks that `clang --version` outputs VERSION. If this fails, VERSION + in this file is out-of-date and needs to be updated (possibly in an + `if use_head_revision:` block in main() first).""" + clang = os.path.join(LLVM_BUILD_DIR, 'bin', 'clang') + if sys.platform == 'win32': + # TODO: Parse `clang-cl /?` output for built clang's version and check that + # to check the binary we're actually shipping? But clang-cl.exe is just + # a copy of clang.exe, so this does check the same thing. + clang += '.exe' + version_out = subprocess.check_output([clang, '--version']) + version_out = re.match(r'clang version ([0-9.]+)', version_out).group(1) + if version_out != VERSION: + print ('unexpected clang version %s (not %s), update VERSION in update.py' + % (version_out, VERSION)) + sys.exit(1) + + def UpdateClang(args): print 'Updating Clang to %s...' % PACKAGE_VERSION @@ -648,7 +666,7 @@ elif sys.platform.startswith('linux'): RunCommand(['strip', os.path.join(LLVM_BUILD_DIR, 'bin', 'clang')]) - # TODO(thakis): Check that `clang --version` matches VERSION. + VeryifyVersionOfBuiltClangMatchesVERSION() # Do an out-of-tree build of compiler-rt. # On Windows, this is used to get the 32-bit ASan run-time.
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 07267d1..989078f 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -111,6 +111,8 @@ 'Android Tests (trial)(dbg)': 'none', 'Android Tests (x86 emulator)': 'android_gn_debug_static_bot_x86', 'Android Builder (dbg)': 'android_gn_debug_static_bot', + 'Android deterministic': + 'android_without_codecs_gn_release_bot_minimal_symbols', 'Browser Side Navigation Linux': 'gn_release_bot', 'CFI Linux CF': 'gn_cfi_full_cfi_diag_release_static', 'CFI Linux ToT': 'gn_cfi_full_clang_tot_release_static', @@ -156,7 +158,6 @@ 'CrWinGoma': 'gn_release_bot_minimal_symbols_x86', 'CrWinGoma(dll)': 'gn_shared_release_bot_minimal_symbols_x86', 'ClangToTAndroidASan': 'android_clang_tot_asan', - 'ClangToTAndroidASan tester': 'none', 'ClangToTLinux': 'swarming_gn_clang_tot_linux_full_symbols_shared_release', 'ClangToTLinux tester': 'none', @@ -258,6 +259,7 @@ 'WebKit Win - WPTServe': 'swarming_gn_release_bot_minimal_symbols_x86', 'Win 10 Fast Ring': 'gn_release_trybot_x64', 'Windows deterministic': 'gn_release_bot_minimal_symbols_x86', + 'Windows Clang deterministic': 'gn_clang_release_bot_minimal_symbols_x86', 'Win LKGR (DrM 64)': 'gn_release_drmemory_drfuzz', 'Win LKGR (DrM)': 'gn_release_drmemory_drfuzz_x86', }, @@ -1324,6 +1326,10 @@ 'gn', 'release_trybot', 'x64', ], + 'gn_clang_release_bot_minimal_symbols_x86': [ + 'gn', 'clang', 'release_bot_minimal_symbols', 'x86', + ], + 'gn_windows_analyze': [ 'gn', 'no_symbols', 'no_pch', 'shared', 'x86', 'win_analyze', ],
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 9cd12ae..45228a6 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -324,6 +324,29 @@ </summary> </histogram> +<histogram name="ActivityTracker.ThreadTrackers.Count" units="count"> + <owner>bcwhite@chromium.org</owner> + <summary> + The number of threads being tracked for activities such as waiting for a + lock/event, a thread to join, or a task to run. Analysis of this data can + reveal why a thread will not exit. This value is updated every time a new + thread gets an activity tracked for the first time so will show one count + for every permanent thread but multiple counts for a thread than exits and + is replaced. + </summary> +</histogram> + +<histogram name="ActivityTracker.ThreadTrackers.MemLimitTrackerCount" + units="count"> + <owner>bcwhite@chromium.org</owner> + <summary> + The limit on the number of thread trackers that could be allocated from the + persistent memory segment. Trackers beyond this number were allocated from + the heap and thus were not available for analysis. This value is updated on + every "memory full" failure. + </summary> +</histogram> + <histogram name="Android.Activity.ChromeTabbedActivity.StopReason" enum="AndroidActivityStopReason"> <owner>dfalcantara@chromium.org</owner> @@ -60043,6 +60066,18 @@ </summary> </histogram> +<histogram name="TaskScheduler.DetachDuration" units="ms"> + <owner>fdoray@chromium.org</owner> + <owner>gab@chromium.org</owner> + <owner>robliao@chromium.org</owner> + <summary> + Time elapsed between when the thread managed by a SchedulerWorker is + detached and when the main function of a new thread managed by the same + SchedulerWorker is entered (following a wake up). Recorded each time that a + thread is recreated for a given SchedulerWorker. + </summary> +</histogram> + <histogram name="ThreadWatcher.ResponseTime" units="ms"> <owner>rtenneti@chromium.org</owner> <summary> @@ -78061,6 +78096,20 @@ <int value="1483" label="StarInTimingAllowOrigin"/> <int value="1484" label="SVGSMILAdditiveAnimation"/> <int value="1485" label="SendBeaconWithNonSimpleContentType"/> + <int value="1486" label="ChromeLoadTimesRequestTime"/> + <int value="1487" label="ChromeLoadTimesStartLoadTime"/> + <int value="1488" label="ChromeLoadTimesCommitLoadTime"/> + <int value="1489" label="ChromeLoadTimesFinishDocumentLoadTime"/> + <int value="1490" label="ChromeLoadTimesFinishLoadTime"/> + <int value="1491" label="ChromeLoadTimesFirstPaintTime"/> + <int value="1492" label="ChromeLoadTimesFirstPaintAfterLoadTime"/> + <int value="1493" label="ChromeLoadTimesNavigationType"/> + <int value="1494" label="ChromeLoadTimesWasFetchedViaSpdy"/> + <int value="1495" label="ChromeLoadTimesWasNpnNegotiated"/> + <int value="1496" label="ChromeLoadTimesNpnNegotiatedProtocol"/> + <int value="1497" label="ChromeLoadTimesWasAlternateProtocolAvailable"/> + <int value="1498" label="ChromeLoadTimesConnectionInfo"/> + <int value="1499" label="ChromeLoadTimesUnknown"/> </enum> <enum name="FetchRequestMode" type="int"> @@ -102263,6 +102312,16 @@ <affected-histogram name="Tabs.SwitchFromUserLatency"/> </histogram_suffixes> +<histogram_suffixes name="TaskSchedulerWorkerPool" separator="."> + <suffix name="BackgroundFileIO" + label="Applies to the BackgroundFileIO worker pool."/> + <suffix name="Background" label="Applies to the Background worker pool."/> + <suffix name="ForegroundFileIO" + label="Applies to the ForegroundFileIO worker pool."/> + <suffix name="Foreground" label="Applies to the Foreground worker pool."/> + <affected-histogram name="TaskScheduler.DetachDuration"/> +</histogram_suffixes> + <histogram_suffixes name="ThreadWatcher" separator="."> <suffix name="CACHE" label="where watched thread is CACHE BrowserThread."/> <suffix name="DB" label="where watched thread is DB BrowserThread."/>
diff --git a/tools/perf/benchmarks/oortonline.py b/tools/perf/benchmarks/oortonline.py index a8a10812..4862043 100644 --- a/tools/perf/benchmarks/oortonline.py +++ b/tools/perf/benchmarks/oortonline.py
@@ -52,6 +52,7 @@ # Tracing.requestMemoryDump DevTools API. See http://crbug.com/540022. @benchmark.Disabled('reference') @benchmark.Disabled('android') +@benchmark.Disabled('win') class OortOnlineTBMv2(perf_benchmark.PerfBenchmark): """OortOnline benchmark that measures WebGL and V8 performance. URL: http://oortonline.gl/#run
diff --git a/tools/perf/docs/perf_bot_sheriffing.md b/tools/perf/docs/perf_bot_sheriffing.md index bd1ec5a..946dbf9f 100644 --- a/tools/perf/docs/perf_bot_sheriffing.md +++ b/tools/perf/docs/perf_bot_sheriffing.md
@@ -69,7 +69,7 @@ connected" is not enough to indicate a problem. For each disconnected machine, you can also check the "Last heard from" column to ensure that it's been gone for at least an hour. To get it running again, -[file a bug](https://bugs.chromium.org/p/chromium/issues/entry?labels=Pri-1,Performance-BotHealth,Infra-Troopers,OS-?&comment=Hostname:&summary=Buildslave+offline+on+chromium.perf) +[file a bug](https://bugs.chromium.org/p/chromium/issues/entry?labels=Pri-1,Performance-Sheriff-BotHealth,Infra-Troopers,OS-?&comment=Hostname:&summary=Buildslave+offline+on+chromium.perf) against the current trooper and read [go/bug-a-trooper](http://go/bug-a-trooper) for contacting troopers. ### Purple bots
diff --git a/tools/perf/measurements/clock_domain_test.py b/tools/perf/measurements/clock_domain_test.py new file mode 100644 index 0000000..51f953a --- /dev/null +++ b/tools/perf/measurements/clock_domain_test.py
@@ -0,0 +1,41 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from telemetry import benchmark +from telemetry.testing import tab_test_case +from telemetry.timeline import trace_data +from telemetry.timeline import tracing_config + +def GetSyncEvents(trace_part): + return [x for x in trace_part if x['ph'] == 'c'] + +class ClockDomainTest(tab_test_case.TabTestCase): + + # Don't run this test on Android; it's not supposed to work on Android + # (since when doing Android tracing there are two different devices, + # so the clock domains will be different) + @benchmark.Disabled('android') + def testTelemetryUsesChromeClockDomain(self): + + tracing_controller = self._browser.platform.tracing_controller + options = tracing_config.TracingConfig() + options.enable_chrome_trace = True + tracing_controller.StartTracing(options) + + full_trace = tracing_controller.StopTracing() + chrome_sync = GetSyncEvents( + full_trace.GetTraceFor(trace_data.CHROME_TRACE_PART)['traceEvents']) + telemetry_sync = GetSyncEvents( + full_trace.GetTraceFor(trace_data.TELEMETRY_PART)['traceEvents']) + + assert len(chrome_sync) == 1 + assert len(telemetry_sync) == 1 + + # If Telemetry and Chrome are in the same clock domain, the Chrome sync + # timestamp should be between Telemetry's sync start and end timestamps. + ts_telemetry_start = telemetry_sync[0]['args']['issue_ts'] + ts_chrome = chrome_sync[0]['ts'] + ts_telemetry_end = telemetry_sync[0]['ts'] + assert ts_chrome > ts_telemetry_start + assert ts_telemetry_end > ts_chrome \ No newline at end of file
diff --git a/tools/valgrind/gtest_exclude/content_browsertests.gtest-drmemory_win32.txt b/tools/valgrind/gtest_exclude/content_browsertests.gtest-drmemory_win32.txt index 3a87ddfb..301a498 100644 --- a/tools/valgrind/gtest_exclude/content_browsertests.gtest-drmemory_win32.txt +++ b/tools/valgrind/gtest_exclude/content_browsertests.gtest-drmemory_win32.txt
@@ -68,5 +68,8 @@ # https://crbug.com/589174 WebContentsImplBrowserTest.SetTitleOnUnload -$ https://crbug.com/621466 +# https://crbug.com/621466 CrossSiteTransferTest.PostWithFileData + +# https://crbug.com/622387 +DumpAccessibilityTreeTest.AccessibilityIframeTransform
diff --git a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ml.xtb b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ml.xtb index 14cb8d3c..280225b5 100644 --- a/ui/accessibility/extensions/strings/accessibility_extensions_strings_ml.xtb +++ b/ui/accessibility/extensions/strings/accessibility_extensions_strings_ml.xtb
@@ -49,7 +49,7 @@ <translation id="6050189528197190982">ഗ്രേസ്കെയിൽ</translation> <translation id="6170146920149900756">വർണ്ണ മെച്ചപ്പെടുത്തൽ</translation> <translation id="633394792577263429">വാക്കുകൾ പ്രകാരം നീക്കുന്നതിന് <span class='key'>Control</span> അമർത്തിപ്പിടിക്കുക.</translation> -<translation id="6550675742724504774">ഐച്ഛികങ്ങള്</translation> +<translation id="6550675742724504774">ഓപ്ഷനുകൾ</translation> <translation id="6838518108677880446">സജ്ജീകരിക്കുക:</translation> <translation id="690628312087070417">ഒരു വലിയ അകലത്തിൽ കാരറ്റ് നീങ്ങുമ്പോൾ:</translation> <translation id="6965382102122355670">ശരി</translation>
diff --git a/ui/android/java/src/org/chromium/ui/UiUtils.java b/ui/android/java/src/org/chromium/ui/UiUtils.java index 27999be7..b81b994 100644 --- a/ui/android/java/src/org/chromium/ui/UiUtils.java +++ b/ui/android/java/src/org/chromium/ui/UiUtils.java
@@ -94,8 +94,10 @@ InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService( Context.INPUT_METHOD_SERVICE); - // Third-party touches disk on showSoftInput call. http://crbug.com/619824 + // Third-party touches disk on showSoftInput call. http://crbug.com/619824, + // http://crbug.com/635118 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); + StrictMode.allowThreadDiskWrites(); try { imm.showSoftInput(view, 0); } catch (IllegalArgumentException e) {
diff --git a/ui/arc/notification/arc_custom_notification_item.cc b/ui/arc/notification/arc_custom_notification_item.cc index f5e31b1..0ef1db68 100644 --- a/ui/arc/notification/arc_custom_notification_item.cc +++ b/ui/arc/notification/arc_custom_notification_item.cc
@@ -76,6 +76,7 @@ message_center::RichNotificationData rich_data; rich_data.pinned = (data.no_clear || data.ongoing_event); rich_data.priority = ConvertAndroidPriority(data.priority); + rich_data.small_image = ConvertAndroidSmallIcon(data.small_icon); message_center::NotifierId notifier_id( message_center::NotifierId::SYSTEM_COMPONENT, kNotifierId);
diff --git a/ui/arc/notification/arc_notification_item.cc b/ui/arc/notification/arc_notification_item.cc index fc7f6742..06b325c 100644 --- a/ui/arc/notification/arc_notification_item.cc +++ b/ui/arc/notification/arc_notification_item.cc
@@ -210,6 +210,7 @@ rich_data.pinned = (data.no_clear || data.ongoing_event); rich_data.priority = ConvertAndroidPriority(data.priority); + rich_data.small_image = ConvertAndroidSmallIcon(data.small_icon); // The identifier of the notifier, which is used to distinguish the notifiers // in the message center. @@ -293,6 +294,15 @@ } } +// static +gfx::Image ArcNotificationItem::ConvertAndroidSmallIcon( + const mojom::ArcBitmapPtr& arc_bitmap) { + if (arc_bitmap.is_null()) + return gfx::Image(); + + return gfx::Image::CreateFrom1xBitmap(arc_bitmap.To<SkBitmap>()); +} + bool ArcNotificationItem::CacheArcNotificationData( const mojom::ArcNotificationData& data) { if (!notification_)
diff --git a/ui/arc/notification/arc_notification_item.h b/ui/arc/notification/arc_notification_item.h index 1197769..e59515e 100644 --- a/ui/arc/notification/arc_notification_item.h +++ b/ui/arc/notification/arc_notification_item.h
@@ -41,6 +41,8 @@ protected: static int ConvertAndroidPriority(int android_priority); + static gfx::Image ConvertAndroidSmallIcon( + const mojom::ArcBitmapPtr& arc_bitmap); // Checks whether there is on-going |notification_|. If so, cache the |data| // in |newer_data_| and returns true. Otherwise, returns false.
diff --git a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb index b10eeb4..3fce1495 100644 --- a/ui/chromeos/translations/ui_chromeos_strings_mr.xtb +++ b/ui/chromeos/translations/ui_chromeos_strings_mr.xtb
@@ -12,7 +12,7 @@ <translation id="2354174487190027830"><ph name="NAME" /> सक्रिय करत आहे</translation> <translation id="2544853746127077729">प्रमाणीकरण प्रमाणपत्र नेटवर्कद्वारे नाकारले</translation> <translation id="2563185590376525700">बेडूक</translation> -<translation id="2563856802393254086">अभिनंदन! आपली '<ph name="NAME" />' डेटा सेवा सक्रिय केली गेली आहे आणि वापरण्यास सज्ज आहे.</translation> +<translation id="2563856802393254086">अभिनंदन! आपली '<ph name="NAME" />' डेटा सेवा सक्रिय केली गेली आहे आणि वापरण्यास तयार आहे.</translation> <translation id="2649120831653069427">रेनबोफिश</translation> <translation id="2670531586141364277">'<ph name="NAME" />' च्या सक्रियणास नेटवर्क कनेक्शन आवश्यक आहे.</translation> <translation id="277257480934873581"><ph name="NAME" /> शी पुन्हा कनेक्ट करीत आहे</translation>
diff --git a/ui/compositor/layer_animator_unittest.cc b/ui/compositor/layer_animator_unittest.cc index 6367b58..724ac67 100644 --- a/ui/compositor/layer_animator_unittest.cc +++ b/ui/compositor/layer_animator_unittest.cc
@@ -2376,35 +2376,6 @@ EXPECT_EQ(start_opacity, delegate.GetOpacityForAnimation()); } -TEST(LayerAnimatorTest, TestScopedCounterAnimation) { - Layer parent, child; - parent.Add(&child); - - gfx::Transform parent_begin, parent_end; - - parent_end.Scale3d(2.0, 0.5, 1.0); - - // Parent animates from identity to the end value. The counter animation will - // start at the end value and animate back to identity. - gfx::Transform child_begin(parent_end); - - child.SetTransform(child_begin); - parent.SetTransform(parent_begin); - - EXPECT_FALSE(child.GetAnimator()->is_animating()); - - ScopedLayerAnimationSettings settings(parent.GetAnimator()); - settings.SetInverselyAnimatedBaseLayer(&parent); - settings.AddInverselyAnimatedLayer(&child); - - parent.SetTransform(parent_end); - - EXPECT_TRUE(child.GetAnimator()->is_animating()); - EXPECT_TRUE(child.GetTargetTransform().IsIdentity()) - << child.GetTargetTransform().ToString(); - -} - class CollectionLayerAnimationDelegate : public TestLayerAnimationDelegate { public: CollectionLayerAnimationDelegate() : collection(NULL) {}
diff --git a/ui/compositor/scoped_layer_animation_settings.cc b/ui/compositor/scoped_layer_animation_settings.cc index 912d8bd..5688d3c 100644 --- a/ui/compositor/scoped_layer_animation_settings.cc +++ b/ui/compositor/scoped_layer_animation_settings.cc
@@ -19,65 +19,6 @@ namespace ui { -// InvertingObserver ----------------------------------------------------------- -class InvertingObserver : public ImplicitAnimationObserver { - public: - InvertingObserver() - : base_layer_(NULL) { - } - - ~InvertingObserver() override {} - - void SetLayer(Layer* base_layer) { base_layer_ = base_layer; } - - Layer* layer() { return base_layer_; } - - void AddInverselyAnimatedLayer(Layer* inverse_layer) { - inverse_layers_.push_back(inverse_layer); - } - - void OnImplicitAnimationsCompleted() override {} - - void OnLayerAnimationScheduled(LayerAnimationSequence* sequence) override { - DCHECK(base_layer_ != NULL) - << "Must set base layer with ScopedLayerAnimationSettings::" - << "SetInverslyAnimatedBaseLayer"; - gfx::Transform base_transform = base_layer_->transform(); - std::unique_ptr<LayerAnimationElement> inverse = - GetInverseElement(sequence, base_transform); - - for (std::vector<Layer*>::const_iterator i = - inverse_layers_.begin(); i != inverse_layers_.end(); ++i) { - (*i)->GetAnimator()->StartAnimation(new LayerAnimationSequence( - LayerAnimationElement::CloneInverseTransformElement( - inverse.get()))); - } - } - private: - std::unique_ptr<LayerAnimationElement> GetInverseElement( - LayerAnimationSequence* sequence, - gfx::Transform base) const { - const size_t expected_size = 1; - DCHECK_EQ(expected_size, sequence->size()) - << "Inverse supported only for single element sequences."; - - LayerAnimationElement* element = sequence->FirstElement(); - DCHECK_EQ(static_cast<LayerAnimationElement::AnimatableProperties>( - LayerAnimationElement::TRANSFORM), - element->properties()) - << "Only transform animations are currently invertible."; - - std::unique_ptr<LayerAnimationElement> to_return( - LayerAnimationElement::CreateInverseTransformElement(base, element)); - return to_return; - } - - Layer* base_layer_; - // child layers - std::vector<Layer*> inverse_layers_; -}; - - // ScopedLayerAnimationSettings ------------------------------------------------ ScopedLayerAnimationSettings::ScopedLayerAnimationSettings( scoped_refptr<LayerAnimator> animator) @@ -86,8 +27,7 @@ animator->is_transition_duration_locked_), old_transition_duration_(animator->GetTransitionDuration()), old_tween_type_(animator->tween_type()), - old_preemption_strategy_(animator->preemption_strategy()), - inverse_observer_(new InvertingObserver()) { + old_preemption_strategy_(animator->preemption_strategy()) { SetTransitionDuration( base::TimeDelta::FromMilliseconds(kDefaultTransitionDurationMs)); } @@ -104,10 +44,6 @@ animator_->observers_.RemoveObserver(*i); (*i)->SetActive(true); } - - if (inverse_observer_->layer()) { - animator_->observers_.RemoveObserver(inverse_observer_.get()); - } } void ScopedLayerAnimationSettings::AddObserver( @@ -147,18 +83,4 @@ return animator_->preemption_strategy(); } -void ScopedLayerAnimationSettings::SetInverselyAnimatedBaseLayer(Layer* base) { - if (inverse_observer_->layer() && !base) { - animator_->RemoveObserver(inverse_observer_.get()); - } else if (base && !(inverse_observer_->layer())) { - animator_->AddObserver(inverse_observer_.get()); - } - inverse_observer_->SetLayer(base); -} - -void ScopedLayerAnimationSettings::AddInverselyAnimatedLayer( - Layer* inverse_layer) { - inverse_observer_->AddInverselyAnimatedLayer(inverse_layer); -} - } // namespace ui
diff --git a/ui/compositor/scoped_layer_animation_settings.h b/ui/compositor/scoped_layer_animation_settings.h index 9cb84641..2b99c63 100644 --- a/ui/compositor/scoped_layer_animation_settings.h +++ b/ui/compositor/scoped_layer_animation_settings.h
@@ -17,7 +17,6 @@ class ImplicitAnimationObserver; class LayerAnimationObserver; -class InvertingObserver; // Scoped settings allow you to temporarily change the animator's settings and // these changes are reverted when the object is destroyed. NOTE: when the @@ -45,14 +44,6 @@ void SetPreemptionStrategy(LayerAnimator::PreemptionStrategy strategy); LayerAnimator::PreemptionStrategy GetPreemptionStrategy() const; - // Sets the base layer whose animation will be countered. - void SetInverselyAnimatedBaseLayer(Layer* base); - - // Adds the layer to be counter-animated when a transform animation is - // scheduled on the animator_. Must call SetInverselyAnimatedBaseLayer with - // the layer associated with animator_ before animating. - void AddInverselyAnimatedLayer(Layer* inverse_layer); - private: scoped_refptr<LayerAnimator> animator_; bool old_is_transition_duration_locked_; @@ -60,7 +51,6 @@ gfx::Tween::Type old_tween_type_; LayerAnimator::PreemptionStrategy old_preemption_strategy_; std::set<ImplicitAnimationObserver*> observers_; - std::unique_ptr<InvertingObserver> inverse_observer_; DISALLOW_COPY_AND_ASSIGN(ScopedLayerAnimationSettings); };
diff --git a/ui/events/event.cc b/ui/events/event.cc index 978d305..c9da7bb 100644 --- a/ui/events/event.cc +++ b/ui/events/event.cc
@@ -108,7 +108,6 @@ CASE_TYPE(ET_GESTURE_SCROLL_END); CASE_TYPE(ET_GESTURE_SCROLL_UPDATE); CASE_TYPE(ET_GESTURE_SHOW_PRESS); - CASE_TYPE(ET_GESTURE_WIN8_EDGE_SWIPE); CASE_TYPE(ET_GESTURE_TAP); CASE_TYPE(ET_GESTURE_TAP_DOWN); CASE_TYPE(ET_GESTURE_TAP_CANCEL);
diff --git a/ui/events/event.h b/ui/events/event.h index 3d11453..ef1bee1 100644 --- a/ui/events/event.h +++ b/ui/events/event.h
@@ -157,7 +157,6 @@ case ET_GESTURE_LONG_TAP: case ET_GESTURE_SWIPE: case ET_GESTURE_SHOW_PRESS: - case ET_GESTURE_WIN8_EDGE_SWIPE: // When adding a gesture event which is paired with an event which // occurs earlier, add the event to |IsEndingEvent|. return true;
diff --git a/ui/events/event_constants.h b/ui/events/event_constants.h index 664e837..9d3cd74 100644 --- a/ui/events/event_constants.h +++ b/ui/events/event_constants.h
@@ -58,9 +58,6 @@ ET_GESTURE_SWIPE, ET_GESTURE_SHOW_PRESS, - // Sent by Win8+ metro when the user swipes from the bottom or top. - ET_GESTURE_WIN8_EDGE_SWIPE, - // Scroll support. // TODO[davemoore] we need to unify these events w/ touch and gestures. ET_SCROLL,
diff --git a/ui/events/gesture_detection/gesture_touch_uma_histogram.cc b/ui/events/gesture_detection/gesture_touch_uma_histogram.cc index b8275aae..118505c 100644 --- a/ui/events/gesture_detection/gesture_touch_uma_histogram.cc +++ b/ui/events/gesture_detection/gesture_touch_uma_histogram.cc
@@ -119,8 +119,6 @@ return UMA_ET_GESTURE_SWIPE_3; return UMA_ET_GESTURE_SWIPE_4P; } - case ET_GESTURE_WIN8_EDGE_SWIPE: - return UMA_ET_GESTURE_WIN8_EDGE_SWIPE; case ET_GESTURE_TAP_CANCEL: return UMA_ET_GESTURE_TAP_CANCEL; case ET_GESTURE_SHOW_PRESS:
diff --git a/ui/events/gesture_detection/gesture_touch_uma_histogram.h b/ui/events/gesture_detection/gesture_touch_uma_histogram.h index 824a562..a10e6d5 100644 --- a/ui/events/gesture_detection/gesture_touch_uma_histogram.h +++ b/ui/events/gesture_detection/gesture_touch_uma_histogram.h
@@ -49,7 +49,7 @@ UMA_ET_GESTURE_LONG_TAP = 31, UMA_ET_GESTURE_SHOW_PRESS = 32, UMA_ET_GESTURE_TAP_CANCEL = 33, - UMA_ET_GESTURE_WIN8_EDGE_SWIPE = 34, + UMA_ET_GESTURE_WIN8_EDGE_SWIPE = 34, // Deprecated. Do not remove. UMA_ET_GESTURE_SWIPE_1 = 35, // Swipe with 1 finger UMA_ET_GESTURE_TAP_UNCONFIRMED = 36, // NOTE: Add new event types only immediately above this line. Make sure to
diff --git a/ui/events/test/event_generator.cc b/ui/events/test/event_generator.cc index f246cb42..ddfdeea 100644 --- a/ui/events/test/event_generator.cc +++ b/ui/events/test/event_generator.cc
@@ -297,13 +297,6 @@ PressMoveAndReleaseTouchTo(CenterOfWindow(window)); } -void EventGenerator::GestureEdgeSwipe() { - GestureEventDetails details(ET_GESTURE_WIN8_EDGE_SWIPE); - details.set_device_type(GestureDeviceType::DEVICE_TOUCHSCREEN); - GestureEvent gesture(0, 0, 0, ui::EventTimeForNow(), details); - Dispatch(&gesture); -} - void EventGenerator::GestureTapAt(const gfx::Point& location) { const int kTouchId = 2; ui::TouchEvent press(ui::ET_TOUCH_PRESSED, location, kTouchId,
diff --git a/ui/events/test/event_generator.h b/ui/events/test/event_generator.h index a05a379..94b5b86 100644 --- a/ui/events/test/event_generator.h +++ b/ui/events/test/event_generator.h
@@ -254,11 +254,6 @@ // to the center of the window. void PressMoveAndReleaseTouchToCenterOf(EventTarget* window); - // Generates and dispatches a Win8 edge-swipe event (swipe up from bottom or - // swipe down from top). Note that it is not possible to distinguish between - // the two edges with this event. - void GestureEdgeSwipe(); - // Generates and dispatches touch-events required to generate a TAP gesture. // Note that this can generate a number of other gesture events at the same // time (e.g. GESTURE_BEGIN, TAP_DOWN, END).
diff --git a/ui/gfx/BUILD.gn b/ui/gfx/BUILD.gn index bf496f5..3a2db59 100644 --- a/ui/gfx/BUILD.gn +++ b/ui/gfx/BUILD.gn
@@ -358,7 +358,10 @@ cflags = [ "/wd4324" ] # Structure was padded due to __declspec(align()), which is # uninteresting. - libs = [ "setupapi.lib" ] + libs = [ + "setupapi.lib", + "dwrite.lib", + ] } else { sources -= [ "gdi_util.cc", @@ -713,6 +716,7 @@ libs = [ "d2d1.lib", "d3d10_1.lib", + "dwrite.lib", "imm32.lib", "oleacc.lib", ]
diff --git a/ui/gfx/font_fallback_win.cc b/ui/gfx/font_fallback_win.cc index 2eb44d5..8af5604 100644 --- a/ui/gfx/font_fallback_win.cc +++ b/ui/gfx/font_fallback_win.cc
@@ -31,8 +31,6 @@ namespace { -IDWriteFactory* g_factory = nullptr; - // Queries the registry to get a mapping from font filenames to font names. void QueryFontsFromRegistry(std::map<std::string, std::string>* map) { const wchar_t* kFonts = @@ -358,11 +356,10 @@ DCHECK_GE(wcslen(text), static_cast<size_t>(text_length)); text_length = std::min(wcslen(text), static_cast<size_t>(text_length)); - if (g_factory == nullptr) { - gfx::win::CreateDWriteFactory(&g_factory); - } + base::win::ScopedComPtr<IDWriteFactory> factory; + gfx::win::CreateDWriteFactory(factory.Receive()); base::win::ScopedComPtr<IDWriteFactory2> factory2; - g_factory->QueryInterface(factory2.Receive()); + factory.QueryInterface(factory2.Receive()); if (!factory2) { // IDWriteFactory2 is not available before Win8.1 return GetUniscribeFallbackFont(font, text, text_length, result);
diff --git a/ui/gfx/geometry/cubic_bezier.cc b/ui/gfx/geometry/cubic_bezier.cc index 16acfc7c..06b6edd 100644 --- a/ui/gfx/geometry/cubic_bezier.cc +++ b/ui/gfx/geometry/cubic_bezier.cc
@@ -180,4 +180,20 @@ return SlopeWithEpsilon(x, kBezierEpsilon); } +double CubicBezier::GetX1() const { + return cx_ / 3.0; +} + +double CubicBezier::GetY1() const { + return cy_ / 3.0; +} + +double CubicBezier::GetX2() const { + return (bx_ + cx_) / 3.0 + GetX1(); +} + +double CubicBezier::GetY2() const { + return (by_ + cy_) / 3.0 + GetY1(); +} + } // namespace gfx
diff --git a/ui/gfx/geometry/cubic_bezier.h b/ui/gfx/geometry/cubic_bezier.h index 36ecdc7..10b9a91 100644 --- a/ui/gfx/geometry/cubic_bezier.h +++ b/ui/gfx/geometry/cubic_bezier.h
@@ -55,6 +55,13 @@ // Clamps x to range [0, 1]. double SlopeWithEpsilon(double x, double epsilon) const; + // These getters are used rarely. We reverse compute them from coefficients. + // See CubicBezier::InitCoefficients. The speed has been traded for memory. + double GetX1() const; + double GetY1() const; + double GetX2() const; + double GetY2() const; + // Gets the bezier's minimum y value in the interval [0, 1]. double range_min() const { return range_min_; } // Gets the bezier's maximum y value in the interval [0, 1].
diff --git a/ui/gfx/geometry/cubic_bezier_unittest.cc b/ui/gfx/geometry/cubic_bezier_unittest.cc index 7d91f95..74ccb6d 100644 --- a/ui/gfx/geometry/cubic_bezier_unittest.cc +++ b/ui/gfx/geometry/cubic_bezier_unittest.cc
@@ -196,7 +196,34 @@ CubicBezier three_coincident_points(0.0, 0.0, 0.0, 0.0); EXPECT_EQ(0, three_coincident_points.Solve(-1.0)); EXPECT_EQ(2.0, three_coincident_points.Solve(2.0)); +} +TEST(CubicBezierTest, GetPoints) { + double epsilon = 0.00015; + + CubicBezier cubic1(0.1, 0.2, 0.8, 0.9); + EXPECT_NEAR(0.1, cubic1.GetX1(), epsilon); + EXPECT_NEAR(0.2, cubic1.GetY1(), epsilon); + EXPECT_NEAR(0.8, cubic1.GetX2(), epsilon); + EXPECT_NEAR(0.9, cubic1.GetY2(), epsilon); + + CubicBezier cubic_zero(0, 0, 0, 0); + EXPECT_NEAR(0, cubic_zero.GetX1(), epsilon); + EXPECT_NEAR(0, cubic_zero.GetY1(), epsilon); + EXPECT_NEAR(0, cubic_zero.GetX2(), epsilon); + EXPECT_NEAR(0, cubic_zero.GetY2(), epsilon); + + CubicBezier cubic_one(1, 1, 1, 1); + EXPECT_NEAR(1, cubic_one.GetX1(), epsilon); + EXPECT_NEAR(1, cubic_one.GetY1(), epsilon); + EXPECT_NEAR(1, cubic_one.GetX2(), epsilon); + EXPECT_NEAR(1, cubic_one.GetY2(), epsilon); + + CubicBezier cubic_oor(-0.5, -1.5, 1.5, -1.6); + EXPECT_NEAR(-0.5, cubic_oor.GetX1(), epsilon); + EXPECT_NEAR(-1.5, cubic_oor.GetY1(), epsilon); + EXPECT_NEAR(1.5, cubic_oor.GetX2(), epsilon); + EXPECT_NEAR(-1.6, cubic_oor.GetY2(), epsilon); } } // namespace
diff --git a/ui/gfx/vector_icons/shelf_logout.1x.icon b/ui/gfx/vector_icons/shelf_logout.1x.icon new file mode 100644 index 0000000..a2e068f3 --- /dev/null +++ b/ui/gfx/vector_icons/shelf_logout.1x.icon
@@ -0,0 +1,35 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +CANVAS_DIMENSIONS, 16, +MOVE_TO, 8, 12, +R_LINE_TO, 4, -4, +R_LINE_TO, -4, -4, +R_LINE_TO, -1.5f, 1.5f, +LINE_TO, 8, 7, +H_LINE_TO, 1, +R_V_LINE_TO, 2, +R_H_LINE_TO, 7, +R_LINE_TO, -1.5f, 1.5f, +LINE_TO, 8, 12, +CLOSE, +MOVE_TO, 3.57f, 1.03f, +CUBIC_TO, 2, 1.03f, 1.03f, 2, 1.03f, 3.57f, +V_LINE_TO, 6, +H_LINE_TO, 3, +V_LINE_TO, 3, +R_H_LINE_TO, 10, +R_V_LINE_TO, 10, +H_LINE_TO, 3, +R_V_LINE_TO, -2, +H_LINE_TO, 1.03f, +R_V_LINE_TO, 1.47f, +CUBIC_TO, 1.03f, 14, 2, 15, 3.57f, 15, +R_H_LINE_TO, 8.9f, +R_CUBIC_TO, 1.54f, 0, 2.53f, -1, 2.53f, -2.53f, +R_V_LINE_TO, -8.9f, +CUBIC_TO, 15, 2, 13.96f, 1.03f, 12.46f, 1.03f, +R_H_LINE_TO, -8.9f, +CLOSE, +END
diff --git a/ui/gfx/vector_icons/shelf_logout.icon b/ui/gfx/vector_icons/shelf_logout.icon new file mode 100644 index 0000000..d695acc --- /dev/null +++ b/ui/gfx/vector_icons/shelf_logout.icon
@@ -0,0 +1,35 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +CANVAS_DIMENSIONS, 32, +MOVE_TO, 16.48f, 24, +LINE_TO, 24, 16.5f, +LINE_TO, 16.48f, 9, +LINE_TO, 14, 11.5f, +R_LINE_TO, 3.5f, 3.5f, +H_LINE_TO, 3, +R_V_LINE_TO, 3, +R_H_LINE_TO, 14.5f, +LINE_TO, 14, 21.5f, +R_LINE_TO, 2.48f, 2.5f, +CLOSE, +MOVE_TO, 6, 3, +CUBIC_TO, 4.15f, 3, 3, 4.5f, 3, 6.33f, +V_LINE_TO, 11, +R_H_LINE_TO, 3, +V_LINE_TO, 6.01f, +R_H_LINE_TO, 20, +R_V_LINE_TO, 20.02f, +H_LINE_TO, 6, +V_LINE_TO, 22, +H_LINE_TO, 3, +R_V_LINE_TO, 3.67f, +CUBIC_TO, 3, 27.5f, 4.48f, 29, 6.33f, 29, +R_H_LINE_TO, 19.33f, +CUBIC_TO, 27.5f, 29, 29, 27.5f, 29, 25.67f, +V_LINE_TO, 6.33f, +CUBIC_TO, 29, 4.5f, 27.5f, 3, 25.67f, 3, +H_LINE_TO, 6, +CLOSE, +END
diff --git a/ui/gfx/vector_icons_sources.gypi b/ui/gfx/vector_icons_sources.gypi index dc265203..beeb7d93 100644 --- a/ui/gfx/vector_icons_sources.gypi +++ b/ui/gfx/vector_icons_sources.gypi
@@ -119,6 +119,8 @@ 'vector_icons/shelf_applist.icon', 'vector_icons/shelf_keyboard.1x.icon', 'vector_icons/shelf_keyboard.icon', + 'vector_icons/shelf_logout.1x.icon', + 'vector_icons/shelf_logout.icon', 'vector_icons/shelf_notifications.1x.icon', 'vector_icons/shelf_notifications.icon', 'vector_icons/shelf_overflow.1x.icon',
diff --git a/ui/gfx/win/direct_write.cc b/ui/gfx/win/direct_write.cc index 90fd728..bf30f64c 100644 --- a/ui/gfx/win/direct_write.cc +++ b/ui/gfx/win/direct_write.cc
@@ -18,23 +18,13 @@ namespace win { void CreateDWriteFactory(IDWriteFactory** factory) { - using DWriteCreateFactoryProc = decltype(DWriteCreateFactory)*; - HMODULE dwrite_dll = LoadLibraryW(L"dwrite.dll"); - if (!dwrite_dll) - return; - - DWriteCreateFactoryProc dwrite_create_factory_proc = - reinterpret_cast<DWriteCreateFactoryProc>( - GetProcAddress(dwrite_dll, "DWriteCreateFactory")); - // Not finding the DWriteCreateFactory function indicates a corrupt dll. - if (!dwrite_create_factory_proc) - return; - - // Failure to create the DirectWrite factory indicates a corrupt dll. base::win::ScopedComPtr<IUnknown> factory_unknown; - if (FAILED(dwrite_create_factory_proc(DWRITE_FACTORY_TYPE_SHARED, - __uuidof(IDWriteFactory), - factory_unknown.Receive()))) { + HRESULT hr = + DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory), + factory_unknown.Receive()); + if (FAILED(hr)) { + base::debug::Alias(&hr); + CHECK(false); return; } factory_unknown.QueryInterface<IDWriteFactory>(factory);
diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn index d2a6c3c..609ad3b 100644 --- a/ui/gl/BUILD.gn +++ b/ui/gl/BUILD.gn
@@ -231,6 +231,10 @@ "//third_party/angle:libGLESv2", "//third_party/mesa:osmesa", ] + + if (is_official_build) { + include_dirs = [ "//third_party/swiftshader/include" ] + } } if (is_mac) { sources += [
diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc index 033a129f..4cf6515 100644 --- a/ui/gl/gl_gl_api_implementation.cc +++ b/ui/gl/gl_gl_api_implementation.cc
@@ -274,6 +274,17 @@ target, samples, gl_internal_format, width, height); } +static void GL_BINDING_CALL +CustomRenderbufferStorageMultisample(GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, + GLsizei height) { + GLenum gl_internal_format = GetInternalFormat(internalformat); + g_driver_gl.orig_fn.glRenderbufferStorageMultisampleFn( + target, samples, gl_internal_format, width, height); +} + } // anonymous namespace void DriverGL::InitializeCustomDynamicBindings(GLContext* context) { @@ -306,6 +317,13 @@ fn.glRenderbufferStorageMultisampleEXTFn = reinterpret_cast<glRenderbufferStorageMultisampleEXTProc>( CustomRenderbufferStorageMultisampleEXT); + + DCHECK(orig_fn.glRenderbufferStorageMultisampleFn == NULL); + orig_fn.glRenderbufferStorageMultisampleFn = + fn.glRenderbufferStorageMultisampleFn; + fn.glRenderbufferStorageMultisampleFn = + reinterpret_cast<glRenderbufferStorageMultisampleProc>( + CustomRenderbufferStorageMultisample); } static void GL_BINDING_CALL NullDrawClearFn(GLbitfield mask) {
diff --git a/ui/gl/init/BUILD.gn b/ui/gl/init/BUILD.gn index baec674..55bb9c7 100644 --- a/ui/gl/init/BUILD.gn +++ b/ui/gl/init/BUILD.gn
@@ -18,8 +18,6 @@ ] defines = [ "GL_INIT_IMPLEMENTATION" ] - include_dirs = [ "//third_party/swiftshader/include" ] - deps = [ "//base", "//ui/gfx", @@ -42,6 +40,10 @@ libs = [ "dwmapi.lib" ] ldflags = [ "/DELAYLOAD:dwmapi.dll" ] + + if (is_official_build) { + include_dirs = [ "//third_party/swiftshader/include" ] + } } else if (is_mac) { sources += [ "gl_factory_mac.cc",
diff --git a/ui/strings/translations/ui_strings_am.xtb b/ui/strings/translations/ui_strings_am.xtb index 13a887b..cd4351c 100644 --- a/ui/strings/translations/ui_strings_am.xtb +++ b/ui/strings/translations/ui_strings_am.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 ሰከንድ በፊት}one{# ሰከንዶች በፊት}other{# ሰከንዶች በፊት}}</translation> <translation id="6528179044667508675">አትረብሽ</translation> <translation id="6620110761915583480">ፋይል አስቀምጥ</translation> -<translation id="6659594942844771486">ትር</translation> <translation id="6699343763173986273">የሚዲያ ቀጣይ ትራክ</translation> <translation id="6786750046913594791">አቃፊ ዝጋ</translation> <translation id="6808150112686056157">ሚዲያ አቁም</translation>
diff --git a/ui/strings/translations/ui_strings_ar.xtb b/ui/strings/translations/ui_strings_ar.xtb index 8eedbc0..6cbfd5cd 100644 --- a/ui/strings/translations/ui_strings_ar.xtb +++ b/ui/strings/translations/ui_strings_ar.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{قبل ثانية واحدة}zero{ قبل # من الثواني}two{ قبل ثانيتين (#)}few{قبل # ثوانٍ}many{قبل # ثانية}other{قبل # من الثواني}}</translation> <translation id="6528179044667508675">الرجاء عدم الإزعاج</translation> <translation id="6620110761915583480">حفظ الملف</translation> -<translation id="6659594942844771486">علامة تبويب</translation> <translation id="6699343763173986273">المقطع الصوتي التالي للوسائط</translation> <translation id="6786750046913594791">إغلاق المجلد</translation> <translation id="6808150112686056157">إيقاف الوسائط</translation>
diff --git a/ui/strings/translations/ui_strings_bg.xtb b/ui/strings/translations/ui_strings_bg.xtb index 9483f3f1..52344b3 100644 --- a/ui/strings/translations/ui_strings_bg.xtb +++ b/ui/strings/translations/ui_strings_bg.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Преди 1 сек}other{Преди # сек}}</translation> <translation id="6528179044667508675">Не безпокойте</translation> <translation id="6620110761915583480">Запазване на файл</translation> -<translation id="6659594942844771486">Раздел</translation> <translation id="6699343763173986273">Мултимедия, следващият запис</translation> <translation id="6786750046913594791">Затваряне на папката</translation> <translation id="6808150112686056157">Мултимедия, стоп</translation>
diff --git a/ui/strings/translations/ui_strings_bn.xtb b/ui/strings/translations/ui_strings_bn.xtb index 9f409d40..11206a35 100644 --- a/ui/strings/translations/ui_strings_bn.xtb +++ b/ui/strings/translations/ui_strings_bn.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{১ সেকেন্ড পূর্বে}one{# সেকেন্ড পূর্বে}other{# সেকেন্ড পূর্বে}}</translation> <translation id="6528179044667508675">বিরক্ত করবেন না</translation> <translation id="6620110761915583480">ফাইল সংরক্ষণ করুন</translation> -<translation id="6659594942844771486">ট্যাব</translation> <translation id="6699343763173986273">মিডিয়া পরবর্তী ট্র্যাক</translation> <translation id="6786750046913594791">ফোল্ডার বন্ধ করুন</translation> <translation id="6808150112686056157">মিডিয়া থামান</translation>
diff --git a/ui/strings/translations/ui_strings_ca.xtb b/ui/strings/translations/ui_strings_ca.xtb index 27f3d67..cac2408 100644 --- a/ui/strings/translations/ui_strings_ca.xtb +++ b/ui/strings/translations/ui_strings_ca.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{fa 1 s}other{fa # s}}</translation> <translation id="6528179044667508675">No molesteu</translation> <translation id="6620110761915583480">Desa el fitxer</translation> -<translation id="6659594942844771486">Pestanya</translation> <translation id="6699343763173986273">Fitxer multimèdia: pista següent</translation> <translation id="6786750046913594791">Tanca la carpeta</translation> <translation id="6808150112686056157">Fitxer multimèdia: atura</translation>
diff --git a/ui/strings/translations/ui_strings_cs.xtb b/ui/strings/translations/ui_strings_cs.xtb index 20151c7..2d63d32c 100644 --- a/ui/strings/translations/ui_strings_cs.xtb +++ b/ui/strings/translations/ui_strings_cs.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Před 1 s}few{Před # s}many{Před # s}other{Před # s}}</translation> <translation id="6528179044667508675">Nerušit</translation> <translation id="6620110761915583480">Uložit soubor</translation> -<translation id="6659594942844771486">Karta</translation> <translation id="6699343763173986273">Média – další skladba</translation> <translation id="6786750046913594791">Zavřít složku</translation> <translation id="6808150112686056157">Média – zastavit</translation>
diff --git a/ui/strings/translations/ui_strings_da.xtb b/ui/strings/translations/ui_strings_da.xtb index a9b97ed..671b9b2 100644 --- a/ui/strings/translations/ui_strings_da.xtb +++ b/ui/strings/translations/ui_strings_da.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{for 1 sek. siden}one{for # sek. siden}other{for # sek. siden}}</translation> <translation id="6528179044667508675">Vil ikke forstyrres</translation> <translation id="6620110761915583480">Gem fil</translation> -<translation id="6659594942844771486">Fane</translation> <translation id="6699343763173986273">Medie: Næste nummer</translation> <translation id="6786750046913594791">Luk mappe</translation> <translation id="6808150112686056157">Medie: Stop</translation>
diff --git a/ui/strings/translations/ui_strings_de.xtb b/ui/strings/translations/ui_strings_de.xtb index cb4ab89e..bffa53f87 100644 --- a/ui/strings/translations/ui_strings_de.xtb +++ b/ui/strings/translations/ui_strings_de.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 Sek. her}other{# Sek. her}}</translation> <translation id="6528179044667508675">Nicht stören</translation> <translation id="6620110761915583480">Datei speichern</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Medien – nächster Titel</translation> <translation id="6786750046913594791">Ordner schließen</translation> <translation id="6808150112686056157">Medien – Stopp</translation>
diff --git a/ui/strings/translations/ui_strings_el.xtb b/ui/strings/translations/ui_strings_el.xtb index 0fd791e..697f2ed1 100644 --- a/ui/strings/translations/ui_strings_el.xtb +++ b/ui/strings/translations/ui_strings_el.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Πριν από 1 δευτερόλεπτο}other{Πριν από # δευτερόλεπτα}}</translation> <translation id="6528179044667508675">Μην ενοχλείτε</translation> <translation id="6620110761915583480">Αποθήκευση Αρχείου</translation> -<translation id="6659594942844771486">Καρτέλα</translation> <translation id="6699343763173986273">Επόμενο κομμάτι πολυμέσων</translation> <translation id="6786750046913594791">Κλείσιμο φακέλου</translation> <translation id="6808150112686056157">Διακοπή πολυμέσων</translation>
diff --git a/ui/strings/translations/ui_strings_en-GB.xtb b/ui/strings/translations/ui_strings_en-GB.xtb index 0a6b7686..742984c 100644 --- a/ui/strings/translations/ui_strings_en-GB.xtb +++ b/ui/strings/translations/ui_strings_en-GB.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 sec ago}other{# secs ago}}</translation> <translation id="6528179044667508675">Do not disturb</translation> <translation id="6620110761915583480">Save File</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Media Next Track</translation> <translation id="6786750046913594791">Close folder</translation> <translation id="6808150112686056157">Media Stop</translation>
diff --git a/ui/strings/translations/ui_strings_es-419.xtb b/ui/strings/translations/ui_strings_es-419.xtb index 44636406..a06ee039 100644 --- a/ui/strings/translations/ui_strings_es-419.xtb +++ b/ui/strings/translations/ui_strings_es-419.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Hace 1 s.}other{Hace # s.}}</translation> <translation id="6528179044667508675">No molestar</translation> <translation id="6620110761915583480">Guardar archivo</translation> -<translation id="6659594942844771486">Pestaña</translation> <translation id="6699343763173986273">Pista multimedia siguiente</translation> <translation id="6786750046913594791">Cerrar carpeta</translation> <translation id="6808150112686056157">Detener contenido multimedia</translation>
diff --git a/ui/strings/translations/ui_strings_es.xtb b/ui/strings/translations/ui_strings_es.xtb index 0a473baf..d62b524 100644 --- a/ui/strings/translations/ui_strings_es.xtb +++ b/ui/strings/translations/ui_strings_es.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Hace 1 s}other{Hace # s}}</translation> <translation id="6528179044667508675">No molestar</translation> <translation id="6620110761915583480">Guardar archivo</translation> -<translation id="6659594942844771486">Pestaña</translation> <translation id="6699343763173986273">Siguiente pista multimedia</translation> <translation id="6786750046913594791">Cerrar carpeta</translation> <translation id="6808150112686056157">Detener contenido multimedia</translation>
diff --git a/ui/strings/translations/ui_strings_et.xtb b/ui/strings/translations/ui_strings_et.xtb index 86943d1..2f64791 100644 --- a/ui/strings/translations/ui_strings_et.xtb +++ b/ui/strings/translations/ui_strings_et.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 s tagasi}other{# s tagasi}}</translation> <translation id="6528179044667508675">Mitte segada</translation> <translation id="6620110761915583480">Faili salvestamine</translation> -<translation id="6659594942844771486">Vaheleht</translation> <translation id="6699343763173986273">Meediumi järgmine lugu</translation> <translation id="6786750046913594791">Kausta sulgemine</translation> <translation id="6808150112686056157">Meediumi peatamine</translation>
diff --git a/ui/strings/translations/ui_strings_fa.xtb b/ui/strings/translations/ui_strings_fa.xtb index ce8e9fa..0b1b9d9 100644 --- a/ui/strings/translations/ui_strings_fa.xtb +++ b/ui/strings/translations/ui_strings_fa.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{۱ ثانیه قبل}one{# ثانیه قبل}other{# ثانیه قبل}}</translation> <translation id="6528179044667508675">مزاحم نشوید</translation> <translation id="6620110761915583480">ذخیره کردن فایل</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">آهنگ بعدی رسانه</translation> <translation id="6786750046913594791">بستن پوشه</translation> <translation id="6808150112686056157">توقف رسانه</translation>
diff --git a/ui/strings/translations/ui_strings_fi.xtb b/ui/strings/translations/ui_strings_fi.xtb index 99957d1..7991903 100644 --- a/ui/strings/translations/ui_strings_fi.xtb +++ b/ui/strings/translations/ui_strings_fi.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 s sitten}other{# s sitten}}</translation> <translation id="6528179044667508675">Älä häiritse</translation> <translation id="6620110761915583480">Tallenna tiedosto</translation> -<translation id="6659594942844771486">Välilehti</translation> <translation id="6699343763173986273">Media: seuraava kappale</translation> <translation id="6786750046913594791">Sulje kansio</translation> <translation id="6808150112686056157">Media: pysäytä</translation>
diff --git a/ui/strings/translations/ui_strings_fil.xtb b/ui/strings/translations/ui_strings_fil.xtb index a46801f4..7407bf2d 100644 --- a/ui/strings/translations/ui_strings_fil.xtb +++ b/ui/strings/translations/ui_strings_fil.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 segundo ang nakalipas}one{# segundo ang nakalipas}other{# na segundo ang nakalipas}}</translation> <translation id="6528179044667508675">Huwag istorbohin</translation> <translation id="6620110761915583480">I-save ang File</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Susunod na Track ng Media</translation> <translation id="6786750046913594791">Isara ang folder</translation> <translation id="6808150112686056157">Media Ihinto</translation>
diff --git a/ui/strings/translations/ui_strings_fr.xtb b/ui/strings/translations/ui_strings_fr.xtb index 8912c4ca..0d63962 100644 --- a/ui/strings/translations/ui_strings_fr.xtb +++ b/ui/strings/translations/ui_strings_fr.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Il y a 1 s}one{Il y a # s}other{Il y a # s}}</translation> <translation id="6528179044667508675">Ne pas déranger</translation> <translation id="6620110761915583480">Enregistrer le fichier</translation> -<translation id="6659594942844771486">Onglet</translation> <translation id="6699343763173986273">Contenu multimédia : titre suivant</translation> <translation id="6786750046913594791">Fermer le dossier</translation> <translation id="6808150112686056157">Contenu multimédia : arrêt</translation>
diff --git a/ui/strings/translations/ui_strings_gu.xtb b/ui/strings/translations/ui_strings_gu.xtb index 6f9e9e985..ca205f8 100644 --- a/ui/strings/translations/ui_strings_gu.xtb +++ b/ui/strings/translations/ui_strings_gu.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 સે પહેલાં}one{# સે પહેલાં}other{# સે પહેલાં}}</translation> <translation id="6528179044667508675">ખલેલ પાડશો નહીં</translation> <translation id="6620110761915583480">ફાઇલ સાચવો</translation> -<translation id="6659594942844771486">ટૅબ</translation> <translation id="6699343763173986273">મીડિયા આગલો ટ્રૅક</translation> <translation id="6786750046913594791">ફોલ્ડર બંધ કરો</translation> <translation id="6808150112686056157">મીડિયા સ્ટોપ</translation>
diff --git a/ui/strings/translations/ui_strings_hi.xtb b/ui/strings/translations/ui_strings_hi.xtb index 5fbc0cd1..e096f663 100644 --- a/ui/strings/translations/ui_strings_hi.xtb +++ b/ui/strings/translations/ui_strings_hi.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 सेकंड पहले}one{# सेकंड पहले}other{# सेकंड पहले}}</translation> <translation id="6528179044667508675">परेशान न करें</translation> <translation id="6620110761915583480">फ़ाइल सहेजें</translation> -<translation id="6659594942844771486">टैब</translation> <translation id="6699343763173986273">मीडिया अगला ट्रैक</translation> <translation id="6786750046913594791">फ़ोल्डर बंद करें</translation> <translation id="6808150112686056157">मीडिया रोकें</translation>
diff --git a/ui/strings/translations/ui_strings_hr.xtb b/ui/strings/translations/ui_strings_hr.xtb index 05f2b27..d47e086 100644 --- a/ui/strings/translations/ui_strings_hr.xtb +++ b/ui/strings/translations/ui_strings_hr.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Prije 1 s}one{Prije # s}few{Prije # s}other{Prije # s}}</translation> <translation id="6528179044667508675">Ne ometaj</translation> <translation id="6620110761915583480">Spremi datoteku</translation> -<translation id="6659594942844771486">Kartica</translation> <translation id="6699343763173986273">Sljedeći zapis Medija</translation> <translation id="6786750046913594791">Zatvori mapu</translation> <translation id="6808150112686056157">Zaustavi Medije</translation>
diff --git a/ui/strings/translations/ui_strings_hu.xtb b/ui/strings/translations/ui_strings_hu.xtb index 8b634cf..c421017 100644 --- a/ui/strings/translations/ui_strings_hu.xtb +++ b/ui/strings/translations/ui_strings_hu.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 másodperce}other{# másodperce}}</translation> <translation id="6528179044667508675">Ne zavarj</translation> <translation id="6620110761915583480">Fájl mentése</translation> -<translation id="6659594942844771486">Lap</translation> <translation id="6699343763173986273">Következő szám</translation> <translation id="6786750046913594791">Mappa bezárása</translation> <translation id="6808150112686056157">Leállítás</translation>
diff --git a/ui/strings/translations/ui_strings_id.xtb b/ui/strings/translations/ui_strings_id.xtb index 1bb184bb..ca41fba 100644 --- a/ui/strings/translations/ui_strings_id.xtb +++ b/ui/strings/translations/ui_strings_id.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 dtk yang lalu}other{# dtk yang lalu}}</translation> <translation id="6528179044667508675">Jangan ganggu</translation> <translation id="6620110761915583480">Simpan File</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Lacak Media Berikutnya</translation> <translation id="6786750046913594791">Tutup folder</translation> <translation id="6808150112686056157">Hentikan Media</translation>
diff --git a/ui/strings/translations/ui_strings_it.xtb b/ui/strings/translations/ui_strings_it.xtb index 4fd1c09c4..4cedd21 100644 --- a/ui/strings/translations/ui_strings_it.xtb +++ b/ui/strings/translations/ui_strings_it.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 sec fa}other{# sec fa}}</translation> <translation id="6528179044667508675">Non disturbare</translation> <translation id="6620110761915583480">Salva file</translation> -<translation id="6659594942844771486">TAB</translation> <translation id="6699343763173986273">Traccia successiva contenuti multimediali</translation> <translation id="6786750046913594791">Chiudi cartella</translation> <translation id="6808150112686056157">Interrompi contenuti multimediali</translation>
diff --git a/ui/strings/translations/ui_strings_iw.xtb b/ui/strings/translations/ui_strings_iw.xtb index 602cae5..1afe595d 100644 --- a/ui/strings/translations/ui_strings_iw.xtb +++ b/ui/strings/translations/ui_strings_iw.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{לפני שנ‘ אחת}two{לפני # שנ‘}many{לפני # שנ‘}other{לפני # שנ‘}}</translation> <translation id="6528179044667508675">נא לא להפריע</translation> <translation id="6620110761915583480">שמור קובץ</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">הרצועה הבאה במדיה</translation> <translation id="6786750046913594791">סגור את התיקייה</translation> <translation id="6808150112686056157">עצור מדיה</translation>
diff --git a/ui/strings/translations/ui_strings_ja.xtb b/ui/strings/translations/ui_strings_ja.xtb index bf46775..6f25ee4 100644 --- a/ui/strings/translations/ui_strings_ja.xtb +++ b/ui/strings/translations/ui_strings_ja.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 秒前}other{# 秒前}}</translation> <translation id="6528179044667508675">通知を一時的にミュート</translation> <translation id="6620110761915583480">ファイルを保存</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">メディアの次のトラック</translation> <translation id="6786750046913594791">フォルダを閉じる</translation> <translation id="6808150112686056157">メディアの停止</translation>
diff --git a/ui/strings/translations/ui_strings_kn.xtb b/ui/strings/translations/ui_strings_kn.xtb index bd83dbd..55610d3 100644 --- a/ui/strings/translations/ui_strings_kn.xtb +++ b/ui/strings/translations/ui_strings_kn.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 ಸೆಕೆಂ ಹಿಂದೆ}one{# ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ}other{# ಸೆಕೆಂಡುಗಳ ಹಿಂದೆ}}</translation> <translation id="6528179044667508675">ಅಡಚಣೆ ಮಾಡಬೇಡಿ</translation> <translation id="6620110761915583480">ಫೈಲ್ ಉಳಿಸು</translation> -<translation id="6659594942844771486">ಟ್ಯಾಬ್</translation> <translation id="6699343763173986273">ಮೀಡಿಯಾದ ಮುಂದಿನ ಟ್ರ್ಯಾಕ್</translation> <translation id="6786750046913594791">ಫೋಲ್ಡರ್ ಮುಚ್ಚಿರಿ</translation> <translation id="6808150112686056157">ಮೀಡಿಯಾ ನಿಲುಗಡೆ</translation>
diff --git a/ui/strings/translations/ui_strings_ko.xtb b/ui/strings/translations/ui_strings_ko.xtb index 3f7c5e39..a4c9aff 100644 --- a/ui/strings/translations/ui_strings_ko.xtb +++ b/ui/strings/translations/ui_strings_ko.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1초 전}other{#초 전}}</translation> <translation id="6528179044667508675">알림 일시중지</translation> <translation id="6620110761915583480">파일 저장</translation> -<translation id="6659594942844771486">탭</translation> <translation id="6699343763173986273">미디어 다음 트랙</translation> <translation id="6786750046913594791">폴더 닫기</translation> <translation id="6808150112686056157">미디어 중지</translation>
diff --git a/ui/strings/translations/ui_strings_lt.xtb b/ui/strings/translations/ui_strings_lt.xtb index df3fb9e8..4cdce3e 100644 --- a/ui/strings/translations/ui_strings_lt.xtb +++ b/ui/strings/translations/ui_strings_lt.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Prieš 1 sek.}one{Prieš # sek.}few{Prieš # sek.}many{Prieš # sek.}other{Prieš # sek.}}</translation> <translation id="6528179044667508675">Netrukdyti</translation> <translation id="6620110761915583480">Išsaugoti failą</translation> -<translation id="6659594942844771486">Skirtukas</translation> <translation id="6699343763173986273">Kitas medijos takelis</translation> <translation id="6786750046913594791">Uždaryti aplanką</translation> <translation id="6808150112686056157">Sustabdyti mediją</translation>
diff --git a/ui/strings/translations/ui_strings_lv.xtb b/ui/strings/translations/ui_strings_lv.xtb index fa0cb3a..bd0cb26 100644 --- a/ui/strings/translations/ui_strings_lv.xtb +++ b/ui/strings/translations/ui_strings_lv.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Pirms 1 s}zero{Pirms # s}one{Pirms # s}other{Pirms # s}}</translation> <translation id="6528179044667508675">Netraucēt</translation> <translation id="6620110761915583480">Saglabāt failu</translation> -<translation id="6659594942844771486">Cilne</translation> <translation id="6699343763173986273">Multivide — nākamā dziesma</translation> <translation id="6786750046913594791">Aizvērt mapi</translation> <translation id="6808150112686056157">Multivide — pārtraukt</translation>
diff --git a/ui/strings/translations/ui_strings_ml.xtb b/ui/strings/translations/ui_strings_ml.xtb index 801931f..01c921d7 100644 --- a/ui/strings/translations/ui_strings_ml.xtb +++ b/ui/strings/translations/ui_strings_ml.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{ഒരു സെക്കൻഡ് മുമ്പ്}other{# സെക്കൻഡ് മുമ്പ്}}</translation> <translation id="6528179044667508675">ശല്യപ്പെടുത്തരുത്</translation> <translation id="6620110761915583480">ഫയല് സംരക്ഷിക്കുക</translation> -<translation id="6659594942844771486">ടാബ്</translation> <translation id="6699343763173986273">അടുത്ത മീഡിയ ട്രാക്ക്</translation> <translation id="6786750046913594791">ഫോൾഡർ അടയ്ക്കുക</translation> <translation id="6808150112686056157">മീഡിയ നിർത്തുക</translation>
diff --git a/ui/strings/translations/ui_strings_mr.xtb b/ui/strings/translations/ui_strings_mr.xtb index 1d9bd65..2c14f52 100644 --- a/ui/strings/translations/ui_strings_mr.xtb +++ b/ui/strings/translations/ui_strings_mr.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 सेकंदापूर्वी}one{# सेकंदापूर्वी}other{# सेकंदांपूर्वी}}</translation> <translation id="6528179044667508675">व्यत्यय आणू नका</translation> <translation id="6620110761915583480">फाइल जतन करा</translation> -<translation id="6659594942844771486">टॅब</translation> <translation id="6699343763173986273">मीडिया पुढील ट्रॅक</translation> <translation id="6786750046913594791">फोल्डर बंद करा</translation> <translation id="6808150112686056157">मीडिया थांबवा</translation>
diff --git a/ui/strings/translations/ui_strings_ms.xtb b/ui/strings/translations/ui_strings_ms.xtb index e448677..900d935 100644 --- a/ui/strings/translations/ui_strings_ms.xtb +++ b/ui/strings/translations/ui_strings_ms.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 saat yang lalu}other{# saat yang lalu}}</translation> <translation id="6528179044667508675">Jangan ganggu</translation> <translation id="6620110761915583480">Simpan Fail</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Lagu Media Seterusnya</translation> <translation id="6786750046913594791">Tutup folder</translation> <translation id="6808150112686056157">Media Berhenti</translation>
diff --git a/ui/strings/translations/ui_strings_nl.xtb b/ui/strings/translations/ui_strings_nl.xtb index 9a6d6e2..8b6ecc1d 100644 --- a/ui/strings/translations/ui_strings_nl.xtb +++ b/ui/strings/translations/ui_strings_nl.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 sec. geleden}other{# sec. geleden}}</translation> <translation id="6528179044667508675">Niet storen</translation> <translation id="6620110761915583480">Bestand opslaan</translation> -<translation id="6659594942844771486">Tabblad</translation> <translation id="6699343763173986273">Volgende track voor media</translation> <translation id="6786750046913594791">Map sluiten</translation> <translation id="6808150112686056157">Media stoppen</translation>
diff --git a/ui/strings/translations/ui_strings_no.xtb b/ui/strings/translations/ui_strings_no.xtb index c089b24..744836c6 100644 --- a/ui/strings/translations/ui_strings_no.xtb +++ b/ui/strings/translations/ui_strings_no.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{For 1 sekund siden}other{For # sekunder siden}}</translation> <translation id="6528179044667508675">Ikke forstyrr</translation> <translation id="6620110761915583480">Lagre fil</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Media – neste spor</translation> <translation id="6786750046913594791">Lukk mappen</translation> <translation id="6808150112686056157">Media – stopp</translation>
diff --git a/ui/strings/translations/ui_strings_pl.xtb b/ui/strings/translations/ui_strings_pl.xtb index 3abec3b..2f2e146 100644 --- a/ui/strings/translations/ui_strings_pl.xtb +++ b/ui/strings/translations/ui_strings_pl.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 s temu}few{# s temu}many{# s temu}other{# s temu}}</translation> <translation id="6528179044667508675">Nie przeszkadzać</translation> <translation id="6620110761915583480">Zapisz plik</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Następny utwór multimedialny</translation> <translation id="6786750046913594791">Zamknij folder</translation> <translation id="6808150112686056157">Zatrzymaj multimedia</translation>
diff --git a/ui/strings/translations/ui_strings_pt-BR.xtb b/ui/strings/translations/ui_strings_pt-BR.xtb index 5f1df14f..884fa035 100644 --- a/ui/strings/translations/ui_strings_pt-BR.xtb +++ b/ui/strings/translations/ui_strings_pt-BR.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Um segundo atrás}one{# segundos atrás}other{# segundos atrás}}</translation> <translation id="6528179044667508675">Não perturbe</translation> <translation id="6620110761915583480">Salvar arquivo</translation> -<translation id="6659594942844771486">Guia</translation> <translation id="6699343763173986273">Próxima faixa da mídia</translation> <translation id="6786750046913594791">Fechar pasta</translation> <translation id="6808150112686056157">Parar mídia</translation>
diff --git a/ui/strings/translations/ui_strings_pt-PT.xtb b/ui/strings/translations/ui_strings_pt-PT.xtb index e2525e7..f14f370 100644 --- a/ui/strings/translations/ui_strings_pt-PT.xtb +++ b/ui/strings/translations/ui_strings_pt-PT.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Há 1 seg}other{Há # seg}}</translation> <translation id="6528179044667508675">Não incomodar</translation> <translation id="6620110761915583480">Guardar ficheiro</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Faixa seguinte de multimédia</translation> <translation id="6786750046913594791">Fechar pasta</translation> <translation id="6808150112686056157">Parar multimédia</translation>
diff --git a/ui/strings/translations/ui_strings_ro.xtb b/ui/strings/translations/ui_strings_ro.xtb index 47bdb3f..58c5b1a 100644 --- a/ui/strings/translations/ui_strings_ro.xtb +++ b/ui/strings/translations/ui_strings_ro.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Acum o sec.}few{Acum # sec}other{Acum # sec}}</translation> <translation id="6528179044667508675">Nu deranja</translation> <translation id="6620110761915583480">Salvează fișierul</translation> -<translation id="6659594942844771486">Filă</translation> <translation id="6699343763173986273">Melodia următoare din conținutul media</translation> <translation id="6786750046913594791">Închideți dosarul</translation> <translation id="6808150112686056157">Opriți conținutul media</translation>
diff --git a/ui/strings/translations/ui_strings_ru.xtb b/ui/strings/translations/ui_strings_ru.xtb index b9c1090..8fd912c 100644 --- a/ui/strings/translations/ui_strings_ru.xtb +++ b/ui/strings/translations/ui_strings_ru.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 сек. назад}one{# сек. назад}few{# сек. назад}many{# сек. назад}other{# сек. назад}}</translation> <translation id="6528179044667508675">Не беспокоить</translation> <translation id="6620110761915583480">Сохранить файл</translation> -<translation id="6659594942844771486">Вкладка</translation> <translation id="6699343763173986273">Следующий трек</translation> <translation id="6786750046913594791">Закрыть папку.</translation> <translation id="6808150112686056157">Остановить</translation>
diff --git a/ui/strings/translations/ui_strings_sk.xtb b/ui/strings/translations/ui_strings_sk.xtb index 9d2e7d1e..9463c38b 100644 --- a/ui/strings/translations/ui_strings_sk.xtb +++ b/ui/strings/translations/ui_strings_sk.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Pred 1 s}few{Pred # s}many{Pred # s}other{Pred # s}}</translation> <translation id="6528179044667508675">Nerušiť</translation> <translation id="6620110761915583480">Uložiť súbor</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Média – ďalšia stopa</translation> <translation id="6786750046913594791">Zatvoriť priečinok</translation> <translation id="6808150112686056157">Médiá – zastaviť</translation>
diff --git a/ui/strings/translations/ui_strings_sl.xtb b/ui/strings/translations/ui_strings_sl.xtb index 600a8fa0..c768418 100644 --- a/ui/strings/translations/ui_strings_sl.xtb +++ b/ui/strings/translations/ui_strings_sl.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Pred 1 s}one{Pred # s}two{Pred # s}few{Pred # s}other{Pred # s}}</translation> <translation id="6528179044667508675">Ne moti</translation> <translation id="6620110761915583480">Shrani datoteko</translation> -<translation id="6659594942844771486">Tabulator</translation> <translation id="6699343763173986273">Naslednja skladba</translation> <translation id="6786750046913594791">Zapri mapo</translation> <translation id="6808150112686056157">Ustavitev</translation>
diff --git a/ui/strings/translations/ui_strings_sr.xtb b/ui/strings/translations/ui_strings_sr.xtb index c3b07fa..4cf2143 100644 --- a/ui/strings/translations/ui_strings_sr.xtb +++ b/ui/strings/translations/ui_strings_sr.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Пре 1 сек}one{Пре # сек}few{Пре # сек}other{Пре # сек}}</translation> <translation id="6528179044667508675">Не узнемиравај</translation> <translation id="6620110761915583480">Чување датотеке</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Следећа песма медија</translation> <translation id="6786750046913594791">Затворите директоријум</translation> <translation id="6808150112686056157">Заустављање медија</translation>
diff --git a/ui/strings/translations/ui_strings_sv.xtb b/ui/strings/translations/ui_strings_sv.xtb index 56f994e20..fd5b93e 100644 --- a/ui/strings/translations/ui_strings_sv.xtb +++ b/ui/strings/translations/ui_strings_sv.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{för 1 sek sedan}other{för # sek sedan}}</translation> <translation id="6528179044667508675">Stör inte</translation> <translation id="6620110761915583480">Spara fil</translation> -<translation id="6659594942844771486">Flik</translation> <translation id="6699343763173986273">Nästa spår</translation> <translation id="6786750046913594791">Stäng mappen</translation> <translation id="6808150112686056157">Stoppa</translation>
diff --git a/ui/strings/translations/ui_strings_sw.xtb b/ui/strings/translations/ui_strings_sw.xtb index 6bfbe67..3739dd9 100644 --- a/ui/strings/translations/ui_strings_sw.xtb +++ b/ui/strings/translations/ui_strings_sw.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{Sekunde 1 iliyopita}other{Sekunde # zilizopita}}</translation> <translation id="6528179044667508675">Usinisumbue</translation> <translation id="6620110761915583480">Hifadhi Faili</translation> -<translation id="6659594942844771486">Kichupo</translation> <translation id="6699343763173986273">Wimbo Unaofuata kwenye Media</translation> <translation id="6786750046913594791">Funga Folda</translation> <translation id="6808150112686056157">Simamisha Media</translation>
diff --git a/ui/strings/translations/ui_strings_ta.xtb b/ui/strings/translations/ui_strings_ta.xtb index eefc631..6334910 100644 --- a/ui/strings/translations/ui_strings_ta.xtb +++ b/ui/strings/translations/ui_strings_ta.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 நிமிடம் முன்பு}other{# நிமிடங்கள் முன்பு}}</translation> <translation id="6528179044667508675">தொந்தரவு செய்ய வேண்டாம்</translation> <translation id="6620110761915583480">கோப்பைச் சேமி</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">ஊடகத்தின் அடுத்த டிராக்</translation> <translation id="6786750046913594791">கோப்புறையை மூடு</translation> <translation id="6808150112686056157">ஊடகத்தை நிறுத்து</translation>
diff --git a/ui/strings/translations/ui_strings_te.xtb b/ui/strings/translations/ui_strings_te.xtb index 0f632f9d..72feaf9 100644 --- a/ui/strings/translations/ui_strings_te.xtb +++ b/ui/strings/translations/ui_strings_te.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 సెక. క్రితం}other{# సెక. క్రితం}}</translation> <translation id="6528179044667508675">అంతరాయం కలిగించవద్దు</translation> <translation id="6620110761915583480">ఫైల్ను సేవ్ చేయి</translation> -<translation id="6659594942844771486">టాబ్</translation> <translation id="6699343763173986273">మీడియా తదుపరి ట్రాక్</translation> <translation id="6786750046913594791">ఫోల్డర్ను మూసివేయండి</translation> <translation id="6808150112686056157">మీడియా ఆపివేయి</translation>
diff --git a/ui/strings/translations/ui_strings_th.xtb b/ui/strings/translations/ui_strings_th.xtb index 8f860277..a580e01 100644 --- a/ui/strings/translations/ui_strings_th.xtb +++ b/ui/strings/translations/ui_strings_th.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 วินาทีที่ผ่านมา}other{# วินาทีที่ผ่านมา}}</translation> <translation id="6528179044667508675">ห้ามรบกวน</translation> <translation id="6620110761915583480">บันทึกไฟล์</translation> -<translation id="6659594942844771486">แท็บ</translation> <translation id="6699343763173986273">แทร็กถัดไปของสื่อ</translation> <translation id="6786750046913594791">ปิดโฟลเดอร์</translation> <translation id="6808150112686056157">หยุดสื่อ</translation>
diff --git a/ui/strings/translations/ui_strings_tr.xtb b/ui/strings/translations/ui_strings_tr.xtb index 49ece15c..c94006d 100644 --- a/ui/strings/translations/ui_strings_tr.xtb +++ b/ui/strings/translations/ui_strings_tr.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 sn. önce}other{# sn. önce}}</translation> <translation id="6528179044667508675">Rahatsız etmeyin</translation> <translation id="6620110761915583480">Dosyayı Kaydet</translation> -<translation id="6659594942844771486">Sekme</translation> <translation id="6699343763173986273">Medya Sonraki Parça</translation> <translation id="6786750046913594791">Klasörü kapat</translation> <translation id="6808150112686056157">Medyayı Durdur</translation>
diff --git a/ui/strings/translations/ui_strings_uk.xtb b/ui/strings/translations/ui_strings_uk.xtb index df16dc44..ca185a114 100644 --- a/ui/strings/translations/ui_strings_uk.xtb +++ b/ui/strings/translations/ui_strings_uk.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 с тому}one{# с тому}few{# с тому}many{# с тому}other{# с тому}}</translation> <translation id="6528179044667508675">Не турбувати</translation> <translation id="6620110761915583480">Зберегти файл</translation> -<translation id="6659594942844771486">Вкладка</translation> <translation id="6699343763173986273">Наступна композиція</translation> <translation id="6786750046913594791">Закрити папку</translation> <translation id="6808150112686056157">Зупинити</translation>
diff --git a/ui/strings/translations/ui_strings_vi.xtb b/ui/strings/translations/ui_strings_vi.xtb index 2ba452b..4e51c71 100644 --- a/ui/strings/translations/ui_strings_vi.xtb +++ b/ui/strings/translations/ui_strings_vi.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 giây trước}other{# giây trước}}</translation> <translation id="6528179044667508675">Không làm phiền</translation> <translation id="6620110761915583480">Lưu Tệp</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">Bản nhạc tiếp theo của trình phát phương tiện</translation> <translation id="6786750046913594791">Đóng thư mục</translation> <translation id="6808150112686056157">Dừng trình phát phương tiện</translation>
diff --git a/ui/strings/translations/ui_strings_zh-CN.xtb b/ui/strings/translations/ui_strings_zh-CN.xtb index d8088b53..d622c4a 100644 --- a/ui/strings/translations/ui_strings_zh-CN.xtb +++ b/ui/strings/translations/ui_strings_zh-CN.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 秒前}other{# 秒前}}</translation> <translation id="6528179044667508675">请勿打扰</translation> <translation id="6620110761915583480">保存文件</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">媒体下一曲</translation> <translation id="6786750046913594791">关闭文件夹</translation> <translation id="6808150112686056157">媒体停止</translation>
diff --git a/ui/strings/translations/ui_strings_zh-TW.xtb b/ui/strings/translations/ui_strings_zh-TW.xtb index 62ae4092..36473fc 100644 --- a/ui/strings/translations/ui_strings_zh-TW.xtb +++ b/ui/strings/translations/ui_strings_zh-TW.xtb
@@ -78,7 +78,6 @@ <translation id="6404817160109697034">{SECONDS,plural, =1{1 秒前}other{# 秒前}}</translation> <translation id="6528179044667508675">請勿打擾</translation> <translation id="6620110761915583480">儲存檔案</translation> -<translation id="6659594942844771486">Tab</translation> <translation id="6699343763173986273">下一首媒體曲目</translation> <translation id="6786750046913594791">關閉資料夾</translation> <translation id="6808150112686056157">停止媒體播放</translation>
diff --git a/ui/views/controls/button/label_button.h b/ui/views/controls/button/label_button.h index 7a6f3ea..8f23162 100644 --- a/ui/views/controls/button/label_button.h +++ b/ui/views/controls/button/label_button.h
@@ -46,7 +46,7 @@ // Gets or sets the text shown on the button. const base::string16& GetText() const; - void SetText(const base::string16& text); + virtual void SetText(const base::string16& text); // Sets the text color shown for the specified button |for_state| to |color|. void SetTextColor(ButtonState for_state, SkColor color);
diff --git a/ui/views/controls/button/md_text_button.cc b/ui/views/controls/button/md_text_button.cc index 77eb8e4..38748f78 100644 --- a/ui/views/controls/button/md_text_button.cc +++ b/ui/views/controls/button/md_text_button.cc
@@ -9,6 +9,7 @@ #include "ui/gfx/canvas.h" #include "ui/gfx/color_utils.h" #include "ui/native_theme/native_theme.h" +#include "ui/views/animation/flood_fill_ink_drop_ripple.h" #include "ui/views/animation/ink_drop_highlight.h" #include "ui/views/animation/ink_drop_painted_layer_delegates.h" #include "ui/views/background.h" @@ -172,6 +173,14 @@ return color_utils::DeriveDefaultIconColor(label()->enabled_color()); } +std::unique_ptr<views::InkDropRipple> MdTextButton::CreateInkDropRipple() + const { + return std::unique_ptr<views::InkDropRipple>( + new views::FloodFillInkDropRipple( + GetLocalBounds(), GetInkDropCenterBasedOnLastEvent(), + GetInkDropBaseColor(), ink_drop_visible_opacity())); +} + std::unique_ptr<views::InkDropHighlight> MdTextButton::CreateInkDropHighlight() const { if (!ShouldShowInkDropHighlight()) @@ -206,6 +215,11 @@ UpdateColors(); } +void MdTextButton::SetText(const base::string16& text) { + LabelButton::SetText(text); + UpdatePaddingForFont(); +} + void MdTextButton::AdjustFontSize(int size_delta) { LabelButton::AdjustFontSize(size_delta); UpdatePaddingForFont(); @@ -235,12 +249,17 @@ focus_ring_->SetVisible(false); set_request_focus_on_press(false); LabelButton::SetFontList(GetMdFontList()); - UpdatePaddingForFont(); } MdTextButton::~MdTextButton() {} void MdTextButton::UpdatePaddingForFont() { + // Don't use font-based padding when there's no text visible. + if (GetText().empty()) { + SetBorder(Border::NullBorder()); + return; + } + // Top and bottom padding depend on the font. Example: if font cap height is // 9dp, use 8dp bottom padding and 7dp top padding to total 24dp. const gfx::FontList& font = label()->font_list();
diff --git a/ui/views/controls/button/md_text_button.h b/ui/views/controls/button/md_text_button.h index 5adc6ee..5ada157 100644 --- a/ui/views/controls/button/md_text_button.h +++ b/ui/views/controls/button/md_text_button.h
@@ -46,11 +46,13 @@ void OnFocus() override; void OnBlur() override; void OnNativeThemeChanged(const ui::NativeTheme* theme) override; + std::unique_ptr<views::InkDropRipple> CreateInkDropRipple() const override; std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight() const override; SkColor GetInkDropBaseColor() const override; bool ShouldShowInkDropForFocus() const override; void SetEnabledTextColors(SkColor color) override; + void SetText(const base::string16& text) override; void AdjustFontSize(int size_delta) override; void UpdateStyleToIndicateDefaultStatus() override;
diff --git a/ui/views/mus/native_widget_mus.cc b/ui/views/mus/native_widget_mus.cc index 6293da37..e786f15f 100644 --- a/ui/views/mus/native_widget_mus.cc +++ b/ui/views/mus/native_widget_mus.cc
@@ -372,6 +372,17 @@ quit_closure.Run(); } +ui::mojom::ShowState GetShowState(const ui::Window* window) { + if (!window || + !window->HasSharedProperty( + ui::mojom::WindowManager::kShowState_Property)) { + return ui::mojom::ShowState::DEFAULT; + } + + return static_cast<ui::mojom::ShowState>(window->GetSharedProperty<int32_t>( + ui::mojom::WindowManager::kShowState_Property)); +} + } // namespace class NativeWidgetMus::MusWindowObserver : public ui::WindowObserver { @@ -386,8 +397,6 @@ mus_window()->RemoveObserver(this); } - ui::mojom::ShowState show_state() { return show_state_; } - // ui::WindowObserver: void OnWindowVisibilityChanging(ui::Window* window) override { native_widget_mus_->OnMusWindowVisibilityChanging(window); @@ -407,9 +416,7 @@ const std::vector<uint8_t>* new_data) override { if (name != ui::mojom::WindowManager::kShowState_Property) return; - ui::mojom::ShowState show_state = - static_cast<ui::mojom::ShowState>(window->GetSharedProperty<int32_t>( - ui::mojom::WindowManager::kShowState_Property)); + const ui::mojom::ShowState show_state = GetShowState(window); if (show_state == show_state_) return; show_state_ = show_state; @@ -509,7 +516,8 @@ : window_(window), last_cursor_(ui::mojom::Cursor::CURSOR_NULL), native_widget_delegate_(delegate), - surface_type_(surface_type), + is_parallel_widget_in_window_manager_(surface_type == + ui::mojom::SurfaceType::UNDERLAY), show_state_before_fullscreen_(ui::mojom::ShowState::DEFAULT), ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), content_(new aura::Window(this)), @@ -527,7 +535,7 @@ ui::ContextFactory* default_context_factory = aura::Env::GetInstance()->context_factory(); if (!default_context_factory) { - context_factory_.reset(new SurfaceContextFactory(window_, surface_type_)); + context_factory_.reset(new SurfaceContextFactory(window_, surface_type)); aura::Env::GetInstance()->set_context_factory(context_factory_.get()); } @@ -610,6 +618,9 @@ } void NativeWidgetMus::UpdateClientArea() { + if (is_parallel_widget_in_window_manager()) + return; + NonClientView* non_client_view = native_widget_delegate_->AsWidget()->non_client_view(); if (!non_client_view || !non_client_view->client_view()) @@ -648,7 +659,7 @@ (*properties)[ui::mojom::WindowManager::kWindowType_Property] = mojo::ConvertTo<std::vector<uint8_t>>(static_cast<int32_t>( mojo::ConvertTo<ui::mojom::WindowType>(init_params.type))); - if (!init_params.delegate && + if (init_params.delegate && properties->count(ui::mojom::WindowManager::kResizeBehavior_Property) == 0) { (*properties)[ui::mojom::WindowManager::kResizeBehavior_Property] = @@ -694,7 +705,7 @@ // TODO(erg): Remove this check when ash/mus/frame/move_event_handler.cc's // direct usage of ui::Window::SetPredefinedCursor() is switched to a // private method on WindowManagerClient. - if (surface_type_ == ui::mojom::SurfaceType::DEFAULT) { + if (!is_parallel_widget_in_window_manager()) { cursor_manager_.reset(new wm::CursorManager( base::WrapUnique(new NativeCursorManagerMus(window_)))); aura::client::SetCursorClient(hosted_window, cursor_manager_.get()); @@ -834,6 +845,8 @@ } void NativeWidgetMus::CenterWindow(const gfx::Size& size) { + if (is_parallel_widget_in_window_manager()) + return; // TODO(beng): clear user-placed property and set preferred size property. window_->SetSharedProperty<gfx::Size>( ui::mojom::WindowManager::kPreferredSize_Property, size); @@ -852,7 +865,7 @@ } bool NativeWidgetMus::SetWindowTitle(const base::string16& title) { - if (!window_) + if (!window_ || is_parallel_widget_in_window_manager()) return false; const char* kWindowTitle_Property = ui::mojom::WindowManager::kWindowTitle_Property; @@ -868,6 +881,9 @@ void NativeWidgetMus::SetWindowIcons(const gfx::ImageSkia& window_icon, const gfx::ImageSkia& app_icon) { + if (is_parallel_widget_in_window_manager()) + return; + const char* const kWindowAppIcon_Property = ui::mojom::WindowManager::kWindowAppIcon_Property; @@ -1057,13 +1073,11 @@ } bool NativeWidgetMus::IsMaximized() const { - return mus_window_observer_ && - mus_window_observer_->show_state() == ui::mojom::ShowState::MAXIMIZED; + return GetShowState(window_) == ui::mojom::ShowState::MAXIMIZED; } bool NativeWidgetMus::IsMinimized() const { - return mus_window_observer_ && - mus_window_observer_->show_state() == ui::mojom::ShowState::MINIMIZED; + return GetShowState(window_) == ui::mojom::ShowState::MINIMIZED; } void NativeWidgetMus::Restore() { @@ -1074,7 +1088,7 @@ if (IsFullscreen() == fullscreen) return; if (fullscreen) { - show_state_before_fullscreen_ = mus_window_observer_->show_state(); + show_state_before_fullscreen_ = GetShowState(window_); // TODO(markdittmer): Fullscreen not implemented in ui::Window. } else { switch (show_state_before_fullscreen_) { @@ -1097,8 +1111,7 @@ } bool NativeWidgetMus::IsFullscreen() const { - return mus_window_observer_ && - mus_window_observer_->show_state() == ui::mojom::ShowState::FULLSCREEN; + return GetShowState(window_) == ui::mojom::ShowState::FULLSCREEN; } void NativeWidgetMus::SetOpacity(float opacity) { @@ -1221,7 +1234,7 @@ } void NativeWidgetMus::OnSizeConstraintsChanged() { - if (!window_) + if (!window_ || is_parallel_widget_in_window_manager()) return; window_->SetSharedProperty<int32_t>( @@ -1411,7 +1424,7 @@ void NativeWidgetMus::UpdateHitTestMask() { // The window manager (or other underlay window provider) is not allowed to // set a hit test mask, as that could interfere with a client app mask. - if (surface_type_ == ui::mojom::SurfaceType::UNDERLAY) + if (is_parallel_widget_in_window_manager()) return; if (!native_widget_delegate_->HasHitTestMask()) {
diff --git a/ui/views/mus/native_widget_mus.h b/ui/views/mus/native_widget_mus.h index 2e50183..2bd29b5 100644 --- a/ui/views/mus/native_widget_mus.h +++ b/ui/views/mus/native_widget_mus.h
@@ -232,6 +232,12 @@ return window_tree_host(); } + // Returns true if this NativeWidgetMus exists on the window manager side + // to provide the frame decorations. + bool is_parallel_widget_in_window_manager() { + return is_parallel_widget_in_window_manager_; + } + void set_last_cursor(ui::mojom::Cursor cursor) { last_cursor_ = cursor; } void SetShowState(ui::mojom::ShowState show_state); @@ -248,7 +254,7 @@ internal::NativeWidgetDelegate* native_widget_delegate_; - const ui::mojom::SurfaceType surface_type_; + const bool is_parallel_widget_in_window_manager_; ui::mojom::ShowState show_state_before_fullscreen_; // See class documentation for Widget in widget.h for a note about ownership.
diff --git a/ui/views/mus/native_widget_mus_unittest.cc b/ui/views/mus/native_widget_mus_unittest.cc index cd70357d..856eaf4 100644 --- a/ui/views/mus/native_widget_mus_unittest.cc +++ b/ui/views/mus/native_widget_mus_unittest.cc
@@ -9,6 +9,7 @@ #include "services/ui/public/cpp/property_type_converters.h" #include "services/ui/public/cpp/tests/window_tree_client_private.h" #include "services/ui/public/cpp/window.h" +#include "services/ui/public/cpp/window_observer.h" #include "services/ui/public/cpp/window_property.h" #include "services/ui/public/cpp/window_tree_client.h" #include "services/ui/public/interfaces/window_manager.mojom.h" @@ -24,6 +25,7 @@ #include "ui/gfx/path.h" #include "ui/gfx/skia_util.h" #include "ui/views/controls/native/native_view_host.h" +#include "ui/views/mus/window_manager_connection.h" #include "ui/views/test/focus_manager_test.h" #include "ui/views/test/views_test_base.h" #include "ui/views/widget/widget.h" @@ -547,4 +549,64 @@ widget->Show(); } +namespace { + +// See description of test for details. +class IsMaximizedObserver : public ui::WindowObserver { + public: + IsMaximizedObserver() {} + ~IsMaximizedObserver() override {} + + void set_widget(Widget* widget) { widget_ = widget; } + + bool got_change() const { return got_change_; } + + // ui::WindowObserver: + void OnWindowSharedPropertyChanged( + ui::Window* window, + const std::string& name, + const std::vector<uint8_t>* old_data, + const std::vector<uint8_t>* new_data) override { + // Expect only one change for the show state. + ASSERT_FALSE(got_change_); + got_change_ = true; + EXPECT_EQ(ui::mojom::WindowManager::kShowState_Property, name); + EXPECT_TRUE(widget_->IsMaximized()); + } + + private: + bool got_change_ = false; + Widget* widget_ = nullptr; + + DISALLOW_COPY_AND_ASSIGN(IsMaximizedObserver); +}; + +} // namespace + +// Verifies that asking for Widget::IsMaximized() from within +// OnWindowSharedPropertyChanged() returns the right thing. +TEST_F(NativeWidgetMusTest, IsMaximized) { + ASSERT_TRUE(WindowManagerConnection::Exists()); + ui::Window* window = WindowManagerConnection::Get()->NewWindow( + std::map<std::string, std::vector<uint8_t>>()); + IsMaximizedObserver observer; + // NOTE: the order here is important, we purposefully add the + // ui::WindowObserver before creating NativeWidgetMus, which also adds its + // own observer. + window->AddObserver(&observer); + + std::unique_ptr<Widget> widget(new Widget()); + observer.set_widget(widget.get()); + Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_WINDOW); + params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; + params.bounds = initial_bounds(); + params.native_widget = new NativeWidgetMus(widget.get(), window, + ui::mojom::SurfaceType::DEFAULT); + widget->Init(params); + window->SetSharedProperty<int32_t>( + ui::mojom::WindowManager::kShowState_Property, + static_cast<uint32_t>(ui::mojom::ShowState::MAXIMIZED)); + EXPECT_TRUE(widget->IsMaximized()); +} + } // namespace views
diff --git a/ui/webui/resources/css/widgets.css b/ui/webui/resources/css/widgets.css index 5a5dbc2..0cd35701 100644 --- a/ui/webui/resources/css/widgets.css +++ b/ui/webui/resources/css/widgets.css
@@ -115,12 +115,6 @@ min-width: 160px; } -/* Remove when https://bugs.webkit.org/show_bug.cgi?id=51499 is fixed. - * TODO(dbeam): are there more types that would benefit from this? */ -input[type='search']::-webkit-textfield-decoration-container { - direction: inherit; -} - /* Checked ********************************************************************/ input[type='checkbox']:checked::before {
diff --git a/ui/webui/resources/js/cr/ui/tree.js b/ui/webui/resources/js/cr/ui/tree.js index aa9199e..888fca6 100644 --- a/ui/webui/resources/js/cr/ui/tree.js +++ b/ui/webui/resources/js/cr/ui/tree.js
@@ -252,11 +252,11 @@ var treeItemProto = (function() { var treeItem = cr.doc.createElement('div'); treeItem.className = 'tree-item'; - treeItem.innerHTML = '<div class=tree-row>' + - '<span class=expand-icon></span>' + - '<span class=tree-label></span>' + + treeItem.innerHTML = '<div class="tree-row">' + + '<span class="expand-icon"></span>' + + '<span class="tree-label"></span>' + '</div>' + - '<div class=tree-children></div>'; + '<div class="tree-children" role="group"></div>'; treeItem.setAttribute('role', 'treeitem'); return treeItem; })(); @@ -280,7 +280,10 @@ * Initializes the element. */ decorate: function() { - + var labelId = 'tree-item-label-autogen-id-' + + treeItemAutoGeneratedIdCounter; + this.labelElement.id = labelId; + this.setAttribute('aria-labelledby', labelId); }, /** @@ -393,6 +396,7 @@ if (b) { if (this.mayHaveChildren_) { this.setAttribute('expanded', ''); + this.setAttribute('aria-expanded', 'true'); treeChildren.setAttribute('expanded', ''); cr.dispatchSimpleEvent(this, 'expand', true); this.scrollIntoViewIfNeeded(false); @@ -405,6 +409,10 @@ this.selected = true; } this.removeAttribute('expanded'); + if (this.mayHaveChildren_) + this.setAttribute('aria-expanded', 'false'); + else + this.removeAttribute('aria-expanded'); treeChildren.removeAttribute('expanded'); cr.dispatchSimpleEvent(this, 'collapse', true); } @@ -520,8 +528,10 @@ var rowItem = this.firstElementChild; this.setAttribute('has-children', b); rowItem.setAttribute('has-children', b); - if (b) + if (b) { this.mayHaveChildren_ = true; + this.setAttribute('aria-expanded', 'false'); + } }, /**
diff --git a/ui/wm/core/compound_event_filter.cc b/ui/wm/core/compound_event_filter.cc index 74ecae27..8942dfd 100644 --- a/ui/wm/core/compound_event_filter.cc +++ b/ui/wm/core/compound_event_filter.cc
@@ -245,17 +245,6 @@ while (!event->stopped_propagation() && (handler = it.GetNext()) != NULL) handler->OnGestureEvent(event); } - -#if defined(OS_WIN) - // A Win8 edge swipe event is a special event that does not have location - // information associated with it, and is not preceeded by an ET_TOUCH_PRESSED - // event. So we treat it specially here. - if (!event->handled() && event->type() == ui::ET_GESTURE_WIN8_EDGE_SWIPE && - !aura::Env::GetInstance()->IsMouseButtonDown()) { - SetMouseEventsEnableStateOnEvent( - static_cast<aura::Window*>(event->target()), event, false); - } -#endif } } // namespace wm