diff --git a/DEPS b/DEPS index 112adc3..3900e77 100644 --- a/DEPS +++ b/DEPS
@@ -209,11 +209,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': '5c95bcb48b9b8500df6e4dc1cb9941a705523ec9', + 'skia_revision': 'ff8b52df55fffbfeacaa8da65fe3d397dfee427b', # 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': '930f687d03d0d6d980fa0b9d2ed04c930c2325db', + 'v8_revision': '06e937ad65a56ea7f942ce1ba5e57cfe09c51ae2', # 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. @@ -229,7 +229,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': 'b8408a570c17dc5813c94cb66ac2edc6dd126003', + 'pdfium_revision': '115cfacb0167c5d6283c1dc8e3493ca8ca8d3224', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. @@ -256,11 +256,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling NaCl # and whatever else without interference from each other. - 'nacl_revision': 'aa390d9488d525be6b1edcd19ec30879cf9bc434', + 'nacl_revision': '7c714ed900b83db7db82077bf478233cd42a9a1c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. - 'freetype_revision': '4e1c6a12e5f285d57e66818177013cce7efbd7b0', + 'freetype_revision': 'ec95f9c9212e9bf9371471f845903bb0e895807d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. @@ -280,7 +280,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': '00b6ebab8b4ec3aa2376e3f2dd51a4547d31c492', + 'catapult_revision': 'a934af88835906e8c2843972dfac6295bd5dafc8', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -288,7 +288,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': 'a89c0fe01c2a9d0cb27317bbd929fc3c68586d1f', + 'devtools_frontend_revision': '9a145b3598b7f2139b8149efe2c82889a279f853', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -730,7 +730,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'shhcvIQmkadS49s7gxWnbJhKbME6mSxhR188J7CYIyYC', + 'version': 'cREYq53_0-Yloc4ReYx6Fpr7DwTCVlhtEMnqI56CKpAC', }, ], 'condition': 'checkout_android', @@ -1241,7 +1241,7 @@ Var('chromium_git') + '/webm/libwebm.git' + '@' + '51ca718c3adf0ddedacd7df25fe45f67dc5a9ce1', 'src/third_party/libyuv': - Var('chromium_git') + '/libyuv/libyuv.git' + '@' + '64994843e652443df2d5201c6ae3fb725097360f', + Var('chromium_git') + '/libyuv/libyuv.git' + '@' + '49ebc996aa8c4bdf89c1b5ea461eb677234c61cc', 'src/third_party/lighttpd': { 'url': Var('chromium_git') + '/chromium/deps/lighttpd.git' + '@' + Var('lighttpd_revision'), @@ -1552,7 +1552,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '3692cbbd3224f9d7e2ae138ef26bd584855249a1', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '694ecad8346ee8f11109332c6d928535aeb9bace', + Var('webrtc_git') + '/src.git' + '@' + '410d70d965d68ead2daa83ee7f0b694cebd0dad2', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1613,7 +1613,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@f3b3a61d8e581b0da22a4058d293f3ccf0e10fab', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@fc79d057f820f8cdbdb4cb458b2c87bfd1b60195', 'condition': 'checkout_src_internal', }, @@ -1632,7 +1632,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'zKrK4bjL-ONZJnFFRgym4tIWXrNBZUndawC4-L5CNfkC', + 'version': 'EWaZJ_V9Mwpy_Z6Id5K38yan2Jrs6hiN7ioLAHd0WoUC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -1643,7 +1643,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/media_app/app', - 'version': '4Gbb_5Tl9RrfxhSad3jFniGrak1GWfL9WDKJ7OCT6RkC', + 'version': 'xq4pEEOIawHakyveSSX6nidBuCtMLJdLlNXPvAKJ2k0C', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/public/cpp/holding_space/holding_space_item_unittest.cc b/ash/public/cpp/holding_space/holding_space_item_unittest.cc index d88b89ed..e2fd4a9 100644 --- a/ash/public/cpp/holding_space/holding_space_item_unittest.cc +++ b/ash/public/cpp/holding_space/holding_space_item_unittest.cc
@@ -10,6 +10,7 @@ #include "ash/public/cpp/holding_space/holding_space_image.h" #include "base/callback_helpers.h" #include "base/test/bind.h" +#include "base/values.h" #include "testing/gtest/include/gtest/gtest.h" namespace ash {
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_az.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_az.xtb index 0f5a33a..3e51e60 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_az.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_az.xtb
@@ -14,6 +14,7 @@ <translation id="1477442857810932985">Sətrin sonuna gedin</translation> <translation id="1499072997694708844">Hər hansı axtarış pəncərəsini bağlayın və ya cari səhifənin yüklənməsini dayandırın</translation> <translation id="1510238584712386396">Başladıcı</translation> +<translation id="1516966594427080024">Anonim rejimində yeni pəncərə açın</translation> <translation id="152892567002884378">Səsi artırın</translation> <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, sonra <ph name="ESC" /></translation> <translation id="1652741121070700329">Öncəki sözün əvvəlinə qayıdın</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_bg.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_bg.xtb index e0f5e493..d6b4a8b 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_bg.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_bg.xtb
@@ -14,6 +14,7 @@ <translation id="1477442857810932985">Преминаване в края на реда</translation> <translation id="1499072997694708844">Затваряне на всеки отворен прозорец за търсене или спиране на зареждането на текущата ви страница</translation> <translation id="1510238584712386396">Стартов панел</translation> +<translation id="1516966594427080024">Отваряне на нов прозорец в режим „инкогнито“</translation> <translation id="152892567002884378">Увеличаване на силата на звука</translation> <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> и след това <ph name="ESC" /></translation> <translation id="1652741121070700329">Преместване в началото на предишната дума</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_fil.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_fil.xtb index f113027..e0a7a156 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_fil.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_fil.xtb
@@ -14,6 +14,7 @@ <translation id="1477442857810932985">Pumunta sa dulo ng linya</translation> <translation id="1499072997694708844">Isara ang anumang nakabukas na window sa paghahanap o ihinto ang pag-load ng iyong kasalukuyang page</translation> <translation id="1510238584712386396">Launcher</translation> +<translation id="1516966594427080024">Magbukas ng bagong window sa Incognito mode</translation> <translation id="152892567002884378">Lakasan ang volume</translation> <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, pagkatapos ay <ph name="ESC" /></translation> <translation id="1652741121070700329">Lumipat sa simula ng nakaraang salita</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_iw.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_iw.xtb index 43917c7..b0d682c 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_iw.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_iw.xtb
@@ -14,6 +14,7 @@ <translation id="1477442857810932985">מעבר לסוף השורה</translation> <translation id="1499072997694708844">סגירה של כל חלונות החיפוש הפתוחים או הפסקת הטעינה של הדף הנוכחי</translation> <translation id="1510238584712386396">מרכז האפליקציות</translation> +<translation id="1516966594427080024">פתיחת חלון חדש במצב אנונימי</translation> <translation id="152892567002884378">הגברת עוצמת הקול</translation> <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" /> ואז <ph name="ESC" /></translation> <translation id="1652741121070700329">מעבר לתחילת המילה הקודמת</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_ka.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_ka.xtb index 5e6f789..d0d10c7 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_ka.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_ka.xtb
@@ -14,6 +14,7 @@ <translation id="1477442857810932985">ხაზის ბოლოში გადასვლა</translation> <translation id="1499072997694708844">დახურეთ ძიების ფანჯრები ან შეწყვიტეთ ამჟამინდელი გვერდის ჩატვირთვა</translation> <translation id="1510238584712386396">გამშვები</translation> +<translation id="1516966594427080024">ახალი ფანჯრის გახსნა ინკოგნიტო რეჟიმში</translation> <translation id="152892567002884378">ხმის აწევა</translation> <translation id="1560480564179555003"><ph name="SHIFT" /><ph name="SEPARATOR1" /><ph name="ALT" /><ph name="SEPARATOR2" /><ph name="L" />, შემდეგ კი — <ph name="ESC" /></translation> <translation id="1652741121070700329">წინა სიტყვის დასაწყისზე გადასვლა</translation>
diff --git a/ash/shortcut_viewer/strings/shortcut_viewer_strings_sl.xtb b/ash/shortcut_viewer/strings/shortcut_viewer_strings_sl.xtb index 8e4876d..3687653911 100644 --- a/ash/shortcut_viewer/strings/shortcut_viewer_strings_sl.xtb +++ b/ash/shortcut_viewer/strings/shortcut_viewer_strings_sl.xtb
@@ -14,6 +14,7 @@ <translation id="1477442857810932985">Pomik na konec vrstice</translation> <translation id="1499072997694708844">Zapiranje odprtih oken za iskanje ali ustavitev nalaganja trenutne strani</translation> <translation id="1510238584712386396">Zaganjalnik</translation> +<translation id="1516966594427080024">Odpiranje novega okna v anonimnem načinu.</translation> <translation id="152892567002884378">Povečanje glasnosti</translation> <translation id="1560480564179555003"><ph name="SHIFT" /> <ph name="SEPARATOR1" /> <ph name="ALT" /> <ph name="SEPARATOR2" /> <ph name="L" />, nato <ph name="ESC" /></translation> <translation id="1652741121070700329">Premik na začetek prejšnje besede</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb index 5c2e395..06fae53e 100644 --- a/ash/strings/ash_strings_az.xtb +++ b/ash/strings/ash_strings_az.xtb
@@ -144,6 +144,7 @@ <translation id="2132302418721800944">Tam ekranı çəkin</translation> <translation id="2135456203358955318">Daxili miqyas</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />: Yenidən cəhd edin</translation> +<translation id="2167870087604746126">+ V</translation> <translation id="2170530631236737939">İcmaldan çıxmaq üçün üç barmaq ilə aşağı çəkin</translation> <translation id="2208323208084708176">Vahid masa üstü rejimi</translation> <translation id="2220572644011485463">PIN və ya parol</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index 6b5dad86..fa71a88 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -144,6 +144,7 @@ <translation id="2132302418721800944">Записване на целия екран</translation> <translation id="2135456203358955318">Лупа в прикрепен режим</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />: Нов опит</translation> +<translation id="2167870087604746126">+ V</translation> <translation id="2170530631236737939">Прекарайте три пръста надолу, за да затворите общия преглед</translation> <translation id="2208323208084708176">Режим на обединен работен плот</translation> <translation id="2220572644011485463">ПИН код или парола</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb index f7712079..e1edc14 100644 --- a/ash/strings/ash_strings_fil.xtb +++ b/ash/strings/ash_strings_fil.xtb
@@ -144,6 +144,7 @@ <translation id="2132302418721800944">I-record ang full screen</translation> <translation id="2135456203358955318">Naka-dock na magnifier</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />: Subukan ulit</translation> +<translation id="2167870087604746126">+ V</translation> <translation id="2170530631236737939">Mag-swipe pababa gamit ang tatlong daliri para lumabas sa Overview</translation> <translation id="2208323208084708176">Unified desktop mode</translation> <translation id="2220572644011485463">PIN o password</translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb index 2b80848..7988a0e5 100644 --- a/ash/strings/ash_strings_iw.xtb +++ b/ash/strings/ash_strings_iw.xtb
@@ -144,6 +144,7 @@ <translation id="2132302418721800944">הקלטה של מסך מלא</translation> <translation id="2135456203358955318">מגדיל במצב מעוגן</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />: ניסיון נוסף</translation> +<translation id="2167870087604746126">V +</translation> <translation id="2170530631236737939">כדי לצאת מ'מסכים אחרונים', יש להחליק למטה בעזרת שלוש אצבעות</translation> <translation id="2208323208084708176">מצב שולחן עבודה מאוחד</translation> <translation id="2220572644011485463">קוד אימות או סיסמה</translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb index 6f64ed90..d9e6d1c 100644 --- a/ash/strings/ash_strings_ka.xtb +++ b/ash/strings/ash_strings_ka.xtb
@@ -144,6 +144,7 @@ <translation id="2132302418721800944">ეკრანის სრულად ჩაწერა</translation> <translation id="2135456203358955318">ჩამაგრებული ლუპა</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />: ხელახლა ცდა</translation> +<translation id="2167870087604746126">+ V</translation> <translation id="2170530631236737939">მიმოხილვიდან გასასვლელად გადაფურცლეთ ქვემოთ სამი თითით</translation> <translation id="2208323208084708176">ერთიანი დესკტოპის რეჟიმი</translation> <translation id="2220572644011485463">PIN-კოდი ან პაროლი</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index db0d14c6..f2e3a91 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -424,7 +424,7 @@ <translation id="4481530544597605423">ਅਣ-ਜੋੜਾਬੱਧ ਕੀਤੀਆਂ ਡੀਵਾਈਸਾਂ</translation> <translation id="4485060137115666462">ਸੱਜੇ-ਕਲਿੱਕ ਜਾਂ ਦਬਾਈ ਰੱਖਣ ਨਾਲ, Assistant ਤੁਹਾਡੀ ਚੋਣ ਲਈ ਪਰਿਭਾਸ਼ਾ, ਅਨੁਵਾਦ ਜਾਂ ਇਕਾਈ ਰੂਪਾਂਤਰਨ ਵਰਗੀ ਜਾਣਕਾਰੀ ਦਿਖਾਉਂਦੀ ਹੈ।</translation> <translation id="4505050298327493054">ਕਿਰਿਆਸ਼ੀਲ ਡੈਸਕ।</translation> -<translation id="4513946894732546136">ਫ਼ੀਡਬੈਕ</translation> +<translation id="4513946894732546136">ਵਿਚਾਰ</translation> <translation id="4527045527269911712">ਬਲੂਟੁੱਥ ਡੀਵਾਈਸ "<ph name="DEVICE_NAME" />" ਜੋੜਾਬੱਧ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਚਾਹੁੰਦੀ ਹੈ।</translation> <translation id="453661520163887813">ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਹੋਣ ਵਿੱਚ <ph name="TIME" /> ਬਾਕੀ</translation> <translation id="4538824937723742295">ਪੂਰੀ ਸਕ੍ਰੀਨ ਦਾ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਓ</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index 734ccef..5c7bfa6 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -144,6 +144,7 @@ <translation id="2132302418721800944">Snemanje celotnega zaslona</translation> <translation id="2135456203358955318">Zasidrana lupa</translation> <translation id="2158971754079422508"><ph name="DESC_TEXT" />: Poskusi znova</translation> +<translation id="2167870087604746126">+ V</translation> <translation id="2170530631236737939">Če želite zapreti način pregleda, povlecite s tremi prsti navzdol.</translation> <translation id="2208323208084708176">Način enotnega namizja</translation> <translation id="2220572644011485463">Koda PIN ali geslo</translation>
diff --git a/base/process/process_metrics.cc b/base/process/process_metrics.cc index 21a8428..d6be93f 100644 --- a/base/process/process_metrics.cc +++ b/base/process/process_metrics.cc
@@ -4,6 +4,13 @@ #include "base/process/process_metrics.h" +#if defined(OS_LINUX) +// process_metrics.h is a widely included header and its size impacts build +// time. Try not to raise this limit unless necessary. See +// https://chromium.googlesource.com/chromium/src/+/HEAD/docs/wmax_tokens.md +#pragma clang max_tokens_here 400000 +#endif // defined(OS_LINUX) + #include <utility> #include "base/check.h"
diff --git a/base/process/process_metrics.h b/base/process/process_metrics.h index d8c7630..b1d6645 100644 --- a/base/process/process_metrics.h +++ b/base/process/process_metrics.h
@@ -24,7 +24,6 @@ #include "base/process/process_handle.h" #include "base/threading/platform_thread.h" #include "base/time/time.h" -#include "base/values.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" @@ -44,6 +43,9 @@ namespace base { +class DictionaryValue; +class Value; + // Full declaration is in process_metrics_iocounters.h. struct IoCounters;
diff --git a/base/process/process_metrics_linux.cc b/base/process/process_metrics_linux.cc index 07b0ceb..fec5ac5 100644 --- a/base/process/process_metrics_linux.cc +++ b/base/process/process_metrics_linux.cc
@@ -32,6 +32,7 @@ #include "base/strings/string_util.h" #include "base/system/sys_info.h" #include "base/threading/thread_restrictions.h" +#include "base/values.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h"
diff --git a/base/process/process_metrics_win.cc b/base/process/process_metrics_win.cc index 5cf0943..4a0ea57 100644 --- a/base/process/process_metrics_win.cc +++ b/base/process/process_metrics_win.cc
@@ -18,6 +18,7 @@ #include "base/process/process_metrics_iocounters.h" #include "base/system/sys_info.h" #include "base/threading/scoped_blocking_call.h" +#include "base/values.h" namespace base { namespace {
diff --git a/base/threading/thread_restrictions.h b/base/threading/thread_restrictions.h index 8fcc0c8..8fdd58d 100644 --- a/base/threading/thread_restrictions.h +++ b/base/threading/thread_restrictions.h
@@ -286,10 +286,6 @@ } } -namespace resource_coordinator { -class TabManagerDelegate; -} - namespace service_manager { class ServiceProcessLauncher; } @@ -420,7 +416,6 @@ #endif friend class printing::PrintJobWorker; friend class remoting::ScopedBypassIOThreadRestrictions; // crbug.com/1144161 - friend class resource_coordinator::TabManagerDelegate; // crbug.com/778703 friend class web::WebSubThread; friend class weblayer::BrowserContextImpl; friend class weblayer::ContentBrowserClientImpl;
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1 index befe862c..8c7f79d3 100644 --- a/build/fuchsia/linux.sdk.sha1 +++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@ -4.20210502.1.1 +4.20210503.0.1
diff --git a/build/fuchsia/mac.sdk.sha1 b/build/fuchsia/mac.sdk.sha1 index befe862c..8c7f79d3 100644 --- a/build/fuchsia/mac.sdk.sha1 +++ b/build/fuchsia/mac.sdk.sha1
@@ -1 +1 @@ -4.20210502.1.1 +4.20210503.0.1
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn index d4d23ac..1219a51 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn
@@ -1791,9 +1791,7 @@ buildtype = "dev" arch = "64bit" files_file = "//chrome/tools/build/chromeos/FILES.cfg" - - # TODO(crbug.com/1196133): Change to an official location when it's ready. - package = "experimental/svenzheng_at_google.com/chromium/testing/linux-ash-chromium/x86_64/ash.zip" + package = "chromium/testing/linux-ash-chromium/x86_64/ash.zip" description = "Prebuilt test binary." install_mode = "copy" deps = [ ":chrome" ]
diff --git a/chrome/VERSION b/chrome/VERSION index e844a644..74b3fed 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=92 MINOR=0 -BUILD=4496 +BUILD=4497 PATCH=0
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BottomSheetOnboardingCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BottomSheetOnboardingCoordinator.java index ecd6a591..705e51f 100644 --- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BottomSheetOnboardingCoordinator.java +++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/onboarding/BottomSheetOnboardingCoordinator.java
@@ -139,6 +139,11 @@ @Override void showViewImpl() { + if (mContent == null) { + // This can happen if the startup has been cancelled in the time between |show()| and + // here. + return; + } mContent.setContent(mView, mView); BottomSheetUtils.showContentAndMaybeExpand( mController, mContent, /* shouldExpand = */ true, mAnimate);
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantTriggerScriptIntegrationTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantTriggerScriptIntegrationTest.java index 773ec430..408bbe4 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantTriggerScriptIntegrationTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantTriggerScriptIntegrationTest.java
@@ -22,6 +22,7 @@ import static org.hamcrest.Matchers.greaterThan; import static org.chromium.base.test.util.CriteriaHelper.DEFAULT_MAX_TIME_TO_POLL; +import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.createDefaultTriggerScriptUI; import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.tapElement; import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewAssertionTrue; import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewMatchesCondition; @@ -46,10 +47,7 @@ import org.chromium.base.test.util.FlakyTest; import org.chromium.chrome.autofill_assistant.R; import org.chromium.chrome.browser.autofill_assistant.proto.ActionProto; -import org.chromium.chrome.browser.autofill_assistant.proto.ChipIcon; import org.chromium.chrome.browser.autofill_assistant.proto.ChipProto; -import org.chromium.chrome.browser.autofill_assistant.proto.ChipType; -import org.chromium.chrome.browser.autofill_assistant.proto.DrawableProto; import org.chromium.chrome.browser.autofill_assistant.proto.Empty; import org.chromium.chrome.browser.autofill_assistant.proto.GetTriggerScriptsResponseProto; import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto; @@ -59,9 +57,6 @@ import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptConditionProto; import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptConditionsProto; import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptProto; -import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptProto.TriggerScriptAction; -import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptUIProto; -import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptUIProto.TriggerChip; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; @@ -150,63 +145,6 @@ mTestServer.stopAndDestroyServer(); } - /** - * Creates a default UI, similar to the intended experience. It comprises three chips: - * 'Preferences', 'Not now', 'Continue'. 'Preferences' opens the cancel popup containing 'Not - * for this session' and 'Never show again'. Optionally, a blue message bubble and a default - * progress bar are shown. - */ - private TriggerScriptUIProto.Builder createDefaultUI( - String statusMessage, String bubbleMessage, boolean withProgressBar) { - TriggerScriptUIProto.Builder builder = - TriggerScriptUIProto.newBuilder() - .setStatusMessage(statusMessage) - .setCalloutMessage(bubbleMessage) - .addLeftAlignedChips( - TriggerChip.newBuilder() - .setChip(ChipProto.newBuilder() - .setType(ChipType.NORMAL_ACTION) - .setIcon(ChipIcon.ICON_OVERFLOW)) - .setAction(TriggerScriptAction.SHOW_CANCEL_POPUP)) - .addRightAlignedChips( - TriggerChip.newBuilder() - .setChip(ChipProto.newBuilder() - .setType(ChipType.NORMAL_ACTION) - .setText("Not now")) - .setAction(TriggerScriptAction.NOT_NOW)) - .addRightAlignedChips( - TriggerChip.newBuilder() - .setChip(ChipProto.newBuilder() - .setType(ChipType.HIGHLIGHTED_ACTION) - .setText("Continue")) - .setAction(TriggerScriptAction.ACCEPT)) - .setCancelPopup( - TriggerScriptUIProto.Popup.newBuilder() - .addChoices( - TriggerScriptUIProto.Popup.Choice.newBuilder() - .setText("Not for this session") - .setAction( - TriggerScriptAction.CANCEL_SESSION)) - .addChoices(TriggerScriptUIProto.Popup.Choice.newBuilder() - .setText("Never show again") - .setAction(TriggerScriptAction - .CANCEL_FOREVER))); - if (withProgressBar) { - builder.setProgressBar( - TriggerScriptUIProto.ProgressBar.newBuilder() - .addStepIcons(DrawableProto.newBuilder().setIcon( - DrawableProto.Icon.PROGRESSBAR_DEFAULT_INITIAL_STEP)) - .addStepIcons(DrawableProto.newBuilder().setIcon( - DrawableProto.Icon.PROGRESSBAR_DEFAULT_DATA_COLLECTION)) - .addStepIcons(DrawableProto.newBuilder().setIcon( - DrawableProto.Icon.PROGRESSBAR_DEFAULT_PAYMENT)) - .addStepIcons(DrawableProto.newBuilder().setIcon( - DrawableProto.Icon.PROGRESSBAR_DEFAULT_FINAL_STEP)) - .setActiveStep(1)); - } - return builder; - } - @Test @MediumTest @Features.EnableFeatures(ChromeFeatureList.AUTOFILL_ASSISTANT_PROACTIVE_HELP) @@ -219,7 +157,7 @@ .setTriggerCondition( TriggerScriptConditionProto.newBuilder().setIsFirstTimeUser( Empty.newBuilder())) - .setUserInterface(createDefaultUI("First time user", + .setUserInterface(createDefaultTriggerScriptUI("First time user", /* bubbleMessage = */ "First time message", /* withProgressBar = */ true)); @@ -229,7 +167,7 @@ TriggerScriptConditionsProto.newBuilder().addConditions( TriggerScriptConditionProto.newBuilder().setIsFirstTimeUser( Empty.newBuilder())))) - .setUserInterface(createDefaultUI("Returning user", + .setUserInterface(createDefaultTriggerScriptUI("Returning user", /* bubbleMessage = */ "", /* withProgressBar = */ false)); GetTriggerScriptsResponseProto triggerScripts = @@ -258,7 +196,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Hello world", + .setUserInterface(createDefaultTriggerScriptUI("Hello world", /* bubbleMessage = */ "", /* withProgressBar = */ false)); GetTriggerScriptsResponseProto triggerScripts = @@ -295,7 +233,7 @@ TriggerScriptProto.newBuilder() .setTriggerCondition(TriggerScriptConditionProto.newBuilder().setSelector( touch_area_four)) - .setUserInterface(createDefaultUI("Area visible", + .setUserInterface(createDefaultTriggerScriptUI("Area visible", /* bubbleMessage = */ "", /* withProgressBar = */ true)); @@ -305,7 +243,7 @@ TriggerScriptConditionsProto.newBuilder().addConditions( TriggerScriptConditionProto.newBuilder().setSelector( touch_area_four)))) - .setUserInterface(createDefaultUI("Area invisible", + .setUserInterface(createDefaultTriggerScriptUI("Area invisible", /* bubbleMessage = */ "", /* withProgressBar = */ false)); GetTriggerScriptsResponseProto triggerScripts = @@ -337,7 +275,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Trigger script", + .setUserInterface(createDefaultTriggerScriptUI("Trigger script", /* bubbleMessage = */ "", /* withProgressBar = */ true) .setRegularScriptLoadingStatusMessage( @@ -391,7 +329,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Trigger script", + .setUserInterface(createDefaultTriggerScriptUI("Trigger script", /* bubbleMessage = */ "", /* withProgressBar = */ false) .setRegularScriptLoadingStatusMessage( @@ -443,7 +381,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Trigger script", + .setUserInterface(createDefaultTriggerScriptUI("Trigger script", /* bubbleMessage = */ "", /* withProgressBar = */ false)); GetTriggerScriptsResponseProto triggerScripts = @@ -468,7 +406,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Trigger script", + .setUserInterface(createDefaultTriggerScriptUI("Trigger script", /* bubbleMessage = */ "", /* withProgressBar = */ true) .setRegularScriptLoadingStatusMessage( @@ -521,7 +459,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Trigger script", + .setUserInterface(createDefaultTriggerScriptUI("Trigger script", /* bubbleMessage = */ "", /* withProgressBar = */ false) .setRegularScriptLoadingStatusMessage( @@ -568,7 +506,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Hello world", + .setUserInterface(createDefaultTriggerScriptUI("Hello world", /* bubbleMessage = */ "", /* withProgressBar = */ false)); @@ -603,10 +541,11 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Trigger script", - /* bubbleMessage = */ "", - /* withProgressBar = */ false) - .setScrollToHide(true))) + .setUserInterface( + createDefaultTriggerScriptUI("Trigger script", + /* bubbleMessage = */ "", + /* withProgressBar = */ false) + .setScrollToHide(true))) .build(); setupTriggerScripts(triggerScripts); @@ -679,7 +618,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Trigger script", + .setUserInterface(createDefaultTriggerScriptUI("Trigger script", /* bubbleMessage = */ "", /* withProgressBar = */ true) .setRegularScriptLoadingStatusMessage( @@ -743,7 +682,7 @@ TriggerScriptProto .newBuilder() /* no trigger condition */ - .setUserInterface(createDefaultUI("Trigger script", + .setUserInterface(createDefaultTriggerScriptUI("Trigger script", /* bubbleMessage = */ "", /* withProgressBar = */ true) .setRegularScriptLoadingStatusMessage(
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTestUtil.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTestUtil.java index 527bf2ca..ca0f8c65 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTestUtil.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiTestUtil.java
@@ -53,6 +53,13 @@ import org.chromium.base.test.util.CriteriaHelper; import org.chromium.base.test.util.CriteriaNotSatisfiedException; import org.chromium.chrome.browser.app.ChromeActivity; +import org.chromium.chrome.browser.autofill_assistant.proto.ChipIcon; +import org.chromium.chrome.browser.autofill_assistant.proto.ChipProto; +import org.chromium.chrome.browser.autofill_assistant.proto.ChipType; +import org.chromium.chrome.browser.autofill_assistant.proto.DrawableProto; +import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptProto.TriggerScriptAction; +import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptUIProto; +import org.chromium.chrome.browser.autofill_assistant.proto.TriggerScriptUIProto.TriggerChip; import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.image_fetcher.ImageFetcher; import org.chromium.chrome.browser.image_fetcher.ImageFetcherConfig; @@ -732,4 +739,61 @@ return builder.toString(); } + + /** + * Creates a default trigger script UI, similar to the intended experience. It comprises three + * chips: 'Preferences', 'Not now', 'Continue'. 'Preferences' opens the cancel popup containing + * 'Not for this session' and 'Never show again'. Optionally, a blue message bubble and a + * default progress bar are shown. + */ + public static TriggerScriptUIProto.Builder createDefaultTriggerScriptUI( + String statusMessage, String bubbleMessage, boolean withProgressBar) { + TriggerScriptUIProto.Builder builder = + TriggerScriptUIProto.newBuilder() + .setStatusMessage(statusMessage) + .setCalloutMessage(bubbleMessage) + .addLeftAlignedChips( + TriggerChip.newBuilder() + .setChip(ChipProto.newBuilder() + .setType(ChipType.NORMAL_ACTION) + .setIcon(ChipIcon.ICON_OVERFLOW)) + .setAction(TriggerScriptAction.SHOW_CANCEL_POPUP)) + .addRightAlignedChips( + TriggerChip.newBuilder() + .setChip(ChipProto.newBuilder() + .setType(ChipType.NORMAL_ACTION) + .setText("Not now")) + .setAction(TriggerScriptAction.NOT_NOW)) + .addRightAlignedChips( + TriggerChip.newBuilder() + .setChip(ChipProto.newBuilder() + .setType(ChipType.HIGHLIGHTED_ACTION) + .setText("Continue")) + .setAction(TriggerScriptAction.ACCEPT)) + .setCancelPopup( + TriggerScriptUIProto.Popup.newBuilder() + .addChoices( + TriggerScriptUIProto.Popup.Choice.newBuilder() + .setText("Not for this session") + .setAction( + TriggerScriptAction.CANCEL_SESSION)) + .addChoices(TriggerScriptUIProto.Popup.Choice.newBuilder() + .setText("Never show again") + .setAction(TriggerScriptAction + .CANCEL_FOREVER))); + if (withProgressBar) { + builder.setProgressBar( + TriggerScriptUIProto.ProgressBar.newBuilder() + .addStepIcons(DrawableProto.newBuilder().setIcon( + DrawableProto.Icon.PROGRESSBAR_DEFAULT_INITIAL_STEP)) + .addStepIcons(DrawableProto.newBuilder().setIcon( + DrawableProto.Icon.PROGRESSBAR_DEFAULT_DATA_COLLECTION)) + .addStepIcons(DrawableProto.newBuilder().setIcon( + DrawableProto.Icon.PROGRESSBAR_DEFAULT_PAYMENT)) + .addStepIcons(DrawableProto.newBuilder().setIcon( + DrawableProto.Icon.PROGRESSBAR_DEFAULT_FINAL_STEP)) + .setActiveStep(1)); + } + return builder; + } }
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java index 072d339..9b9d48a 100644 --- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java +++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/BottomSheetOnboardingCoordinatorTest.java
@@ -7,6 +7,7 @@ import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; import static androidx.test.espresso.action.ViewActions.scrollTo; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.assertThat; import static androidx.test.espresso.matcher.ViewMatchers.isCompletelyDisplayed; @@ -24,6 +25,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.verify; +import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewAssertionTrue; import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewMatchesCondition; import android.support.test.InstrumentationRegistry; @@ -368,6 +370,22 @@ activity.finish(); } + @Test + @MediumTest + public void testIgnoreShowingUiAfterCancellation() { + AutofillAssistantPreferencesUtil.setInitialPreferences(true); + + BaseOnboardingCoordinator coordinator = createCoordinator(); + showOnboardingAndWait(coordinator, mCallback); + + // Cancel startup. + TestThreadUtils.runOnUiThreadBlocking(coordinator::hide); + waitUntilViewAssertionTrue(withId(R.id.autofill_assistant), doesNotExist(), 3000L); + + TestThreadUtils.runOnUiThreadBlocking(coordinator::updateAndShowView); + // Does not crash. + } + /** Trigger onboarding and wait until it is fully displayed. */ private void showOnboardingAndWait( BaseOnboardingCoordinator coordinator, Callback<Integer> callback) {
diff --git a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/PasswordGenerationIntegrationTest.java b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/PasswordGenerationIntegrationTest.java index ebf8c32..2b0bf40f 100644 --- a/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/PasswordGenerationIntegrationTest.java +++ b/chrome/android/features/keyboard_accessory/javatests/src/org/chromium/chrome/browser/keyboard_accessory/PasswordGenerationIntegrationTest.java
@@ -78,6 +78,7 @@ @Test @IntegrationTest + @DisabledTest(message = "https://crbug.com/1203679") public void testAutomaticGenerationCancel() throws InterruptedException, TimeoutException { waitForGenerationLabel(); focusField(PASSWORD_NODE_ID);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java index 5359e46..633dee1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/ProfileSyncService.java
@@ -132,8 +132,7 @@ * @return true if the sync engine is initialized. */ public boolean isEngineInitialized() { - return ProfileSyncServiceJni.get().isEngineInitialized( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + return ProfileSyncServiceJni.get().isEngineInitialized(mNativeProfileSyncServiceAndroid); } /** @@ -143,8 +142,7 @@ */ @VisibleForTesting public boolean isTransportStateActive() { - return ProfileSyncServiceJni.get().isTransportStateActive( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + return ProfileSyncServiceJni.get().isTransportStateActive(mNativeProfileSyncServiceAndroid); } /** @@ -155,8 +153,7 @@ * @return true if Sync can start, false otherwise. */ public boolean canSyncFeatureStart() { - return ProfileSyncServiceJni.get().canSyncFeatureStart( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + return ProfileSyncServiceJni.get().canSyncFeatureStart(mNativeProfileSyncServiceAndroid); } /** @@ -166,13 +163,12 @@ * @return true if Sync is active, false otherwise. */ public boolean isSyncFeatureActive() { - return ProfileSyncServiceJni.get().isSyncFeatureActive( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + return ProfileSyncServiceJni.get().isSyncFeatureActive(mNativeProfileSyncServiceAndroid); } public @GoogleServiceAuthError.State int getAuthError() { - int authErrorCode = ProfileSyncServiceJni.get().getAuthError( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + int authErrorCode = + ProfileSyncServiceJni.get().getAuthError(mNativeProfileSyncServiceAndroid); if (authErrorCode < 0 || authErrorCode >= GoogleServiceAuthError.State.NUM_ENTRIES) { throw new IllegalArgumentException("No state for code: " + authErrorCode); } @@ -187,37 +183,35 @@ */ public boolean isSyncDisabledByEnterprisePolicy() { return ProfileSyncServiceJni.get().isSyncDisabledByEnterprisePolicy( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } public boolean hasUnrecoverableError() { - return ProfileSyncServiceJni.get().hasUnrecoverableError( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + return ProfileSyncServiceJni.get().hasUnrecoverableError(mNativeProfileSyncServiceAndroid); } public boolean requiresClientUpgrade() { - return ProfileSyncServiceJni.get().requiresClientUpgrade( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + return ProfileSyncServiceJni.get().requiresClientUpgrade(mNativeProfileSyncServiceAndroid); } public void setDecoupledFromAndroidMasterSync() { ProfileSyncServiceJni.get().setDecoupledFromAndroidMasterSync( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } public boolean getDecoupledFromAndroidMasterSync() { return ProfileSyncServiceJni.get().getDecoupledFromAndroidMasterSync( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } public @Nullable CoreAccountInfo getAuthenticatedAccountInfo() { return ProfileSyncServiceJni.get().getAuthenticatedAccountInfo( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } public boolean isAuthenticatedAccountPrimary() { return ProfileSyncServiceJni.get().isAuthenticatedAccountPrimary( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -232,8 +226,8 @@ * @return Set of preferred data types. */ public Set<Integer> getPreferredDataTypes() { - int[] modelTypeArray = ProfileSyncServiceJni.get().getPreferredDataTypes( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + int[] modelTypeArray = + ProfileSyncServiceJni.get().getPreferredDataTypes(mNativeProfileSyncServiceAndroid); return modelTypeArrayToSet(modelTypeArray); } @@ -245,8 +239,8 @@ * @return Set of active data types. */ public Set<Integer> getActiveDataTypes() { - int[] activeDataTypes = ProfileSyncServiceJni.get().getActiveDataTypes( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + int[] activeDataTypes = + ProfileSyncServiceJni.get().getActiveDataTypes(mNativeProfileSyncServiceAndroid); return modelTypeArrayToSet(activeDataTypes); } @@ -264,14 +258,14 @@ * @return Set of chosen types. */ public Set<Integer> getChosenDataTypes() { - int[] modelTypeArray = ProfileSyncServiceJni.get().getChosenDataTypes( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + int[] modelTypeArray = + ProfileSyncServiceJni.get().getChosenDataTypes(mNativeProfileSyncServiceAndroid); return modelTypeArrayToSet(modelTypeArray); } public boolean hasKeepEverythingSynced() { return ProfileSyncServiceJni.get().hasKeepEverythingSynced( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -284,23 +278,21 @@ */ public void setChosenDataTypes(boolean syncEverything, Set<Integer> enabledTypes) { ProfileSyncServiceJni.get().setChosenDataTypes(mNativeProfileSyncServiceAndroid, - ProfileSyncService.this, syncEverything, + syncEverything, syncEverything ? ALL_SELECTABLE_TYPES : modelTypeSetToArray(enabledTypes)); } public void setFirstSetupComplete(int syncFirstSetupCompleteSource) { - ProfileSyncServiceJni.get().setFirstSetupComplete(mNativeProfileSyncServiceAndroid, - ProfileSyncService.this, syncFirstSetupCompleteSource); + ProfileSyncServiceJni.get().setFirstSetupComplete( + mNativeProfileSyncServiceAndroid, syncFirstSetupCompleteSource); } public boolean isFirstSetupComplete() { - return ProfileSyncServiceJni.get().isFirstSetupComplete( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + return ProfileSyncServiceJni.get().isFirstSetupComplete(mNativeProfileSyncServiceAndroid); } public void setSyncRequested(boolean requested) { - ProfileSyncServiceJni.get().setSyncRequested( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this, requested); + ProfileSyncServiceJni.get().setSyncRequested(mNativeProfileSyncServiceAndroid, requested); } /** @@ -311,8 +303,7 @@ * @return true if the user wants to sync, false otherwise. */ public boolean isSyncRequested() { - return ProfileSyncServiceJni.get().isSyncRequested( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + return ProfileSyncServiceJni.get().isSyncRequested(mNativeProfileSyncServiceAndroid); } /** @@ -357,7 +348,7 @@ private void setSetupInProgress(boolean inProgress) { ProfileSyncServiceJni.get().setSetupInProgress( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this, inProgress); + mNativeProfileSyncServiceAndroid, inProgress); } public void addSyncStateChangedListener(SyncStateChangedListener listener) { @@ -383,12 +374,12 @@ public boolean isSyncAllowedByPlatform() { return ProfileSyncServiceJni.get().isSyncAllowedByPlatform( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } public void setSyncAllowedByPlatform(boolean allowed) { ProfileSyncServiceJni.get().setSyncAllowedByPlatform( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this, allowed); + mNativeProfileSyncServiceAndroid, allowed); } /** @@ -400,8 +391,8 @@ */ public @PassphraseType int getPassphraseType() { assert isEngineInitialized(); - int passphraseType = ProfileSyncServiceJni.get().getPassphraseType( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + int passphraseType = + ProfileSyncServiceJni.get().getPassphraseType(mNativeProfileSyncServiceAndroid); if (passphraseType < 0 || passphraseType > PassphraseType.MAX_VALUE) { throw new IllegalArgumentException(); } @@ -415,7 +406,7 @@ public @Nullable Date getExplicitPassphraseTime() { assert isEngineInitialized(); long timeInMilliseconds = ProfileSyncServiceJni.get().getExplicitPassphraseTime( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); return timeInMilliseconds != 0 ? new Date(timeInMilliseconds) : null; } @@ -429,7 +420,7 @@ public boolean isUsingExplicitPassphrase() { assert isEngineInitialized(); return ProfileSyncServiceJni.get().isUsingExplicitPassphrase( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -441,7 +432,7 @@ public boolean isPassphraseRequiredForPreferredDataTypes() { assert isEngineInitialized(); return ProfileSyncServiceJni.get().isPassphraseRequiredForPreferredDataTypes( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -453,7 +444,7 @@ public boolean isTrustedVaultKeyRequired() { assert isEngineInitialized(); return ProfileSyncServiceJni.get().isTrustedVaultKeyRequired( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -464,7 +455,7 @@ public boolean isTrustedVaultKeyRequiredForPreferredDataTypes() { assert isEngineInitialized(); return ProfileSyncServiceJni.get().isTrustedVaultKeyRequiredForPreferredDataTypes( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -473,7 +464,7 @@ public boolean isCustomPassphraseAllowed() { assert isEngineInitialized(); return ProfileSyncServiceJni.get().isCustomPassphraseAllowed( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -485,19 +476,19 @@ public boolean isEncryptEverythingEnabled() { assert isEngineInitialized(); return ProfileSyncServiceJni.get().isEncryptEverythingEnabled( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } public void setEncryptionPassphrase(String passphrase) { assert isEngineInitialized(); ProfileSyncServiceJni.get().setEncryptionPassphrase( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this, passphrase); + mNativeProfileSyncServiceAndroid, passphrase); } public boolean setDecryptionPassphrase(String passphrase) { assert isEngineInitialized(); return ProfileSyncServiceJni.get().setDecryptionPassphrase( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this, passphrase); + mNativeProfileSyncServiceAndroid, passphrase); } /** @@ -516,7 +507,7 @@ */ public boolean isPassphrasePromptMutedForCurrentProductVersion() { return ProfileSyncServiceJni.get().isPassphrasePromptMutedForCurrentProductVersion( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -527,7 +518,7 @@ */ public void markPassphrasePromptMutedForCurrentProductVersion() { ProfileSyncServiceJni.get().markPassphrasePromptMutedForCurrentProductVersion( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -535,7 +526,7 @@ */ public void recordKeyRetrievalTrigger(@KeyRetrievalTriggerForUMA int keyRetrievalTrigger) { ProfileSyncServiceJni.get().recordKeyRetrievalTrigger( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this, keyRetrievalTrigger); + mNativeProfileSyncServiceAndroid, keyRetrievalTrigger); } /** @@ -555,7 +546,7 @@ @VisibleForTesting public long getNativeProfileSyncServiceForTest() { return ProfileSyncServiceJni.get().getProfileSyncServiceForTest( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } /** @@ -567,13 +558,12 @@ @VisibleForTesting public long getLastSyncedTimeForTest() { return ProfileSyncServiceJni.get().getLastSyncedTimeForTest( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + mNativeProfileSyncServiceAndroid); } @VisibleForTesting public void triggerRefresh() { - ProfileSyncServiceJni.get().triggerRefresh( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this); + ProfileSyncServiceJni.get().triggerRefresh(mNativeProfileSyncServiceAndroid); } /** @@ -608,8 +598,7 @@ */ @VisibleForTesting public void getAllNodes(GetAllNodesCallback callback) { - ProfileSyncServiceJni.get().getAllNodes( - mNativeProfileSyncServiceAndroid, ProfileSyncService.this, callback); + ProfileSyncServiceJni.get().getAllNodes(mNativeProfileSyncServiceAndroid, callback); } private static Set<Integer> modelTypeArrayToSet(int[] modelTypeArray) { @@ -633,82 +622,53 @@ interface Natives { long init(ProfileSyncService caller); - void setSyncRequested( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller, boolean requested); - boolean isSyncAllowedByPlatform( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - void setSyncAllowedByPlatform( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller, boolean allowed); - int getAuthError(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean requiresClientUpgrade( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - void setDecoupledFromAndroidMasterSync( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean getDecoupledFromAndroidMasterSync( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + void setSyncRequested(long nativeProfileSyncServiceAndroid, boolean requested); + boolean isSyncAllowedByPlatform(long nativeProfileSyncServiceAndroid); + void setSyncAllowedByPlatform(long nativeProfileSyncServiceAndroid, boolean allowed); + int getAuthError(long nativeProfileSyncServiceAndroid); + boolean requiresClientUpgrade(long nativeProfileSyncServiceAndroid); + void setDecoupledFromAndroidMasterSync(long nativeProfileSyncServiceAndroid); + boolean getDecoupledFromAndroidMasterSync(long nativeProfileSyncServiceAndroid); @Nullable - CoreAccountInfo getAuthenticatedAccountInfo( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isAuthenticatedAccountPrimary( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isEngineInitialized( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isCustomPassphraseAllowed( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isEncryptEverythingEnabled( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isTransportStateActive( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isPassphraseRequiredForPreferredDataTypes( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isTrustedVaultKeyRequired( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + CoreAccountInfo getAuthenticatedAccountInfo(long nativeProfileSyncServiceAndroid); + boolean isAuthenticatedAccountPrimary(long nativeProfileSyncServiceAndroid); + boolean isEngineInitialized(long nativeProfileSyncServiceAndroid); + boolean isCustomPassphraseAllowed(long nativeProfileSyncServiceAndroid); + boolean isEncryptEverythingEnabled(long nativeProfileSyncServiceAndroid); + boolean isTransportStateActive(long nativeProfileSyncServiceAndroid); + boolean isPassphraseRequiredForPreferredDataTypes(long nativeProfileSyncServiceAndroid); + boolean isTrustedVaultKeyRequired(long nativeProfileSyncServiceAndroid); boolean isTrustedVaultKeyRequiredForPreferredDataTypes( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isUsingExplicitPassphrase( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean setDecryptionPassphrase( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller, String passphrase); - void setEncryptionPassphrase( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller, String passphrase); - int getPassphraseType(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - long getExplicitPassphraseTime( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - int[] getActiveDataTypes(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - int[] getChosenDataTypes(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - int[] getPreferredDataTypes( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - void setChosenDataTypes(long nativeProfileSyncServiceAndroid, ProfileSyncService caller, - boolean syncEverything, int[] modelTypeArray); - void triggerRefresh(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - void setSetupInProgress(long nativeProfileSyncServiceAndroid, ProfileSyncService caller, - boolean inProgress); - void setFirstSetupComplete(long nativeProfileSyncServiceAndroid, ProfileSyncService caller, - int syncFirstSetupCompleteSource); - boolean isFirstSetupComplete( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isSyncRequested(long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean canSyncFeatureStart( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isSyncFeatureActive( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean isSyncDisabledByEnterprisePolicy( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean hasKeepEverythingSynced( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - boolean hasUnrecoverableError( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + long nativeProfileSyncServiceAndroid); + boolean isUsingExplicitPassphrase(long nativeProfileSyncServiceAndroid); + boolean setDecryptionPassphrase(long nativeProfileSyncServiceAndroid, String passphrase); + void setEncryptionPassphrase(long nativeProfileSyncServiceAndroid, String passphrase); + int getPassphraseType(long nativeProfileSyncServiceAndroid); + long getExplicitPassphraseTime(long nativeProfileSyncServiceAndroid); + int[] getActiveDataTypes(long nativeProfileSyncServiceAndroid); + int[] getChosenDataTypes(long nativeProfileSyncServiceAndroid); + int[] getPreferredDataTypes(long nativeProfileSyncServiceAndroid); + void setChosenDataTypes( + long nativeProfileSyncServiceAndroid, boolean syncEverything, int[] modelTypeArray); + void triggerRefresh(long nativeProfileSyncServiceAndroid); + void setSetupInProgress(long nativeProfileSyncServiceAndroid, boolean inProgress); + void setFirstSetupComplete( + long nativeProfileSyncServiceAndroid, int syncFirstSetupCompleteSource); + boolean isFirstSetupComplete(long nativeProfileSyncServiceAndroid); + boolean isSyncRequested(long nativeProfileSyncServiceAndroid); + boolean canSyncFeatureStart(long nativeProfileSyncServiceAndroid); + boolean isSyncFeatureActive(long nativeProfileSyncServiceAndroid); + boolean isSyncDisabledByEnterprisePolicy(long nativeProfileSyncServiceAndroid); + boolean hasKeepEverythingSynced(long nativeProfileSyncServiceAndroid); + boolean hasUnrecoverableError(long nativeProfileSyncServiceAndroid); boolean isPassphrasePromptMutedForCurrentProductVersion( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); + long nativeProfileSyncServiceAndroid); void markPassphrasePromptMutedForCurrentProductVersion( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - long getProfileSyncServiceForTest( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - long getLastSyncedTimeForTest( - long nativeProfileSyncServiceAndroid, ProfileSyncService caller); - void getAllNodes(long nativeProfileSyncServiceAndroid, ProfileSyncService caller, - GetAllNodesCallback callback); - void recordKeyRetrievalTrigger(long nativeProfileSyncServiceAndroid, - ProfileSyncService caller, int keyRetrievalTrigger); + long nativeProfileSyncServiceAndroid); + long getProfileSyncServiceForTest(long nativeProfileSyncServiceAndroid); + long getLastSyncedTimeForTest(long nativeProfileSyncServiceAndroid); + void getAllNodes(long nativeProfileSyncServiceAndroid, GetAllNodesCallback callback); + void recordKeyRetrievalTrigger( + long nativeProfileSyncServiceAndroid, int keyRetrievalTrigger); } }
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb index 5546c07..b105d02 100644 --- a/chrome/app/resources/chromium_strings_az.xtb +++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -109,6 +109,7 @@ <translation id="454579500955453258">Yeni Chromium profilində davam edilsin?</translation> <translation id="4567424176335768812"><ph name="USER_EMAIL_ADDRESS" /> kimi daxil olmusunuz. İndi bütün daxil olan cihazlarınızdan əlfəcin, tarixçə və digər ayarlara daxil ola bilərsiniz.</translation> <translation id="459535195905078186">Chromium Tətbiqləri</translation> +<translation id="4665829708273112819">Xəbərdarlıq: Chromium artırmaların brauzer tarixçənizi yazmasının qarşısını ala bilməz. Bu artırmanı Anonim rejimdə deaktiv etmək üçün bu seçimi ləğv edin.</translation> <translation id="4677944499843243528">Profil başqa kompüterdə başqa Chromium prosesi tərəfindən (<ph name="PROCESS_ID" />)istifadə olunur (<ph name="HOST_NAME" />). Chromium profili xəta almaması üçün qapadıb. Əgər bu profilin başqa proseslər tərəfindən istifadə olunmadığına əminsinizsə, profili blokdan çıxarın və Chromium'u yenidən başladın.</translation> <translation id="469338717132742108">Chromium OS ilə yardım alın</translation> <translation id="4708774505295300557">Kimsə bu kompüterdə <ph name="ACCOUNT_EMAIL_LAST" /> kimi Chromium'a daxil olub. Məlumatınızı ayrı saxlamaq üçün yeni Chromium istifadəçisi yaradın.</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb index 9e91957..c57128e 100644 --- a/chrome/app/resources/chromium_strings_bg.xtb +++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -107,6 +107,7 @@ <translation id="454579500955453258">Искате ли да продължите с нов потребителски профил в Chromium?</translation> <translation id="4567424176335768812">Влезли сте като <ph name="USER_EMAIL_ADDRESS" />. Сега имате достъп до отметките, историята и другите си настройки на всички устройства, на които сте влезли.</translation> <translation id="459535195905078186">Приложения в Chromium</translation> +<translation id="4665829708273112819">Предупреждение: Chromium не може да попречи на разширенията да записват историята ви на сърфиране. За да деактивирате това разширение в режим „инкогнито“, премахнете отметката от тази опция.</translation> <translation id="4677944499843243528">Изглежда, че потребителският профил се използва от друг процес на Chromium (<ph name="PROCESS_ID" />) на друг компютър (<ph name="HOST_NAME" />). Chromium заключи потребителския профил, за да не се повреди. Ако сте сигурни, че нито един друг процес не го използва, можете да отключите потребителския профил и да стартирате Chromium повторно.</translation> <translation id="469338717132742108">Получаване на помощ за Chromium OS</translation> <translation id="4708774505295300557">По-рано някой влезе в Chromium на този компютър като <ph name="ACCOUNT_EMAIL_LAST" />. Моля, създайте нов потребител в браузъра, така че информацията ви да се съхранява отделно.</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb index 9f93a27..ad3d864 100644 --- a/chrome/app/resources/chromium_strings_fil.xtb +++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -111,6 +111,7 @@ <translation id="454579500955453258">Magpatuloy sa bagong profile sa Chromium?</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="459535195905078186">Chromium Apps</translation> +<translation id="4665829708273112819">Babala: Hindi mapipigilan ng Chromium ang pag-record ng mga extension sa iyong history ng pag-browse. Para i-disable ang extension na ito sa Incognito mode, i-unselect ang opsyong ito.</translation> <translation id="4677944499843243528">Mukhang ginagamit ang profile ng iba pang proseso ng Chromium (<ph name="PROCESS_ID" />) sa iba pang computer (<ph name="HOST_NAME" />). Ni-lock ng Chromium ang profile upang hindi ito ma-corrupt. Kung nakakatiyak ka na walang ibang mga proseso ang gumagamit sa profile na ito, maaari mong i-unlock ang profile at ilunsad muli ang Chromium.</translation> <translation id="469338717132742108">Humingi ng tulong sa Chromium OS</translation> <translation id="4708774505295300557">May nag-sign in dati sa Chromium sa computer na ito bilang <ph name="ACCOUNT_EMAIL_LAST" />. Mangyaring gumawa ng bagong user ng Chromium upang ihiwalay ang iyong impormasyon.</translation>
diff --git a/chrome/app/resources/chromium_strings_iw.xtb b/chrome/app/resources/chromium_strings_iw.xtb index e9e323b..be122417 100644 --- a/chrome/app/resources/chromium_strings_iw.xtb +++ b/chrome/app/resources/chromium_strings_iw.xtb
@@ -107,6 +107,7 @@ <translation id="454579500955453258">להמשיך בפרופיל Chromium חדש?</translation> <translation id="4567424176335768812">נכנסת למערכת בתור <ph name="USER_EMAIL_ADDRESS" />. כעת יש לך אפשרות לגשת אל הסימניות, ההיסטוריה והגדרות אחרות שלך בכל המכשירים שבהם התחברת לחשבון.</translation> <translation id="459535195905078186">יישומי Chromium</translation> +<translation id="4665829708273112819">אזהרה: Chromium לא יכול למנוע מתוספים לתעד את היסטוריית הגלישה שלך. כדי להשבית את התוסף הזה במצב אנונימי, צריך לבטל את הבחירה של האפשרות הזו.</translation> <translation id="4677944499843243528">נראה שהפרופיל נמצא בשימוש על ידי תהליך Chromium אחר (<ph name="PROCESS_ID" />) במחשב אחר (<ph name="HOST_NAME" />). Chromium נעל את הפרופיל כדי שלא ייפגם. אם וידאת שאף תהליך אחר אינו משתמש בפרופיל זה, אפשר את נעילת הפרופיל ולהפעיל את Chromium מחדש.</translation> <translation id="469338717132742108">קבלת עזרה בנושא Chromium OS</translation> <translation id="4708774505295300557">מישהו נכנס בעבר ל-Chromium מהמחשב הזה כ-<ph name="ACCOUNT_EMAIL_LAST" />. יש ליצור משתמש חדש ל-Chromium כדי לשמור על פרטיות המידע שלך.</translation>
diff --git a/chrome/app/resources/chromium_strings_ka.xtb b/chrome/app/resources/chromium_strings_ka.xtb index f61059f..630ddb0 100644 --- a/chrome/app/resources/chromium_strings_ka.xtb +++ b/chrome/app/resources/chromium_strings_ka.xtb
@@ -111,6 +111,7 @@ <translation id="454579500955453258">გსურთ ახალ Chromium პროფილში გაგრძელება?</translation> <translation id="4567424176335768812">თქვენ შესული ხართ, როგორც <ph name="USER_EMAIL_ADDRESS" />. ახლა შეგიძლიათ გახსნათ თქვენი სანიშნეები, ისტორია და სხვა პარამეტრები ყველა მოწყობილობიდან, რომელშიც შესული ხართ.</translation> <translation id="459535195905078186">Chromium პროგრამები</translation> +<translation id="4665829708273112819">გაფრთხილება: Chromium ვერ შეუშლის ხელს გაფართოებებს დათვალიერების ისტორიის შენახვაში. ინკოგნიტო რეჟიმში ამ გაფართოების გასათიშად მოხსენით მონიშვნა ამ ვარიანტზე.</translation> <translation id="4677944499843243528">როგორც ჩანს, პროფილი გამოიყენება სხვა Chromium პროცესის მიერ (<ph name="PROCESS_ID" />) სხვა კომპიუტერში (<ph name="HOST_NAME" />). Chromium-მა დაბლოკა პროფილი, რათა არ დაზიანდეს. თუ დარწმუნებული ხართ, რომ სხვა პროცესები არ იყენებენ ამ პროფილს, შეგიძლიათ განბლოკოთ პროფილი და ხელახლა გაუშვათ Chromium.</translation> <translation id="469338717132742108">Chromium OS-თან დაკავშირებული დახმარების მიღება</translation> <translation id="4708774505295300557">Chromium-ში უკვე განხორციელდა შესვლა ამ კომპიუტერიდან, როგორც <ph name="ACCOUNT_EMAIL_LAST" />. გთხოვთ, შექმნათ Chromium-ის ახალი მომხმარებელი თქვენი ინფორმაციის ცალკე შესანახად.</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb index 5a0b651..5126eba 100644 --- a/chrome/app/resources/chromium_strings_sl.xtb +++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -111,6 +111,7 @@ <translation id="454579500955453258">Ali želite nadaljevati v novem profilu v Chromiumu?</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="459535195905078186">Aplikacije za Chromium</translation> +<translation id="4665829708273112819">Opozorilo: Chromium razširitvam ne more preprečiti beleženja zgodovine brskanja. Če želite onemogočiti to razširitev v anonimnem načinu, počistite to možnost.</translation> <translation id="4677944499843243528">Videti je, da profil uporablja drug Chromiumov proces (<ph name="PROCESS_ID" />) v drugem računalniku (<ph name="HOST_NAME" />). Chromium je zaklenil profil, da se ne poškoduje. Če ste prepričani, da tega profila ne uporabljajo nobeni drugi procesi, ga lahko odklenete in znova zaženete Chromium.</translation> <translation id="469338717132742108">Pomoč za OS Chromium</translation> <translation id="4708774505295300557">Nekdo se je prijavil v Chromium v tem računalniku kot <ph name="ACCOUNT_EMAIL_LAST" />. Ustvarite nov uporabniški profil za Chromium, če želite, da bodo vaši podatki ločeni.</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index f03d645..82e59bf 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -510,6 +510,7 @@ <translation id="1553538517812678578">Limitsiz</translation> <translation id="1555130319947370107">Mavi</translation> <translation id="1556537182262721003">Artırmanı birbaşa qovluğa daşıya bilmədi.</translation> +<translation id="1558391695376153246">Anonim tabları qapadın</translation> <translation id="155865706765934889">Taçped</translation> <translation id="1562119309884184621">Bu kontaktı əlavə etdikdə, onun növbəti dəfə paylaşımı yadda saxlanacaq</translation> <translation id="1563702743503072935">Google Hesabınızdakı parollar da daxil olduğunuz halda bu cihazda əlçatan olacaq</translation> @@ -564,6 +565,7 @@ <translation id="1616206807336925449">Bu artırma xüsusi icazələr tələb etmir.</translation> <translation id="1616298854599875024">"<ph name="IMPORT_NAME" />" artırmasını import etmək olmur, çünki o paylaşılmış modul deyil</translation> <translation id="1617765145568323981">{NUM_FILES,plural, =0{Bu data təşkilatınızın Güvənlik siyasətlərinə əsasən yoxlanılır...}=1{Bu fayl təşkilatınızın Güvənlik siyasətlərinə əsasən yoxlanılır...}other{Bu fayllar təşkilatınızın Güvənlik siyasətlərinə əsasən yoxlanılır...}}</translation> +<translation id="1618102204889321535"><ph name="CURRENT_CHARACTER_COUNT" />/<ph name="MAX_CHARACTER_COUNT" /></translation> <translation id="1618268899808219593">Yardım mərkəzi</translation> <translation id="1620307519959413822">Yanlış parol. Yenidən cəhd edin və ya sıfırlamaq üçün "Parolu unutmuşam" seçiminə klikləyin.</translation> <translation id="1620510694547887537">Kamera</translation> @@ -624,6 +626,7 @@ <translation id="1668979692599483141">Təkliflər barədə öyrənin</translation> <translation id="1670399744444387456">Əsas</translation> <translation id="1673137583248014546"><ph name="URL" /> Təhülkəsizlik Açarının marka və modelinə baxmaq istəyir</translation> +<translation id="1674073353928166410">Hamısını (<ph name="URL_COUNT" />) Anonim pəncərədə açın</translation> <translation id="1677306805708094828"><ph name="EXTENSION_TYPE_PARAMETER" /> artırmasını əlavə etmək mümkün deyil</translation> <translation id="1677472565718498478"><ph name="TIME" /> qaldı</translation> <translation id="1679068421605151609">Gəlişdirici Alətləri</translation> @@ -771,6 +774,7 @@ <translation id="1817871734039893258">Microsoft Fayl Bərpası</translation> <translation id="1818007989243628752"><ph name="USERNAME" /> parolunu silin</translation> <translation id="1818913467757368489">Yükləmə davam edir.</translation> +<translation id="1819443852740954262">Hamısını Anonim pəncərədə açın</translation> <translation id="1819721979226826163">Tətbiq bildirişlər > Google Play xidmətləri seçiminə klikləyin.</translation> <translation id="1820028137326691631">Adminin yaratdığı parolu daxil edin</translation> <translation id="182139138257690338">avtomatik endirmələr</translation> @@ -980,6 +984,7 @@ <translation id="2058456167109518507">Cihaz aşkarlandı</translation> <translation id="2059913712424898428">Saat qurşağı</translation> <translation id="2060375639911876205">eSIM profilini silin</translation> +<translation id="2062354623176996748">Axtarış tarixçənizi Anonim pəncərədə saxlamadan vebdən istifadə edin</translation> <translation id="2065405795449409761">Chrome'u avtomatlaşdırılmış test proqram təminatı idarə edir.</translation> <translation id="2071393345806050157">Lokal qeydiyyat faylı yoxdur.</translation> <translation id="2071692954027939183">Bildirişlərə adətən icazə vermədiyinizə görə onlar avtomatik olaraq bloklanıb</translation> @@ -998,12 +1003,14 @@ <translation id="2082187087049518845">Tabeli qrupa əlavə edin</translation> <translation id="2082510809738716738">Tema rəngi seçin</translation> <translation id="208586643495776849">Yenidən cəhd edin</translation> +<translation id="208634871997892083">VPN həmişə aktiv</translation> <translation id="2087822576218954668">Çap edin: <ph name="PRINT_NAME" /></translation> <translation id="2088690981887365033">VPN şəbəkəsi</translation> <translation id="208928984520943006">İstənilən vaxt Əsas ekrana keçmək üçün aşağıdan yuxarı sürüşdürün.</translation> <translation id="2089566709556890888">Google Chrome ilə təhlükəsiz axtarış edin</translation> <translation id="2089795179672254991">Sayt buferə kopyalanan mətn və şəkillərə baxmaq istədikdə icazə tələb edilsin (məsləhətlidir)</translation> <translation id="2090165459409185032">Hesab məlumatlarını bərpa üçün getmək üçün: Google.com/accounts/recovery</translation> +<translation id="2090507354966565596">Giriş etdiyiniz zaman avtomatik olaraq qoşulur</translation> <translation id="2090876986345970080">Sistem güvənlik ayarı</translation> <translation id="2091887806945687916">Səs</translation> <translation id="2096715839409389970">Üçüncü tərəf kukilərini təmizləyin</translation> @@ -1115,6 +1122,7 @@ <translation id="2200094388063410062">E-poçt</translation> <translation id="2200356397587687044">Chrome davam etmək üçün icazə tələb edir</translation> <translation id="2202898655984161076">Printerlərin siyahısını tərtib edərkən xəta baş verdi. Bəzi printerləriniz <ph name="CLOUD_PRINT_NAME" /> ilə uğurla qeydiyyat olunmayıb..</translation> +<translation id="2203088913459920044">Adda hərflər, rəqəmlər və xüsusi simvollar ola bilər</translation> <translation id="2204034823255629767">Oxuyun və yazdığınız istənilən şeyi dəyişin</translation> <translation id="220858061631308971">Bu PIN kodu "<ph name="DEVICE_NAME" />" cihazına daxil edin:</translation> <translation id="2212565012507486665">Kukilərə icazə verin</translation> @@ -1155,6 +1163,7 @@ <translation id="2249605167705922988">məsələn, 1-5, 8, 11-13</translation> <translation id="2251218783371366160">Sistem izləyici ilə açın</translation> <translation id="225163402930830576">Şəbəkələri yeniləyin</translation> +<translation id="2251809247798634662">Yeni Anonim pəncərə</translation> <translation id="225240747099314620">Qorunan kontent üçün identifikatorlara icazə verin (kompüterin yenidən başladılması tələb oluna bilər)</translation> <translation id="2255077166240162850">Bu cihaz müxtəlif domen və ya rejimlə kilidləndi.</translation> <translation id="2255317897038918278">Microsoft Zaman Möhürləməsi</translation> @@ -1650,6 +1659,7 @@ <translation id="2792290659606763004">Android tətbiqləri silinsin?</translation> <translation id="2792465461386711506">Telefonunuzdan son Chrome tablarına baxmaq üçün Chrome Sinx funksiyasını aktiv edin</translation> <translation id="2794233252405721443">Sayt blok edilib</translation> +<translation id="2794522004398861033">eSIM ayarlamaq üçün Wi-Fi və ya Ethernet'ə qoşulun</translation> <translation id="2795716239552913152">Saytlar adətən yerli xəbərlər və ya yaxınlıqdakı mağazalar kimi müvafiq xüsusiyyətlər və məlumatlar üçün məkanınızdan istifadə edir</translation> <translation id="2796424461616874739">"<ph name="DEVICE_NAME" />" cihazına qoşularkən doğrulama alınmadı.</translation> <translation id="2796740370559399562">Kukilərə icazə verməyə davam edin</translation> @@ -1867,6 +1877,7 @@ <translation id="3016641847947582299">Komponent güncəlləşib</translation> <translation id="3017079585324758401">Arxa fon</translation> <translation id="3019285239893817657">Alt səhifə düyməsi</translation> +<translation id="3019595674945299805">VPN xidməti</translation> <translation id="3020183492814296499">Qısayollar</translation> <translation id="3020990233660977256">Seriya Nömrəsi: <ph name="SERIAL_NUMBER" /></translation> <translation id="3021065318976393105">Batareyadan istifadə edilən zaman</translation> @@ -1986,6 +1997,7 @@ <translation id="3159493096109238499">Bej</translation> <translation id="3159978855457658359">Cihazın adına düzəliş edin</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (avadanlıqla yedəklənmiş)</translation> +<translation id="3160928651883997588">VPN Tərcihləri</translation> <translation id="3161522574479303604">Bütün dillər</translation> <translation id="3162853326462195145">Məktəb hesabı</translation> <translation id="3162899666601560689">Saytlar baxış təcrübənizi yaxşılaşdırmaq üçün, məsələn, sizi daxil olmuş vəziyyətdə saxlamaq və ya alış-veriş səbətinizdəki elementləri yadda saxlamaq üçün kukilərdən istifadə edə bilər</translation> @@ -2154,6 +2166,7 @@ <translation id="3380365263193509176">Naməlum xəta</translation> <translation id="3382073616108123819">Sistem bu cihaz üçün cihaz doğrulayıcılarını aşkarlaya bilmədi.</translation> <translation id="3382200254148930874">Nəzarət dayandırılır...</translation> +<translation id="338323348408199233">VPN'siz trafiki blok edin</translation> <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Ayırıcı</translation> <translation id="338691029516748599"><ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" /> şəbəkə, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, Siqnal Gücü<ph name="SIGNAL_STRENGTH" />%, Administratorunuz tərəfindən idarə olunur, Qoşulun</translation> @@ -2605,6 +2618,7 @@ <translation id="3844888638014364087">Emoji daxil edildi</translation> <translation id="3846116211488856547">Veb sayt, Android tətbiqləri və sairəni təkmilləşdirmək üçün alətlər əldə edin. Linux'un quraşdırılması ilə <ph name="DOWNLOAD_SIZE" /> data endiriləcək.</translation> <translation id="3847319713229060696">Vebdə hər kəsin güvənliyini artırmağa yardım edin</translation> +<translation id="3848547754896969219">&Anonim pəncərədə açın</translation> <translation id="385051799172605136">Geri</translation> <translation id="3851428669031642514">Güvənsiz skriptləri yükləyin</translation> <translation id="3854599674806204102">Seçim edin</translation> @@ -2972,6 +2986,7 @@ <translation id="4275830172053184480">Cihazınızı yenidən başladın</translation> <translation id="4278101229438943600">Assistent hazırdır</translation> <translation id="4278390842282768270">İcazə verilib</translation> +<translation id="4279129444466079448">Bu cihazda maksimum <ph name="PROFILE_LIMIT" /> eSIM profili quraşdıra bilərsiniz. Başqa bir profil əlavə etmək üçün əvvəlcə mövcud profili silin.</translation> <translation id="4281844954008187215">Xidmət Şərtləri</translation> <translation id="4282196459431406533">Ağıllı Kilid aktiv edildi</translation> <translation id="4285418559658561636">Parolu Yeniləyin</translation> @@ -2987,6 +3002,7 @@ <translation id="4295979599050707005"><ph name="USER_EMAIL" /> hesabının Chrome və Google Play'də veb sayt, tətbiq və artırmalar ilə istifadə edilə biləcəyini təsdiq etmək üçün yenidən daxil olun. Həmçinin bu hesabı silə bilərsiniz. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation> <translation id="4297219207642690536">Yenidən başlayın və sıfırlayın</translation> <translation id="4297813521149011456">Ekranın döndərilməsi</translation> +<translation id="4299022904780065004">Yeni &Anonim pəncərə</translation> <translation id="4301671483919369635">Bu səhifəyə faylları redaktə etmək üçün icazə verilib</translation> <translation id="4303079906735388947">Təhlükəsizlik açarı üçün yeni PIN quraşdırın</translation> <translation id="4305402730127028764"><ph name="DEVICE_NAME" /> cihazına kopyalayın</translation> @@ -3298,6 +3314,7 @@ <translation id="4641539339823703554">Chrome sistem vaxtını ayarlaya bilmədi. Aşağıda vaxtı yoxlayın və gərək olduğu halda düzəldin.</translation> <translation id="4642769377300286600">Mobil profil quraşdırılır, Şəbəkə <ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" /></translation> <translation id="4643612240819915418">&Videonu Yeni Paneldə Açın</translation> +<translation id="4644205769234414680">Anonim rejimdə icazə verin</translation> <translation id="4645676300727003670">&Saxlayın</translation> <translation id="4646675363240786305">Portlar</translation> <translation id="4647090755847581616">&Vərəqəni qapadın</translation> @@ -3454,6 +3471,7 @@ <translation id="4838836835474292213">Buferdəki konteti oxumaq üçün girişə icazə verildi</translation> <translation id="4838907349371614303">Parol yeniləndi</translation> <translation id="4839303808932127586">Videonun saxlanma formatı:</translation> +<translation id="4840096453115567876">İstənilən halda Anonim rejimdən çıxılsın?</translation> <translation id="4842976633412754305">Bu səhifə doğrulanmamış mənbələrdən skript yükləməyə çalışır.</translation> <translation id="4844333629810439236">Digər klaviaturalar</translation> <translation id="4846680374085650406">Bu ayar üçün administratorun tövsiyələrinə əməl edirsiniz.</translation> @@ -3571,6 +3589,7 @@ <translation id="4964455510556214366">Quruluş</translation> <translation id="496446150016900060">Wi-Fi şəbəkələrini telefonunuzla sinxronlaşdırın</translation> <translation id="4965808351167763748">Hangouts Görüş istifadə etmək üçün bu cihazı quraşdırmaq istədiyinizə əminsiniz?</translation> +<translation id="4966972803217407697">Anonim rejimdəsiniz</translation> <translation id="496888482094675990">Fayllar tətbiqi Google Disk, xarici yaddaş və ya Chrome OS cihazınızda saxladığınız fayllara sürətli giriş təmin edir.</translation> <translation id="4971412780836297815">Tamamlandıqda açın</translation> <translation id="4971735654804503942">Təhlükəli veb saytlar, endirmələr və artırmalara qarşı daha sürətli, fəal qoruma. Sizə parol aşkarlanmaları barədə xəbərdarlıq edir. Baxış datasının Google'a göndərilməsini tələb edir.</translation> @@ -3600,6 +3619,7 @@ <translation id="5005498671520578047">Parolu kopyalayın</translation> <translation id="5006218871145547804">Crostini Android tətbiqi üzrə ADB</translation> <translation id="5007392906805964215">Nəzərdən keçirin</translation> +<translation id="50080882645628821">Profili silin</translation> <translation id="5008936837313706385">Fəaliyyətin Adı</translation> <translation id="5010043101506446253">Sertifikat icazəsi</translation> <translation id="5015344424288992913">Proksi həll olunur...</translation> @@ -3781,6 +3801,7 @@ <translation id="5213114823401215820">Qapalı qrupu yenidən açın</translation> <translation id="5213481667492808996">"<ph name="NAME" />" data xidmətiniz istifadəyə hazırdır</translation> <translation id="5213891612754844763">Proksi ayarlarını göstərin</translation> +<translation id="5214249693262842685">Anonim rejimdə olduqda saytlar müxtəlif saytlarda axtarış fəaliyyətinizi görmək üçün kukilərinizdən istifadə edə bilmir (məsələn, reklamları fərdiləşdirmək üçün). Bəzi saytlarda funksiyalar işləməyə bilər.</translation> <translation id="5215502535566372932">Ölkə seçin</translation> <translation id="521582610500777512">Fotoşəkil kənarlaşdırıldı</translation> <translation id="5222403284441421673">Təhlükəli endirmə blok edildi</translation> @@ -3892,6 +3913,7 @@ <translation id="5336688142483283574">Bu səhifə tarixçə və <ph name="SEARCH_ENGINE" /> fəaliyyətindən də silinəcək.</translation> <translation id="5337771866151525739">Üçüncü şəxs tərəfin quraşdırılmışdır.</translation> <translation id="5337926771328966926">Cari cihaz adı: <ph name="DEVICE_NAME" /></translation> +<translation id="5338338064218053691">Anonim pəncərə ilə məxfi axtarış edə bilərsiniz</translation> <translation id="5338503421962489998">Yerli saxlama yaddaşı</translation> <translation id="5340638867532133571">Saytların ödəniş meneceri quraşdırmasına icazə verin (məsləhətlidir)</translation> <translation id="5341793073192892252">Aşağıdakı kukilər blok edilib (üçüncü tərəf kukiləri istisna olmadan bloklanır)</translation> @@ -3915,6 +3937,7 @@ <translation id="536638840841140142">Yoxdur</translation> <translation id="5368720394188453070">Telefonunuz kilidlənib. Daxil etmək üçün kiliddən çıxarılıb.</translation> <translation id="5368779022775404937"><ph name="REALM" /> domeninə daxil olun</translation> +<translation id="536882527576164740">{0,plural, =1{Anonim pəncərə}other{Anonim pəncərə (#)}}</translation> <translation id="5369491905435686894">Maus sürətini aktiv edin</translation> <translation id="5369694795837229225">Linux tərtibat mühitini ayarlayın</translation> <translation id="5370819323174483825">Yenidən yükləyin</translation> @@ -4055,6 +4078,7 @@ <translation id="5521078259930077036">Gözlədiyiniz ana səhifə budur?</translation> <translation id="5522156646677899028">Bu artırmanın ciddi güvənlik problemləri var.</translation> <translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Artırma administratorunuz tərəfindən quraşdırılıb}other{# artırma administratorunuz tərəfindən quraşdırılıb}}</translation> +<translation id="5523558474028191231">Adda hərflər, rəqəmlər və xüsusi simvollar ola bilər və maksimum <ph name="MAX_CHARACTER_COUNT" /> simvol ola bilər</translation> <translation id="5526701598901867718">Hamısı (təhlükəli)</translation> <translation id="5526745900034778153">Sinxronizasiyaya davam etmək üçün daxil olun</translation> <translation id="5527463195266282916">Artırma versiyasının aşağı salınmasına cəhd edildi.</translation> @@ -4444,6 +4468,7 @@ <translation id="5972826969634861500"><ph name="PRODUCT_NAME" /> başladın</translation> <translation id="5973041996755340290">"<ph name="CLIENT_NAME" />" bu brauzeri sazlamağa başlayıb</translation> <translation id="5973605538625120605">PIN-i dəyişin</translation> +<translation id="5975056890546437204">{COUNT,plural, =0{Hamısını &Anonim pəncərədə açın}=1{&Anonim pəncərədə açın}other{Hamısını ({COUNT}) &Anonim pəncərədə açın}}</translation> <translation id="5975792506968920132">Şarj faizi</translation> <translation id="5976160379964388480">Digərləri</translation> <translation id="5978277834170881274">&Əsas orfoqrafik yoxlanışdan istifadə edin</translation> @@ -5172,6 +5197,7 @@ <translation id="680572642341004180"><ph name="SHORT_PRODUCT_OS_NAME" /> üzərində RLZ izləməni aktiv edin.</translation> <translation id="6808039367995747522">Davam etmək üçün təhlükəsizlik açarını daxil edib ona toxunun</translation> <translation id="6808193438228982088">Tülkü</translation> +<translation id="6809470175540814047">Anonim pəncərədə açın</translation> <translation id="6810613314571580006">Saxlanmış kredensialları istifadə edərək vebsaytlara avtomatik daxil olun. Xüsusiyyət deaktiv edildikdə, sayta hər dəfə girdiyinizdə təsdiqləmə tələb olunacaq.</translation> <translation id="6810768462515084623">Ups! Parolunuzun vaxtı bitib. Fərqli cihazda onu yeniləyin və bir daha cəhd edin.</translation> <translation id="6811034713472274749">Səhifəyə baxa bilərsiniz</translation> @@ -5198,6 +5224,7 @@ <translation id="6831043979455480757">Tərcümə et</translation> <translation id="6833479554815567477">Tab bu qrupdan silindi: <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /></translation> <translation id="683373380308365518">Ağıllı və təhlükəsiz brauzerə keçin</translation> +<translation id="683540480453879381"><ph name="FILE_EXTENSIONS" /> fayllarını açın</translation> <translation id="6835762382653651563">Yeniləmə İnternetə qoşulmaq edin sizin <ph name="DEVICE_TYPE" /> .</translation> <translation id="6838034009068684089">Sayt ekranlarınızda pəncərələri açmaq və yerləşdirmək istədikdə soruşun (tövsiyə edilir)</translation> <translation id="6839225236531462745">Sertifikatın Silinməsi Xətası</translation> @@ -5233,6 +5260,7 @@ <translation id="6865708901122695652">WebRTC tədbir girişləri (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> <translation id="686609795364435700">Sakit</translation> <translation id="686664946474413495">Rəng temperaturu</translation> +<translation id="6867400383614725881">Yeni Anonim tab</translation> <translation id="6868934826811377550">Detallara baxın</translation> <translation id="6871644448911473373">OCSP Cavablayıcı: <ph name="LOCATION" /></translation> <translation id="6872781471649843364">Daxil etdiyiniz parol server tərəfindən rədd edildi.</translation> @@ -5333,6 +5361,7 @@ <translation id="6979044105893951891">İdarə edilən qonaq sessiyalarını başladın və sonlandırın</translation> <translation id="6979440798594660689">Səssiz edin (defolt)</translation> <translation id="6979737339423435258">Hər zaman</translation> +<translation id="6981553172137913845">Məxfi axtarış etmək üçün menyudakı nöqtələr işarəsinə toxunun və Anonim pəncərəni açın</translation> <translation id="6981982820502123353">Giriş İmkanı</translation> <translation id="6983507711977005608">Cəld modem şəbəkəsini ayırın</translation> <translation id="6983783921975806247">Qeydiyyatdan keçmiş OID</translation> @@ -5408,6 +5437,7 @@ <translation id="7053983685419859001">Bloklayın</translation> <translation id="7055152154916055070">Yönləndirmə blok edildi:</translation> <translation id="7055451306017383754">Tətbiq bu qovluqdan istifadə etdiyi üçün paylaşımı silmək mümkün olmadı. Parallels Desktop növbəti dəfə bağlandıqda qovluğun paylaşımı silinəcək.</translation> +<translation id="7056418393177503237">{0,plural, =1{Anonim pəncərə}other{# açıq Anonim pəncərə}}</translation> <translation id="7056526158851679338">&Cihazları yoxlayın</translation> <translation id="7057184853669165321">{NUM_MINS,plural, =1{Təhlükəsizlik yoxlanışı 1 dəqiqə əvvəl icra olunub}other{Təhlükəsizlik yoxlanışı {NUM_MINS} dəqiqə əvvəl icra olunub}}</translation> <translation id="7057767408836081338">Tətbiq datasını əldə etmək alınmadı, yenə də tətbiqi icra etməyə çalışırıq...</translation> @@ -5464,6 +5494,7 @@ <translation id="7117247127439884114">Yenidən daxil olun...</translation> <translation id="711840821796638741">İdarə olunan əlfəcinləri göstərin</translation> <translation id="711902386174337313">Hesaba daxil olduğunuz cihazların siyahısına baxın</translation> +<translation id="7120762240626567834">VPN qoşulmadıqca Chrome brauzeri və Android trafiki bloklanacaq</translation> <translation id="7120865473764644444">Sinxronizasiya serverine qoşula bilmədi. Yenidən cəhd olunur...</translation> <translation id="7121438501124788993">Tərtibatçı Rejimi</translation> <translation id="7121728544325372695">Ağıllı Tirelər</translation> @@ -5843,6 +5874,7 @@ <translation id="7561196759112975576">Həmişə</translation> <translation id="756445078718366910">Brauzer pəncərəsini açın</translation> <translation id="7564847347806291057">Prosesi bitirin</translation> +<translation id="756503097602602175"><ph name="LINK_BEGIN" />Ayarlardan<ph name="LINK_END" /> daxil olmuş Google Hesablarını idarə edə bilərsiniz. Veb saytlar və tətbiqlərə verdiyiniz icazələr bütün hesablara tətbiq oluna bilər. Saytlar və ya tətbiqlərin hesab məlumatlarınıza giriş etməsini istəmirsinizsə, <ph name="DEVICE_TYPE" /> cihazınıza qonaq kimi daxil ola və ya <ph name="LINK_2_BEGIN" />Anonim pəncərədə<ph name="LINK_2_END" /> vebdə baxış keçirə bilərsiniz.</translation> <translation id="7566118625369982896">Play tətbiq linklərini idarə edin</translation> <translation id="756809126120519699">Chrome datası təmizləndi</translation> <translation id="756876171895853918">Avatarı fərdiləşdirin</translation> @@ -5927,6 +5959,7 @@ <translation id="7654941827281939388">Bu hesab bu kompüterdə artıq istifadə olunur.</translation> <translation id="7655411746932645568">Saytlar ardıcıl portlara qoşulmaq üçün icazə istəyə bilər</translation> <translation id="7658239707568436148">Ləğv edin</translation> +<translation id="7659154729610375585">İstənilən halda Anonim rejimdən çıxılsın?</translation> <translation id="7659297516559011665">Yalnız bu cihazdakı parollar</translation> <translation id="7659584679870740384">Bu cihazı istifadə etmək icazəniz yoxdur. Giriş icazəsi üçün administrator ilə əlaqə saxlayın.</translation> <translation id="7661259717474717992">Saytlara kuki datanı saxlamağa və oxumağa imkan verir</translation> @@ -6404,6 +6437,7 @@ <translation id="8154790740888707867">Fayl yoxdur</translation> <translation id="815491593104042026">Doğrulama alınmadı, çünki (<ph name="BLOCKED_URL" />) güvənsiz URL istifadəsi üçün ayarlanıb. Lütfən, administratorunuz ilə əlaqə saxlayın.</translation> <translation id="8155676038687609779">{COUNT,plural, =0{Oğurlanmış parol tapılmadı}=1{{COUNT} oğurlanmış parol}other{{COUNT} oğurlanmış parol}}</translation> +<translation id="8157248655669507702">eSIM profilini quraşdırmaq üçün mobil datanı aktivləşdirin</translation> <translation id="8157704005178149728">Nəzarət ayarlanır</translation> <translation id="8158117992543756526">Bu cihaz <ph name="MONTH_AND_YEAR" /> tarixində avtomatik proqram təminatı və təhlükəsizlik güncəlləmələrinin icrasını dayandırdı. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation> <translation id="816055135686411707">Xəta Ayarı Sertifikat Etibarlılığı</translation> @@ -6759,6 +6793,7 @@ <translation id="8588866096426746242">Profil statistikasını göstərin</translation> <translation id="8588868914509452556"><ph name="WINDOW_TITLE" /> - Qulaqlıq üçün göstərilən VR</translation> <translation id="8590375307970699841">Avtomatik güncəlləşmələri quraşdırın</translation> +<translation id="8590506940709493916">,</translation> <translation id="8591783563402255548">1 saniyə</translation> <translation id="8592141010104017453">Bildirişlər heç göstərilməsin</translation> <translation id="859246725979739260">Bu saytın məkanınıza girişi blok edilib.</translation> @@ -7028,6 +7063,7 @@ <translation id="8863753581171631212">Linki yeni <ph name="APP" /> tətbiqində açın</translation> <translation id="8864055848767439877"><ph name="TAB_NAME" /> <ph name="APP_NAME" /> ilə paylaşılır</translation> <translation id="8864458770072227512"><ph name="EMAIL" /> bu cihazdan silindi</translation> +<translation id="8865112428068029930">Paylaşılmış kompüter istifadə edirsiniz? Anonim pəncərə açmağa çalışın.</translation> <translation id="8867228703146808825">Versiya təfərrüatlarını mübadilə buferinə kopyalayın</translation> <translation id="8868333925931032127">Demo Rejimi başladılır</translation> <translation id="8868626022555786497">İstifadə edilir</translation> @@ -7085,6 +7121,7 @@ <translation id="8925458182817574960">&Ayarlar</translation> <translation id="8926389886865778422">Daha soruşmayın</translation> <translation id="892706138619340876">Bəzi ayarlar sıfırlandı</translation> +<translation id="8929696694736010839">Yalnız cari Anonim sessiya</translation> <translation id="8930351635855238750">Səhifə yenidən yükləndikdən sonra yeni kuki ayarları qüvvəyə minəcək</translation> <translation id="8930622219860340959">Simsiz</translation> <translation id="8931076093143205651">İstifadə və diaqnostika datasını göndərin. Diaqnostika, cihaz və tətbiqdən istifadə datasını avtomatik olaraq Google'a göndərməklə Android təcrübənizi təkmilləşdirməyə kömək edin. Bu, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Bəzi ümumiləşdirilmiş məlumatlar Google tətbiqlərinə və Android developerləri kimi partnyorlara da kömək edəcək. Bu ayar sahibi tərəfindən tətbiq edilir. Sahibi bu cihaz üzrə diaqnostika və istifadə datasını Google'a göndərməyi seçə bilər. Əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabınızda yadda saxlanıla bilər.</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index 0508b5ee..5e61077 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -509,6 +509,7 @@ <translation id="1553538517812678578">неограничено</translation> <translation id="1555130319947370107">синьо</translation> <translation id="1556537182262721003">Не можа да се премести директорията на разширението в потребителския профил.</translation> +<translation id="1558391695376153246">Раздели „инкогнито“: Затв.</translation> <translation id="155865706765934889">Сензорен панел</translation> <translation id="1562119309884184621">Добавянето на този контакт ще се запомни за следващия път, когато той споделя с вас</translation> <translation id="1563702743503072935">Паролите от профила ви в Google ще бъдат достъпни на това устройство, когато сте влезли в профила си на него</translation> @@ -565,6 +566,7 @@ <translation id="1616206807336925449">Това разширение не изисква специални разрешения.</translation> <translation id="1616298854599875024">Разширението <ph name="IMPORT_NAME" /> не може да бъде импортирано, защото не е споделен модул</translation> <translation id="1617765145568323981">{NUM_FILES,plural, =0{Тези данни се проверяват за съответствие с правилата за сигурност на организацията ви...}=1{Този файл се проверява за съответствие с правилата за сигурност на организацията ви...}other{Тези файлове се проверяват за съответствие с правилата за сигурност на организацията ви...}}</translation> +<translation id="1618102204889321535"><ph name="CURRENT_CHARACTER_COUNT" />/<ph name="MAX_CHARACTER_COUNT" /></translation> <translation id="1618268899808219593">П&омощен център</translation> <translation id="1620307519959413822">Грешна парола. Опитайте отново или кликнете върху „Забравена парола“, за да зададете нова.</translation> <translation id="1620510694547887537">Камера</translation> @@ -625,6 +627,7 @@ <translation id="1668979692599483141">Научете повече за предложенията</translation> <translation id="1670399744444387456">Основни</translation> <translation id="1673137583248014546"><ph name="URL" /> иска да разбере марката и модела на ключа ви за сигурност</translation> +<translation id="1674073353928166410">Отваряне на всички (<ph name="URL_COUNT" />) в прозорец в режим „инкогнито“</translation> <translation id="1677306805708094828">Не може да се добави <ph name="EXTENSION_TYPE_PARAMETER" /></translation> <translation id="1677472565718498478">Оставащо време: <ph name="TIME" /></translation> <translation id="1679068421605151609">Инструменти за програмисти</translation> @@ -772,6 +775,7 @@ <translation id="1817871734039893258">Възстановяване на файл от Microsoft</translation> <translation id="1818007989243628752">Изтриване на паролата за <ph name="USERNAME" /></translation> <translation id="1818913467757368489">Качването на регистрационния файл е в ход.</translation> +<translation id="1819443852740954262">Отваряне на всички в прозорец в режим „инкогнито“</translation> <translation id="1819721979226826163">Докоснете „Известия за прилож.“ > Услуги за Google Play.</translation> <translation id="1820028137326691631">Въведете паролата, предоставена от администратора</translation> <translation id="182139138257690338">автоматични изтегляния</translation> @@ -981,6 +985,7 @@ <translation id="2058456167109518507">Открито е устройство</translation> <translation id="2059913712424898428">Часова зона</translation> <translation id="2060375639911876205">Премахване на потребителския профил на електронната SIM карта</translation> +<translation id="2062354623176996748">Отворете прозорец в режим „инкогнито“, за да използвате мрежата, без да се запазва история на сърфирането ви</translation> <translation id="2065405795449409761">Chrome се контролира от автоматизиран софтуер за тестване.</translation> <translation id="2071393345806050157">Няма локален регистрационен файл.</translation> <translation id="2071692954027939183">Известията бяха блокирани автоматично, защото обикновено не ги разрешавате</translation> @@ -999,12 +1004,14 @@ <translation id="2082187087049518845">Добавяне на раздела към група</translation> <translation id="2082510809738716738">Изберете цвят на темата</translation> <translation id="208586643495776849">Моля, опитайте отново</translation> +<translation id="208634871997892083">Винаги включена VPN</translation> <translation id="2087822576218954668">Отпечатване: <ph name="PRINT_NAME" /></translation> <translation id="2088690981887365033">VPN мрежа</translation> <translation id="208928984520943006">Можете по всяко време да преминете към началния екран, като прекарате пръст нагоре от долната част на екрана.</translation> <translation id="2089566709556890888">Сърфирайте безопасно с Google Chrome</translation> <translation id="2089795179672254991">Извеждане на запитване, когато сайт иска да преглежда текста и изображенията, копирани в буферната памет (препоръчително)</translation> <translation id="2090165459409185032">За да възстановите информацията за профила си, отворете google.bg/accounts/recovery</translation> +<translation id="2090507354966565596">Автоматично се свързва, когато влезете в профила си</translation> <translation id="2090876986345970080">Системни защитни настройки</translation> <translation id="2091887806945687916">Звук</translation> <translation id="2096715839409389970">Изчистване на „бисквитките“ на трети страни</translation> @@ -1116,6 +1123,7 @@ <translation id="2200094388063410062">Имейл</translation> <translation id="2200356397587687044">Chrome се нуждае от разрешение, за да продължи</translation> <translation id="2202898655984161076">При изреждането на принтерите възникна проблем. Възможно е някои от тях да не са регистрирани успешно с/ъс <ph name="CLOUD_PRINT_NAME" />.</translation> +<translation id="2203088913459920044">За името могат да се използват букви, цифри и специални знаци</translation> <translation id="2204034823255629767">Четене и промяна на всичко, което въвеждате</translation> <translation id="220858061631308971">Моля, въведете този ПИН код на „<ph name="DEVICE_NAME" />“:</translation> <translation id="2212565012507486665">Разрешаване на „бисквитките“</translation> @@ -1654,6 +1662,7 @@ <translation id="2792290659606763004">Да се премахнат ли приложенията за Android?</translation> <translation id="2792465461386711506">Включете функцията за синхронизиране в Chrome, за да прегледате скорошните раздели на браузъра от телефона си</translation> <translation id="2794233252405721443">Сайтът е блокиран</translation> +<translation id="2794522004398861033">Свържете се с Wi-Fi или Ethernet, за да настроите електронна SIM карта</translation> <translation id="2795716239552913152">Сайтовете обикновено използват местоположението ви за осигуряване на подходящи функции или информация, като например местни новини или магазини в района</translation> <translation id="2796424461616874739">Времето за изчакване за удостоверяване изтече при установяването на връзка с/ъс <ph name="DEVICE_NAME" />.</translation> <translation id="2796740370559399562">„Бисквитките“ да останат разрешени</translation> @@ -1871,6 +1880,7 @@ <translation id="3016641847947582299">Компонентът е актуализиран</translation> <translation id="3017079585324758401">Фон</translation> <translation id="3019285239893817657">Бутон за подстраница</translation> +<translation id="3019595674945299805">VPN услуга</translation> <translation id="3020183492814296499">Клавишни комбинации</translation> <translation id="3020990233660977256">Сериен номер: <ph name="SERIAL_NUMBER" /></translation> <translation id="3021065318976393105">На батерия</translation> @@ -1990,6 +2000,7 @@ <translation id="3159493096109238499">бежово</translation> <translation id="3159978855457658359">Редактиране на името на устройството</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (с хардуерно съхраняване)</translation> +<translation id="3160928651883997588">Предпочитания за VPN</translation> <translation id="3161522574479303604">Всички езици</translation> <translation id="3162853326462195145">Училищен профил</translation> <translation id="3162899666601560689">Сайтовете могат да използват „бисквитки“ с цел по-добро сърфиране, например за да оставате в профила си или за да запомнят артикулите в пазарската ви кошница</translation> @@ -2158,6 +2169,7 @@ <translation id="3380365263193509176">Неизвестна грешка</translation> <translation id="3382073616108123819">Ами сега! Системата не успя да определи идентификаторите за това устройство.</translation> <translation id="3382200254148930874">Контролирането се прекратява...</translation> +<translation id="338323348408199233">Блокиране на трафика без VPN</translation> <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Разделител</translation> <translation id="338691029516748599">Мрежа <ph name="NETWORK_INDEX" /> от <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, сила на сигнала <ph name="SIGNAL_STRENGTH" />%, управлява се от администратора ви, свързване</translation> @@ -2610,6 +2622,7 @@ <translation id="3846116211488856547">Получете инструменти за разработка на уебсайтове, приложения за Android и др. При инсталирането на Linux ще бъдат изтеглени <ph name="DOWNLOAD_SIZE" /> данни.</translation> <translation id="3847319713229060696">Помогнете за всеобщото подобряване на сигурността в мрежата</translation> +<translation id="3848547754896969219">Отваряне в прозорец в режим „&инкогнито“</translation> <translation id="385051799172605136">Назад</translation> <translation id="3851428669031642514">Зареждане на опасните скриптове</translation> <translation id="3854599674806204102">Изберете опция</translation> @@ -2979,6 +2992,7 @@ <translation id="4275830172053184480">Рестартиране на устройството ви</translation> <translation id="4278101229438943600">Асистент е в готовност</translation> <translation id="4278390842282768270">Разрешено</translation> +<translation id="4279129444466079448">На това устройство можете да инсталирате до <ph name="PROFILE_LIMIT" /> профила на електронната SIM карта. За да добавите друг такъв профил, първо премахнете съществуващ.</translation> <translation id="4281844954008187215">Условия за ползване</translation> <translation id="4282196459431406533">Функцията Smart Lock е включена</translation> <translation id="4285418559658561636">Актуализиране на паролата</translation> @@ -2994,6 +3008,7 @@ <translation id="4295979599050707005">Моля, влезте отново, за да потвърдите, че профилът ви <ph name="USER_EMAIL" /> може да се използва с уебсайтове, приложения и разширения в Chrome и Google Play. Имате възможност също да го премахнете. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation> <translation id="4297219207642690536">Рестартиране и нулиране</translation> <translation id="4297813521149011456">Завъртане на дисплея</translation> +<translation id="4299022904780065004">Нов прозорец в режим „&инкогнито“</translation> <translation id="4301671483919369635">Тази страница има разрешение да редактира файлове</translation> <translation id="4303079906735388947">Настройте нов ПИН код за ключа си за сигурност</translation> <translation id="4305402730127028764">Копиране на <ph name="DEVICE_NAME" /></translation> @@ -3305,6 +3320,7 @@ <translation id="4641539339823703554">Chrome не успя да зададе системния час. Моля, проверете го по-долу и го коригирайте при нужда.</translation> <translation id="4642769377300286600">Мобилният потребителски профил се инсталира, мрежа <ph name="NETWORK_INDEX" /> от <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" /></translation> <translation id="4643612240819915418">&Отваряне на видеоклипа в нов раздел</translation> +<translation id="4644205769234414680">Разрешаване в режим „инкогнито“</translation> <translation id="4645676300727003670">&Запазване</translation> <translation id="4646675363240786305">Портове</translation> <translation id="4647090755847581616">&Затваряне на раздела</translation> @@ -3461,6 +3477,7 @@ <translation id="4838836835474292213">Разрешен е достъп за четене на съдържанието на буферната памет</translation> <translation id="4838907349371614303">Паролата е актуализирана</translation> <translation id="4839303808932127586">&Запазване на видеоклипа като...</translation> +<translation id="4840096453115567876">Да се излезе ли от режим „инкогнито“ въпреки това?</translation> <translation id="4842976633412754305">Тази страница опитва да зареди скриптове от неудостоверени източници.</translation> <translation id="4844333629810439236">Други клавиатури</translation> <translation id="4846680374085650406">Следвате препоръката на администратора за тази настройка.</translation> @@ -3578,6 +3595,7 @@ <translation id="4964455510556214366">Подредба</translation> <translation id="496446150016900060">Синхронизирайте Wi-Fi мрежите с телефона си</translation> <translation id="4965808351167763748">Наистина ли искате да настроите това устройство да изпълнява Hangouts Meet?</translation> +<translation id="4966972803217407697">Сърфирате в режим „инкогнито“</translation> <translation id="496888482094675990">Приложението Файлове предоставя бърз достъп до файловете, които сте запазили в Google Диск, във външно хранилище или на устройството си с Chrome OS.</translation> <translation id="4971412780836297815">Отваряне след приключване</translation> <translation id="4971735654804503942">По-бърза, изпреварваща защита срещу опасни уебсайтове, изтеглени файлове и разширения. Предупреждава ви за разкрити пароли. За да действа, до Google трябва да се изпращат данни за сърфирането.</translation> @@ -3607,6 +3625,7 @@ <translation id="5005498671520578047">Копиране на паролата</translation> <translation id="5006218871145547804">Отстраняване на грешки в приложения за Android през ADB за Crostini</translation> <translation id="5007392906805964215">Преглед</translation> +<translation id="50080882645628821">Премахване на профила</translation> <translation id="5008936837313706385">Име на активността</translation> <translation id="5010043101506446253">Сертифициращ орган</translation> <translation id="5015344424288992913">Получава се разрешение от прокси сървъра...</translation> @@ -3788,6 +3807,7 @@ <translation id="5213114823401215820">Повторно отваряне на затворената група</translation> <translation id="5213481667492808996">Услугата ви за данни „<ph name="NAME" />“ е готова за използване</translation> <translation id="5213891612754844763">Показване на настройките за прокси сървъра</translation> +<translation id="5214249693262842685">Докато сте в режим „инкогнито“, сайтовете не могат да използват „бисквитките“ ви, за да следят активността ви при сърфиране в различни сайтове, например с цел персонализиране на реклами. Функциите в някои сайтове може да не работят правилно.</translation> <translation id="5215502535566372932">Изберете държава</translation> <translation id="521582610500777512">Снимката бе отхвърлена</translation> <translation id="5222403284441421673">Незащитеното изтегляне е блокирано</translation> @@ -3899,6 +3919,7 @@ <translation id="5336688142483283574">Тази страница също така ще бъде премахната от историята ви и от записите за активността ви в <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Инсталирано от трета страна.</translation> <translation id="5337926771328966926">Настоящото име на устройството е <ph name="DEVICE_NAME" /></translation> +<translation id="5338338064218053691">Можете да сърфирате частно посредством прозорец в режим „инкогнито“</translation> <translation id="5338503421962489998">Локално хранилище</translation> <translation id="5340638867532133571">Разрешаване на сайтовете да инсталират приложения за обработване на плащания (препоръчително)</translation> <translation id="5341793073192892252">Следните „бисквитки“ бяха блокирани („бисквитките“ на трети страни се блокират без изключение)</translation> @@ -3922,6 +3943,7 @@ <translation id="536638840841140142">Няма</translation> <translation id="5368720394188453070">Телефонът ви е заключен. Отключете го, за да влезете.</translation> <translation id="5368779022775404937">Влизане в домейна <ph name="REALM" /></translation> +<translation id="536882527576164740">{0,plural, =1{„Инкогнито“}other{„Инкогнито“ (#)}}</translation> <translation id="5369491905435686894">Активиране на ускоряването на мишката</translation> <translation id="5369694795837229225">Настройване на Linux средата на програмиране</translation> <translation id="5370819323174483825">&Презареждане</translation> @@ -4062,6 +4084,7 @@ <translation id="5521078259930077036">Това ли е очакваната от вас начална страница?</translation> <translation id="5522156646677899028">Това разширение съдържа сериозна уязвимост в сигурността.</translation> <translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Разширение бе инсталирано от администратора ви}other{# разширения бяха инсталирани от администратора ви}}</translation> +<translation id="5523558474028191231">За името могат да се използват букви, цифри и специални знаци, като то не бива да е по-дълго от <ph name="MAX_CHARACTER_COUNT" /> знака</translation> <translation id="5526701598901867718">Всички (несигурни)</translation> <translation id="5526745900034778153">Влезте отново в профила си, за да възобновите синхронизирането</translation> <translation id="5527463195266282916">Бе направен опит за понижение на разширението.</translation> @@ -4454,6 +4477,7 @@ <translation id="5972826969634861500">Стартиране на <ph name="PRODUCT_NAME" /></translation> <translation id="5973041996755340290"><ph name="CLIENT_NAME" /> започна да отстранява грешките в този браузър</translation> <translation id="5973605538625120605">Промяна на ПИН</translation> +<translation id="5975056890546437204">{COUNT,plural, =0{Отваряне на всички в прозорец в режим „&инкогнито“}=1{Отваряне в прозорец в режим „&инкогнито“}other{Отваряне на всички ({COUNT}) в прозорец в режим „&инкогнито“}}</translation> <translation id="5975792506968920132">Процент на зареждане на батерията</translation> <translation id="5976160379964388480">Други</translation> <translation id="5978277834170881274">&Използване на основната проверка на правописа</translation> @@ -5182,6 +5206,7 @@ <translation id="680572642341004180">Активиране на проследяването на RLZ в <ph name="SHORT_PRODUCT_OS_NAME" />.</translation> <translation id="6808039367995747522">За да продължите, поставете и докоснете ключа си за сигурност</translation> <translation id="6808193438228982088">Лисица</translation> +<translation id="6809470175540814047">Отваряне на прозорец в режим „инкогнито“</translation> <translation id="6810613314571580006">Автоматично влизане в уебсайтове посредством съхраняваните идентификационни данни. Когато функцията е деактивирана, ще се изисква потвърждение преди всяко влизане в профил в уебсайт.</translation> <translation id="6810768462515084623">Ами сега! Изглежда, че паролата ви е изтекла. Моля, подновете я на друго устройство и опитайте отново.</translation> <translation id="6811034713472274749">Страницата е готова за преглед</translation> @@ -5208,6 +5233,7 @@ <translation id="6831043979455480757">Превод</translation> <translation id="6833479554815567477">Разделът бе премахнат от групата „<ph name="GROUP_NAME" />“ – <ph name="GROUP_CONTENTS" /></translation> <translation id="683373380308365518">Преминете към интелигентен и сигурен браузър</translation> +<translation id="683540480453879381">Отваря файловете във формат <ph name="FILE_EXTENSIONS" /></translation> <translation id="6835762382653651563">Моля, свържете се с интернет, за да актуализирате устройството си <ph name="DEVICE_TYPE" />.</translation> <translation id="6838034009068684089">Извеждане на запитване, когато сайт иска да отваря и разполага прозорци на екраните ви (препоръчително)</translation> <translation id="6839225236531462745">Грешка при изтриване на сертификат</translation> @@ -5243,6 +5269,7 @@ <translation id="6865708901122695652">Регистрационни файлове за събития с WebRTC (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> <translation id="686609795364435700">Тихо</translation> <translation id="686664946474413495">Цветна температура</translation> +<translation id="6867400383614725881">Нов раздел „инкогнито“</translation> <translation id="6868934826811377550">Преглед на подробностите</translation> <translation id="6871644448911473373">OCSP респондер: <ph name="LOCATION" /></translation> <translation id="6872781471649843364">Въведената от вас парола бе отхвърлена от сървъра.</translation> @@ -5343,6 +5370,7 @@ <translation id="6979044105893951891">Стартиране и прекратяване на управлявани сесии като гост</translation> <translation id="6979440798594660689">Заглушаване (стандартно)</translation> <translation id="6979737339423435258">За цялото време</translation> +<translation id="6981553172137913845">За да сърфирате частно, кликнете върху иконата с точки и отворете прозорец в режим „инкогнито“</translation> <translation id="6981982820502123353">Достъпност</translation> <translation id="6983507711977005608">Прекратяване на връзката с мрежата за незабавен тетъринг</translation> <translation id="6983783921975806247">Регистриран ИДО</translation> @@ -5418,6 +5446,7 @@ <translation id="7053983685419859001">Блокиране</translation> <translation id="7055152154916055070">Блокирано бе пренасочване:</translation> <translation id="7055451306017383754">Прекратяването на споделянето не бе успешно, защото тази папка се използва от приложение. Споделянето ѝ ще бъде прекратено при следващото изключване на Parallels Desktop.</translation> +<translation id="7056418393177503237">{0,plural, =1{„Инкогнито“}other{# отворени прозореца в режим „инкогнито“}}</translation> <translation id="7056526158851679338">&Инспектиране на устройствата</translation> <translation id="7057184853669165321">{NUM_MINS,plural, =1{Проверката на безопасността бе изпълнена преди 1 минута}other{Проверката на безопасността бе изпълнена преди {NUM_MINS} минути}}</translation> <translation id="7057767408836081338">Получаването на данни от приложението не бе успешно. Все пак се опитваме да го стартираме...</translation> @@ -5474,6 +5503,7 @@ <translation id="7117247127439884114">Влизане отново...</translation> <translation id="711840821796638741">Показване на управляваните отметки</translation> <translation id="711902386174337313">Четене на списъка с устройства, на които сте влезли в профила си</translation> +<translation id="7120762240626567834">Трафикът в браузъра Chrome и Android ще бъде блокиран, освен ако не е свързана VPN</translation> <translation id="7120865473764644444">Не можа да се установи връзка със синхронизиращия сървър. Извършва се нов опит...</translation> <translation id="7121438501124788993">Режим за програмисти</translation> <translation id="7121728544325372695">Smart Dashes</translation> @@ -5853,6 +5883,7 @@ <translation id="7561196759112975576">Винаги</translation> <translation id="756445078718366910">Отваряне на прозореца на браузъра</translation> <translation id="7564847347806291057">Прекратяване на процеса</translation> +<translation id="756503097602602175">Можете да управлявате профилите в Google, в които сте влезли, от <ph name="LINK_BEGIN" />настройките<ph name="LINK_END" />. Разрешенията, които сте предоставили на уебсайтове и приложения, може да важат за всички профили. Ако не искате сайтове или приложения да имат достъп до информацията в профила ви, можете да влезете в своя <ph name="DEVICE_TYPE" /> като гост или да сърфирате в мрежата в <ph name="LINK_2_BEGIN" />прозорец в режим „инкогнито“<ph name="LINK_2_END" />.</translation> <translation id="7566118625369982896">Управление на връзките към приложения в Google Play</translation> <translation id="756809126120519699">Данните в Chrome са изчистени</translation> <translation id="756876171895853918">Персонализиране на аватара</translation> @@ -5937,6 +5968,7 @@ <translation id="7654941827281939388">Профилът вече се използва на този компютър.</translation> <translation id="7655411746932645568">Сайтовете могат да извеждат запитвания за свързване със серийни портове</translation> <translation id="7658239707568436148">Отказ</translation> +<translation id="7659154729610375585">Да се излезе ли от режим „инкогнито“ въпреки това?</translation> <translation id="7659297516559011665">Пароли само на това устройство</translation> <translation id="7659584679870740384">Не сте упълномощени да използвате това устройство. За разрешение за вход се свържете с администратора.</translation> <translation id="7661259717474717992">Разрешаване на сайтовете да запазват и четат данни в „бисквитки“</translation> @@ -6416,6 +6448,7 @@ <translation id="8154790740888707867">Няма файл</translation> <translation id="815491593104042026">Ами сега! Удостоверяването не бе успешно, защото конфигурираният за целта URL адрес (<ph name="BLOCKED_URL" />) не е защитен. Моля, свържете се с администратора си.</translation> <translation id="8155676038687609779">{COUNT,plural, =0{Няма намерени компрометирани пароли}=1{Открита е {COUNT} компрометирана парола}other{Открити са {COUNT} компрометирани пароли}}</translation> +<translation id="8157248655669507702">Активирайте мобилните данни, за да инсталирате профил на електронната SIM карта</translation> <translation id="8157704005178149728">Контролирането се настройва</translation> <translation id="8158117992543756526">Това устройство не получава автоматични актуализации на софтуера и сигурността от <ph name="MONTH_AND_YEAR" />. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation> <translation id="816055135686411707">При задаването на доверие за сертификата възникна грешка</translation> @@ -6771,6 +6804,7 @@ <translation id="8588866096426746242">Статистика за потребителския профил</translation> <translation id="8588868914509452556"><ph name="WINDOW_TITLE" /> – предава съдържание във VR към очила</translation> <translation id="8590375307970699841">Настройка за автоматични актуализации</translation> +<translation id="8590506940709493916">,</translation> <translation id="8591783563402255548">1 секунда</translation> <translation id="8592141010104017453">Известията да не се показват въобще</translation> <translation id="859246725979739260">Достъпът до местоположението ви е блокиран за този сайт.</translation> @@ -7042,6 +7076,7 @@ <translation id="8863753581171631212">Отваряне на връзката в нов прозорец на <ph name="APP" /></translation> <translation id="8864055848767439877"><ph name="TAB_NAME" /> се споделя с(ъс) <ph name="APP_NAME" /></translation> <translation id="8864458770072227512">Профилът <ph name="EMAIL" /> бе премахнат от това устройство</translation> +<translation id="8865112428068029930">Използвате общ компютър? Отворете прозорец в режим „инкогнито“.</translation> <translation id="8867228703146808825">Копиране на подробностите за компилацията в буферната памет</translation> <translation id="8868333925931032127">Демонстрационният режим се стартира</translation> <translation id="8868626022555786497">Използвано място</translation> @@ -7099,6 +7134,7 @@ <translation id="8925458182817574960">&Настройки</translation> <translation id="8926389886865778422">Без повторно питане</translation> <translation id="892706138619340876">Някои настройки бяха нулирани</translation> +<translation id="8929696694736010839">Само за текущата сесия в режим „инкогнито“</translation> <translation id="8930351635855238750">Новите настройки за „бисквитките“ ще влязат в сила след презареждането на страницата</translation> <translation id="8930622219860340959">Безжична</translation> <translation id="8931076093143205651">Изпращане на данни за употребата и диагностиката. Помогнете за подобряването на работата си с Android, като автоматично изпращате до Google диагностична информация и данни за употребата на устройството и приложенията. Това ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Тази настройка е наложена от собственика. Той може да избере до Google да се изпращат диагностична информация и данни за употребата на това устройство. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за вас, тези данни може да се запазват в профила ви в Google.</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index d8f9b2f..8375ea5 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -513,6 +513,7 @@ <translation id="1553538517812678578">walang limitasyon</translation> <translation id="1555130319947370107">Asul</translation> <translation id="1556537182262721003">Hindi maililipat ang direktoryo ng extension papunta sa profile.</translation> +<translation id="1558391695376153246">Isara ang mga Incognito tab</translation> <translation id="155865706765934889">Touchpad</translation> <translation id="1562119309884184621">Kapag idinagdag ang contact na ito, makikilala siya sa susunod na magbahagi siya</translation> <translation id="1563702743503072935">Magiging available din sa device na ito ang mga password mula sa iyong Google Account habang naka-sign in ka</translation> @@ -569,6 +570,7 @@ <translation id="1616206807336925449">Hindi nangangailangan ang extension na ito ng mga espesyal na pahintulot.</translation> <translation id="1616298854599875024">Hindi ma-import ang extension na "<ph name="IMPORT_NAME" />" dahil hindi ito nakabahaging module</translation> <translation id="1617765145568323981">{NUM_FILES,plural, =0{Sinusuri ang data na ito gamit ang mga patakaran sa seguridad ng iyong organisasyon...}=1{Sinusuri ang file na ito gamit ang mga patakaran sa seguridad ng iyong organisasyon...}one{Sinusuri ang mga file na ito gamit ang mga patakaran sa seguridad ng iyong organisasyon...}other{Sinusuri ang mga file na ito gamit ang mga patakaran sa seguridad ng iyong organisasyon...}}</translation> +<translation id="1618102204889321535"><ph name="CURRENT_CHARACTER_COUNT" />/<ph name="MAX_CHARACTER_COUNT" /></translation> <translation id="1618268899808219593">Help Center</translation> <translation id="1620307519959413822">Mali ang password. Subukan ulit o i-click ang Nakalimutan ang password para ma-reset ito.</translation> <translation id="1620510694547887537">Camera</translation> @@ -629,6 +631,7 @@ <translation id="1668979692599483141">Matuto tungkol sa mga suhestyon</translation> <translation id="1670399744444387456">Pangunahin</translation> <translation id="1673137583248014546">Gustong tingnan ng <ph name="URL" /> ang manufacturer at modelo ng iyong Security Key</translation> +<translation id="1674073353928166410">Buksan lahat (<ph name="URL_COUNT" />) sa Incognito window</translation> <translation id="1677306805708094828">Hindi maidagdag ang <ph name="EXTENSION_TYPE_PARAMETER" /></translation> <translation id="1677472565718498478"><ph name="TIME" /> na lang ang natitira</translation> <translation id="1679068421605151609">Mga Tool ng Developer</translation> @@ -776,6 +779,7 @@ <translation id="1817871734039893258">Microsoft File Recovery</translation> <translation id="1818007989243628752">I-delete ang password para sa <ph name="USERNAME" /></translation> <translation id="1818913467757368489">I-log ang isinasagawang pag-upload.</translation> +<translation id="1819443852740954262">Buksan lahat sa Incognito window</translation> <translation id="1819721979226826163">I-tap ang Mga notification ng app > Mga serbisyo ng Google Play.</translation> <translation id="1820028137326691631">Maglagay ng password na ibinigay ng admin</translation> <translation id="182139138257690338">mga awtomatikong pag-download</translation> @@ -985,6 +989,7 @@ <translation id="2058456167109518507">Na-detect ang device</translation> <translation id="2059913712424898428">Time zone</translation> <translation id="2060375639911876205">Alisin ang profile ng eSIM</translation> +<translation id="2062354623176996748">Gamitin ang web nang hindi nase-save ang iyong history ng pag-browse gamit ang isang Incognito window</translation> <translation id="2065405795449409761">Kinokontrol ang Chrome ng naka-automate na pansubok na software.</translation> <translation id="2071393345806050157">Walang lokal na log file.</translation> <translation id="2071692954027939183">Awtomatikong na-block ang mga notification dahil karaniwang hindi mo pinapayagan ang mga ito</translation> @@ -1003,12 +1008,14 @@ <translation id="2082187087049518845">Pagpangkatin ang Tab</translation> <translation id="2082510809738716738">Pumili ng kulay ng tema</translation> <translation id="208586643495776849">Pakisubukang muli</translation> +<translation id="208634871997892083">Always-on VPN</translation> <translation id="2087822576218954668">Print: <ph name="PRINT_NAME" /></translation> <translation id="2088690981887365033">VPN network</translation> <translation id="208928984520943006">Para pumunta sa Home screen anumang oras, mag-swipe pataas mula sa ibaba.</translation> <translation id="2089566709556890888">Mag-browse nang ligtas gamit ang Google Chrome</translation> <translation id="2089795179672254991">Magtanong kapag gusto ng site na makita ang text at mga larawang kinopya sa clipboard (inirerekomenda)</translation> <translation id="2090165459409185032">Upang i-recover ang impormasyon ng iyong account, pumunta sa: google.com/accounts/recovery</translation> +<translation id="2090507354966565596">Awtomatikong kumonekta kapag nag-log in ka</translation> <translation id="2090876986345970080">Setting ng seguridad ng system</translation> <translation id="2091887806945687916">Tunog</translation> <translation id="2096715839409389970">I-clear ang cookies ng third party</translation> @@ -1120,6 +1127,7 @@ <translation id="2200094388063410062">I-email</translation> <translation id="2200356397587687044">Kailangan ng Chrome ng pahintulot upang magpatuloy</translation> <translation id="2202898655984161076">Nagkaproblema sa paglilista ng mga printer. Maaaring hindi matagumpay na nairehistro ang ilan sa iyong mga printer <ph name="CLOUD_PRINT_NAME" />.</translation> +<translation id="2203088913459920044">Puwedeng gumamit ang pangalan ng mga titik, numero, at special character</translation> <translation id="2204034823255629767">Basahin at baguhin ang anumang tina-type mo</translation> <translation id="220858061631308971">Pakilagay ang PIN code na ito sa "<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">Payagan ang cookies</translation> @@ -1658,6 +1666,7 @@ <translation id="2792290659606763004">Alisin ang mga Android app?</translation> <translation id="2792465461386711506">I-on ang Chrome Sync para matingnan ang mga kamakailang tab ng Chrome mula sa iyong telepono</translation> <translation id="2794233252405721443">Naka-block ang site</translation> +<translation id="2794522004398861033">Kumonekta sa Wi-Fi o Ethernet para mag-set up ng eSIM</translation> <translation id="2795716239552913152">Karaniwang ginagamit ng mga site ang iyong lokasyon para sa mga nauugnay na feature o impormasyon, gaya ng lokal na balita o mga kalapit na tindahan</translation> <translation id="2796424461616874739">Nag-timeout ang pagpapatunay habang kumokonekta sa "<ph name="DEVICE_NAME" />".</translation> <translation id="2796740370559399562">Patuloy na pahintulutan ang cookies</translation> @@ -1875,6 +1884,7 @@ <translation id="3016641847947582299">Na-update ang bahagi</translation> <translation id="3017079585324758401">Background</translation> <translation id="3019285239893817657">Button ng subpage</translation> +<translation id="3019595674945299805">Serbisyo ng VPN</translation> <translation id="3020183492814296499">Mga Shortcut</translation> <translation id="3020990233660977256">Serial Number: <ph name="SERIAL_NUMBER" /></translation> <translation id="3021065318976393105">Habang ginagamit ang baterya</translation> @@ -1994,6 +2004,7 @@ <translation id="3159493096109238499">Beige</translation> <translation id="3159978855457658359">I-edit ang pangalan ng device</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (hardware-backed)</translation> +<translation id="3160928651883997588">Mga kagustuhan sa VPN</translation> <translation id="3161522574479303604">Lahat ng wika</translation> <translation id="3162853326462195145">Pampaaralang account</translation> <translation id="3162899666601560689">Puwedeng gumamit ng cookies ang mga site para pahusayin ang iyong karanasan sa pag-browse, halimbawa, para mapanatili kang naka-sign in o para maalala ang mga item sa shopping cart mo</translation> @@ -2162,6 +2173,7 @@ <translation id="3380365263193509176">Hindi kilalang error</translation> <translation id="3382073616108123819">Oops! Hindi nakatukoy ang system ng mga identifier ng device para sa device na ito.</translation> <translation id="3382200254148930874">Inihihinto ang pagsubaybay...</translation> +<translation id="338323348408199233">I-block ang trapiko nang walang VPN</translation> <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">Separator</translation> <translation id="338691029516748599">Network <ph name="NETWORK_INDEX" /> sa <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, Lakas ng Signal <ph name="SIGNAL_STRENGTH" />%, Pinapamahalaan ng iyong Administrator, Kumonekta</translation> @@ -2613,6 +2625,7 @@ <translation id="3844888638014364087">Naglagay ng emoji</translation> <translation id="3846116211488856547">Kumuha ng mga tool sa paggawa ng mga website, Android app, at higit pa. Kapag na-install ang Linux, mada-download ang <ph name="DOWNLOAD_SIZE" /> ng data.</translation> <translation id="3847319713229060696">Tumulong na pahusayin ang seguridad sa web para sa lahat</translation> +<translation id="3848547754896969219">Buksan lahat sa &Incognito window</translation> <translation id="385051799172605136">Bumalik</translation> <translation id="3851428669031642514">I-load ang mga hindi ligtas na script</translation> <translation id="3854599674806204102">Pumili ng opsyon</translation> @@ -2982,6 +2995,7 @@ <translation id="4275830172053184480">I-restart ang iyong device</translation> <translation id="4278101229438943600">Handa na ang iyong Assistant</translation> <translation id="4278390842282768270">Pinapayagan</translation> +<translation id="4279129444466079448">Puwede kang mag-install nang hanggang <ph name="PROFILE_LIMIT" /> (na) profile ng eSIM sa device na ito. Para magdagdag ng isa pang profile, mag-alis muna ng dati nang profile.</translation> <translation id="4281844954008187215">Mga Tuntunin ng Serbisyo</translation> <translation id="4282196459431406533">Naka-on ang Smart Lock</translation> <translation id="4285418559658561636">I-update ang Password</translation> @@ -2997,6 +3011,7 @@ <translation id="4295979599050707005">Mag-sign in ulit para kumpirmahing ang iyong account na <ph name="USER_EMAIL" /> ay magagamit sa mga website, app, at extension sa Chrome at Google Play. Puwede mo ring alisin ang account na ito. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation> <translation id="4297219207642690536">I-restart at i-reset</translation> <translation id="4297813521149011456">Pag-rotate ng display</translation> +<translation id="4299022904780065004">Bagong &Incognito window</translation> <translation id="4301671483919369635">Pinapayagan ang page na ito na mag-edit ng mga file</translation> <translation id="4303079906735388947">Mag-set up ng bagong PIN para sa iyong security key</translation> <translation id="4305402730127028764">Kopyahin sa <ph name="DEVICE_NAME" /></translation> @@ -3308,6 +3323,7 @@ <translation id="4641539339823703554">Hindi nagawang itakda ng Chrome ang oras sa system. Pakitingnan ang oras sa ibaba at iwasto ito kung kinakailangan.</translation> <translation id="4642769377300286600">Ini-install ang profile ng mobile, Network <ph name="NETWORK_INDEX" /> sa <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" /></translation> <translation id="4643612240819915418">&Buksan ang Video sa Bagong Tab</translation> +<translation id="4644205769234414680">Payagan sa Incognito</translation> <translation id="4645676300727003670">&Panatilihin</translation> <translation id="4646675363240786305">Mga Port</translation> <translation id="4647090755847581616">&Isara ang Tab</translation> @@ -3464,6 +3480,7 @@ <translation id="4838836835474292213">Pinapayagan ang read access sa clipboard</translation> <translation id="4838907349371614303">Na-update ang password</translation> <translation id="4839303808932127586">I-sa&ve ang video bilang...</translation> +<translation id="4840096453115567876">Umalis pa rin sa Incognito mode?</translation> <translation id="4842976633412754305">Sinusubukan ng page na ito na mag-load ng mga script mula sa mga hindi napatunayang pinagmulan.</translation> <translation id="4844333629810439236">Iba pang mga keyboard</translation> <translation id="4846680374085650406">Sinusunod mo ang rekomendasyon ng administrator para sa setting na ito.</translation> @@ -3581,6 +3598,7 @@ <translation id="4964455510556214366">Kaayusan</translation> <translation id="496446150016900060">Mag-sync ng mga Wi-Fi network sa iyong telepono</translation> <translation id="4965808351167763748">Sigurado ka bang gusto mong i-set up ang device na ito upang patakbuhin ang Hangouts Meet?</translation> +<translation id="4966972803217407697">Incognito ka</translation> <translation id="496888482094675990">Nagbibigay ang Files app ng mabilisang access sa mga file na nai-save mo sa Google Drive, external na storage o sa iyong Chrome OS device.</translation> <translation id="4971412780836297815">Buksan kapag tapos na</translation> <translation id="4971735654804503942">Mas mabilis at proactive na proteksyon laban sa mga mapanganib na website, download, at extension. Binibigyan ka ng babala tungkol sa mga paglabag sa password. Kinakailangang magpadala ng data mula sa pag-browse sa Google.</translation> @@ -3610,6 +3628,7 @@ <translation id="5005498671520578047">Kopyahin password</translation> <translation id="5006218871145547804">ADB ng Android app sa Crostini</translation> <translation id="5007392906805964215">Suriin</translation> +<translation id="50080882645628821">Alisin ang Profile</translation> <translation id="5008936837313706385">Pangalan ng Aktibidad</translation> <translation id="5010043101506446253">Awtoridad ng certificate</translation> <translation id="5015344424288992913">Nilulutas ang proxy...</translation> @@ -3791,6 +3810,7 @@ <translation id="5213114823401215820">Buksan ulit ang nakasarang grupo</translation> <translation id="5213481667492808996">Magagamit na ang iyong serbisyo ng data ng '<ph name="NAME" />'</translation> <translation id="5213891612754844763">Ipakita ang mga setting ng proxy</translation> +<translation id="5214249693262842685">Habang nasa Incognito, hindi magagamit ng mga site ang cookies mo para makita ang iyong aktibidad sa pag-browse sa iba't ibang site, halimbawa, para mag-personalize ng mga ad. Posibleng masira ang mga feature sa ilang site.</translation> <translation id="5215502535566372932">Pumili ng bansa</translation> <translation id="521582610500777512">Na-discard ang larawan</translation> <translation id="5222403284441421673">Na-block ang hindi secure na pag-download</translation> @@ -3902,6 +3922,7 @@ <translation id="5336688142483283574">Aalisin din ang page na ito sa iyong history at aktibidad sa <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Na-install ng third party.</translation> <translation id="5337926771328966926">Ang <ph name="DEVICE_NAME" /> ang kasalukuyang device</translation> +<translation id="5338338064218053691">Maaari kang mag-browse nang pribado gamit ang isang Incognito window</translation> <translation id="5338503421962489998">Lokal na storage</translation> <translation id="5340638867532133571">Payagan ang mga site na mag-install ng mga tagapangasiwa ng pagbabayad (inirerekomenda)</translation> <translation id="5341793073192892252">Na-block ang sumusunod na cookies (bina-block ang third-party na cookies nang walang pagbubukod)</translation> @@ -3925,6 +3946,7 @@ <translation id="536638840841140142">Wala</translation> <translation id="5368720394188453070">Naka-lock ang iyong telepono. I-unlock ito upang makapasok.</translation> <translation id="5368779022775404937">Mag-sign in sa <ph name="REALM" /></translation> +<translation id="536882527576164740">{0,plural, =1{Incognito}one{Incognito (#)}other{Incognito (#)}}</translation> <translation id="5369491905435686894">I-enable ang pag-accelerate ng mouse</translation> <translation id="5369694795837229225">I-set up ang environment sa pag-develop ng Linux</translation> <translation id="5370819323174483825">I-&reload</translation> @@ -4065,6 +4087,7 @@ <translation id="5521078259930077036">Ito ba ang inaasahan mong home page?</translation> <translation id="5522156646677899028">Naglalaman ang extension na ito ng isang malubhang kahinaan sa seguridad.</translation> <translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Isang extension ang na-install ng iyong administrator}one{# extension ang na-install ng iyong administrator}other{# na extension ang na-install ng iyong administrator}}</translation> +<translation id="5523558474028191231">Puwedeng gumamit ang pangalan ng mga titik, numero, at special character, at dapat na <ph name="MAX_CHARACTER_COUNT" /> (na) character o mas kaunti</translation> <translation id="5526701598901867718">Lahat (hindi secure)</translation> <translation id="5526745900034778153">Mag-sign in muli para ituloy ang pag-sync</translation> <translation id="5527463195266282916">Tinangkang i-downgrade ang extension.</translation> @@ -4456,6 +4479,7 @@ <translation id="5972826969634861500">Simulan ang <ph name="PRODUCT_NAME" /></translation> <translation id="5973041996755340290">Sinimulang i-debug ng "<ph name="CLIENT_NAME" />" ang browser na ito</translation> <translation id="5973605538625120605">Magpalit ng PIN</translation> +<translation id="5975056890546437204">{COUNT,plural, =0{Buksan lahat sa &Incognito window}=1{Buksan lahat sa &Incognito window}one{Buksan lahat ({COUNT}) sa &Incognito window}other{Buksan lahat ({COUNT}) sa &Incognito window}}</translation> <translation id="5975792506968920132">Porsyento ng Charge ng Baterya</translation> <translation id="5976160379964388480">Iba Pa</translation> <translation id="5978277834170881274">&Gumamit ng basic na pang-check ng pagbabaybay</translation> @@ -5184,6 +5208,7 @@ <translation id="680572642341004180">Paganahin ang pagsubaybay ng RLZ sa <ph name="SHORT_PRODUCT_OS_NAME" />.</translation> <translation id="6808039367995747522">Para magpatuloy, ilagay at pindutin ang iyong security key</translation> <translation id="6808193438228982088">Fox</translation> +<translation id="6809470175540814047">Buksan sa Incognito window</translation> <translation id="6810613314571580006">Awtomatikong mag-sign in sa mga website gamit ang mga naka-store na kredensyal. Kapag naka-disable ang feature, palagi kang hihingan ng kumpirmasyon bago ka mag-sign in sa isang website.</translation> <translation id="6810768462515084623">Oops! Mukhang nag-expire ang iyong password. Paki-renew ito sa ibang device at subukang muli.</translation> <translation id="6811034713472274749">Maaari nang tingnan ang page</translation> @@ -5210,6 +5235,7 @@ <translation id="6831043979455480757">Isalin</translation> <translation id="6833479554815567477">Inalis ang tab sa grupong <ph name="GROUP_NAME" /> - <ph name="GROUP_CONTENTS" /></translation> <translation id="683373380308365518">Lumipat sa isang mahusay at ligtas na browser</translation> +<translation id="683540480453879381">Open mga <ph name="FILE_EXTENSIONS" /> file</translation> <translation id="6835762382653651563">Mangyaring kumonekta sa Internet upang ma-update ang iyong <ph name="DEVICE_TYPE" />.</translation> <translation id="6838034009068684089">Magtanong kapag gusto ng isang site na magbukas at maglagay ng mga window sa iyong mga screen (inirerekomenda)</translation> <translation id="6839225236531462745">Error sa Pagtanggal ng Certificate</translation> @@ -5245,6 +5271,7 @@ <translation id="6865708901122695652">Mga log ng event ng WebRTC (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> <translation id="686609795364435700">Tahimik</translation> <translation id="686664946474413495">Temperatura ng kulay</translation> +<translation id="6867400383614725881">Bagong tab na Incognito</translation> <translation id="6868934826811377550">Tingnan ang Mga Detalye</translation> <translation id="6871644448911473373">OCSP Responder: <ph name="LOCATION" /></translation> <translation id="6872781471649843364">Tinanggihan ng server ang password na inilagay mo.</translation> @@ -5345,6 +5372,7 @@ <translation id="6979044105893951891">Ilunsad ang at lumabas sa mga pinapamahalaang session ng bisita</translation> <translation id="6979440798594660689">I-mute (default)</translation> <translation id="6979737339423435258">Lahat ng oras</translation> +<translation id="6981553172137913845">Para mag-browse nang pribado, i-click ang menu ng icon na mga tuldok para magbukas ng Incognito window</translation> <translation id="6981982820502123353">Accessibility</translation> <translation id="6983507711977005608">Idiskonekta ang network na ginagamit para sa Instant na Pag-tether</translation> <translation id="6983783921975806247">Nakarehistrong OID</translation> @@ -5420,6 +5448,7 @@ <translation id="7053983685419859001">I-block</translation> <translation id="7055152154916055070">Na-block ang pag-redirect:</translation> <translation id="7055451306017383754">Hindi ma-unshare dahil ginagamit ng isang application ang folder na ito. Maa-unshare ang folder kapag na-shutdown ang Parallels Desktop.</translation> +<translation id="7056418393177503237">{0,plural, =1{Incognito}one{# nakabukas na Incognito window}other{# na nakabukas na Incognito window}}</translation> <translation id="7056526158851679338">&Inspeksyunin ang Mga Device</translation> <translation id="7057184853669165321">{NUM_MINS,plural, =1{Nagpatakbo ng pag-check sa kaligtasan 1 minuto ang nakalipas}one{Nagpatakbo ng pag-check sa kaligtasan {NUM_MINS} minuto ang nakalipas}other{Nagpatakbo ng pag-check sa kaligtasan {NUM_MINS} na minuto ang nakalipas}}</translation> <translation id="7057767408836081338">Hindi nakuha ang data ng app, sinusubukan pa ring patakbuhin ang app...</translation> @@ -5476,6 +5505,7 @@ <translation id="7117247127439884114">Muling Mag-sign in...</translation> <translation id="711840821796638741">Ipakita ang Mga Pinamamahalaang Bookmark</translation> <translation id="711902386174337313">Basahin ang listahan ng iyong mga naka-sign in na device</translation> +<translation id="7120762240626567834">Iba-block ang trapiko sa Chrome browser at Android maliban kung may nakakonektang VPN.</translation> <translation id="7120865473764644444">Hindi makakonekta sa server ng pag-sync. Muling sinusubukan...</translation> <translation id="7121438501124788993">Developer Mode</translation> <translation id="7121728544325372695">Mga Smart na Gitling</translation> @@ -5855,6 +5885,7 @@ <translation id="7561196759112975576">Palagi</translation> <translation id="756445078718366910">Magbukas ng Window ng Browser</translation> <translation id="7564847347806291057">Tapusin ang proseso</translation> +<translation id="756503097602602175">Puwede mong pamahalaan ang mga naka-sign in na Google Account mula sa <ph name="LINK_BEGIN" />Mga Setting<ph name="LINK_END" />. Posibleng malapat sa lahat ng account ang mga pahintulot na ibinigay mo sa mga website at app. Kung ayaw mong ma-access ng mga site o app ang impormasyon ng iyong account, puwede kang mag-sign in sa iyong <ph name="DEVICE_TYPE" /> bilang bisita o mag-browse sa web sa isang <ph name="LINK_2_BEGIN" />Incognito window<ph name="LINK_2_END" />.</translation> <translation id="7566118625369982896">Pamahalaan ang mga link ng app sa Play</translation> <translation id="756809126120519699">Na-clear ang data ng Chrome</translation> <translation id="756876171895853918">I-customize ang avatar</translation> @@ -5939,6 +5970,7 @@ <translation id="7654941827281939388">Ginagamit na ang account na ito sa computer na ito.</translation> <translation id="7655411746932645568">Puwedeng hilingin ng mga site na kumonekta sa mga serial port</translation> <translation id="7658239707568436148">Kanselahin</translation> +<translation id="7659154729610375585">Umalis pa rin sa Incognito mode?</translation> <translation id="7659297516559011665">Mga password sa device lang na ito</translation> <translation id="7659584679870740384">Wala kang pahintulot na gamitin ang device na ito. Mangyaring makipag-ugnayan sa administrator upang makakuha ng pahintulot sa pag-sign in.</translation> <translation id="7661259717474717992">Payagan ang mga site na mag-save at magbasa ng data ng cookie</translation> @@ -6418,6 +6450,7 @@ <translation id="8154790740888707867">Walang file</translation> <translation id="815491593104042026">Oops! Nabigo ang pagpapatotoo dahil naka-configure ito na gumamit ng hindi secure na URL (<ph name="BLOCKED_URL" />). Mangyaring makipag-ugnayan sa iyong administrator.</translation> <translation id="8155676038687609779">{COUNT,plural, =0{Walang nakitang nakompromisong password}=1{{COUNT} nakompromisong password}one{{COUNT} nakompromisong password}other{{COUNT} na nakompromisong password}}</translation> +<translation id="8157248655669507702">I-enable ang mobile data na mag-install ng profile ng eSIM profile</translation> <translation id="8157704005178149728">Sine-set up ang patnubay</translation> <translation id="8158117992543756526">Hindi na nakakatanggap ang device na ito ng mga awtomatikong update sa software at seguridad mula noong<ph name="MONTH_AND_YEAR" />. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation> <translation id="816055135686411707">Error sa Pagtakda ng Certificate Trust</translation> @@ -6774,6 +6807,7 @@ <translation id="8588866096426746242">Ipakita ang mga istatistika ng profile</translation> <translation id="8588868914509452556"><ph name="WINDOW_TITLE" /> - ipinapakita ang VR sa headset</translation> <translation id="8590375307970699841">Mag-set up ng mga awtomatikong update</translation> +<translation id="8590506940709493916">,</translation> <translation id="8591783563402255548">1 segundo</translation> <translation id="8592141010104017453">Huwag magpakita ng anumang notification</translation> <translation id="859246725979739260">Na-block ang site na ito sa pag-access sa iyong lokasyon.</translation> @@ -7046,6 +7080,7 @@ <translation id="8863753581171631212">Buksan ang link sa bagong <ph name="APP" /></translation> <translation id="8864055848767439877">Ibinabahagi ang <ph name="TAB_NAME" /> sa <ph name="APP_NAME" /></translation> <translation id="8864458770072227512">Inalis ang <ph name="EMAIL" /> sa device na ito</translation> +<translation id="8865112428068029930">Gumagamit ng nakabahaging computer? Subukang magbukas ng Incognito window.</translation> <translation id="8867228703146808825">Kopyahin ang mga detalye ng build sa clipboard</translation> <translation id="8868333925931032127">Sinisimulan ang Demo Mode</translation> <translation id="8868626022555786497">Ginagamit</translation> @@ -7104,6 +7139,7 @@ <translation id="8925458182817574960">&Mga Setting</translation> <translation id="8926389886865778422">Huwag nang itanong ulit</translation> <translation id="892706138619340876">Na-reset ang ilang setting</translation> +<translation id="8929696694736010839">Kasalukuyang Incognito session lang</translation> <translation id="8930351635855238750">Magkakabisa ang mga bagong setting ng cookie pagkatapos i-reload ang page</translation> <translation id="8930622219860340959">Wireless</translation> <translation id="8931076093143205651">Magpadala ng data ng paggamit at diagnostic. Tumulong sa pagpapaganda ng iyong karanasan sa Android sa pamamagitan ng awtomatikong pagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Ipinapatupad ng may-ari ang setting na ito. Puwedeng piliin ng may-ari na magpadala ng data ng diagnostic at paggamit para sa device na ito sa Google. Kung naka-on ang iyong karagdagang setting ng Aktibidad sa Web at App, posibleng ma-save ang data na ito sa Google Account mo.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index 4d32246..224c21a 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -511,6 +511,7 @@ <translation id="1553538517812678578">לא מוגבל</translation> <translation id="1555130319947370107">כחול</translation> <translation id="1556537182262721003">לא היתה אפשרות להעביר ספריית תוספים לפרופיל.</translation> +<translation id="1558391695376153246">סגירת כרטיסיות מצב אנונימי</translation> <translation id="155865706765934889">לוח מגע</translation> <translation id="1562119309884184621">לאחר שאיש הקשר הזה יתווסף, המערכת תזכור אותו לפעם הבאה שיתבצע שיתוף</translation> <translation id="1563702743503072935">הסיסמאות מחשבון Google יהיו זמינות גם במכשיר הזה, כל עוד הוא מחובר לחשבון</translation> @@ -567,6 +568,7 @@ <translation id="1616206807336925449">אין צורך בהרשאות מיוחדות כדי להשתמש בתוסף זה.</translation> <translation id="1616298854599875024">לא ניתן לייבא את התוסף "<ph name="IMPORT_NAME" />" כי הוא לא מודול משותף</translation> <translation id="1617765145568323981">{NUM_FILES,plural, =0{המערכת בודקת אם הנתונים האלה מצייתים למדיניות האבטחה של הארגון שלך...}=1{המערכת בודקת אם הקובץ הזה מציית למדיניות האבטחה של הארגון שלך...}two{המערכת בודקת אם הקבצים האלה מצייתים למדיניות האבטחה של הארגון שלך...}many{המערכת בודקת אם הקבצים האלה מצייתים למדיניות האבטחה של הארגון שלך...}other{המערכת בודקת אם הקבצים האלה מצייתים למדיניות האבטחה של הארגון שלך...}}</translation> +<translation id="1618102204889321535"><ph name="MAX_CHARACTER_COUNT" />/<ph name="CURRENT_CHARACTER_COUNT" /></translation> <translation id="1618268899808219593">מרכז עזרה</translation> <translation id="1620307519959413822">הסיסמה שגויה. אפשר לנסות שוב או ללחוץ על 'שכחת את הסיסמה?' כדי לאפס אותה.</translation> <translation id="1620510694547887537">מצלמה</translation> @@ -627,6 +629,7 @@ <translation id="1668979692599483141">מידע נוסף על ההצעות</translation> <translation id="1670399744444387456">בסיסי</translation> <translation id="1673137583248014546">האתר <ph name="URL" /> מבקש לראות את היצרן והדגם של מפתח האבטחה שלך</translation> +<translation id="1674073353928166410">פתיחת כל החלונות (<ph name="URL_COUNT" />) במצב חלון אנונימי</translation> <translation id="1677306805708094828">אי אפשר להוסיף את ה<ph name="EXTENSION_TYPE_PARAMETER" /></translation> <translation id="1677472565718498478">זמן נותר - <ph name="TIME" /></translation> <translation id="1679068421605151609">כלים עבור מפתחים</translation> @@ -774,6 +777,7 @@ <translation id="1817871734039893258">שחזור קבצים של Microsoft</translation> <translation id="1818007989243628752">מחיקת הסיסמה של <ph name="USERNAME" /></translation> <translation id="1818913467757368489">העלאת היומן מתבצעת.</translation> +<translation id="1819443852740954262">פתיחת כל החלונות בחלון אנונימי</translation> <translation id="1819721979226826163">מקישים על 'הודעות אפליקציה' > 'שירותי Google Play'.</translation> <translation id="1820028137326691631">הזנת סיסמה שהתקבלה ממנהל המערכת</translation> <translation id="182139138257690338">הורדות אוטומטיות</translation> @@ -983,6 +987,7 @@ <translation id="2058456167109518507">אותר מכשיר</translation> <translation id="2059913712424898428">אזור זמן</translation> <translation id="2060375639911876205">הסרת פרופיל של eSIM</translation> +<translation id="2062354623176996748">חלון אנונימי מאפשר לגלוש באינטרנט בלי לשמור את היסטוריית הגלישה</translation> <translation id="2065405795449409761">Chrome נשלט על-ידי תוכנת בדיקה אוטומטית.</translation> <translation id="2071393345806050157">אין קובץ יומן מקומי.</translation> <translation id="2071692954027939183">ההתראות נחסמו באופן אוטומטי כי לרוב לא ניתנת ממך הרשאה להציג אותן</translation> @@ -1001,12 +1006,14 @@ <translation id="2082187087049518845">קיבוץ כרטיסיות</translation> <translation id="2082510809738716738">בחירת צבע לעיצוב</translation> <translation id="208586643495776849">יש לנסות שוב</translation> +<translation id="208634871997892083">VPN מופעל תמיד</translation> <translation id="2087822576218954668">הדפסה: <ph name="PRINT_NAME" /></translation> <translation id="2088690981887365033">רשת VPN</translation> <translation id="208928984520943006">כדי לעבור למסך הבית בכל שלב, מחליקים כלפי מעלה מתחתית המסך.</translation> <translation id="2089566709556890888">גלישה בטוחה עם Google Chrome</translation> <translation id="2089795179672254991">יש לשאול כשאתר רוצה גישה אל טקסט ותמונות שהועתקו אל הלוח (מומלץ)</translation> <translation id="2090165459409185032">כדי לשחזר את המידע מהחשבון, יש לעבור אל: google.com/accounts/recovery</translation> +<translation id="2090507354966565596">חיבור באופן אוטומטי עם ההתחברות</translation> <translation id="2090876986345970080">הגדרה של אבטחת מערכת</translation> <translation id="2091887806945687916">צליל</translation> <translation id="2096715839409389970">ניקוי קובצי cookie של צד שלישי</translation> @@ -1118,6 +1125,7 @@ <translation id="2200094388063410062">אימייל</translation> <translation id="2200356397587687044">Chrome צריך הרשאה כדי להמשיך</translation> <translation id="2202898655984161076">היתה בעיה ברישום מדפסות. ייתכן שחלק מהמדפסות שלך לא נרשמו בהצלחה ב-<ph name="CLOUD_PRINT_NAME" />.</translation> +<translation id="2203088913459920044">שם יכול לכלול אותיות, ספרות ותווים מיוחדים</translation> <translation id="2204034823255629767">לקרוא ולשנות את כל מה שהקלדת</translation> <translation id="220858061631308971">יש להזין את קוד האימות הזה ב-"<ph name="DEVICE_NAME" />":</translation> <translation id="2212565012507486665">אישור קובצי cookie</translation> @@ -1657,6 +1665,7 @@ <translation id="2792290659606763004">האם להסיר אפליקציות Android?</translation> <translation id="2792465461386711506">יש להפעיל את סנכרון Chrome כדי לצפות בכרטיסיות האחרונות ב-Chrome בטלפון</translation> <translation id="2794233252405721443">אתר חסום</translation> +<translation id="2794522004398861033">יש להתחבר לרשת Wi-Fi או אתרנט כדי להגדיר eSIM</translation> <translation id="2795716239552913152">אתרים משתמשים בדרך כלל במיקום המכשיר כדי לתמוך בתכונות או פרטים רלוונטיים, כמו חדשות מקומיות או חנויות בקרבת מקום</translation> <translation id="2796424461616874739">פג הזמן הקצוב של אימות בעת ההתחברות ל-"<ph name="DEVICE_NAME" />".</translation> <translation id="2796740370559399562">להמשיך לאפשר קובצי Cookie</translation> @@ -1874,6 +1883,7 @@ <translation id="3016641847947582299">הרכיב עודכן</translation> <translation id="3017079585324758401">רקע</translation> <translation id="3019285239893817657">לחצן למעבר אל דף משנה</translation> +<translation id="3019595674945299805">שירות VPN</translation> <translation id="3020183492814296499">קיצורים</translation> <translation id="3020990233660977256">מספר סידורי: <ph name="SERIAL_NUMBER" /></translation> <translation id="3021065318976393105">בזמן שימוש בסוללה</translation> @@ -1993,6 +2003,7 @@ <translation id="3159493096109238499">בז'</translation> <translation id="3159978855457658359">עריכת שם המכשיר</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (בגיבוי חומרה)</translation> +<translation id="3160928651883997588">העדפות VPN</translation> <translation id="3161522574479303604">כל השפות</translation> <translation id="3162853326462195145">חשבון בית ספרי</translation> <translation id="3162899666601560689">אתרים יכולים להשתמש בקובצי cookie כדי לשפר את חוויית הגלישה – למשל, כדי למנוע ניתוק שלך מהחשבון או כדי לזכור את הפריטים שהוספת לעגלת הקניות</translation> @@ -2161,6 +2172,7 @@ <translation id="3380365263193509176">שגיאה לא ידועה</translation> <translation id="3382073616108123819">אופס! המערכת לא הצליחה לקבוע את המזהים של מכשיר זה.</translation> <translation id="3382200254148930874">הפיקוח מופסק...</translation> +<translation id="338323348408199233">חסימה של תנועת גולשים ללא VPN</translation> <translation id="3385092118218578224">%<ph name="DISPLAY_ZOOM" /></translation> <translation id="338583716107319301">מפריד</translation> <translation id="338691029516748599">רשת <ph name="NETWORK_INDEX" /> מתוך <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, עוצמת האות: <ph name="SIGNAL_STRENGTH" />%, הרשת מנוהלת על ידי מנהל המערכת שלך, התחברות</translation> @@ -2612,6 +2624,7 @@ <translation id="3844888638014364087">האמוג'י נוסף</translation> <translation id="3846116211488856547">אפשר להוריד כלים לפיתוח אתרים, אפליקציות Android ועוד. התקנת Linux תוריד נתונים בנפח של <ph name="DOWNLOAD_SIZE" />.</translation> <translation id="3847319713229060696">סיוע לשיפור האבטחה באינטרנט לטובת כולם</translation> +<translation id="3848547754896969219">פתיחה בחלון &אנונימי</translation> <translation id="385051799172605136">חזרה</translation> <translation id="3851428669031642514">טעינה של סקריפטים לא בטוחים</translation> <translation id="3854599674806204102">צריך לבחור אפשרות</translation> @@ -2981,6 +2994,7 @@ <translation id="4275830172053184480">הפעלת המכשיר מחדש</translation> <translation id="4278101229438943600">Assistant מוכנה</translation> <translation id="4278390842282768270">מותר</translation> +<translation id="4279129444466079448">ניתן להתקין עד <ph name="PROFILE_LIMIT" /> פרופילים של eSIM במכשיר הזה. כדי להוסיף פרופיל נוסף, קודם צריך להסיר פרופיל קיים.</translation> <translation id="4281844954008187215">תנאי שירות</translation> <translation id="4282196459431406533">Smart Lock מופעל</translation> <translation id="4285418559658561636">עדכון סיסמה</translation> @@ -2996,6 +3010,7 @@ <translation id="4295979599050707005">יש להיכנס שוב כדי לאשר את השימוש בחשבון שלך, <ph name="USER_EMAIL" />, ביחד עם אתרים, אפליקציות ותוספים ב-Chrome וב-Google Play. ניתן גם להסיר את החשבון הזה. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation> <translation id="4297219207642690536">הפעלה מחדש ואתחול</translation> <translation id="4297813521149011456">סיבוב מסך</translation> +<translation id="4299022904780065004">חלון &אנונימי חדש</translation> <translation id="4301671483919369635">לדף הזה יש הרשאה לערוך קבצים</translation> <translation id="4303079906735388947">הגדרת קוד אימות חדש למפתח האבטחה</translation> <translation id="4305402730127028764">העתקה אל <ph name="DEVICE_NAME" /></translation> @@ -3307,6 +3322,7 @@ <translation id="4641539339823703554">Chrome לא הצליח להגדיר את שעת המערכת. יש לבדוק את השעה המצוינת בהמשך ולתקן אותה במקרה הצורך.</translation> <translation id="4642769377300286600">התקנה של פרופיל נייד, רשת <ph name="NETWORK_INDEX" /> מתוך <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" /></translation> <translation id="4643612240819915418">&פתיחת סרטון בכרטיסייה חדשה</translation> +<translation id="4644205769234414680">לאפשר במצב אנונימי</translation> <translation id="4645676300727003670">&שמירה</translation> <translation id="4646675363240786305">יציאות</translation> <translation id="4647090755847581616">&סגירת כרטיסייה</translation> @@ -3463,6 +3479,7 @@ <translation id="4838836835474292213">גישת הקריאה אל הלוח מותרת</translation> <translation id="4838907349371614303">הסיסמה עודכנה</translation> <translation id="4839303808932127586">שמ&ירת סרטון כ...</translation> +<translation id="4840096453115567876">לצאת מהמצב האנונימי בכל זאת?</translation> <translation id="4842976633412754305">דף זה מנסה לטעון סקריפטים ממקורות שאינם מאומתים.</translation> <translation id="4844333629810439236">מקלדות אחרות</translation> <translation id="4846680374085650406">הפעילות שלך נעשית בהתאם להמלצה של מנהל המערכת לגבי הגדרה זו.</translation> @@ -3580,6 +3597,7 @@ <translation id="4964455510556214366">סידור</translation> <translation id="496446150016900060">סנכרון של רשתות Wi-Fi עם הטלפון שלך</translation> <translation id="4965808351167763748">בחרת להגדיר שהמכשיר הזה יפעיל את Hangouts Meet. להמשיך?</translation> +<translation id="4966972803217407697">עברת למצב אנונימי</translation> <translation id="496888482094675990">היישום Files מספק גישה מהירה לקבצים ששמרת ב-Google Drive, באחסון חיצוני או במכשיר שלך עם מערכת הפעלה של Chrome.</translation> <translation id="4971412780836297815">פתיחה בסיום ההורדה</translation> <translation id="4971735654804503942">הגנה פרואקטיבית ומהירה יותר מפני אתרים, הורדות ותוספים מסוכנים. המערכת מזהירה אותך בנוגע לחשיפה של סיסמאות. כשמצב ההגנה הזה בשימוש, נתוני גלישה נשלחים אל Google.</translation> @@ -3609,6 +3627,7 @@ <translation id="5005498671520578047">העתקת הסיסמה</translation> <translation id="5006218871145547804">ADB עבור אפליקציות ל-Android ב-Crostini</translation> <translation id="5007392906805964215">עיון</translation> +<translation id="50080882645628821">הסרת הפרופיל</translation> <translation id="5008936837313706385">שם הפעילות</translation> <translation id="5010043101506446253">רשות אישורים</translation> <translation id="5015344424288992913">פותר פרוקסי...</translation> @@ -3790,6 +3809,7 @@ <translation id="5213114823401215820">פתיחה מחדש של קבוצה שנסגרה</translation> <translation id="5213481667492808996">שירות הנתונים של '<ph name="NAME" />' מוכן לשימוש</translation> <translation id="5213891612754844763">הצגת ההגדרות של שרת ה-proxy</translation> +<translation id="5214249693262842685">במצב אנונימי, אתרים לא יכולים להשתמש בקובצי cookie כדי לקבל מידע על פעילות הגלישה שלך באתרים השונים, למשל לצורך הצגת מודעות בהתאמה אישית. ייתכן שתכונות באתרים מסוימים לא יפעלו כראוי.</translation> <translation id="5215502535566372932">יש לבחור מדינה</translation> <translation id="521582610500777512">התצלום נמחק</translation> <translation id="5222403284441421673">נחסמה הורדה לא מאובטחת</translation> @@ -3901,6 +3921,7 @@ <translation id="5336688142483283574">הדף הזה יוסר גם מההיסטוריה שלך ומהפעילות של <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">הותקן על ידי צד שלישי.</translation> <translation id="5337926771328966926">השם הנוכחי של המכשיר הוא <ph name="DEVICE_NAME" /></translation> +<translation id="5338338064218053691">אפשר לגלוש בפרטיות באמצעות חלון אנונימי</translation> <translation id="5338503421962489998">אחסון מקומי</translation> <translation id="5340638867532133571">מתן הרשאה לאתרים להתקין מעבדי handler לתשלומים (מומלץ)</translation> <translation id="5341793073192892252">קובצי ה-Cookie הבאים נחסמו (קובצי Cookie של צד שלישי נחסמים ללא יוצא מן הכלל)</translation> @@ -3924,6 +3945,7 @@ <translation id="536638840841140142">ללא</translation> <translation id="5368720394188453070">הטלפון שלך נעול. יש לבטל את הנעילה כדי להיכנס.</translation> <translation id="5368779022775404937">כניסה אל <ph name="REALM" /></translation> +<translation id="536882527576164740">{0,plural, =1{אנונימי}two{אנונימי (#)}many{אנונימי (#)}other{אנונימי (#)}}</translation> <translation id="5369491905435686894">הפעלת האצה של עכבר</translation> <translation id="5369694795837229225">הגדרה של סביבת הפיתוח של Linux</translation> <translation id="5370819323174483825">&טעינה מחדש</translation> @@ -4064,6 +4086,7 @@ <translation id="5521078259930077036">האם זהו דף הבית שציפית לראות?</translation> <translation id="5522156646677899028">התוסף הזה מכיל נקודת תורפה חמורה באבטחה.</translation> <translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{מנהל המערכת שלך התקין תוסף}two{מנהל המערכת שלך התקין # תוספים}many{מנהל המערכת שלך התקין # תוספים}other{מנהל המערכת שלך התקין # תוספים}}</translation> +<translation id="5523558474028191231">שם יכול לכלול אותיות, ספרות ותווים מיוחדים, והוא חייב להיות באורך של <ph name="MAX_CHARACTER_COUNT" /> תווים או פחות</translation> <translation id="5526701598901867718">הכול (לא מאובטח)</translation> <translation id="5526745900034778153">צריך להיכנס מחדש כדי להמשיך את הסנכרון</translation> <translation id="5527463195266282916">בוצע ניסיון לשדרג תוסף לאחור.</translation> @@ -4455,6 +4478,7 @@ <translation id="5972826969634861500">הפעלת <ph name="PRODUCT_NAME" /></translation> <translation id="5973041996755340290">ניפוי באגים של הדפדפן הזה מתבצע על ידי "<ph name="CLIENT_NAME" />"</translation> <translation id="5973605538625120605">שינוי קוד אימות</translation> +<translation id="5975056890546437204">{COUNT,plural, =0{פתיחת כל הכתובות בחלון &אנונימי}=1{פתיחה בחלון &אנונימי}two{פתיחת כל הכתובות ({COUNT}) בחלון &אנונימי}many{פתיחת כל הכתובות ({COUNT}) בחלון &אנונימי}other{פתיחת כל הכתובות ({COUNT}) בחלון &אנונימי}}</translation> <translation id="5975792506968920132">אחוז טעינת הסוללה</translation> <translation id="5976160379964388480">אחרים</translation> <translation id="5978277834170881274">&שימוש בבדיקת איות בסיסית</translation> @@ -5183,6 +5207,7 @@ <translation id="680572642341004180">הפעלת מעקב RLZ ב-<ph name="SHORT_PRODUCT_OS_NAME" />.</translation> <translation id="6808039367995747522">כדי להמשיך, עליך לחבר את מפתח האבטחה ולגעת בו</translation> <translation id="6808193438228982088">שועל</translation> +<translation id="6809470175540814047">פתיחה בחלון אנונימי</translation> <translation id="6810613314571580006">כניסה אוטומטית לאתרים באמצעות פרטי כניסה שמורים. כשהתכונה הזו מושבתת, יהיה עליך לאשר לפני כל כניסה לאתר.</translation> <translation id="6810768462515084623">אופס! נראה שהסיסמה שלך כבר לא בתוקף. יש לחדש אותה במכשיר אחר ולנסות שוב.</translation> <translation id="6811034713472274749">הדף מוכן להצגה</translation> @@ -5209,6 +5234,7 @@ <translation id="6831043979455480757">תרגום</translation> <translation id="6833479554815567477">הכרטיסייה הוסרה מהקבוצה <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" /></translation> <translation id="683373380308365518">החלפה לדפדפן חכם ובטוח</translation> +<translation id="683540480453879381">פתיחת קבצים מסוג <ph name="FILE_EXTENSIONS" /></translation> <translation id="6835762382653651563">יש להתחבר לאינטרנט כדי לעדכן את ה-<ph name="DEVICE_TYPE" />.</translation> <translation id="6838034009068684089">תוצג שאלה כשאתר ירצה לפתוח ולהציב חלונות במסכים שלך (מומלץ)</translation> <translation id="6839225236531462745">שגיאה של מחיקת אישור</translation> @@ -5244,6 +5270,7 @@ <translation id="6865708901122695652">יומני אירועים של WebRTC (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> <translation id="686609795364435700">נמוכה</translation> <translation id="686664946474413495">טמפרטורת צבע</translation> +<translation id="6867400383614725881">כרטיסיית מצב אנונימי חדשה</translation> <translation id="6868934826811377550">הצגת פרטים</translation> <translation id="6871644448911473373">מגיב OCSP: <ph name="LOCATION" /></translation> <translation id="6872781471649843364">השרת דחה את הסיסמה שהזנת.</translation> @@ -5344,6 +5371,7 @@ <translation id="6979044105893951891">הפעלה של גלישות מנוהלות כאורח, ויציאה מהן</translation> <translation id="6979440798594660689">השתקה (ברירת מחדל)</translation> <translation id="6979737339423435258">משחר ההיסטוריה</translation> +<translation id="6981553172137913845">כדי לגלוש באופן פרטי, יש ללחוץ על תפריט סמל הנקודות כדי לפתוח חלון אנונימי</translation> <translation id="6981982820502123353">נגישות</translation> <translation id="6983507711977005608">התנתקות מהרשת של שיתוף אינטרנט מיידי בין מכשירים</translation> <translation id="6983783921975806247">OID רשום</translation> @@ -5419,6 +5447,7 @@ <translation id="7053983685419859001">חסימה</translation> <translation id="7055152154916055070">הפניה אוטומטית נחסמה:</translation> <translation id="7055451306017383754">לא ניתן לבטל את השיתוף כי אפליקציה משתמשת בתיקייה הזו. שיתוף התיקייה הזו יבוטל בכיבוי הבא של Parallels Desktop.</translation> +<translation id="7056418393177503237">{0,plural, =1{אנונימי}two{# חלונות אנונימיים פתוחים}many{# חלונות אנונימיים פתוחים}other{# חלונות אנונימיים פתוחים}}</translation> <translation id="7056526158851679338">&בדיקת מכשירים</translation> <translation id="7057184853669165321">{NUM_MINS,plural, =1{בדיקת הבטיחות פעלה לפני דקה אחת}two{בדיקת הבטיחות פעלה לפני {NUM_MINS} דקות}many{בדיקת הבטיחות פעלה לפני {NUM_MINS} דקות}other{בדיקת הבטיחות פעלה לפני {NUM_MINS} דקות}}</translation> <translation id="7057767408836081338">קבלת נתוני האפליקציה נכשלה. המערכת מנסה להפעיל את האפליקציה בכל זאת...</translation> @@ -5475,6 +5504,7 @@ <translation id="7117247127439884114">יש להיכנס שוב...</translation> <translation id="711840821796638741">הצגת סימניות מנוהלות</translation> <translation id="711902386174337313">קריאה של רשימת ההתקנים המחוברים שלך</translation> +<translation id="7120762240626567834">דפדפן ה-Chrome ותנועת הגולשים ב-Android ייחסמו אלא אם יתבצע חיבור ל-VPN</translation> <translation id="7120865473764644444">לא ניתן היה להתחבר אל שרת הסנכרון. מתבצע ניסיון נוסף...</translation> <translation id="7121438501124788993">מצב מפתח</translation> <translation id="7121728544325372695">מקפים חכמים</translation> @@ -5854,6 +5884,7 @@ <translation id="7561196759112975576">תמיד</translation> <translation id="756445078718366910">פתיחת חלון דפדפן</translation> <translation id="7564847347806291057">סיום התהליך</translation> +<translation id="756503097602602175">ב<ph name="LINK_BEGIN" />הגדרות<ph name="LINK_END" /> אפשר לנהל את חשבונות Google המחוברים. ייתכן שהרשאות שנתת לאתרים ולאפליקציות יחולו על כל החשבונות. אם אינך רוצה שלאתרים או לאפליקציות תהיה גישה לפרטי החשבון שלך, ניתן להיכנס אל <ph name="DEVICE_TYPE" /> כאורח או לגלוש באינטרנט ב<ph name="LINK_2_BEGIN" />חלון אנונימי<ph name="LINK_2_END" />.</translation> <translation id="7566118625369982896">ניהול קישורים של אפליקציות מ-Play</translation> <translation id="756809126120519699">נתוני Chrome נוקו</translation> <translation id="756876171895853918">התאמה אישית של הדמות</translation> @@ -5938,6 +5969,7 @@ <translation id="7654941827281939388">החשבון כבר נמצא בשימוש במחשב הזה.</translation> <translation id="7655411746932645568">אתרים יכולים לבקש הרשאה להתחבר ליציאות טוריות</translation> <translation id="7658239707568436148">ביטול</translation> +<translation id="7659154729610375585">לצאת מהמצב האנונימי בכל זאת?</translation> <translation id="7659297516559011665">רק סיסמאות במכשיר הזה</translation> <translation id="7659584679870740384">אין לך אישור להשתמש במכשיר הזה. יש ליצור קשר עם מנהל המערכת כדי לקבל הרשאה לכניסה.</translation> <translation id="7661259717474717992">לאפשר לאתרים לשמור ולקרוא נתונים של קובצי Cookie</translation> @@ -6418,6 +6450,7 @@ <translation id="8154790740888707867">אין קובץ</translation> <translation id="815491593104042026">אופס! האימות נכשל מפני שהוא הוגדר להשתמש בכתובת אתר לא-מאובטחת (<ph name="BLOCKED_URL" />). יש לפנות למנהל המערכת.</translation> <translation id="8155676038687609779">{COUNT,plural, =0{לא נמצאו סיסמאות שנחשפו}=1{סיסמה אחת ({COUNT}) שנחשפה}two{{COUNT} סיסמאות שנחשפו}many{{COUNT} סיסמאות שנחשפו}other{{COUNT} סיסמאות שנחשפו}}</translation> +<translation id="8157248655669507702">יש להפעיל חבילת גלישה כדי להתקין פרופיל eSIM</translation> <translation id="8157704005178149728">המערכת מגדירה פיקוח</translation> <translation id="8158117992543756526">המכשיר הזה לא מקבל עדכוני תוכנה ואבטחה אוטומטיים מאז <ph name="MONTH_AND_YEAR" />. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation> <translation id="816055135686411707">שגיאה בהגדרת אמון באישור</translation> @@ -6773,6 +6806,7 @@ <translation id="8588866096426746242">הצגת נתונים סטטיסטיים של פרופיל</translation> <translation id="8588868914509452556"><ph name="WINDOW_TITLE" /> - VR מוצג במשקפי VR</translation> <translation id="8590375307970699841">הגדרת עדכונים אוטומטיים</translation> +<translation id="8590506940709493916">,</translation> <translation id="8591783563402255548">שנייה</translation> <translation id="8592141010104017453">לא להציג הודעות</translation> <translation id="859246725979739260">נחסמה הגישה של האתר הזה למיקום שלך.</translation> @@ -7046,6 +7080,7 @@ <translation id="8863753581171631212">פתיחת הקישור ב-<ph name="APP" /></translation> <translation id="8864055848767439877">המערכת משתפת את <ph name="TAB_NAME" /> עם <ph name="APP_NAME" /></translation> <translation id="8864458770072227512"><ph name="EMAIL" /> הוסר מהמכשיר הזה</translation> +<translation id="8865112428068029930">האם זהו מחשב משותף? כדאי לפתוח חלון אנונימי.</translation> <translation id="8867228703146808825">העתקה של פרטי ה-build אל הלוח</translation> <translation id="8868333925931032127">מתבצעת הפעלה של מצב הדגמה</translation> <translation id="8868626022555786497">בשימוש</translation> @@ -7103,6 +7138,7 @@ <translation id="8925458182817574960">&הגדרות</translation> <translation id="8926389886865778422">אין לשאול שוב</translation> <translation id="892706138619340876">בוצע איפוס של חלק מההגדרות</translation> +<translation id="8929696694736010839">בסשן האנונימי הנוכחי בלבד</translation> <translation id="8930351635855238750">הגדרות חדשות של קובצי Cookie ייכנסו לתוקף לאחר הטעינה מחדש של הדף</translation> <translation id="8930622219860340959">אלחוטי</translation> <translation id="8931076093143205651">שליחת מידע לגבי אופן השימוש בנתונים וניתוח הביצועים. כדי לתרום לשיפור חוויית המשתמש ב-Android, אפשר לשלוח אל Google באופן אוטומטי נתוני אבחון, נתוני מכשיר ונתוני שימוש באפליקציות. הנתונים האלה יעזרו לשמור על היציבות של המערכת ושל האפליקציות ולבצע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לשפר את האפליקציות של Google וכן יעזרו לשותפים של Google, כמו מפתחים של Android. ההגדרה הזו נאכפת על-ידי הבעלים. ייתכן שהבעלים יבחרו לשלוח אל Google נתוני אבחון ונתוני שימוש של המכשיר. אם הופעלה ההגדרה 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלך.</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index d87f114..9b25c05 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -512,6 +512,7 @@ <translation id="1553538517812678578">შეუზღუდავo</translation> <translation id="1555130319947370107">ლურჯი</translation> <translation id="1556537182262721003">გაფართოების დირექტორიის გადატანა პროფილში ვერ მოხერხდა.</translation> +<translation id="1558391695376153246">ინკოგნ. ჩანართების დახურვა</translation> <translation id="155865706765934889">Touchpad</translation> <translation id="1562119309884184621">დამატებული კონტაქტი დამახსოვრებული იქნება, როცა შემდეგში რაიმეს გაგიზიარებთ</translation> <translation id="1563702743503072935">თქვენს Google ანგარიშში შენახული პაროლები ამ მოწყობილობაზეც იქნება ხელმისაწვდომი, როცა სისტემაში შესული იქნებით</translation> @@ -568,6 +569,7 @@ <translation id="1616206807336925449">ეს გაფართოება არ მოითხოვს სპეციალურ უფლებებს.</translation> <translation id="1616298854599875024">გაფართოების „<ph name="IMPORT_NAME" />“ იმპორტირება ვერ მოხერხდა, რადგან ის არ არის გაზიარებული მოდული</translation> <translation id="1617765145568323981">{NUM_FILES,plural, =0{მიმდინარეობს ამ მონაცემების თქვენი ორგანიზაციის უსაფრთხოების წესებთან შესაბამისობის შემოწმება...}=1{მიმდინარეობს ამ ფაილის თქვენი ორგანიზაციის უსაფრთხოების წესებთან შესაბამისობის შემოწმება...}other{მიმდინარეობს ამ ფაილების თქვენი ორგანიზაციის უსაფრთხოების წესებთან შესაბამისობის შემოწმება...}}</translation> +<translation id="1618102204889321535"><ph name="CURRENT_CHARACTER_COUNT" /> / <ph name="MAX_CHARACTER_COUNT" />-დან</translation> <translation id="1618268899808219593">დახმარ&ების ცენტრი</translation> <translation id="1620307519959413822">პაროლი არასწორია. სცადეთ ხელახლა, ან შეხებით აირჩიეთ „პაროლი დამავიწყდა“ მის გადასაყენებლად.</translation> <translation id="1620510694547887537">კამერა</translation> @@ -628,6 +630,7 @@ <translation id="1668979692599483141">შეიტყვეთ მეტი შემოთავაზებების შესახებ</translation> <translation id="1670399744444387456">ძირითადი</translation> <translation id="1673137583248014546"><ph name="URL" /> ითხოვს თქვენი უსაფრთხოების გასაღების ბრენდისა და მოდელის ნახვის ნებართვას</translation> +<translation id="1674073353928166410"><ph name="URL_COUNT" />-ვეს გახსნა ინკოგნიტო ფანჯარაში</translation> <translation id="1677306805708094828"><ph name="EXTENSION_TYPE_PARAMETER" /> ვერ დაემატება</translation> <translation id="1677472565718498478">დარჩენილია <ph name="TIME" /></translation> <translation id="1679068421605151609">დეველოპერის ხელსაწყოები</translation> @@ -775,6 +778,7 @@ <translation id="1817871734039893258">Microsoft ფაილის აღდგენა</translation> <translation id="1818007989243628752"><ph name="USERNAME" />-ის პაროლის წაშლა</translation> <translation id="1818913467757368489">ამჟამად მიმდინარეობს ჟურნალის ატვირთვა.</translation> +<translation id="1819443852740954262">ყველას გახსნა ინკოგნიტო ფანჯარაში</translation> <translation id="1819721979226826163">შეხებით აირჩიეთ: აპების შეტყობინებები > Google Play services.</translation> <translation id="1820028137326691631">შეიყვანეთ ადმინისტრატორის მიერ მოწოებული პაროლი</translation> <translation id="182139138257690338">ავტომატური ჩამოტვირთვები</translation> @@ -984,6 +988,7 @@ <translation id="2058456167109518507">აღმოჩენილია მოწყობილობა</translation> <translation id="2059913712424898428">სასაათო სარტყელი</translation> <translation id="2060375639911876205">eSIM პროფილის წაშლა</translation> +<translation id="2062354623176996748">გამოიყენეთ ინკოგნიტო ფანჯარა და დაათვალიერეთ ვები ისტორიის შენახვის გარეშე</translation> <translation id="2065405795449409761">Chrome-ს ავტომატიზებული სატესტო პროგრამული უზრუნველყოფა აკონტროლებს.</translation> <translation id="2071393345806050157">ლოკალური ჟურნალის ფაილი არ არის.</translation> <translation id="2071692954027939183">შეტყობინებები ავტომატურად დაიბლოკა, რადგან, როგორც წესი, მათ მიღებას კრძალავთ ხოლმე</translation> @@ -1002,12 +1007,14 @@ <translation id="2082187087049518845">ჩანართის დაჯგუფება</translation> <translation id="2082510809738716738">აირჩიეთ თემის ფერი</translation> <translation id="208586643495776849">გთხოვთ, ცადოთ ხელახლა</translation> +<translation id="208634871997892083">ყოველთვის ჩართული VPN</translation> <translation id="2087822576218954668">დაბეჭდეთ: <ph name="PRINT_NAME" /></translation> <translation id="2088690981887365033">VPN ქსელი</translation> <translation id="208928984520943006">მთავარ ეკრანზე ნებისმიერ დროს გადასასვლელად გადაფურცლეთ ქვემოდან ზემოთ.</translation> <translation id="2089566709556890888">დაათვალიერეთ ვები უსაფრთხოდ Google Chrome-ის მეშვეობით</translation> <translation id="2089795179672254991">შეკითხვა, როცა საიტს სურს გაცვლის ბუფერში კოპირებული ტექსტისა და სურათების ნახვა (რეკომენდებული)</translation> <translation id="2090165459409185032">თქვენი ანგარიშის ინფორმაციის აღსადგენად, ეწვიეთ: google.com/accounts/recovery</translation> +<translation id="2090507354966565596">ავტომატურად უკავშირდება, როცა სისტემაში შედიხართ</translation> <translation id="2090876986345970080">სისტემის უსაფრთხოების პარამეტრები</translation> <translation id="2091887806945687916">ხმა</translation> <translation id="2096715839409389970">მესამე მხარის ქუქი-ჩანაწერების გასუფთავება</translation> @@ -1119,6 +1126,7 @@ <translation id="2200094388063410062">ელფოსტის გაგზავნა</translation> <translation id="2200356397587687044">გასაგრძელებლად Chrome საჭიროებს ნებართვას</translation> <translation id="2202898655984161076">პრინტერების ჩამოთვლისას პრობლემა წარმოიქმნა. შესაძლოა, ზოგიერთი პრინტერი წარმატებით ვერ დარეგისტრირდა <ph name="CLOUD_PRINT_NAME" />-ში.</translation> +<translation id="2203088913459920044">სახელი შეიძლება შეიცავდეს ასოებს, ციფრებსა და საგანგებო სიმბოლოებს</translation> <translation id="2204034823255629767">თქვენს მიერ ნებისმიერი აკრეფილი ტექსტის წაკითხვა და შეცვლა</translation> <translation id="220858061631308971">გთხოვთ შეიყვანეთ ეს PIN კოდი „<ph name="DEVICE_NAME" />“-ზე:</translation> <translation id="2212565012507486665">ქუქი-ჩანაწერების დაშვება</translation> @@ -1159,6 +1167,7 @@ <translation id="2249605167705922988">მაგ., 1-5, 8, 11-13</translation> <translation id="2251218783371366160">გახსნა სისტემის მაჩვენებლით</translation> <translation id="225163402930830576">ქსელების გადატვირთვა</translation> +<translation id="2251809247798634662">ახალი ინკოგნიტო ფანჯარა</translation> <translation id="225240747099314620">იდენტიფიკატორების დაშვება დაცული შიგთავსისთვის (შესაძლოა, საჭირო გახდეს კომპიუტერის გადატვირთვა)</translation> <translation id="2255077166240162850">ეს მოწყობილობა მიმაგრებულია სხვა დომენზე ან რეჟიმზე.</translation> <translation id="2255317897038918278">Microsoft დროის ნიშნული</translation> @@ -1655,6 +1664,7 @@ <translation id="2792290659606763004">გსურთ Android-ის აპების ამოშლა?</translation> <translation id="2792465461386711506">თქვენს ტელეფონზე არსებული ბოლოდროინდელი Chrome ჩანართების სანახავად ჩართეთ Chrome სინქრონიზაცია</translation> <translation id="2794233252405721443">საიტი დაბლოკილია</translation> +<translation id="2794522004398861033">eSIM-ის დასაყენებლად დაუკავშირდით Wi-Fi ან Ethernet ქსელს</translation> <translation id="2795716239552913152">საიტების მიერ თქვენი მდებარეობის გამოყენება ხდება შესაბამისი ფუნქციებისა თუ ინფორმაციის უზრუნველსაყოფად, მაგალითად, ადგილობრივი ახალი ამბების ან ახლომდებარე მაღაზიების საჩვენებლად</translation> <translation id="2796424461616874739">ავთენტიფიკაციის დროის ამოწურვა „<ph name="DEVICE_NAME" />“-თან დაკავშირებისას.</translation> <translation id="2796740370559399562">ქუქი-ჩანაწერების დაშვების გაგრძელება</translation> @@ -1872,6 +1882,7 @@ <translation id="3016641847947582299">კომპონენტი განახლდა</translation> <translation id="3017079585324758401">ფონი</translation> <translation id="3019285239893817657">ქვეგვერდის ღილაკი</translation> +<translation id="3019595674945299805">VPN სერვისი</translation> <translation id="3020183492814296499">მალსახმობები</translation> <translation id="3020990233660977256">სერიული ნომერი: <ph name="SERIAL_NUMBER" /></translation> <translation id="3021065318976393105">ბატარეით მუშაობისას</translation> @@ -1991,6 +2002,7 @@ <translation id="3159493096109238499">ბეჟისფერი</translation> <translation id="3159978855457658359">მოწყობილობის სახელის რედაქტირება</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (აპარატურულად მხარდაჭერილი)</translation> +<translation id="3160928651883997588">VPN-ის პარამეტრები</translation> <translation id="3161522574479303604">ყველა ენა</translation> <translation id="3162853326462195145">სასწავლებლის ანგარიში</translation> <translation id="3162899666601560689">საიტები გამოიყენებს ქუქი-ჩანაწერებს დათვალიერების პროცესის გასაუმჯობესებლად, მაგალითად, სისტემაში შესული მდგომარეობის შესანარჩუნებლად ან საყიდლების კალათაში დამატებული ერთეულების დასამახსოვრებლად</translation> @@ -2159,6 +2171,7 @@ <translation id="3380365263193509176">უცნობი შეცდომა</translation> <translation id="3382073616108123819">უი! სისტემამ ვერ დაადგინა მოწყობილობის იდენტიფიკატორები ამ მოწყობილობისთვის.</translation> <translation id="3382200254148930874">მიმდინარეობს ზედამხედველობის შეწყვეტა…</translation> +<translation id="338323348408199233">VPN-ის გარეშე ტრაფიკის დაბლოკვა</translation> <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" />%</translation> <translation id="338583716107319301">გამყოფი</translation> <translation id="338691029516748599">ქსელი <ph name="NETWORK_INDEX" />/<ph name="NETWORK_COUNT" />-დან, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, სიგნალის სიძლიერე: <ph name="SIGNAL_STRENGTH" />%, მართავს თქვენი ადმინისტრატორი, დაკავშირება</translation> @@ -2610,6 +2623,7 @@ <translation id="3844888638014364087">Emoji ჩასმულია</translation> <translation id="3846116211488856547">ჩამოტვირთეთ ხელსაწყოები ვებსაიტების, Android-ის აპების და სხვა კონტენტის დეველოპერებისთვის. Linux-ის ინსტალაციისთვის ჩამოიტვირთება მონაცემთა <ph name="DOWNLOAD_SIZE" />.</translation> <translation id="3847319713229060696">ხელი შეუწყვეთ ვების უსაფრთხოების ყველასთვის გაუმჯობესებას</translation> +<translation id="3848547754896969219">&ინკოგნიტო ფანჯარაში გახსნა</translation> <translation id="385051799172605136">უკან</translation> <translation id="3851428669031642514">გადმოწერე არა საიმედო სკრიპტები</translation> <translation id="3854599674806204102">აირჩიეთ ვარიანტი</translation> @@ -2979,6 +2993,7 @@ <translation id="4275830172053184480">გადატვირთეთ თქვენი მოწყობილობა</translation> <translation id="4278101229438943600">თქვენი ასისტენტი მზად არის</translation> <translation id="4278390842282768270">დაშვებულია</translation> +<translation id="4279129444466079448">ამ მოწყობილობაზე შეგიძლიათ <ph name="PROFILE_LIMIT" />-მდე eSIM პროფილის ინსტალაცია. სხვა პროფილის დასამატებლად, პირველ რიგში, ამოშალეთ ერთ-ერთი არსებული.</translation> <translation id="4281844954008187215">მომსახურების პირობები</translation> <translation id="4282196459431406533">Smart Lock ჩართულია</translation> <translation id="4285418559658561636">პაროლის განახლება</translation> @@ -2994,6 +3009,7 @@ <translation id="4295979599050707005">გთხოვთ, ხელახლა შეხვიდეთ სისტემაში იმის დასადასტურებლად, რომ თქვენი ანგარიშის (<ph name="USER_EMAIL" />) გამოყენება შესაძლებელია Chrome-სა და Google Play-ში არსებულ ვებსაიტებთან, აპებთან და გაფართოებებთან. ამას გარდა, შეგიძლიათ აღნიშნული ანგარიშის ამოშლა. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation> <translation id="4297219207642690536">გადატვირთვა და გადაყენება</translation> <translation id="4297813521149011456">ეკრანის შეტრიალება</translation> +<translation id="4299022904780065004">ახალი &ინკოგნიტო ფანჯარა</translation> <translation id="4301671483919369635">ამ გვერდისთვის დაშვებულია ფაილების რედაქტირება</translation> <translation id="4303079906735388947">დააყენეთ ახალი PIN-კოდი თქვენი უსაფრთხოების გასაღებისთვის</translation> <translation id="4305402730127028764"><ph name="DEVICE_NAME" />-ში კოპირება</translation> @@ -3305,6 +3321,7 @@ <translation id="4641539339823703554">Chrome-მა ვერ დააყენა სისტემის დრო. შეამოწმეთ დრო ქვემოთ და გაასწორეთ, თუ საჭიროა.</translation> <translation id="4642769377300286600">მიმდინარეობს მობილური პროფილის ინსტალაცია, ქსელი <ph name="NETWORK_INDEX" /> / <ph name="NETWORK_COUNT" />-დან, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" /></translation> <translation id="4643612240819915418">ვიდეოს &გახსნა ახალ ჩანართზე</translation> +<translation id="4644205769234414680">ინკოგნიტოში დაშვება</translation> <translation id="4645676300727003670">&შეინახეთ</translation> <translation id="4646675363240786305">პორტები</translation> <translation id="4647090755847581616">&დახურეთ ჩანართი</translation> @@ -3461,6 +3478,7 @@ <translation id="4838836835474292213">გაცვლის ბუფერზე წვდომა დაშვებულია</translation> <translation id="4838907349371614303">პაროლი განახლდა</translation> <translation id="4839303808932127586">&შეინახე ვიდეო როგორც…</translation> +<translation id="4840096453115567876">მაინც გსურთ ინკოგნიტო რეჟიმიდან გასვლა?</translation> <translation id="4842976633412754305">ეს გვერდი ცდილობს სკრიპტების გადმოწერას არა საიმედო წყაროებიდან.</translation> <translation id="4844333629810439236">სხვა კლავიატურები</translation> <translation id="4846680374085650406">ამ პატარამეტრის შემთხვევაში, თქვენ იზიარებთ ადმინისტრატორის რეკომენდაციას.</translation> @@ -3578,6 +3596,7 @@ <translation id="4964455510556214366">მოწყობა</translation> <translation id="496446150016900060">Wi-Fi ქსელების სინქრონიზაცია თქვენს ტელეფონთან</translation> <translation id="4965808351167763748">ნამდვილად გსურთ ამ მოწყობილობის დაყენება Hangouts Meet-ის გასაშვებად?</translation> +<translation id="4966972803217407697">თქვენ ინკოგნიტო რეჟიმში ხართ</translation> <translation id="496888482094675990">ფაილების პროგრამა უზრუნველყოფს სწრაფ წვდომას ფაილებზე, რომლებიც შეინახეთ Google Drive-ზე, გარე მეხსიერებაში ან თქვენს Chrome OS მოწყობილობაში.</translation> <translation id="4971412780836297815">დასრულების შემდეგ გახსნა</translation> <translation id="4971735654804503942">უფრო სწრაფი, პროაქტიური დაცვა სახიფათო ვებსაიტებისგან, ჩამოტვირთვებისა და გაფართოებებისგან. გაგაფრთხილებთ პაროლების შესახებ ინფორმაციის გაჟონვის შემთხვევაში. საჭირო იქნება დათვალიერების მონაცემების Google-ში გაგზავნა.</translation> @@ -3607,6 +3626,7 @@ <translation id="5005498671520578047">პაროლის კოპირება</translation> <translation id="5006218871145547804">Crostini-ს Android აპის ADB</translation> <translation id="5007392906805964215">გადახედვა</translation> +<translation id="50080882645628821">პროფილის ამოშლა</translation> <translation id="5008936837313706385">აქტივობის სახელი</translation> <translation id="5010043101506446253">სერტიფიკატების ცენტრი</translation> <translation id="5015344424288992913">პროქსის გადაწყვეტა…</translation> @@ -3788,6 +3808,7 @@ <translation id="5213114823401215820">დახურული ჯგუფის ხელახლა გახსნა</translation> <translation id="5213481667492808996">„<ph name="NAME" />“-ის მონაცემთა გადაცემის სერვისი გამოსაყენებლად მზად არის</translation> <translation id="5213891612754844763">პროქსი-სერვერის პარამეტრების ჩვენება</translation> +<translation id="5214249693262842685">ინკოგნიტო რეჟიმში საიტები ვერ გამოიყენებს თქვენს ქუქი-ჩანაწერებს სხვადასხვა ვებსაიტის დათვალიერების აქტივობაზე წვდომისთვის, მაგალითად, რეკლამის პერსონალიზების მიზნით. ზოგიერთი საიტის ფუნქციებმა, შესაძლოა, არასათანადოდ იმუშაოს.</translation> <translation id="5215502535566372932">აირჩიეთ ქვეყანა</translation> <translation id="521582610500777512">ფოტო გაუქმდა</translation> <translation id="5222403284441421673">არაუსაფრთხო ჩამოტვირთვა დაბლოკილია</translation> @@ -3899,6 +3920,7 @@ <translation id="5336688142483283574">ეს გვერდი ასევე ამოიშლება თქვენი ისტორიიდან და <ph name="SEARCH_ENGINE" /> აქტივობიდან.</translation> <translation id="5337771866151525739">დაყენებულია მესამე მხარის მიერ.</translation> <translation id="5337926771328966926">მოწყობილობის ამჟამინდელი სახელია <ph name="DEVICE_NAME" /></translation> +<translation id="5338338064218053691">ვების კონფიდენციალურად დასათვალიერებლად შეგიძლიათ გამოიყენოთ ინკოგნიტო ფანჯარა</translation> <translation id="5338503421962489998">ადგილობრივი მეხსიერება</translation> <translation id="5340638867532133571">საიტებისთვის გადახდის დამმუშავებლების ინსტალაციის დაშვება (რეკომენდებული)</translation> <translation id="5341793073192892252">დაბლოკილია შემდეგი ქუქი-ჩანაწერები (მესამე მხარის ქუქი-ჩანაწერები იბლოკება გამონაკლისების გარეშე)</translation> @@ -3922,6 +3944,7 @@ <translation id="536638840841140142">არცერთი</translation> <translation id="5368720394188453070">ტელეფონი დაბლოკილია. განბლოკვისათვის შეიყვანეთ.</translation> <translation id="5368779022775404937"><ph name="REALM" />-ში შესვლა</translation> +<translation id="536882527576164740">{0,plural, =1{ინკოგნიტო}other{ინკოგნიტო (#)}}</translation> <translation id="5369491905435686894">მაუსის აჩქარების ჩართვა</translation> <translation id="5369694795837229225">Linux-ის შემუშავების გარემოს დაყენება</translation> <translation id="5370819323174483825">&ხელახლა ჩატვირთვა</translation> @@ -4062,6 +4085,7 @@ <translation id="5521078259930077036">არის ეს ის საწყისი გვერდი, რომელსაც მოელოდით?</translation> <translation id="5522156646677899028">ეს გაფართოება შეიცავს უსაფრთხოების სერიოზულ ხარვეზს.</translation> <translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{თქვენმა ადმინისტრატორმა დააინსტალირა გაფართოება}other{თქვენმა ადმინისტრატორმა დააინსტალირა # გაფართოება}}</translation> +<translation id="5523558474028191231">სახელებში შეგიძლიათ გამოიყენოთ ასოები, ციფრები და საგანგებო სიმბოლოები, ხოლო სიგრძე უნდა იყოს მაქსიმუმ <ph name="MAX_CHARACTER_COUNT" /> სიმბოლო</translation> <translation id="5526701598901867718">ყველა (დაუცველი)</translation> <translation id="5526745900034778153">სინქრონიზაციის გასაგრძელებლად შედით სისტემაში ხელახლა</translation> <translation id="5527463195266282916">განხორციელდა გაფართოების უფრო ძველი ვერსიით შეცვლის მცდელობა.</translation> @@ -4453,6 +4477,7 @@ <translation id="5972826969634861500"><ph name="PRODUCT_NAME" />-ის გაშვება</translation> <translation id="5973041996755340290">„<ph name="CLIENT_NAME" />“-მა დაიწყო შეცდომების გამართვა ამ ბრაუზერში</translation> <translation id="5973605538625120605">შეცვალეთ PIN-კოდი</translation> +<translation id="5975056890546437204">{COUNT,plural, =0{ყველას &ინკოგნიტო ფანჯარაში გახსნა}=1{&ინკოგნიტო ფანჯარაში გახსნა}other{{COUNT}-ვეს &ინკოგნიტო ფანჯარაში გახსნა}}</translation> <translation id="5975792506968920132">ბატარეის დატენვის პროცენტულობა</translation> <translation id="5976160379964388480">სხვა</translation> <translation id="5978277834170881274">მართლწერის მარტივი შემოწმების &გამოყენება</translation> @@ -5181,6 +5206,7 @@ <translation id="680572642341004180">RLZ-ის მიდევნების ჩართვა <ph name="SHORT_PRODUCT_OS_NAME" />-ში.</translation> <translation id="6808039367995747522">გასაგრძელებლად ჩასვით უსაფრთხოების გასაღები და შეეხეთ მას</translation> <translation id="6808193438228982088">მელია</translation> +<translation id="6809470175540814047">ინკოგნიტო ფანჯარაში გახსნა</translation> <translation id="6810613314571580006">ავტორიზაციის შენახული მონაცემების მეშვეობით, ვებსაიტებში შესვლა ავტომატურად მოხდება. ამ ფუნქციის გათიშვის შემთხვევაში, ვებსაიტში შესვლის ყოველი მცდელობისას დადასტურება მოგიწევთ.</translation> <translation id="6810768462515084623">როგორც ჩანს, თქვენი პაროლის მოქმედების ვადა ამოიწურა. გთხოვთ, განაახლოთ ის თქვენს სხვა მოწყობილობაზე, ხოლო შემდეგ ხელახლა ცადოთ.</translation> <translation id="6811034713472274749">გვერდი მზად არის სანახავად</translation> @@ -5207,6 +5233,7 @@ <translation id="6831043979455480757">თარგმნა</translation> <translation id="6833479554815567477">ჩანართი ამოიშალა ჯგუფიდან <ph name="GROUP_NAME" /> — <ph name="GROUP_CONTENTS" /></translation> <translation id="683373380308365518">გადადით გონიერ და უსაფრთხო ბრაუზერზე</translation> +<translation id="683540480453879381"><ph name="FILE_EXTENSIONS" /> ფაილების გახსნა</translation> <translation id="6835762382653651563"><ph name="DEVICE_TYPE" />-ის განსაახლებლად, გთხოვთ, დაუკავშირდეთ ინტერნეტს.</translation> <translation id="6838034009068684089">შეკითხვა საიტის მიერ თქვენს ეკრანებზე ფანჯრების გახსნისა და განლაგების მოთხოვნისას (რეკომენდებული)</translation> <translation id="6839225236531462745">სერტიფიკატის წაშლის შეცდომა</translation> @@ -5242,6 +5269,7 @@ <translation id="6865708901122695652">WebRTC მოვლენათა ჟურნალები (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> <translation id="686609795364435700">წყნარი</translation> <translation id="686664946474413495">ფერთა ტემპერატურა</translation> +<translation id="6867400383614725881">ახალი ინკოგნიტო ჩანართი</translation> <translation id="6868934826811377550">დეტალების ნახვა</translation> <translation id="6871644448911473373">OCSP რესპონდერი: <ph name="LOCATION" /></translation> <translation id="6872781471649843364">თქვენ მიერ შეყვანილი პაროლი უარყოფილია სერვერის მიერ.</translation> @@ -5342,6 +5370,7 @@ <translation id="6979044105893951891">სტუმრების მართული სესიების გაშვება და სესიებიდან გასვლა</translation> <translation id="6979440798594660689">დადუმება (ნაგულისხმევი)</translation> <translation id="6979737339423435258">ყველა დროის</translation> +<translation id="6981553172137913845">ვების კონფიდენციალურად დასათვალიერებლად დააწკაპუნეთ მენიუს წერტილებიანი ხატულით და გახსენით ინკოგნიტო ფანჯარა</translation> <translation id="6981982820502123353">სპეციალური შესაძლებლობები</translation> <translation id="6983507711977005608">მყისიერი ტეტერინგის ქსელის გათიშვა</translation> <translation id="6983783921975806247">რეგისტრირებული OID</translation> @@ -5417,6 +5446,7 @@ <translation id="7053983685419859001">დაბლოკვა</translation> <translation id="7055152154916055070">გადამისამართება დაიბლოკა:</translation> <translation id="7055451306017383754">გაზიარების გაუქმება ვერ მოხერხდა, ვინაიდან ამ საქაღალდეს ერთ-ერთი აპლიკაცია იყენებს. ამ საქაღალდის გაზიარება გაუქმდება Parallels Desktop-ის მომდევნო გათიშვისას.</translation> +<translation id="7056418393177503237">{0,plural, =1{ინკოგნიტო}other{# გახსნილი ინკოგნიტო ფანჯარა}}</translation> <translation id="7056526158851679338">მოწყობილობების შ&ემოწმება</translation> <translation id="7057184853669165321">{NUM_MINS,plural, =1{უსაფრთხოების შემოწმება შესრულდა 1 წუთის წინ}other{უსაფრთხოების შემოწმება შესრულდა {NUM_MINS} წუთის წინ}}</translation> <translation id="7057767408836081338">აპის მონაცემების მიღება ვერ მოხერხდა, თუმცა მისი გაშვების მცდელობა მაინც მიმდინარეობს…</translation> @@ -5473,6 +5503,7 @@ <translation id="7117247127439884114">ხელახლა შედით…</translation> <translation id="711840821796638741">მართული სანიშნეების ჩვენება</translation> <translation id="711902386174337313">თქვენი ავტორიზებული მოწყობილობების სიის წაკითხვა</translation> +<translation id="7120762240626567834">Chrome ბრაუზერისა და Android-ის ტრაფიკი დაიბლოკება, როცა VPN დაკავშირებული არ იქნება</translation> <translation id="7120865473764644444">სინქრონიზაციის სერვერთან დაკავშირება ვერ მოხერხდა. მიმდინარეობს ხელახლა ცდა…</translation> <translation id="7121438501124788993">შემმუშავებლის რეჟიმი</translation> <translation id="7121728544325372695">გონიერი ტირეები</translation> @@ -5852,6 +5883,7 @@ <translation id="7561196759112975576">ყოველთვის</translation> <translation id="756445078718366910">გახსენით ბრაუზერის ფანჯარა</translation> <translation id="7564847347806291057">პროცესის დასასრული</translation> +<translation id="756503097602602175">სისტემაში შესული Google ანგარიშების მართვა შეგიძლიათ <ph name="LINK_BEGIN" />პარამეტრებიდან<ph name="LINK_END" />. ვებსაიტებისა და აპებისთვის მინიჭებული ნებართვები, შესაძლოა, ყველა ანგარიშზე ვრცელდებოდეს. თუ არ გსურთ, რომ საიტებსა თუ აპებს წვდომა ჰქონდეს თქვენი ანგარიშის ინფორმაციაზე, <ph name="DEVICE_TYPE" />-ში შესვლა შეგიძლიათ სტუმრის სტატუსით, ან ვები <ph name="LINK_2_BEGIN" />ინკოგნიტო რეჟიმში<ph name="LINK_2_END" /> დაათვალიეროთ.</translation> <translation id="7566118625369982896">Google Play აპების ბმულების მართვა</translation> <translation id="756809126120519699">Chrome მონაცემები გასუფთავდა</translation> <translation id="756876171895853918">ავატარის მორგება</translation> @@ -5936,6 +5968,7 @@ <translation id="7654941827281939388">ეს ანგარიში უკვე გამოიყენება ამ კომპიუტერში.</translation> <translation id="7655411746932645568">საიტებს შეუძლია თანმიმდევრულ პორტებთან დაკავშირების თხოვნა</translation> <translation id="7658239707568436148">გაუქმება</translation> +<translation id="7659154729610375585">მაინც გსურთ ინკოგნიტო რეჟიმიდან გასვლა?</translation> <translation id="7659297516559011665">მხოლოდ ამ მოწყობილობაზე შენახული პაროლები</translation> <translation id="7659584679870740384">თქვენ არ გაქვთ ამ მოწყობილობის გამოყენების უფლება. სისტემაში შესვლის ნებართვის მოსაპოვებლად, გთხოვთ, დაუკავშირდეთ ადმინისტრატორს.</translation> <translation id="7661259717474717992">საიტებისთვის ქუქი-ჩანაწერების მონაცემების შენახვისა და წაკითხვის დაშვება</translation> @@ -6413,6 +6446,7 @@ <translation id="8154790740888707867">ფაილი არ არის</translation> <translation id="815491593104042026">უი! ავთენტიფიკაცია ვერ განხორციელდა, რადგან იგი დაკონფიგურირდა არაუსაფრთხო URL-ის (<ph name="BLOCKED_URL" />) გამოსაყენებლად. დაუკავშირდით ადმინისტრატორს.</translation> <translation id="8155676038687609779">{COUNT,plural, =0{გატეხილი პაროლები არ მოიძებნა}=1{{COUNT} გატეხილი პაროლი}other{{COUNT} გატეხილი პაროლი}}</translation> +<translation id="8157248655669507702">eSIM პროფილის ინსტალაციისთვის ჩართეთ მობილური ინტერნეტი</translation> <translation id="8157704005178149728">მიმდინარეობს ზედამხედველობის დაყენება</translation> <translation id="8158117992543756526">პროგრამული უზრუნველყოფისა და უსაფრთხოების განახლებებს ეს მოწყობილობა აღარ იღებს <ph name="MONTH_AND_YEAR" />-დან. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation> <translation id="816055135686411707">შეცდომა სანდო სერტიფიკატის დაყენებისას</translation> @@ -6768,6 +6802,7 @@ <translation id="8588866096426746242">პროფილის სტატისტიკის ჩვენება</translation> <translation id="8588868914509452556"><ph name="WINDOW_TITLE" /> — ხორციელდება VR კონტენტის წარდგენა ყურსაცვამისთვის</translation> <translation id="8590375307970699841">დააყენეთ ავტომატური განახლებება</translation> +<translation id="8590506940709493916">,</translation> <translation id="8591783563402255548">1 წამი</translation> <translation id="8592141010104017453">ყველა შეტყობინების დამალვა</translation> <translation id="859246725979739260">ამ საიტისთვის დაიბლოკა თქვენს მდებარეობაზე წვდომა.</translation> @@ -7039,6 +7074,7 @@ <translation id="8863753581171631212">ბმულის გახსნა ახალ <ph name="APP" />-ში</translation> <translation id="8864055848767439877">მიმდინარეობს „<ph name="TAB_NAME" />“-ის გაზიარება <ph name="APP_NAME" />-თან</translation> <translation id="8864458770072227512"><ph name="EMAIL" /> ამოიშალა ამ მოწყობილობიდან</translation> +<translation id="8865112428068029930">საზიარო კომპიუტერს იყენებთ? ცადეთ ინკოგნიტო ფანჯრის გახსნა.</translation> <translation id="8867228703146808825">ანაწყობის დეტალების კოპირება გაცვლის ბუფერში</translation> <translation id="8868333925931032127">მიმდინარეობს დემო-რეჟიმის გაშვება</translation> <translation id="8868626022555786497">გამოყენებული</translation> @@ -7096,6 +7132,7 @@ <translation id="8925458182817574960">&პარამეტრები</translation> <translation id="8926389886865778422">აღარ მკითხო</translation> <translation id="892706138619340876">ზოგიერთი პარამეტრი გადაყენებულია</translation> +<translation id="8929696694736010839">მხოლოდ მიმდინარე ინკოგნიტო სესია</translation> <translation id="8930351635855238750">ქუქი-ჩანაწერების ახალი პარამეტრები გააქტიურდება გვერდის გადატვირთვის შემდეგ</translation> <translation id="8930622219860340959">უსადენო</translation> <translation id="8931076093143205651">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ხელი შეუწყვეთ Android-ის გაუმჯობესებას დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემების ავტომატურად გაგზავნით Google-ში. აღნიშნული მონაცემები დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. ეს პარამეტრი არის იძულებით გააქტიურებული მფლობელის მიერ. მფლობელს შეუძლია ამ მოწყობილობის დიაგნოსტიკისა და გამოყენების მონაცემების Google-ისთვის გაგზავნის დაშვება. თუ ჩართული გაქვთ ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს თქვენს Google ანგარიშში.</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index 939c43c..69b99bd 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -344,6 +344,7 @@ <translation id="1383597849754832576">बोलीसम्बन्धी फाइलहरू डाउनलोड गर्न सकिएन। पछि फेरि प्रयास गर्नुहोस्।</translation> <translation id="1383861834909034572">पूरा भएपछि खुल्ने</translation> <translation id="1383876407941801731">खोज्नुहोस्</translation> +<translation id="1384849755549338773">अन्य भाषाका वेबसाइटहरू Google Translate प्रयोग गरी अनुवाद गर्ने विकल्प दिइयोस्</translation> <translation id="1386791642444521222">SIM कार्ड सक्रिय पार्नुहोस्</translation> <translation id="138784436342154190">डिफल्ट सुरुवात पृष्ठलाई पुनर्स्थापना गर्ने हो?</translation> <translation id="1388253969141979417">तपाईंको माइक्रोफोन प्रयोग गर्ने अनुमति दिइएका साइटहरू</translation> @@ -862,6 +863,7 @@ <translation id="1920390473494685033">सम्पर्कहरू</translation> <translation id="1921050530041573580">आफ्नो फोनलाई Messages सँग जोडा बनाउनुहोस्</translation> <translation id="1921584744613111023"><ph name="DPI" /> dpi</translation> +<translation id="1923468477587371721">तपाईंले कुनै खास एपमा गएर त्यसको भाषा बदल्नुभएको अवस्थामा बाहेक Gmail, Drive र YouTube जस्ता एपहरूले तपाईंको Google खाताको भाषा प्रयोग गर्छन्</translation> <translation id="192494336144674234">यस मार्फत खोल्नुहोस्</translation> <translation id="1925017091976104802">पेस्ट गर्न <ph name="MODIFIER_KEY_DESCRIPTION" /> मा थिच्नुहोस्</translation> <translation id="1925021887439448749">आफू अनुकूल पारिएको वेब ठेगाना प्रविष्टि गर्नुहोस्</translation> @@ -1942,6 +1944,7 @@ <translation id="311394601889664316">साइटहरूलाई मेरो यन्त्रमा भएका फाइल वा फोल्डरहरू परिवर्तन गर्ने अनुमति नदिइयोस्</translation> <translation id="3115147772012638511">क्यासको प्रतीक्षामा ...</translation> <translation id="3115580024857770654">सबै संक्षिप्त गर्नुहोस्</translation> +<translation id="3115743155098198207">Google खाताको भाषा व्यवस्थापन गर्नुहोस्</translation> <translation id="3117362587799608430">डक पूर्ण रूपमा मिल्दो छैन</translation> <translation id="3117791853215125017">{COUNT,plural, =1{<ph name="DEVICE_NAME" /> मा <ph name="ATTACHMENTS" /> पठाउन सकिएन}other{<ph name="DEVICE_NAME" /> मा <ph name="ATTACHMENTS" /> पठाउन सकिएन}}</translation> <translation id="3118319026408854581"><ph name="PRODUCT_NAME" /> मद्दत</translation> @@ -2359,6 +2362,7 @@ <translation id="3599863153486145794">साइन इन गरिएका सबै यन्त्रहरूबाट इतिहास खाली गर्दछ। तपाईंको Google खाताको <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> मा अन्य किसिमका ब्राउजिङ इतिहास रहेका हुन सक्छन्।</translation> <translation id="3600051066689725006">वेबको अनुरोधसम्बन्धी जानकारी</translation> <translation id="3600792891314830896">आवाज प्ले गर्ने साइटहरूलाई म्युट गर्नुहोस्</translation> +<translation id="3601151620448429694"><ph name="NETWORK_NAME" /> · <ph name="CARRIER_NAME" /></translation> <translation id="360180734785106144">नयाँ सुविधाहरू उपलब्ध भएपछि प्रस्ताव गर्नुहोस्</translation> <translation id="3602290021589620013">पूर्वावलोकन</translation> <translation id="3602870520245633055">प्रिन्ट गर्नुहोस् र स्क्यान गर्नुहोस्</translation> @@ -3002,7 +3006,7 @@ <translation id="4316650123995163262"><ph name="VENDOR_NAME" /> का USB डिभाइसहरू (उत्पादन ID <ph name="PRODUCT_ID" /> भएका)</translation> <translation id="4316850752623536204">विकासकर्ता वेबसाइट</translation> <translation id="4317820549299924617">पुष्टि गर्ने कार्य असफल भयो</translation> -<translation id="4320177379694898372">कुनै इन्टरनेट जडान छैन</translation> +<translation id="4320177379694898372">इन्टरनेट छैन</translation> <translation id="4322394346347055525">अन्य ट्याबहरू बन्द गर्नुहोस्</translation> <translation id="4324577459193912240">फाइल अपूर्ण छ</translation> <translation id="4325237902968425115"><ph name="LINUX_APP_NAME" /> को स्थापना रद्द गर्दै...</translation> @@ -3680,6 +3684,7 @@ <translation id="5107443654503185812">एउटा एक्स्टेन्सनले सुरक्षित ब्राउजिङ सेवा निष्क्रिय पारेको छ</translation> <translation id="5108967062857032718">सेटिङहरू - Android एपहरूलाई हटाउनुहोस्</translation> <translation id="5109044022078737958">मिया</translation> +<translation id="5109816792918100764"><ph name="LANGUAGE_NAME" /> भाषा हटाउनुहोस्</translation> <translation id="5111646998522066203">इन्कोग्निटो मोडबाट बाहिर निस्कनुहोस्</translation> <translation id="5111692334209731439">&बुकमार्क व्यवस्थापक</translation> <translation id="5112577000029535889">&विकासकर्ता उपकरणहरू</translation> @@ -4417,6 +4422,7 @@ <translation id="5943127421590245687">तपाईंको खाता पुष्टि गरिएको छ। आफ्नो लोकल डेटा रिस्टोर गर्न कृपया तपाईंको पुरानो <ph name="DEVICE_TYPE" /> को पासवर्ड हाल्नुहोस्।</translation> <translation id="5944869793365969636">QR कोड स्क्यान गर्नुहोस्</translation> <translation id="5945002094477276055"><ph name="FILE_NAME" /> हानिकारक हुन सक्छ। यो फाइल सुरक्षित छ कि छैन भनी स्क्यान गर्न यसलाई Google सुरक्षित ब्राउजिङ नामक सुविधामा पठाउने हो?</translation> +<translation id="5945363896952315544">तपाईंको सुरक्षा साँचोमा थप फिंगरप्रिन्ट भण्डारण गर्न मिल्दैन। तपाईंले हाल भण्डारण गरिएको कुनै फिंगरप्रिन्ट मेटाएपछि मात्र तपाईं नयाँ फिंगरप्रिन्ट हाल्न सक्नुहुन्छ।</translation> <translation id="5946591249682680882">रिपोर्ट आईडी <ph name="WEBRTC_LOG_REPORT_ID" /></translation> <translation id="5948536763493709626">किबोर्ड वा माउस जोड्नुहोस् वा टचस्क्रिन प्रयोग गरेर सेटअप गर्ने प्रक्रिया जारी राख्नुहोस्। तपाईं ब्लुटुथ चल्ने डिभाइसहरू प्रयोग गर्दै हुनुहुन्छ भने ती यन्त्र ब्लुटुथबाट कनेक्ट गर्न सकिने अवस्थामा छन् भन्ने कुरा सुनिश्चित गर्नुहोस्।</translation> <translation id="5949544233750246342">फाइल पार्स गर्न सकिएन</translation> @@ -5357,6 +5363,7 @@ <translation id="7001036685275644873">Linux एप र फाइलहरू ब्याकअप गरिँदै</translation> <translation id="7002055706763150362">Chromebook का लागि स्मार्ट लक सेटअप गर्न Google ले यो तपाईं नै हो भनेर सुनिश्चित गर्नुपर्छ— सुरु गर्न तपाईंको पासवर्ड टाइप गर्नुहोस्।</translation> <translation id="7003339318920871147">वेब डाटाबेसहरू</translation> +<translation id="7003454175711353260">{COUNT,plural, =1{{COUNT} वटा फाइल}other{{COUNT} वटा फाइल}}</translation> <translation id="7003723821785740825">आफ्नो यन्त्र अनलक गर्ने अझ द्रुत तरिका सेटअप गर्नुहोस्</translation> <translation id="7003844668372540529"><ph name="VENDOR_NAME" /> बाट अज्ञात उत्पादन <ph name="PRODUCT_ID" /></translation> <translation id="7004402701596653846">साइटले MIDI प्रयोग गर्न सक्छ</translation> @@ -5619,6 +5626,7 @@ <translation id="7306521477691455105"><ph name="USB_DEVICE_NAME" /> <ph name="USB_VM_NAME" /> मा कनेक्ट गर्न सेटिङ खोल्नुहोस्</translation> <translation id="7307129035224081534">पज गरियो</translation> <translation id="7308436126008021607">ब्याकग्राउन्डमा सिंक गर्ने सुविधा</translation> +<translation id="7308643132139167865">वेबसाइटका भाषाहरू</translation> <translation id="7309257895202129721">&नियन्त्रणहरू देखाउनुहोस्</translation> <translation id="7310598146671372464">लग इन गर्न सकिएन। सर्भरले Kerberos नामक तोकिएको इन्क्रिप्सनका प्रकारहरूलाई समर्थन गर्दैन। आफ्नो प्रशासकसँग सम्पर्क गर्नुहोस्।</translation> <translation id="7320213904474460808">डिफल्ट नेटवर्क बनाउनुहोस्</translation> @@ -5830,6 +5838,7 @@ <translation id="7552846755917812628">निम्न सुझावहरूको पालना गरी हेर्नुहोस्:</translation> <translation id="7553012839257224005">Linux कन्टेनर जाँच गरिँदै छ</translation> <translation id="7553242001898162573">तपाईँको पासवर्ड प्रविष्टि गर्नुहोस्।</translation> +<translation id="755472745191515939">तपाईंका एड्मिनले तोक्नुभएको नीतिअनुसार यो भाषा प्रयोग गर्न मिल्दैन</translation> <translation id="7554791636758816595">नयाँ ट्याब</translation> <translation id="7556033326131260574">Smart Lock ले तपाईँको खाता प्रमाणीकरण गर्न सकेन। प्रविष्ट गर्न आफ्नो पासवर्ड टाइप गर्नुहोस्।</translation> <translation id="7556242789364317684">दुर्भाग्यवश, <ph name="SHORT_PRODUCT_NAME" /> ले तपाईंका सेटिङहरू पुन: प्राप्त गर्न सकेन। त्रुटि सच्याउनका लागि, <ph name="SHORT_PRODUCT_NAME" /> ले तपाईंको यन्त्रलाई पावरवाश मार्फत रिसेट गर्नुपर्छ।</translation> @@ -6130,6 +6139,7 @@ <translation id="7858328180167661092"><ph name="APP_NAME" /> (Windows)</translation> <translation id="786073089922909430">सेवा: <ph name="ARC_PROCESS_NAME" /></translation> <translation id="7861215335140947162">&डाउनलोडहरू</translation> +<translation id="7861846108263890455">Google खाताको भाषा</translation> <translation id="7864539943188674973">ब्लुटुथ अक्षम बनाउनुहोस्</translation> <translation id="786957569166715433"><ph name="DEVICE_NAME" /> - जोडा बनाइयो</translation> <translation id="7870730066603611552">सेटअप गरेपश्चात् सिंकसम्बन्धी विकल्पहरूको समीक्षा गर्नुहोस्</translation> @@ -6391,6 +6401,7 @@ <translation id="8143442547342702591">अमान्य एप</translation> <translation id="8143951647992294073"><ph name="TOPIC_SOURCE" /> <ph name="TOPIC_SOURCE_DESC" /> चयन गर्नुहोस्</translation> <translation id="8146177459103116374">यदि तपाईंले यो डिभाइसमा पहिले नै दर्ता गराउनुभएको छ भने, तपाईंले <ph name="LINK2_START" />एउटा विद्यमान प्रयोगकर्ताको रूपमा साइन इन<ph name="LINK2_END" /> गर्न सक्नुहुन्छ।</translation> +<translation id="8146287226035613638">आफूले चाहेका भाषाहरू हाल्नुहोस् र तिनको क्रम मिलाउनुहोस्। वेबसाइटहरूले सम्भव भएसम्म तपाईंले चाहेका भाषामा सामग्री देखाउने छन्। यी प्राथमिकताहरू तपाईंको ब्राउजरका सेटिङसँग सिंक गरिन्छन्। <ph name="BEGIN_LINK_LEARN_MORE" />थप जान्नुहोस्<ph name="END_LINK_LEARN_MORE" /></translation> <translation id="8146793085009540321">साइन इन गर्न सकिएन। कृपया आफ्नो प्रशासकलाई सम्पर्क गर्नुहोस् वा फेरि प्रयास गर्नुहोस्।</translation> <translation id="8147900440966275470"><ph name="NUM" /> ट्याब फेला पर्यो</translation> <translation id="8148760431881541277">साइन इन गर्ने सीमा तोक्नुहोस्</translation> @@ -7401,6 +7412,7 @@ <translation id="983511809958454316">यो सुविधा VR मा समर्थित छैन</translation> <translation id="984136553749462603">कुनै साइटले प्रतिलिपि अधिकारद्वारा संरक्षित सामग्री प्ले गर्दा उक्त साइटले तपाईंको यन्त्र पहिचान गर्ने अनुमति माग्न सक्छ</translation> <translation id="984275831282074731">भुक्तानी विधिहरू</translation> +<translation id="984705303330760860">हिज्जे जाँच गरिनु पर्ने भाषाहरू थप्नुहोस्</translation> <translation id="98515147261107953">ल्यान्डस्केप</translation> <translation id="987068745968718743">Parallels Desktop: <ph name="PLUGIN_VM_NAME" /></translation> <translation id="987264212798334818">सामान्य</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index 7b66e00d..507dad9 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -3172,7 +3172,7 @@ <translation id="4510479820467554003">ਮਾਂ-ਪਿਓ ਦੇ ਖਾਤਿਆਂ ਦੀ ਸੂਚੀ</translation> <translation id="4510614391273086606">Linux ਫ਼ਾਈਲਾਂ ਅਤੇ ਐਪਾਂ ਨੂੰ ਉਸੇ ਤਰ੍ਹਾਂ ਮੁੜ-ਬਹਾਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਜਿਵੇਂ ਉਹਨਾਂ ਦਾ ਬੈਕਅੱਪ ਲਿਆ ਗਿਆ ਸੀ।</translation> <translation id="451102079304155829">ਕਾਰਟ</translation> -<translation id="4513946894732546136">ਫ਼ੀਡਬੈਕ</translation> +<translation id="4513946894732546136">ਵਿਚਾਰ</translation> <translation id="451407183922382411"><ph name="COMPANY_NAME" /> ਵੱਲੋਂ ਸੰਚਾਲਿਤ</translation> <translation id="4514610446763173167">ਵੀਡੀਓ ਨੂੰ ਚਲਾਉਣ ਜਾਂ ਰੋਕਣ ਲਈ ਟੌਗਲ ਕਰੋ</translation> <translation id="451515744433878153">ਹਟਾਓ</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index 6d797aa..88eff80 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -515,6 +515,7 @@ <translation id="1553538517812678578">neomejeno</translation> <translation id="1555130319947370107">Modra</translation> <translation id="1556537182262721003">Imenika razširitve ni bilo mogoče premakniti v profil.</translation> +<translation id="1558391695376153246">Zapri anonimne zavihke</translation> <translation id="155865706765934889">Sledilna ploščica</translation> <translation id="1562119309884184621">Če dodate ta stik, se bo nastavitev shranila za naslednjič, ko bo ta oseba delila</translation> <translation id="1563702743503072935">Gesla v računu Google bodo na voljo tudi v tej napravi, ko ste prijavljeni</translation> @@ -571,6 +572,7 @@ <translation id="1616206807336925449">Za to razširitev so potrebna posebna dovoljenja.</translation> <translation id="1616298854599875024">Razširitve »<ph name="IMPORT_NAME" />« ni mogoče uvoziti, ker ni modul v skupni rabi.</translation> <translation id="1617765145568323981">{NUM_FILES,plural, =0{Preverjamo, ali so ti podatki v skladu z varnostnimi pravilniki organizacije …}=1{Preverjamo, ali je ta datoteka v skladu z varnostnimi pravilniki organizacije …}one{Preverjamo, ali so te datoteke v skladu z varnostnimi pravilniki organizacije …}two{Preverjamo, ali so te datoteke v skladu z varnostnimi pravilniki organizacije …}few{Preverjamo, ali so te datoteke v skladu z varnostnimi pravilniki organizacije …}other{Preverjamo, ali so te datoteke v skladu z varnostnimi pravilniki organizacije …}}</translation> +<translation id="1618102204889321535"><ph name="CURRENT_CHARACTER_COUNT" />/<ph name="MAX_CHARACTER_COUNT" /></translation> <translation id="1618268899808219593">Center za pomoč</translation> <translation id="1620307519959413822">Napačno geslo. Poskusite znova ali kliknite »Ste pozabili geslo?«, če želite geslo ponastaviti.</translation> <translation id="1620510694547887537">Kamera</translation> @@ -631,6 +633,7 @@ <translation id="1668979692599483141">Preberite več o predlogih</translation> <translation id="1670399744444387456">Osnovno</translation> <translation id="1673137583248014546"><ph name="URL" /> si želi ogledati znamko in model varnostnega ključa</translation> +<translation id="1674073353928166410">Odpiranje vseh (<ph name="URL_COUNT" />) v anonimnem oknu.</translation> <translation id="1677306805708094828">Ni mogoče dodati tega: <ph name="EXTENSION_TYPE_PARAMETER" /></translation> <translation id="1677472565718498478">Še <ph name="TIME" /></translation> <translation id="1679068421605151609">Razvijalska orodja</translation> @@ -778,6 +781,7 @@ <translation id="1817871734039893258">Microsoftova obnovitev datoteke</translation> <translation id="1818007989243628752">Izbris gesla za <ph name="USERNAME" /></translation> <translation id="1818913467757368489">Poteka nalaganje dnevnika.</translation> +<translation id="1819443852740954262">Odpiranje vseh v anonimnem oknu</translation> <translation id="1819721979226826163">Dotaknite se »Obvestila aplikacije > Storitve Google Play«.</translation> <translation id="1820028137326691631">Vnesite geslo, ki ga je priskrbel skrbnik</translation> <translation id="182139138257690338">samodejni prenosi</translation> @@ -987,6 +991,7 @@ <translation id="2058456167109518507">Zaznana je bila naprava</translation> <translation id="2059913712424898428">Časovni pas</translation> <translation id="2060375639911876205">Odstranitev profila za eSIM</translation> +<translation id="2062354623176996748">Uporabljajte splet brez shranjevanja zgodovine brskanja z anonimnim oknom.</translation> <translation id="2065405795449409761">Chrome upravlja avtomatizirana preskusna programska oprema.</translation> <translation id="2071393345806050157">Ni lokalne dnevniške datoteke.</translation> <translation id="2071692954027939183">Obvestila so bila samodejno blokirana, ker jih običajno ne dovolite.</translation> @@ -1005,12 +1010,14 @@ <translation id="2082187087049518845">Uvrsti zavihek v skupino</translation> <translation id="2082510809738716738">Izbira barve teme</translation> <translation id="208586643495776849">Poskusite znova</translation> +<translation id="208634871997892083">Stalno vklopljen VPN</translation> <translation id="2087822576218954668">Tiskanje: <ph name="PRINT_NAME" /></translation> <translation id="2088690981887365033">Omrežje VPN</translation> <translation id="208928984520943006">Če se želite kadar koli vrniti na začetni zaslon, s prstom povlecite z dna zaslona navzgor.</translation> <translation id="2089566709556890888">Varno brskanje z Google Chromom</translation> <translation id="2089795179672254991">Vprašaj, ko želi spletno mesto videti besedilo in slike, kopirane v odložišče (priporočljivo)</translation> <translation id="2090165459409185032">Če želite obnoviti podatke računa, pojdite na: google.com/accounts/recovery</translation> +<translation id="2090507354966565596">Samodejno se poveže, ko se prijavite.</translation> <translation id="2090876986345970080">Varnostna nastavitev sistema</translation> <translation id="2091887806945687916">Zvok</translation> <translation id="2096715839409389970">Izbriši piškotke drugih spletnih mest</translation> @@ -1122,6 +1129,7 @@ <translation id="2200094388063410062">E-pošta</translation> <translation id="2200356397587687044">Chrome potrebuje dovoljenje za nadaljevanje</translation> <translation id="2202898655984161076">Težava pri prikazu tiskalnikov. Nekateri od vaših tiskalnikov morda niso uspešno registrirani v storitvi <ph name="CLOUD_PRINT_NAME" /></translation> +<translation id="2203088913459920044">Za ime se lahko uporabijo črke, številke in posebni znaki.</translation> <translation id="2204034823255629767">Branje in spreminjanje vsega, kar napišete</translation> <translation id="220858061631308971">Vnesite PIN za napravo »<ph name="DEVICE_NAME" />«:</translation> <translation id="2212565012507486665">Dovoli piškotke</translation> @@ -1660,6 +1668,7 @@ <translation id="2792290659606763004">Želite odstraniti aplikacije za Android?</translation> <translation id="2792465461386711506">Vklopite sinhronizacijo za Chrome, če si želite ogledati nedavne Chromove zavihke iz telefona</translation> <translation id="2794233252405721443">Spletno mesto blokirano</translation> +<translation id="2794522004398861033">Če želite nastaviti eSIM, se povežite z omrežjem Wi-Fi ali ethernetom.</translation> <translation id="2795716239552913152">Spletna mesta običajno uporabljajo vašo lokacijo zaradi ustreznih funkcij ali informacij, kot so lokalne novice ali trgovine v bližini.</translation> <translation id="2796424461616874739">Med povezovanjem z napravo »<ph name="DEVICE_NAME" />« je potekla časovna omejitev preverjanja pristnosti.</translation> <translation id="2796740370559399562">Še naprej dovoli piškotke</translation> @@ -1877,6 +1886,7 @@ <translation id="3016641847947582299">Komponenta je posodobljena</translation> <translation id="3017079585324758401">Ozadje</translation> <translation id="3019285239893817657">Gumb za podstran</translation> +<translation id="3019595674945299805">Storitev VPN</translation> <translation id="3020183492814296499">Bližnjice</translation> <translation id="3020990233660977256">Serijska številka: <ph name="SERIAL_NUMBER" /></translation> <translation id="3021065318976393105">Med napajanjem iz baterije</translation> @@ -1996,6 +2006,7 @@ <translation id="3159493096109238499">Bež</translation> <translation id="3159978855457658359">Urejanje imena naprave</translation> <translation id="3160842278951476457"><ph name="ISSUED_BY" /> [<ph name="ISSUED_TO" />] (podprto s strojno opremo)</translation> +<translation id="3160928651883997588">Nastavitve za VPN</translation> <translation id="3161522574479303604">Vsi jeziki</translation> <translation id="3162853326462195145">Šolski račun</translation> <translation id="3162899666601560689">Spletna mesta lahko uporabljajo piškotke za izboljšanje izkušnje brskanja, in sicer tako, da na primer poskrbijo, da ostanete prijavljeni, ali si zapomnijo izdelke v nakupovalnem vozičku.</translation> @@ -2164,6 +2175,7 @@ <translation id="3380365263193509176">Neznana napaka</translation> <translation id="3382073616108123819">Ups. Sistemu ni uspelo določiti identifikatorjev naprave za to napravo.</translation> <translation id="3382200254148930874">Ustavitev nadzora ...</translation> +<translation id="338323348408199233">Blokiraj promet brez omrežja VPN</translation> <translation id="3385092118218578224"><ph name="DISPLAY_ZOOM" /> %</translation> <translation id="338583716107319301">Ločilo</translation> <translation id="338691029516748599">Omrežje <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="SECURITY_STATUS" />, moč signala je <ph name="SIGNAL_STRENGTH" /> %, upravlja ga vaš skrbnik, vzpostavitev povezave</translation> @@ -2615,6 +2627,7 @@ <translation id="3844888638014364087">Vstavljen je emodži</translation> <translation id="3846116211488856547">Prenesite orodja za razvoj spletnih mest, aplikacij za Android in drugega. Ob namestitvi Linuxa bo prenesenih <ph name="DOWNLOAD_SIZE" /> podatkov.</translation> <translation id="3847319713229060696">Pomagajte izboljšati varnost v spletu za vse</translation> +<translation id="3848547754896969219">Odpiranje v &anonimnem oknu</translation> <translation id="385051799172605136">Nazaj</translation> <translation id="3851428669031642514">Naloži skripte, ki niso varni</translation> <translation id="3854599674806204102">Izberite možnost</translation> @@ -2984,6 +2997,7 @@ <translation id="4275830172053184480">Znova zaženite napravo.</translation> <translation id="4278101229438943600">Pomočnik je na voljo</translation> <translation id="4278390842282768270">Dovoljeno</translation> +<translation id="4279129444466079448">V tej napravi je mogoče namestiti največ toliko profilov eSIM: <ph name="PROFILE_LIMIT" />. Če želite dodati drug profil, najprej odstranite obstoječega.</translation> <translation id="4281844954008187215">Pogoji storitve</translation> <translation id="4282196459431406533">Smart Lock je vklopljen</translation> <translation id="4285418559658561636">Posodobi geslo</translation> @@ -2999,6 +3013,7 @@ <translation id="4295979599050707005">Znova se prijavite, če želite potrditi, da je mogoče uporabljati vaš račun, <ph name="USER_EMAIL" />, s spletnimi mesti, aplikacijami in razširitvami v Chromu in Googlu Play. Ta račun lahko tudi odstranite. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation> <translation id="4297219207642690536">Znova zaženi in ponastavi</translation> <translation id="4297813521149011456">Sukanje zaslona</translation> +<translation id="4299022904780065004">Novo &anonimno okno</translation> <translation id="4301671483919369635">Ta stran ima dovoljenje za urejanje datotek</translation> <translation id="4303079906735388947">Nastavitev nove kode PIN za varnostni ključ</translation> <translation id="4305402730127028764">Kopiraj v napravo <ph name="DEVICE_NAME" /></translation> @@ -3310,6 +3325,7 @@ <translation id="4641539339823703554">Chrome ni mogel nastaviti sistemskega časa. Preverite spodaj navedeni čas in ga po potrebi popravite.</translation> <translation id="4642769377300286600">Nameščanje profila v mobilni napravi, omrežje <ph name="NETWORK_INDEX" /> od <ph name="NETWORK_COUNT" />, <ph name="NETWORK_NAME" />, <ph name="NETWORK_PROVIDER_NAME" /></translation> <translation id="4643612240819915418">&Odpri videoposnetek v novem zavihku</translation> +<translation id="4644205769234414680">Omogoči v anonimnem načinu</translation> <translation id="4645676300727003670">Obdrži</translation> <translation id="4646675363240786305">Vrata</translation> <translation id="4647090755847581616">Zap&ri zavihek</translation> @@ -3466,6 +3482,7 @@ <translation id="4838836835474292213">Dostop za branje odložišča je omogočen</translation> <translation id="4838907349371614303">Geslo je bilo posodobljeno</translation> <translation id="4839303808932127586">Shr&ani videoposnetek kot ...</translation> +<translation id="4840096453115567876">Ali želite vseeno zapustiti anonimni način?</translation> <translation id="4842976633412754305">Ta stran poskuša naložiti skripte iz virov, ki nimajo preverjene pristnosti.</translation> <translation id="4844333629810439236">Druge tipkovnice</translation> <translation id="4846680374085650406">Upoštevate priporočila skrbnika za to nastavitev.</translation> @@ -3583,6 +3600,7 @@ <translation id="4964455510556214366">Razvrstitev</translation> <translation id="496446150016900060">Sinhroniziranje omrežij Wi-Fi s telefonom.</translation> <translation id="4965808351167763748">Ali res želite nastaviti to napravo za zagon storitve Hangouts Meet?</translation> +<translation id="4966972803217407697">Ste v anonimnem načinu</translation> <translation id="496888482094675990">Aplikacija Datoteke omogoča hiter dostop do datotek, ki ste jih shranili v Googlu Drive, v zunanji shrambi ali v napravi s sistemom Chrome OS.</translation> <translation id="4971412780836297815">Odpri, ko je končano</translation> <translation id="4971735654804503942">Hitrejša, še boljša zaščita proti nevarnim spletnim mestom, prenosom in razširitvam. Opozori vas glede kršitev gesel. Zahteva pošiljanje podatkov brskanja Googlu.</translation> @@ -3612,6 +3630,7 @@ <translation id="5005498671520578047">Kopiranje gesla</translation> <translation id="5006218871145547804">ADB za aplikacije za Android v Crostiniju</translation> <translation id="5007392906805964215">Pregled</translation> +<translation id="50080882645628821">Odstrani profil</translation> <translation id="5008936837313706385">Ime dejavnosti</translation> <translation id="5010043101506446253">Overitelj potrdila</translation> <translation id="5015344424288992913">Razrešujem proxy ...</translation> @@ -3793,6 +3812,7 @@ <translation id="5213114823401215820">Vnovično odpiranje zaprte skupine</translation> <translation id="5213481667492808996">Podatkovno storitev omrežja »<ph name="NAME" />« lahko začnete uporabljati</translation> <translation id="5213891612754844763">Prikaži nastavitve strežnika proxy</translation> +<translation id="5214249693262842685">Ko uporabljate anonimni način, spletna mesta ne morejo uporabljati piškotkov za ogled dejavnosti brskanja na različnih spletnih mestih, na primer za osebno prilagajanje oglasov. Funkcije na nekaterih spletnih mestih morda ne bodo delovale.</translation> <translation id="5215502535566372932">Izberite državo</translation> <translation id="521582610500777512">Fotografija je bila zavržena</translation> <translation id="5222403284441421673">Prenos, ki ni varen, je blokiran</translation> @@ -3904,6 +3924,7 @@ <translation id="5336688142483283574">Ta stran bo tudi odstranjena iz zgodovine in dejavnosti iskalnika <ph name="SEARCH_ENGINE" />.</translation> <translation id="5337771866151525739">Namestil jo je drug ponudnik.</translation> <translation id="5337926771328966926">Trenutno ime naprave je <ph name="DEVICE_NAME" /></translation> +<translation id="5338338064218053691">Z anonimnim oknom lahko zasebno brskate.</translation> <translation id="5338503421962489998">Lokalna shramba</translation> <translation id="5340638867532133571">Spletnim mestom dovoli namestitev rutin za obravnavo plačil (priporočeno)</translation> <translation id="5341793073192892252">Ti piškotki so bili blokirani (piškotki drugih mest se blokirajo brez izjeme)</translation> @@ -3927,6 +3948,7 @@ <translation id="536638840841140142">Brez</translation> <translation id="5368720394188453070">Telefon je zaklenjen. Za dostop ga odklenite.</translation> <translation id="5368779022775404937">Prijavite se v domeno <ph name="REALM" /></translation> +<translation id="536882527576164740">{0,plural, =1{Anonimni način}one{Anonimni način (#)}two{Anonimni način (#)}few{Anonimni način (#)}other{Anonimni način (#)}}</translation> <translation id="5369491905435686894">Omogočanje pospeševanja miške</translation> <translation id="5369694795837229225">Nastavitev razvojnega okolja Linux</translation> <translation id="5370819323174483825">&Znova naloži</translation> @@ -4067,6 +4089,7 @@ <translation id="5521078259930077036">Ali je to domača stran, ki ste jo pričakovali?</translation> <translation id="5522156646677899028">Ta razširitev vsebuje veliko varnostno ranljivost.</translation> <translation id="5523149538118225875">{NUM_EXTENSIONS,plural, =1{Skrbnik je namestil razširitev}one{Skrbnik je namestil # razširitev}two{Skrbnik je namestil # razširitvi}few{Skrbnik je namestil # razširitve}other{Skrbnik je namestil # razširitev}}</translation> +<translation id="5523558474028191231">Za ime se lahko uporabijo črke, številke in posebni znaki, in ima lahko največ toliko znakov: <ph name="MAX_CHARACTER_COUNT" />.</translation> <translation id="5526701598901867718">Vse (ni varno)</translation> <translation id="5526745900034778153">Znova se prijavite, če želite nadaljevati sinhronizacijo</translation> <translation id="5527463195266282916">Poskus spremembe razširitve v starejšo različico.</translation> @@ -4460,6 +4483,7 @@ <translation id="5972826969634861500">Zaženi <ph name="PRODUCT_NAME" /></translation> <translation id="5973041996755340290">»<ph name="CLIENT_NAME" />« je začel odpravljati napake v brskalniku</translation> <translation id="5973605538625120605">Spreminjanje kode PIN</translation> +<translation id="5975056890546437204">{COUNT,plural, =0{Odpiranje vseh v &anonimnem oknu}=1{Odpiranje v &anonimnem oknu}one{Odpiranje vseh ({COUNT}) v &anonimnem oknu}two{Odpiranje vseh ({COUNT}) v &anonimnem oknu}few{Odpiranje vseh ({COUNT}) v &anonimnem oknu}other{Odpiranje vseh ({COUNT}) v &anonimnem oknu}}</translation> <translation id="5975792506968920132">Napolnjenost akumulatorja</translation> <translation id="5976160379964388480">Drugo</translation> <translation id="5978277834170881274">&Uporaba osnovnega preverjanja črkovanja</translation> @@ -5188,6 +5212,7 @@ <translation id="680572642341004180">Omogoči sledenje RLZ v izdelku <ph name="SHORT_PRODUCT_OS_NAME" />.</translation> <translation id="6808039367995747522">Če želite nadaljevati, vstavite varnostni ključ in se ga dotaknite</translation> <translation id="6808193438228982088">Lisica</translation> +<translation id="6809470175540814047">Odpiranje v anonimnem oknu</translation> <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="6810768462515084623">Ojoj. Videti je, da je vaše geslo poteklo. Obnovite ga v drugi napravi in poskusite znova.</translation> <translation id="6811034713472274749">Stran je pripravljena za ogled</translation> @@ -5214,6 +5239,7 @@ <translation id="6831043979455480757">Prevedi</translation> <translation id="6833479554815567477">Zavihek je odstranjen iz skupine <ph name="GROUP_NAME" /> – <ph name="GROUP_CONTENTS" />.</translation> <translation id="683373380308365518">Preklop na pametni in varni brskalnik</translation> +<translation id="683540480453879381">odpirati datoteke <ph name="FILE_EXTENSIONS" /></translation> <translation id="6835762382653651563">Če želite posodobiti napravo <ph name="DEVICE_TYPE" />, vzpostavite internetno povezavo.</translation> <translation id="6838034009068684089">Vprašaj, ko želi spletno mesto odpreti okna in jih postaviti na zaslone (priporočljivo)</translation> <translation id="6839225236531462745">Napaka pri brisanju potrdila</translation> @@ -5249,6 +5275,7 @@ <translation id="6865708901122695652">Dnevniki dogodkov WebRTC (<ph name="WEBRTC_EVENT_LOG_COUNT" />)</translation> <translation id="686609795364435700">Tiho</translation> <translation id="686664946474413495">Barvna temperatura</translation> +<translation id="6867400383614725881">Nov anonimni zavihek</translation> <translation id="6868934826811377550">Prikaz podrobnosti</translation> <translation id="6871644448911473373">Odzivnik OCSP: <ph name="LOCATION" /></translation> <translation id="6872781471649843364">Vneseno geslo je zavrnil strežnik.</translation> @@ -5349,6 +5376,7 @@ <translation id="6979044105893951891">Zagon in zapiranje upravljanih sej gosta</translation> <translation id="6979440798594660689">Izklop zvoka (privzeto)</translation> <translation id="6979737339423435258">Od začetka</translation> +<translation id="6981553172137913845">Če želite brskati zasebno, kliknite meni z ikono pik, da odprete anonimno okno.</translation> <translation id="6981982820502123353">Dostopnost</translation> <translation id="6983507711977005608">Prekinitev povezave z omrežjem za takojšnjo povezavo računalnika z internetom prek mobilnega telefona</translation> <translation id="6983783921975806247">Registriran OID</translation> @@ -5424,6 +5452,7 @@ <translation id="7053983685419859001">Blokiraj</translation> <translation id="7055152154916055070">Preusmeritev je preprečena:</translation> <translation id="7055451306017383754">Skupne rabe mape ni bilo mogoče preklicati, ker jo uporablja določena aplikacija. Skupna raba mape bo preklicana ob naslednji zaustavitvi programa Parallels Desktop.</translation> +<translation id="7056418393177503237">{0,plural, =1{Anonimni način}one{# odprto anonimno okno}two{# odprti anonimni okni}few{# odprta anonimna okna}other{# odprtih anonimnih oken}}</translation> <translation id="7056526158851679338">&Pregled naprav</translation> <translation id="7057184853669165321">{NUM_MINS,plural, =1{Varnostno preverjanje je bilo izvedeno pred 1 minuto}one{Varnostno preverjanje je bilo izvedeno pred {NUM_MINS} minuto}two{Varnostno preverjanje je bilo izvedeno pred {NUM_MINS} minutama}few{Varnostno preverjanje je bilo izvedeno pred {NUM_MINS} minutami}other{Varnostno preverjanje je bilo izvedeno pred {NUM_MINS} minutami}}</translation> <translation id="7057767408836081338">Pridobivanje podatkov aplikacije ni uspelo. Aplikacija se kljub temu poskuša zagnati …</translation> @@ -5480,6 +5509,7 @@ <translation id="7117247127439884114">Prijavite se znova ...</translation> <translation id="711840821796638741">Prikaz upravljanih zaznamkov</translation> <translation id="711902386174337313">Branje seznama naprav, v katere ste prijavljeni</translation> +<translation id="7120762240626567834">Če povezava z omrežjem VPN ni vzpostavljena, bosta blokirana brskalnik Chrome in promet v Androidu.</translation> <translation id="7120865473764644444">Povezave s strežnikom za sinhronizacijo ni bilo mogoče vzpostaviti. Vnovičen poskus …</translation> <translation id="7121438501124788993">Način za razvijalce</translation> <translation id="7121728544325372695">Pametni pomišljaji</translation> @@ -5859,6 +5889,7 @@ <translation id="7561196759112975576">Vedno</translation> <translation id="756445078718366910">Odpri okno brskalnika</translation> <translation id="7564847347806291057">Končaj proces</translation> +<translation id="756503097602602175">Račune Google, v katere ste prijavljeni, lahko upravljate v <ph name="LINK_BEGIN" />nastavitvah<ph name="LINK_END" />. Dovoljenja, ki ste jih odobrili spletnim mestom in aplikacijam, morda veljajo za vse račune. Če ne želite, da bi spletna mesta ali aplikacije dostopali do podatkov o vašem računu, se lahko prijavite v napravo <ph name="DEVICE_TYPE" /> kot gost ali brskate po spletu v <ph name="LINK_2_BEGIN" />anonimnem oknu<ph name="LINK_2_END" />.</translation> <translation id="7566118625369982896">Upravljanje povezav do aplikacij v Googlu Play</translation> <translation id="756809126120519699">Chromovi podatki so izbrisani.</translation> <translation id="756876171895853918">Prilagajanje avatarja</translation> @@ -5943,6 +5974,7 @@ <translation id="7654941827281939388">Ta račun se že uporablja v tem računalniku.</translation> <translation id="7655411746932645568">Spletna mesta lahko zahtevajo vzpostavitev povezave s serijskimi vrati</translation> <translation id="7658239707568436148">Prekliči</translation> +<translation id="7659154729610375585">Ali želite vseeno zapustiti anonimni način?</translation> <translation id="7659297516559011665">Samo gesla v tej napravi</translation> <translation id="7659584679870740384">Nimate dovoljenja za uporabo te naprave. Za dovoljenje za prijavo se obrnite na skrbnika.</translation> <translation id="7661259717474717992">Spletnim mestom dovoli shranjevanje in branje podatkov piškotkov</translation> @@ -6422,6 +6454,7 @@ <translation id="8154790740888707867">Ni datoteke</translation> <translation id="815491593104042026">Ups. Preverjanje ni uspelo, ker je konfigurirana za uporabo URL-ja, ki ni varen (<ph name="BLOCKED_URL" />). Obrnite se na skrbnika.</translation> <translation id="8155676038687609779">{COUNT,plural, =0{Najdeno ni bilo nobeno ogroženo geslo}=1{{COUNT} ogroženo geslo}one{{COUNT} ogroženo geslo}two{{COUNT} ogroženi gesli}few{{COUNT} ogrožena gesla}other{{COUNT} ogroženih gesel}}</translation> +<translation id="8157248655669507702">Če želite namestiti profil eSIM, omogočite prenos podatkov v mobilnem omrežju.</translation> <translation id="8157704005178149728">Nastavljanje nadzora</translation> <translation id="8158117992543756526">Datum, ko je ta naprava prenehala prejemati samodejne posodobitve programske opreme in varnostne posodobitve: <ph name="MONTH_AND_YEAR" />. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation> <translation id="816055135686411707">Napačna nastavitev zaupanja potrdilu</translation> @@ -6777,6 +6810,7 @@ <translation id="8588866096426746242">Prikaži statistične podatke profila</translation> <translation id="8588868914509452556"><ph name="WINDOW_TITLE" /> – predvajanje VR v slušalkah z mikrofonom</translation> <translation id="8590375307970699841">Nastavitev samodejnih posodobitev</translation> +<translation id="8590506940709493916">,</translation> <translation id="8591783563402255548">1 sekunda</translation> <translation id="8592141010104017453">Ne prikazuj obvestil</translation> <translation id="859246725979739260">Temu spletnemu mestu je preprečen dostop do vaše lokacije.</translation> @@ -7051,6 +7085,7 @@ <translation id="8863753581171631212">Odpiranje povezave v novem oknu aplikacije <ph name="APP" /></translation> <translation id="8864055848767439877">Deljenje zavihka <ph name="TAB_NAME" /> z aplikacijo <ph name="APP_NAME" /></translation> <translation id="8864458770072227512">Račun <ph name="EMAIL" /> je bil odstranjen iz te naprave</translation> +<translation id="8865112428068029930">Uporabljate računalnik v skupni rabi? Poskusite odpreti anonimno okno.</translation> <translation id="8867228703146808825">Kopiranje podrobnosti gradnje v odložišče</translation> <translation id="8868333925931032127">Zagon predstavitvenega načina</translation> <translation id="8868626022555786497">V uporabi</translation> @@ -7108,6 +7143,7 @@ <translation id="8925458182817574960">&Nastavitve</translation> <translation id="8926389886865778422">Ne sprašuj več</translation> <translation id="892706138619340876">Nekatere nastavitve so bile ponastavljene</translation> +<translation id="8929696694736010839">Samo za trenutno anonimno sejo</translation> <translation id="8930351635855238750">Nove nastavitve za piškotke bodo začele veljati, ko znova naložite stran</translation> <translation id="8930622219860340959">Brezžično</translation> <translation id="8931076093143205651">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Pomagajte izboljšati izkušnjo z Androidom s samodejnim pošiljanjem diagnostičnih podatkov ter podatkov o uporabi naprave in aplikacij Googlu. Te podatke uporabljamo za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. To nastavitev je uveljavil lastnik naprave. Lastnik bo morda izbral, da se za to napravo pošiljajo diagnostični podatki in podatki o uporabi Googlu. Če ste vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v vašem računu Google.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb index e4c6363..ab8642f 100644 --- a/chrome/app/resources/google_chrome_strings_az.xtb +++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -69,6 +69,7 @@ <translation id="2652691236519827073">Linki Yeni Chrome tabında açın</translation> <translation id="2665296953892887393">Qəza raportlarını və <ph name="UMA_LINK" /> linkini Google'a göndərməklə Google Chrome'un daha keyfiyyətli olmasına kömək edin</translation> <translation id="2689103672227170538">Bu artırma Chrome'u başlatdığınız zaman hansı səhifənin göstərildiyini dəyişdi.</translation> +<translation id="2742320827292110288">Xəbərdarlıq: Google Chrome artırmaların brauzer tarixçənizi yazmasının qarşısını ala bilməz. Bu artırmanı Anonim rejimdə deaktiv etmək üçün bu seçimi ləğv edin.</translation> <translation id="2765403129283291972">Chrome bu sayt üçün mikrofona giriş tələb edir</translation> <translation id="2770231113462710648">Defolt brauzeri dəyişin:</translation> <translation id="2775140325783767197">Chrome parollarınızı yoxlaya bilmir. İnternet bağlantınızı yoxlamağa cəhd edin.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb index e12452b..0eb1810 100644 --- a/chrome/app/resources/google_chrome_strings_bg.xtb +++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -70,6 +70,7 @@ <translation id="2652691236519827073">Отваряне на връзката в нов &раздел на Chrome</translation> <translation id="2665296953892887393">Помогнете ни да подобрим Google Chrome, като ни изпращате <ph name="UMA_LINK" /> му и сигнали за сривове</translation> <translation id="2689103672227170538">Това разширение промени страницата, която се показва при стартиране на Chrome.</translation> +<translation id="2742320827292110288">Предупреждение: Google Chrome не може да попречи на разширенията да записват историята ви на сърфиране. За да деактивирате това разширение в режим „инкогнито“, премахнете отметката от тази опция.</translation> <translation id="2765403129283291972">Chrome се нуждае от разрешение за достъп до микрофона ви за този сайт</translation> <translation id="2770231113462710648">Промяна на браузъра по подразбиране с/ъс:</translation> <translation id="2775140325783767197">Chrome не може да провери паролите ви. Проверете връзката си с интернет.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb index ecd1b2d..e1679e2 100644 --- a/chrome/app/resources/google_chrome_strings_fil.xtb +++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -72,6 +72,7 @@ <translation id="2652691236519827073">Buksan ang Link sa Bagong &tab ng Chrome</translation> <translation id="2665296953892887393">Tumulong na gawing mas mahusay ang Google Chrome sa pamamagitan ng pagpapadala ng mga ulat ng pag-crash at <ph name="UMA_LINK" /> sa Google</translation> <translation id="2689103672227170538">Binago ng extension na ito ang ipinapakitang page kapag sinimulan mo ang Chrome.</translation> +<translation id="2742320827292110288">Babala: Hindi mapipigilan ng Google Chrome ang pagtatala ng mga extension ng iyong history ng pag-browse. Upang i-disable ang extension na ito sa Incognito mode, alisin sa pagkakapili ang opsyong ito.</translation> <translation id="2765403129283291972">Kailangan ng Chrome ng pahintulot na i-access ang iyong mikropono para sa site na ito</translation> <translation id="2770231113462710648">Baguhin ang default na browser sa:</translation> <translation id="2775140325783767197">Hindi masuri ng Chrome ang iyong mga password. Subukang tingnan ang iyong koneksyon sa internet.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_iw.xtb b/chrome/app/resources/google_chrome_strings_iw.xtb index 8039d5bf..f10deb9f 100644 --- a/chrome/app/resources/google_chrome_strings_iw.xtb +++ b/chrome/app/resources/google_chrome_strings_iw.xtb
@@ -68,6 +68,7 @@ <translation id="2652691236519827073">פתיחת הקישור ב&כרטיסיית Chrome חדשה</translation> <translation id="2665296953892887393">שיפור Google Chrome על ידי שליחת <ph name="UMA_LINK" /> ודוחות קריסה אל Google</translation> <translation id="2689103672227170538">התוסף הזה שינה את הדף שמוצג כש-Chrome מופעל.</translation> +<translation id="2742320827292110288">אזהרה: Google Chrome לא יכול למנוע מתוספים לתעד את היסטוריית הגלישה שלך. כדי להשבית את התוסף הזה במצב אנונימי, יש לבטל את הבחירה באפשרות הזו.</translation> <translation id="2765403129283291972">Chrome זקוק להרשאת גישה למיקרופון בשביל האתר הזה</translation> <translation id="2770231113462710648">שינוי דפדפן ברירת המחדל ל:</translation> <translation id="2775140325783767197">Chrome לא יכול לבדוק את הסיסמאות שלך. יש לבדוק את החיבור לאינטרנט.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ka.xtb b/chrome/app/resources/google_chrome_strings_ka.xtb index 64f8dbf..e3c0337f 100644 --- a/chrome/app/resources/google_chrome_strings_ka.xtb +++ b/chrome/app/resources/google_chrome_strings_ka.xtb
@@ -71,6 +71,7 @@ <translation id="2652691236519827073">ბმულის გახსნა Chrome-ის ახალ ჩა&ნართში</translation> <translation id="2665296953892887393">დაგვეხმარეთ Google Chrome-ის გაუმჯობესებაში: გამოგზავნეთ მოხსენებები შეცდომების შესახებ <ph name="UMA_LINK" /> Google-ში</translation> <translation id="2689103672227170538">ამ გაფართოებამ თქვენ მიერ Chrome-ის გაშვებისას ნაჩვენები გვერდი შეცვალა.</translation> +<translation id="2742320827292110288">გაფრთხილება: Google Chrome ვერ შეუშლის ხელს გაფართოებებს ვების დათვალიერების ისტორიის შენახვაში. ამ გაფართოების ინკოგნიტო რეჟიმში გამოსართავად მოხსენით მონიშვნა ამ ვარიანტზე.</translation> <translation id="2765403129283291972">Chrome საჭიროებს თქვენს მიკროფონზე წვდომის ნებართვას ამ საიტისთვის</translation> <translation id="2770231113462710648">შეცვალეთ ნაგულისხმევი ბრაუზერი-ით:</translation> <translation id="2775140325783767197">Chrome ვერ ახერხებს პაროლების შემოწმებას. შეამოწმეთ კავშირი ინტერნეტთან.</translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb index d89d9ac9..3b8b37cf 100644 --- a/chrome/app/resources/google_chrome_strings_sl.xtb +++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -72,6 +72,7 @@ <translation id="2652691236519827073">Odpiranje povezave na novem &zavihku v Chromu</translation> <translation id="2665296953892887393">Pomagajte izboljšati Chrome – Googlu pošiljajte poročila o zrušitvah in ta dokument: <ph name="UMA_LINK" />.</translation> <translation id="2689103672227170538">Zaradi te razširitve se je spremenila stran, ki je prikazana, ko zaženete Chrome.</translation> +<translation id="2742320827292110288">Opozorilo: Google Chrome razširitvam ne more preprečiti beleženja zgodovine brskanja. Če želite onemogočiti to razširitev v anonimnem načinu, počistite to možnost.</translation> <translation id="2765403129283291972">Chrome potrebuje dovoljenje za dostop do mikrofona za to spletno mesto</translation> <translation id="2770231113462710648">Spremeni privzeti brskalnik na:</translation> <translation id="2775140325783767197">Chrome ne more preveriti vaših gesel. Poskusite preveriti internetno povezavo.</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index e4cfc24f..8ca72b3 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -6208,6 +6208,10 @@ if (enable_session_service) { sources += [ + "sessions/session_data_service.cc", + "sessions/session_data_service.h", + "sessions/session_data_service_factory.cc", + "sessions/session_data_service_factory.h", "sessions/session_restore.cc", "sessions/session_restore.h", "sessions/session_restore_delegate.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 87846c1..082dbf4 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -7278,6 +7278,11 @@ FEATURE_VALUE_TYPE(app_list_features::kLauncherQueryHighlighting)}, #endif // BUILDFLAG(IS_CHROMEOS_ASH) + {"update-history-entry-points-in-incognito", + flag_descriptions::kUpdateHistoryEntryPointsInIncognitoName, + flag_descriptions::kUpdateHistoryEntryPointsInIncognitoDescription, kOsAll, + FEATURE_VALUE_TYPE(features::kUpdateHistoryEntryPointsInIncognito)}, + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/ash/arc/arc_optin_uma.cc b/chrome/browser/ash/arc/arc_optin_uma.cc index a471c12..93f07a5 100644 --- a/chrome/browser/ash/arc/arc_optin_uma.cc +++ b/chrome/browser/ash/arc/arc_optin_uma.cc
@@ -203,8 +203,9 @@ base::UmaHistogramEnumeration("Arc.OptInSilentAuthCode", state); } +// TODO(tantoshchuk): rename UMA histogram to "Arc.Management.Transition.Result" void UpdateSupervisionTransitionResultUMA( - mojom::SupervisionChangeStatus result) { + mojom::ManagementChangeStatus result) { base::UmaHistogramEnumeration("Arc.Supervision.Transition.Result", result); }
diff --git a/chrome/browser/ash/arc/arc_optin_uma.h b/chrome/browser/ash/arc/arc_optin_uma.h index c35a999..e90a06d 100644 --- a/chrome/browser/ash/arc/arc_optin_uma.h +++ b/chrome/browser/ash/arc/arc_optin_uma.h
@@ -237,8 +237,7 @@ void UpdatePlayStoreShownTimeDeprecated(const base::TimeDelta& elapsed_time, const Profile* profile); void UpdateSilentAuthCodeUMA(OptInSilentAuthCode state); -void UpdateSupervisionTransitionResultUMA( - mojom::SupervisionChangeStatus result); +void UpdateSupervisionTransitionResultUMA(mojom::ManagementChangeStatus result); void UpdateReauthorizationSilentAuthCodeUMA(OptInSilentAuthCode state); void UpdateSecondaryAccountSilentAuthCodeUMA(OptInSilentAuthCode state); void UpdateAuthTiming(const char* histogram_name,
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service.cc b/chrome/browser/ash/arc/auth/arc_auth_service.cc index 0af97e24..dff17ec0 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service.cc +++ b/chrome/browser/ash/arc/auth/arc_auth_service.cc
@@ -373,28 +373,28 @@ UpdateAuthAccountCheckStatus(status, profile_); } -void ArcAuthService::ReportSupervisionChangeStatus( - mojom::SupervisionChangeStatus status) { +void ArcAuthService::ReportManagementChangeStatus( + mojom::ManagementChangeStatus status) { UpdateSupervisionTransitionResultUMA(status); switch (status) { - case mojom::SupervisionChangeStatus::CLOUD_DPC_DISABLED: - case mojom::SupervisionChangeStatus::CLOUD_DPC_ALREADY_DISABLED: - case mojom::SupervisionChangeStatus::CLOUD_DPC_ENABLED: - case mojom::SupervisionChangeStatus::CLOUD_DPC_ALREADY_ENABLED: + case mojom::ManagementChangeStatus::CLOUD_DPC_DISABLED: + case mojom::ManagementChangeStatus::CLOUD_DPC_ALREADY_DISABLED: + case mojom::ManagementChangeStatus::CLOUD_DPC_ENABLED: + case mojom::ManagementChangeStatus::CLOUD_DPC_ALREADY_ENABLED: profile_->GetPrefs()->SetInteger( prefs::kArcSupervisionTransition, static_cast<int>(ArcSupervisionTransition::NO_TRANSITION)); // TODO(brunokim): notify potential observers. break; - case mojom::SupervisionChangeStatus::CLOUD_DPC_DISABLING_FAILED: - case mojom::SupervisionChangeStatus::CLOUD_DPC_ENABLING_FAILED: - LOG(ERROR) << "Child transition failed: " << status; + case mojom::ManagementChangeStatus::CLOUD_DPC_DISABLING_FAILED: + case mojom::ManagementChangeStatus::CLOUD_DPC_ENABLING_FAILED: + LOG(ERROR) << "Management transition failed: " << status; ShowDataRemovalConfirmationDialog( profile_, base::BindOnce(&ArcAuthService::OnDataRemovalAccepted, weak_ptr_factory_.GetWeakPtr())); break; - case mojom::SupervisionChangeStatus::INVALID_SUPERVISION_STATE: - NOTREACHED() << "Invalid status of child transition: " << status; + case mojom::ManagementChangeStatus::INVALID_MANAGEMENT_STATE: + NOTREACHED() << "Invalid status of management transition: " << status; } }
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service.h b/chrome/browser/ash/arc/auth/arc_auth_service.h index 0474222..7ccd3345 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service.h +++ b/chrome/browser/ash/arc/auth/arc_auth_service.h
@@ -79,8 +79,8 @@ mojom::ArcSignInAccountPtr account) override; void ReportMetrics(mojom::MetricsType metrics_type, int32_t value) override; void ReportAccountCheckStatus(mojom::AccountCheckStatus status) override; - void ReportSupervisionChangeStatus( - mojom::SupervisionChangeStatus status) override; + void ReportManagementChangeStatus( + mojom::ManagementChangeStatus status) override; void RequestPrimaryAccountInfo( RequestPrimaryAccountInfoCallback callback) override; void RequestAccountInfo(const std::string& account_name,
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc b/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc index b5e7b87..03a7899 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc +++ b/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc
@@ -970,25 +970,25 @@ ArcDataRemover data_remover(profile()->GetPrefs(), cryptohome::Identification{EmptyAccountId()}); - const std::vector<mojom::SupervisionChangeStatus> success_statuses{ - mojom::SupervisionChangeStatus::CLOUD_DPC_DISABLED, - mojom::SupervisionChangeStatus::CLOUD_DPC_ALREADY_DISABLED, - mojom::SupervisionChangeStatus::CLOUD_DPC_ENABLED, - mojom::SupervisionChangeStatus::CLOUD_DPC_ALREADY_ENABLED}; + const std::vector<mojom::ManagementChangeStatus> success_statuses{ + mojom::ManagementChangeStatus::CLOUD_DPC_DISABLED, + mojom::ManagementChangeStatus::CLOUD_DPC_ALREADY_DISABLED, + mojom::ManagementChangeStatus::CLOUD_DPC_ENABLED, + mojom::ManagementChangeStatus::CLOUD_DPC_ALREADY_ENABLED}; - const std::vector<mojom::SupervisionChangeStatus> failure_statuses{ - mojom::SupervisionChangeStatus::CLOUD_DPC_DISABLING_FAILED, - mojom::SupervisionChangeStatus::CLOUD_DPC_ENABLING_FAILED}; + const std::vector<mojom::ManagementChangeStatus> failure_statuses{ + mojom::ManagementChangeStatus::CLOUD_DPC_DISABLING_FAILED, + mojom::ManagementChangeStatus::CLOUD_DPC_ENABLING_FAILED}; // Suppress ToS. profile()->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true); profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); // Success statuses do not affect running state of ARC++. - for (mojom::SupervisionChangeStatus status : success_statuses) { + for (mojom::ManagementChangeStatus status : success_statuses) { EXPECT_EQ(ArcSessionManager::State::ACTIVE, session->state()); EXPECT_FALSE(IsDataRemovalConfirmationDialogOpenForTesting()); - auth_service().ReportSupervisionChangeStatus(status); + auth_service().ReportManagementChangeStatus(status); base::RunLoop().RunUntilIdle(); EXPECT_EQ(ArcSessionManager::State::ACTIVE, session->state()); EXPECT_FALSE(IsDataRemovalConfirmationDialogOpenForTesting()); @@ -996,14 +996,14 @@ // Test failure statuses that lead to showing data removal confirmation and // ARC++ stopping. This block tests cancelation of data removal. - for (mojom::SupervisionChangeStatus status : failure_statuses) { + for (mojom::ManagementChangeStatus status : failure_statuses) { EXPECT_EQ(ArcSessionManager::State::ACTIVE, session->state()); // Confirmation dialog is not shown. EXPECT_FALSE(IsDataRemovalConfirmationDialogOpenForTesting()); // No data removal request. EXPECT_FALSE(data_remover.IsScheduledForTesting()); // Report a failure that brings confirmation dialog. - auth_service().ReportSupervisionChangeStatus(status); + auth_service().ReportManagementChangeStatus(status); base::RunLoop().RunUntilIdle(); // This does not cause ARC++ stopped. EXPECT_EQ(ArcSessionManager::State::ACTIVE, session->state()); @@ -1022,11 +1022,11 @@ } // At this time accepts data removal. - for (mojom::SupervisionChangeStatus status : failure_statuses) { + for (mojom::ManagementChangeStatus status : failure_statuses) { EXPECT_EQ(ArcSessionManager::State::ACTIVE, session->state()); EXPECT_FALSE(IsDataRemovalConfirmationDialogOpenForTesting()); EXPECT_FALSE(data_remover.IsScheduledForTesting()); - auth_service().ReportSupervisionChangeStatus(status); + auth_service().ReportManagementChangeStatus(status); base::RunLoop().RunUntilIdle(); EXPECT_EQ(ArcSessionManager::State::ACTIVE, session->state()); EXPECT_TRUE(IsDataRemovalConfirmationDialogOpenForTesting()); @@ -1049,14 +1049,14 @@ EXPECT_EQ(ArcSessionManager::State::STOPPED, session->state()); // Opting out ARC++ forces confirmation dialog to close. - for (mojom::SupervisionChangeStatus status : failure_statuses) { + for (mojom::ManagementChangeStatus status : failure_statuses) { // Suppress ToS. profile()->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true); profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); session->StartArcForTesting(); EXPECT_EQ(ArcSessionManager::State::ACTIVE, session->state()); - auth_service().ReportSupervisionChangeStatus(status); + auth_service().ReportManagementChangeStatus(status); base::RunLoop().RunUntilIdle(); EXPECT_TRUE(IsDataRemovalConfirmationDialogOpenForTesting());
diff --git a/chrome/browser/ash/borealis/borealis_util.cc b/chrome/browser/ash/borealis/borealis_util.cc index 020aa8c8..968b9ca5 100644 --- a/chrome/browser/ash/borealis/borealis_util.cc +++ b/chrome/browser/ash/borealis/borealis_util.cc
@@ -9,6 +9,7 @@ namespace borealis { const char kBorealisAppId[] = "dkecggknbdokeipkgnhifhiokailichf"; +const char kBorealisMainAppId[] = "epfhbkiklgmlkhfpbcdleadnhcfdjfmo"; const char kBorealisDlcName[] = "borealis-dlc"; // TODO(b/174282035): Potentially update regex when other strings // are updated.
diff --git a/chrome/browser/ash/borealis/borealis_util.h b/chrome/browser/ash/borealis/borealis_util.h index 385f3df..361be39 100644 --- a/chrome/browser/ash/borealis/borealis_util.h +++ b/chrome/browser/ash/borealis/borealis_util.h
@@ -16,6 +16,8 @@ // This is used by the Borealis app and the Borealis installer. // Generated by crx_file::id_util::GenerateId("org.chromium.borealis"); extern const char kBorealisAppId[]; +// This is the id of the main application which borealis runs. +extern const char kBorealisMainAppId[]; // This is used to install the Borealis DLC component. extern const char kBorealisDlcName[]; // The regex used for extracing the Borealis app id of an application.
diff --git a/chrome/browser/ash/login/existing_user_controller.cc b/chrome/browser/ash/login/existing_user_controller.cc index 2a9473a8..3fd2a99 100644 --- a/chrome/browser/ash/login/existing_user_controller.cc +++ b/chrome/browser/ash/login/existing_user_controller.cc
@@ -1147,6 +1147,10 @@ // Start online sign-in UI for the user. is_login_in_progress_ = false; login_performer_.reset(); + if (session_manager::SessionManager::Get()->IsInSecondaryLoginScreen()) { + // Gaia dialog is not supported on the secondary login screen. + return; + } GetLoginDisplayHost()->ShowGaiaDialog(account_id); }
diff --git a/chrome/browser/ash/login/screens/mock_network_screen.h b/chrome/browser/ash/login/screens/mock_network_screen.h index a80ba64..d57373e 100644 --- a/chrome/browser/ash/login/screens/mock_network_screen.h +++ b/chrome/browser/ash/login/screens/mock_network_screen.h
@@ -41,9 +41,6 @@ MOCK_METHOD(void, Hide, ()); MOCK_METHOD(void, ShowError, (const std::u16string& message)); MOCK_METHOD(void, ClearErrors, ()); - MOCK_METHOD(void, - ShowConnectingStatus, - (bool connecting, const std::u16string& network_id)); MOCK_METHOD(void, SetOfflineDemoModeEnabled, (bool enabled)); private:
diff --git a/chrome/browser/ash/login/screens/network_screen.cc b/chrome/browser/ash/login/screens/network_screen.cc index 916d6b6d..b0f0d2d 100644 --- a/chrome/browser/ash/login/screens/network_screen.cc +++ b/chrome/browser/ash/login/screens/network_screen.cc
@@ -183,8 +183,6 @@ connection_timer_.Stop(); network_id_ = network_id; - if (view_) - view_->ShowConnectingStatus(false, network_id_); // Automatically continue if we are using Hands-Off Enrollment. if (is_connected && continue_attempts_ == 0 && @@ -201,8 +199,6 @@ } network_id_ = network_id; - if (view_) - view_->ShowConnectingStatus(continue_pressed_, network_id_); } void NetworkScreen::OnBackButtonClicked() {
diff --git a/chrome/browser/ash/login/screens/update_screen.cc b/chrome/browser/ash/login/screens/update_screen.cc index 88fc334c..1d0218e 100644 --- a/chrome/browser/ash/login/screens/update_screen.cc +++ b/chrome/browser/ash/login/screens/update_screen.cc
@@ -18,6 +18,7 @@ #include "chrome/browser/ash/login/error_screens_histogram_helper.h" #include "chrome/browser/ash/login/screens/network_error.h" #include "chrome/browser/ash/login/wizard_context.h" +#include "chrome/browser/chromeos/policy/enrollment_requisition_manager.h" #include "chrome/browser/ui/webui/chromeos/login/update_screen_handler.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" @@ -130,6 +131,12 @@ return true; } + if (policy::EnrollmentRequisitionManager::IsRemoraRequisition()) { + LOG(WARNING) << "Skip OOBE Update for remora devices."; + exit_callback_.Run(VersionUpdater::Result::UPDATE_SKIPPED); + return true; + } + const auto* skip_screen_key = context->configuration.FindKeyOfType( configuration::kUpdateSkipUpdate, base::Value::Type::BOOLEAN); const bool skip_screen = skip_screen_key && skip_screen_key->GetBool();
diff --git a/chrome/browser/ash/login/session/chrome_session_manager_browsertest.cc b/chrome/browser/ash/login/session/chrome_session_manager_browsertest.cc index 8ec42cf..ce22db0 100644 --- a/chrome/browser/ash/login/session/chrome_session_manager_browsertest.cc +++ b/chrome/browser/ash/login/session/chrome_session_manager_browsertest.cc
@@ -35,6 +35,13 @@ #include "testing/gtest/include/gtest/gtest.h" namespace ash { +namespace system { +namespace { +// TODO(https://crbug.com/1164001): remove when moved to ash:: +using ::chromeos::system::kRlzBrandCodeKey; +using ::chromeos::system::ScopedFakeStatisticsProvider; +} // namespace +} // namespace system namespace { // TODO(https://crbug.com/1164001): remove when moved to ash::
diff --git a/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.cc b/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.cc index 544b876..cc7d610 100644 --- a/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.cc +++ b/chrome/browser/chromeos/full_restore/arc_ghost_window_delegate.cc
@@ -38,9 +38,25 @@ void ArcGhostWindowDelegate::OnStateChanged( chromeos::WindowStateType old_state_type, chromeos::WindowStateType new_state) { + if (old_state_type == new_state) + return; + + auto* window_state = + ash::WindowState::Get(shell_surface_->GetWidget()->GetNativeWindow()); + + if (!window_state || !shell_surface_->host_window()->GetRootWindow()) + return; + + display::Display display; + const display::Screen* screen = display::Screen::GetScreen(); + auto display_existed = screen->GetDisplayWithDisplayId(display_id_, &display); + DCHECK(display_existed); + switch (new_state) { case chromeos::WindowStateType::kNormal: case chromeos::WindowStateType::kDefault: + // Reset geometry for previous bounds. + shell_surface_->SetBounds(display_id_, bounds_); shell_surface_->SetRestored(); break; case chromeos::WindowStateType::kMinimized: @@ -48,8 +64,11 @@ break; case chromeos::WindowStateType::kMaximized: shell_surface_->SetMaximized(); + // Update geometry for showing overlay as maximized bounds. + shell_surface_->SetBounds(display_id_, display.bounds()); break; case chromeos::WindowStateType::kFullscreen: + // TODO(sstan): Adjust bounds like maximized state. shell_surface_->SetFullscreen(true); break; default:
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_unittest.cc b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_unittest.cc index 97ef7f04..07aeff4 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_unittest.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_rules_manager_impl_unittest.cc
@@ -532,14 +532,14 @@ std::move(restrictions_1))); base::Value src_urls_2(base::Value::Type::LIST); - src_urls_1.Append(kWildCardMatching); + src_urls_2.Append(kWildCardMatching); base::Value restrictions_2(base::Value::Type::LIST); restrictions_2.Append(dlp_test_util::CreateRestrictionWithLevel( dlp::kPrintingRestriction, dlp::kBlockLevel)); rules.Append(dlp_test_util::CreateRule( - "Block any printing", "Block printing any docs", std::move(src_urls_1), + "Block any printing", "Block printing any docs", std::move(src_urls_2), /*dst_urls=*/base::Value(base::Value::Type::LIST), /*dst_components=*/base::Value(base::Value::Type::LIST), std::move(restrictions_2)));
diff --git a/chrome/browser/content_settings/content_settings_browsertest.cc b/chrome/browser/content_settings/content_settings_browsertest.cc index 0df4108..b85606b1 100644 --- a/chrome/browser/content_settings/content_settings_browsertest.cc +++ b/chrome/browser/content_settings/content_settings_browsertest.cc
@@ -1064,6 +1064,31 @@ ->IsContentBlocked(ContentSettingsType::COOKIES)); } +IN_PROC_BROWSER_TEST_F(ContentSettingsTest, SendRendererContentRules) { + ASSERT_TRUE(embedded_test_server()->Start()); + const GURL url_1 = embedded_test_server()->GetURL("a.com", "/title1.html"); + const GURL url_2 = + embedded_test_server()->GetURL("b.com", "/javaScriptTitle.html"); + content::WebContents* web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + + ui_test_utils::NavigateToURL(browser(), url_1); + HostContentSettingsMap* map = HostContentSettingsMapFactory::GetForProfile( + Profile::FromBrowserContext(web_contents->GetBrowserContext())); + EXPECT_NE(map, nullptr); + EXPECT_FALSE( + PageSpecificContentSettings::GetForFrame(web_contents->GetMainFrame()) + ->IsContentBlocked(ContentSettingsType::JAVASCRIPT)); + map->SetContentSettingDefaultScope(url_2, url_2, + ContentSettingsType::JAVASCRIPT, + ContentSetting::CONTENT_SETTING_BLOCK); + ui_test_utils::NavigateToURL(browser(), url_2); + base::RunLoop().RunUntilIdle(); + EXPECT_TRUE( + PageSpecificContentSettings::GetForFrame(web_contents->GetMainFrame()) + ->IsContentBlocked(ContentSettingsType::JAVASCRIPT)); +} + class ContentSettingsWorkerModulesBrowserTest : public ContentSettingsTest { public: ContentSettingsWorkerModulesBrowserTest() = default;
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 0d0da3f..6c6d42f 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -5127,6 +5127,11 @@ "expiry_milestone": -1 }, { + "name": "update-history-entry-points-in-incognito", + "owners": [ "sideyilmaz", "rhalavati", "chrome-privacy-core@google.com" ], + "expiry_milestone": 97 + }, + { "name": "update-menu-item-custom-summary", "owners": [ "//chrome/android/java/src/org/chromium/chrome/browser/omaha/OWNERS" ], // This is required by test teams to verify functionality on devices which
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 0933a41..4cc1628 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1414,6 +1414,13 @@ "When enabled, removes any theme or background customization done by the " "user on the Incognito UI."; +const char kUpdateHistoryEntryPointsInIncognitoName[] = + "Update history entry points in Incongito."; +const char kUpdateHistoryEntryPointsInIncognitoDescription[] = + "When enabled, the entry points to history UI from Incognito mode will be " + "removed for iOS and Desktop. An educative placeholder will be shown for " + "Android history page."; + const char kIncognitoScreenshotName[] = "Incognito Screenshot"; const char kIncognitoScreenshotDescription[] = "Enables Incognito screenshots on Android. It will also make Incognito "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index d7ee331..41ce68f 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -829,6 +829,9 @@ extern const char kIncognitoBrandConsistencyForDesktopName[]; extern const char kIncognitoBrandConsistencyForDesktopDescription[]; +extern const char kUpdateHistoryEntryPointsInIncognitoName[]; +extern const char kUpdateHistoryEntryPointsInIncognitoDescription[]; + extern const char kIncognitoScreenshotName[]; extern const char kIncognitoScreenshotDescription[];
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc index 9e2254d..7bbdc118 100644 --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -75,6 +75,7 @@ #include "chrome/browser/search_engines/template_url_fetcher_factory.h" #include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/send_tab_to_self/send_tab_to_self_client_service_factory.h" +#include "chrome/browser/sessions/session_data_service_factory.h" #include "chrome/browser/sessions/tab_restore_service_factory.h" #include "chrome/browser/sharing/sharing_service_factory.h" #include "chrome/browser/signin/about_signin_internals_factory.h" @@ -432,6 +433,7 @@ send_tab_to_self::SendTabToSelfClientServiceFactory::GetInstance(); #if BUILDFLAG(ENABLE_SESSION_SERVICE) SessionServiceFactory::GetInstance(); + SessionDataServiceFactory::GetInstance(); #endif SharingServiceFactory::GetInstance(); ShortcutsBackendFactory::GetInstance();
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html index 432350a..a2e9ef48 100644 --- a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html +++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.html
@@ -120,6 +120,10 @@ background-color: var(--cr-checked-color); border-top-left-radius: 2px; border-top-right-radius: 2px; + /* This gets made visible after we determine the correct location by loading + * history. + */ + display: none; flex-shrink: 0; height: 2px; /* Left needed so that transition end fires when it changes for the first @@ -127,7 +131,6 @@ */ left: 0; position: relative; - transition: left 200ms; width: calc(312px / var(--emoji-per-row)); }
diff --git a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js index 0bd46ece..88f89ce 100644 --- a/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js +++ b/chrome/browser/resources/chromeos/emoji_picker/emoji_picker.js
@@ -188,6 +188,11 @@ this.set( ['preferenceMapping'], this.recentEmojiStore.getPreferenceMapping()); } + // Make highlight bar visible (now we know where it should be) and + // add smooth sliding. + this.updateActiveGroup(); + this.$.bar.style.display = 'block'; + this.$.bar.style.transition = 'left 200ms'; } ready() { @@ -367,6 +372,13 @@ this.set(['emojiGroupTabs', i, 'active'], isActive); }); + // Ensure that the history tab is not set as active if it is empty. + if (index === 0 && this.history.emoji.length === 0) { + this.set(['emojiGroupTabs', 0, 'active'], false); + this.set(['emojiGroupTabs', 1, 'active'], true); + index = 1; + } + // Once tab scroll is updated, update the position of the highlight bar. if (!this.highlightBarMoving && !this.groupTabsMoving) { // Update the scroll position of the emoji groups so that active group is
diff --git a/chrome/browser/sessions/app_session_service_factory.cc b/chrome/browser/sessions/app_session_service_factory.cc index 6234c7e..f2a6cc5c 100644 --- a/chrome/browser/sessions/app_session_service_factory.cc +++ b/chrome/browser/sessions/app_session_service_factory.cc
@@ -8,7 +8,8 @@ #include "chrome/browser/buildflags.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sessions/app_session_service.h" -#include "chrome/browser/sessions/session_data_deleter.h" +#include "chrome/browser/sessions/session_data_service.h" +#include "chrome/browser/sessions/session_data_service_factory.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" // static @@ -39,7 +40,8 @@ // static void AppSessionServiceFactory::ShutdownForProfile(Profile* profile) { - DeleteSessionOnlyData(profile); + if (SessionDataServiceFactory::GetForProfile(profile)) + SessionDataServiceFactory::GetForProfile(profile)->StartCleanup(); // We're about to exit, force creation of the session service if it hasn't // been created yet. We do this to ensure session state matches the point in
diff --git a/chrome/browser/sessions/session_data_deleter.cc b/chrome/browser/sessions/session_data_deleter.cc index b5563b5..ec48f9d 100644 --- a/chrome/browser/sessions/session_data_deleter.cc +++ b/chrome/browser/sessions/session_data_deleter.cc
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "chrome/browser/sessions/session_data_deleter.h" + #include <stddef.h> #include <stdint.h>
diff --git a/chrome/browser/sessions/session_data_service.cc b/chrome/browser/sessions/session_data_service.cc new file mode 100644 index 0000000..6d3d4b12 --- /dev/null +++ b/chrome/browser/sessions/session_data_service.cc
@@ -0,0 +1,69 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/sessions/session_data_service.h" + +#include "base/bind.h" +#include "chrome/browser/background/background_mode_manager.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/defaults.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/sessions/session_data_deleter.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_list.h" + +SessionDataService::SessionDataService(Profile* profile) : profile_(profile) { + DCHECK(profile_); + DCHECK(!profile_->IsOffTheRecord()); + for (Browser* browser : *BrowserList::GetInstance()) + OnBrowserAdded(browser); + + BrowserList::AddObserver(this); +} + +SessionDataService::~SessionDataService() { + BrowserList::RemoveObserver(this); +} + +void SessionDataService::OnBrowserAdded(Browser* browser) { + if (browser->profile() != profile_) + return; + + // A window was opened. Ensure that we run another cleanup the next time + // all windows are closed. + cleanup_started_ = false; +} + +void SessionDataService::OnBrowserRemoved(Browser* browser) { + if (browser->profile() != profile_) + return; + + // Don't try anything if we're testing. The browser_process is not fully + // created and DeleteSession will crash if we actually attempt it. + if (profile_->AsTestingProfile()) + return; + + // Clear session data if the last window for a profile has been closed and + // closing the last window would normally close Chrome, unless background mode + // is active. Tests don't have a background_mode_manager. + if (browser_defaults::kBrowserAliveWithNoWindows || + g_browser_process->background_mode_manager()->IsBackgroundModeActive()) { + return; + } + + // Check for any open windows for the current profile that we aren't tracking. + for (auto* browser : *BrowserList::GetInstance()) { + if (browser->profile() == profile_) + return; + } + StartCleanup(); +} + +void SessionDataService::StartCleanup() { + if (cleanup_started_) + return; + + cleanup_started_ = true; + DeleteSessionOnlyData(profile_); +}
diff --git a/chrome/browser/sessions/session_data_service.h b/chrome/browser/sessions/session_data_service.h new file mode 100644 index 0000000..b5cf356 --- /dev/null +++ b/chrome/browser/sessions/session_data_service.h
@@ -0,0 +1,35 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SESSIONS_SESSION_DATA_SERVICE_H_ +#define CHROME_BROWSER_SESSIONS_SESSION_DATA_SERVICE_H_ + +#include "chrome/browser/ui/browser_list_observer.h" +#include "components/keyed_service/core/keyed_service.h" + +class Profile; + +// SessionDataService is responsible for deleting SessionOnly cookies and +// site data when the browser or all windows of a profile are closed. +class SessionDataService : public BrowserListObserver, public KeyedService { + public: + explicit SessionDataService(Profile* profile); + SessionDataService(const SessionDataService&) = delete; + SessionDataService& operator=(const SessionDataService&) = delete; + ~SessionDataService() override; + + // Starts a deletion of session only cookies and storage unless the deletion + // is already running or the browser is already shutting down. + void StartCleanup(); + + private: + // BrowserListObserver: + void OnBrowserAdded(Browser* browser) override; + void OnBrowserRemoved(Browser* browser) override; + + Profile* profile_; + bool cleanup_started_ = false; +}; + +#endif // CHROME_BROWSER_SESSIONS_SESSION_DATA_SERVICE_H_
diff --git a/chrome/browser/sessions/session_data_service_factory.cc b/chrome/browser/sessions/session_data_service_factory.cc new file mode 100644 index 0000000..8a0acdb --- /dev/null +++ b/chrome/browser/sessions/session_data_service_factory.cc
@@ -0,0 +1,39 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/sessions/session_data_service_factory.h" + +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/sessions/session_data_service.h" +#include "components/keyed_service/content/browser_context_dependency_manager.h" + +// static +SessionDataService* SessionDataServiceFactory::GetForProfile(Profile* profile) { + return static_cast<SessionDataService*>( + GetInstance()->GetServiceForBrowserContext(profile, true)); +} + +SessionDataServiceFactory* SessionDataServiceFactory::GetInstance() { + return base::Singleton<SessionDataServiceFactory>::get(); +} + +SessionDataServiceFactory::SessionDataServiceFactory() + : BrowserContextKeyedServiceFactory( + "SessionDataService", + BrowserContextDependencyManager::GetInstance()) {} + +SessionDataServiceFactory::~SessionDataServiceFactory() = default; + +KeyedService* SessionDataServiceFactory::BuildServiceInstanceFor( + content::BrowserContext* profile) const { + return new SessionDataService(static_cast<Profile*>(profile)); +} + +bool SessionDataServiceFactory::ServiceIsCreatedWithBrowserContext() const { + return true; +} + +bool SessionDataServiceFactory::ServiceIsNULLWhileTesting() const { + return true; +}
diff --git a/chrome/browser/sessions/session_data_service_factory.h b/chrome/browser/sessions/session_data_service_factory.h new file mode 100644 index 0000000..ba37a92 --- /dev/null +++ b/chrome/browser/sessions/session_data_service_factory.h
@@ -0,0 +1,33 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_SESSIONS_SESSION_DATA_SERVICE_FACTORY_H_ +#define CHROME_BROWSER_SESSIONS_SESSION_DATA_SERVICE_FACTORY_H_ + +#include "base/memory/singleton.h" +#include "components/keyed_service/content/browser_context_keyed_service_factory.h" + +class SessionDataService; +class Profile; + +class SessionDataServiceFactory : public BrowserContextKeyedServiceFactory { + public: + static SessionDataService* GetForProfile(Profile* profile); + + static SessionDataServiceFactory* GetInstance(); + + private: + friend struct base::DefaultSingletonTraits<SessionDataServiceFactory>; + + SessionDataServiceFactory(); + ~SessionDataServiceFactory() override; + + // BrowserContextKeyedServiceFactory: + KeyedService* BuildServiceInstanceFor( + content::BrowserContext* profile) const override; + bool ServiceIsCreatedWithBrowserContext() const override; + bool ServiceIsNULLWhileTesting() const override; +}; + +#endif // CHROME_BROWSER_SESSIONS_SESSION_DATA_SERVICE_FACTORY_H_
diff --git a/chrome/browser/sessions/session_service.cc b/chrome/browser/sessions/session_service.cc index 93d58e3..ad43a3d3f2 100644 --- a/chrome/browser/sessions/session_service.cc +++ b/chrome/browser/sessions/session_service.cc
@@ -301,12 +301,6 @@ } void SessionService::WindowClosed(const SessionID& window_id) { - if (!ShouldTrackChangesToWindow(window_id)) { - // The last window may be one that is not tracked. - MaybeDeleteSessionOnlyData(); - return; - } - windows_tracking()->erase(window_id); last_selected_tab_in_window()->erase(window_id); @@ -324,7 +318,6 @@ ScheduleCommand(sessions::CreateWindowClosedCommand(window_id)); } } - MaybeDeleteSessionOnlyData(); } void SessionService::SetWindowType(const SessionID& window_id, @@ -536,29 +529,6 @@ ScheduleResetCommands(); } -void SessionService::MaybeDeleteSessionOnlyData() { - // Don't try anything if we're testing. The browser_process is not fully - // created and DeleteSession will crash if we actually attempt it. - if (profile()->AsTestingProfile()) - return; - - // Clear session data if the last window for a profile has been closed and - // closing the last window would normally close Chrome, unless background mode - // is active. Tests don't have a background_mode_manager. - if (has_open_trackable_browsers_ || - browser_defaults::kBrowserAliveWithNoWindows || - g_browser_process->background_mode_manager()->IsBackgroundModeActive()) { - return; - } - - // Check for any open windows for the current profile that we aren't tracking. - for (auto* browser : *BrowserList::GetInstance()) { - if (browser->profile() == profile()) - return; - } - DeleteSessionOnlyData(profile()); -} - void SessionService::OnClosingAllBrowsersChanged(bool closing) { if (closing) LogExitEvent();
diff --git a/chrome/browser/sessions/session_service.h b/chrome/browser/sessions/session_service.h index bf0e41a..ace8ec2 100644 --- a/chrome/browser/sessions/session_service.h +++ b/chrome/browser/sessions/session_service.h
@@ -188,9 +188,6 @@ // Will rebuild session commands if rebuild_on_next_save_ is true. void RebuildCommandsIfRequired() override; - // Deletes session data if no windows are open for the current profile. - void MaybeDeleteSessionOnlyData(); - // Invoked with true when all browsers start closing. void OnClosingAllBrowsersChanged(bool closing);
diff --git a/chrome/browser/sessions/session_service_factory.cc b/chrome/browser/sessions/session_service_factory.cc index 1936f727..cc50f9f3 100644 --- a/chrome/browser/sessions/session_service_factory.cc +++ b/chrome/browser/sessions/session_service_factory.cc
@@ -6,7 +6,8 @@ #include "build/build_config.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/sessions/session_data_deleter.h" +#include "chrome/browser/sessions/session_data_service.h" +#include "chrome/browser/sessions/session_data_service_factory.h" #include "chrome/browser/sessions/session_service.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" @@ -52,7 +53,8 @@ // static void SessionServiceFactory::ShutdownForProfile(Profile* profile) { - DeleteSessionOnlyData(profile); + if (SessionDataServiceFactory::GetForProfile(profile)) + SessionDataServiceFactory::GetForProfile(profile)->StartCleanup(); // We're about to exit, force creation of the session service if it hasn't // been created yet. We do this to ensure session state matches the point in
diff --git a/chrome/browser/sharesheet/sharesheet_action_cache.cc b/chrome/browser/sharesheet/sharesheet_action_cache.cc index a8822b6..6150a18d 100644 --- a/chrome/browser/sharesheet/sharesheet_action_cache.cc +++ b/chrome/browser/sharesheet/sharesheet_action_cache.cc
@@ -29,18 +29,6 @@ AddShareAction(std::make_unique<NearbyShareAction>()); } AddShareAction(std::make_unique<DriveShareAction>()); - // Add 9 example actions to show expanded view - if (base::FeatureList::IsEnabled(features::kSharesheetContentPreviews)) { - AddShareAction(std::make_unique<ExampleAction>()); - AddShareAction(std::make_unique<ExampleAction>()); - AddShareAction(std::make_unique<ExampleAction>()); - AddShareAction(std::make_unique<ExampleAction>()); - AddShareAction(std::make_unique<ExampleAction>()); - AddShareAction(std::make_unique<ExampleAction>()); - AddShareAction(std::make_unique<ExampleAction>()); - AddShareAction(std::make_unique<ExampleAction>()); - AddShareAction(std::make_unique<ExampleAction>()); - } #endif // BUILDFLAG(IS_CHROMEOS_ASH) }
diff --git a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/account_picker/AccountPickerBottomSheetTest.java b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/account_picker/AccountPickerBottomSheetTest.java index 169d6b4a..1c5c1f14 100644 --- a/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/account_picker/AccountPickerBottomSheetTest.java +++ b/chrome/browser/signin/ui/android/java/src/org/chromium/chrome/browser/signin/ui/account_picker/AccountPickerBottomSheetTest.java
@@ -49,7 +49,6 @@ import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CriteriaHelper; -import org.chromium.base.test.util.FlakyTest; import org.chromium.base.test.util.MetricsUtils.HistogramDelta; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncher; import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -523,8 +522,8 @@ @Test @MediumTest - @FlakyTest(message = "https://crbug.com/1200703") public void testTryAgainButtonOnSignInGeneralErrorSheet() { + mMockitoRule.strictness(Strictness.LENIENT); CoreAccountInfo coreAccountInfo = mAccountManagerTestRule.toCoreAccountInfo(PROFILE_DATA1.getAccountEmail()); // Throws a connection error during the sign-in action
diff --git a/chrome/browser/sync/profile_sync_service_android.cc b/chrome/browser/sync/profile_sync_service_android.cc index f6b7aae..6ed0622e 100644 --- a/chrome/browser/sync/profile_sync_service_android.cc +++ b/chrome/browser/sync/profile_sync_service_android.cc
@@ -74,10 +74,12 @@ } // namespace -ProfileSyncServiceAndroid::ProfileSyncServiceAndroid(JNIEnv* env, jobject obj) +ProfileSyncServiceAndroid::ProfileSyncServiceAndroid( + JNIEnv* env, + jobject java_profile_sync_service) : profile_(nullptr), sync_service_(nullptr), - weak_java_profile_sync_service_(env, obj) { + weak_java_profile_sync_service_(env, java_profile_sync_service) { if (g_browser_process == nullptr || g_browser_process->profile_manager() == nullptr) { NOTREACHED() << "Browser process or profile manager not initialized"; @@ -117,66 +119,51 @@ // Pure ProfileSyncService calls. -jboolean ProfileSyncServiceAndroid::IsSyncRequested( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jboolean ProfileSyncServiceAndroid::IsSyncRequested(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings()->IsSyncRequested(); } -jboolean ProfileSyncServiceAndroid::CanSyncFeatureStart( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jboolean ProfileSyncServiceAndroid::CanSyncFeatureStart(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->CanSyncFeatureStart(); } void ProfileSyncServiceAndroid::SetSyncRequested(JNIEnv* env, - const JavaParamRef<jobject>&, jboolean requested) { DCHECK_CURRENTLY_ON(BrowserThread::UI); sync_service_->GetUserSettings()->SetSyncRequested(requested); } -jboolean ProfileSyncServiceAndroid::IsSyncAllowedByPlatform( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jboolean ProfileSyncServiceAndroid::IsSyncAllowedByPlatform(JNIEnv* env) { return !sync_service_->HasDisableReason( syncer::SyncService::DISABLE_REASON_PLATFORM_OVERRIDE); } void ProfileSyncServiceAndroid::SetSyncAllowedByPlatform( JNIEnv* env, - const JavaParamRef<jobject>& obj, jboolean allowed) { sync_service_->SetSyncAllowedByPlatform(allowed); } -jboolean ProfileSyncServiceAndroid::IsSyncFeatureActive( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jboolean ProfileSyncServiceAndroid::IsSyncFeatureActive(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->IsSyncFeatureActive(); } jboolean ProfileSyncServiceAndroid::IsSyncDisabledByEnterprisePolicy( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { + JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->HasDisableReason( syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY); } -jboolean ProfileSyncServiceAndroid::IsEngineInitialized( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jboolean ProfileSyncServiceAndroid::IsEngineInitialized(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->IsEngineInitialized(); } -jboolean ProfileSyncServiceAndroid::IsTransportStateActive( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jboolean ProfileSyncServiceAndroid::IsTransportStateActive(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetTransportState() == syncer::SyncService::TransportState::ACTIVE; @@ -184,7 +171,6 @@ void ProfileSyncServiceAndroid::SetSetupInProgress( JNIEnv* env, - const JavaParamRef<jobject>& obj, jboolean in_progress) { DCHECK_CURRENTLY_ON(BrowserThread::UI); if (in_progress) { @@ -196,16 +182,13 @@ } } -jboolean ProfileSyncServiceAndroid::IsFirstSetupComplete( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jboolean ProfileSyncServiceAndroid::IsFirstSetupComplete(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings()->IsFirstSetupComplete(); } void ProfileSyncServiceAndroid::SetFirstSetupComplete( JNIEnv* env, - const JavaParamRef<jobject>& obj, jint source) { DCHECK_CURRENTLY_ON(BrowserThread::UI); sync_service_->GetUserSettings()->SetFirstSetupComplete( @@ -213,15 +196,13 @@ } ScopedJavaLocalRef<jintArray> ProfileSyncServiceAndroid::GetActiveDataTypes( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { + JNIEnv* env) { syncer::ModelTypeSet types = sync_service_->GetActiveDataTypes(); return JNI_ProfileSyncService_ModelTypeSetToJavaIntArray(env, types); } ScopedJavaLocalRef<jintArray> ProfileSyncServiceAndroid::GetChosenDataTypes( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { + JNIEnv* env) { // TODO(crbug/950874): introduce UserSelectableType in java code, then remove // workaround here and in SetChosenDataTypes(). syncer::UserSelectableTypeSet types = @@ -234,15 +215,13 @@ } ScopedJavaLocalRef<jintArray> ProfileSyncServiceAndroid::GetPreferredDataTypes( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { + JNIEnv* env) { syncer::ModelTypeSet types = sync_service_->GetPreferredDataTypes(); return JNI_ProfileSyncService_ModelTypeSetToJavaIntArray(env, types); } void ProfileSyncServiceAndroid::SetChosenDataTypes( JNIEnv* env, - const JavaParamRef<jobject>& obj, jboolean sync_everything, const JavaParamRef<jintArray>& model_type_array) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -262,54 +241,42 @@ selected_types); } -jboolean ProfileSyncServiceAndroid::IsCustomPassphraseAllowed( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jboolean ProfileSyncServiceAndroid::IsCustomPassphraseAllowed(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings()->IsCustomPassphraseAllowed(); } -jboolean ProfileSyncServiceAndroid::IsEncryptEverythingEnabled( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jboolean ProfileSyncServiceAndroid::IsEncryptEverythingEnabled(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings()->IsEncryptEverythingEnabled(); } jboolean ProfileSyncServiceAndroid::IsPassphraseRequiredForPreferredDataTypes( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { + JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings() ->IsPassphraseRequiredForPreferredDataTypes(); } -jboolean ProfileSyncServiceAndroid::IsTrustedVaultKeyRequired( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jboolean ProfileSyncServiceAndroid::IsTrustedVaultKeyRequired(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings()->IsTrustedVaultKeyRequired(); } jboolean ProfileSyncServiceAndroid::IsTrustedVaultKeyRequiredForPreferredDataTypes( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { + JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings() ->IsTrustedVaultKeyRequiredForPreferredDataTypes(); } -jboolean ProfileSyncServiceAndroid::IsUsingExplicitPassphrase( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jboolean ProfileSyncServiceAndroid::IsUsingExplicitPassphrase(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings()->IsUsingExplicitPassphrase(); } -jint ProfileSyncServiceAndroid::GetPassphraseType( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jint ProfileSyncServiceAndroid::GetPassphraseType(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return static_cast<unsigned>( sync_service_->GetUserSettings()->GetPassphraseType()); @@ -317,7 +284,6 @@ void ProfileSyncServiceAndroid::SetEncryptionPassphrase( JNIEnv* env, - const JavaParamRef<jobject>& obj, const JavaParamRef<jstring>& passphrase) { DCHECK_CURRENTLY_ON(BrowserThread::UI); std::string key = ConvertJavaStringToUTF8(env, passphrase); @@ -326,16 +292,13 @@ jboolean ProfileSyncServiceAndroid::SetDecryptionPassphrase( JNIEnv* env, - const JavaParamRef<jobject>& obj, const JavaParamRef<jstring>& passphrase) { DCHECK_CURRENTLY_ON(BrowserThread::UI); std::string key = ConvertJavaStringToUTF8(env, passphrase); return sync_service_->GetUserSettings()->SetDecryptionPassphrase(key); } -jlong ProfileSyncServiceAndroid::GetExplicitPassphraseTime( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jlong ProfileSyncServiceAndroid::GetExplicitPassphraseTime(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); base::Time passphrase_time = sync_service_->GetUserSettings()->GetExplicitPassphraseTime(); @@ -344,7 +307,6 @@ void ProfileSyncServiceAndroid::GetAllNodes( JNIEnv* env, - const JavaParamRef<jobject>& obj, const JavaParamRef<jobject>& callback) { base::android::ScopedJavaGlobalRef<jobject> java_callback; java_callback.Reset(env, callback); @@ -352,44 +314,34 @@ base::BindOnce(&NativeGetAllNodesCallback, java_callback)); } -jint ProfileSyncServiceAndroid::GetAuthError(JNIEnv* env, - const JavaParamRef<jobject>&) { +jint ProfileSyncServiceAndroid::GetAuthError(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetAuthError().state(); } -jboolean ProfileSyncServiceAndroid::HasUnrecoverableError( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jboolean ProfileSyncServiceAndroid::HasUnrecoverableError(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->HasUnrecoverableError(); } -jboolean ProfileSyncServiceAndroid::RequiresClientUpgrade( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jboolean ProfileSyncServiceAndroid::RequiresClientUpgrade(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->RequiresClientUpgrade(); } -void ProfileSyncServiceAndroid::SetDecoupledFromAndroidMasterSync( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj) { +void ProfileSyncServiceAndroid::SetDecoupledFromAndroidMasterSync(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); sync_service_->SetDecoupledFromAndroidMasterSync(); } jboolean ProfileSyncServiceAndroid::GetDecoupledFromAndroidMasterSync( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj) { + JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetDecoupledFromAndroidMasterSync(); } base::android::ScopedJavaLocalRef<jobject> -ProfileSyncServiceAndroid::GetAuthenticatedAccountInfo( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj) { +ProfileSyncServiceAndroid::GetAuthenticatedAccountInfo(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); CoreAccountInfo account_info = sync_service_->GetAuthenticatedAccountInfo(); return account_info.IsEmpty() @@ -397,39 +349,31 @@ : ConvertToJavaCoreAccountInfo(env, account_info); } -jboolean ProfileSyncServiceAndroid::IsAuthenticatedAccountPrimary( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj) { +jboolean ProfileSyncServiceAndroid::IsAuthenticatedAccountPrimary(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->IsAuthenticatedAccountPrimary(); } jboolean ProfileSyncServiceAndroid::IsPassphrasePromptMutedForCurrentProductVersion( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { + JNIEnv* env) { return sync_service_->GetUserSettings() ->IsPassphrasePromptMutedForCurrentProductVersion(); } void ProfileSyncServiceAndroid:: - MarkPassphrasePromptMutedForCurrentProductVersion( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { + MarkPassphrasePromptMutedForCurrentProductVersion(JNIEnv* env) { sync_service_->GetUserSettings() ->MarkPassphrasePromptMutedForCurrentProductVersion(); } -jboolean ProfileSyncServiceAndroid::HasKeepEverythingSynced( - JNIEnv* env, - const JavaParamRef<jobject>&) { +jboolean ProfileSyncServiceAndroid::HasKeepEverythingSynced(JNIEnv* env) { DCHECK_CURRENTLY_ON(BrowserThread::UI); return sync_service_->GetUserSettings()->IsSyncEverythingEnabled(); } void ProfileSyncServiceAndroid::RecordKeyRetrievalTrigger( JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, jint trigger) { syncer::RecordKeyRetrievalTrigger( static_cast<syncer::KeyRetrievalTriggerForUMA>(trigger)); @@ -437,15 +381,11 @@ // Functionality only available for testing purposes. -jlong ProfileSyncServiceAndroid::GetProfileSyncServiceForTest( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj) { +jlong ProfileSyncServiceAndroid::GetProfileSyncServiceForTest(JNIEnv* env) { return reinterpret_cast<intptr_t>(sync_service_); } -jlong ProfileSyncServiceAndroid::GetLastSyncedTimeForTest( - JNIEnv* env, - const JavaParamRef<jobject>& obj) { +jlong ProfileSyncServiceAndroid::GetLastSyncedTimeForTest(JNIEnv* env) { base::Time last_sync_time = sync_service_->GetLastSyncedTimeForDebugging(); return static_cast<jlong>( (last_sync_time - base::Time::UnixEpoch()).InMicroseconds()); @@ -457,9 +397,7 @@ sync_service_->OverrideNetworkForTest(create_http_post_provider_factory_cb); } -void ProfileSyncServiceAndroid::TriggerRefresh( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj) { +void ProfileSyncServiceAndroid::TriggerRefresh(JNIEnv* env) { // Only allowed to trigger refresh/schedule nudges for protocol types, things // like PROXY_TABS are not allowed. sync_service_->TriggerRefresh(syncer::ProtocolTypes());
diff --git a/chrome/browser/sync/profile_sync_service_android.h b/chrome/browser/sync/profile_sync_service_android.h index e1f6157..aa85064 100644 --- a/chrome/browser/sync/profile_sync_service_android.h +++ b/chrome/browser/sync/profile_sync_service_android.h
@@ -8,7 +8,6 @@ #include <memory> #include "base/android/jni_weak_ref.h" -#include "base/macros.h" #include "components/sync/driver/sync_service_observer.h" #include "components/sync/engine/net/http_post_provider_factory.h" @@ -26,9 +25,13 @@ // This class should only be accessed from the UI thread. class ProfileSyncServiceAndroid : public syncer::SyncServiceObserver { public: - ProfileSyncServiceAndroid(JNIEnv* env, jobject obj); + ProfileSyncServiceAndroid(JNIEnv* env, jobject java_profile_sync_service); ~ProfileSyncServiceAndroid() override; + ProfileSyncServiceAndroid(const ProfileSyncServiceAndroid&) = delete; + ProfileSyncServiceAndroid& operator=(const ProfileSyncServiceAndroid&) = + delete; + // This method should be called once right after contructing the object. // Returns false if we didn't get a ProfileSyncService. bool Init(); @@ -37,144 +40,80 @@ void OnStateChanged(syncer::SyncService* sync) override; // Pure ProfileSyncService calls. - jboolean IsSyncRequested(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jboolean IsSyncRequested(JNIEnv* env); void SetSyncRequested(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, jboolean requested); - jboolean CanSyncFeatureStart(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsSyncAllowedByPlatform( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jboolean CanSyncFeatureStart(JNIEnv* env); + jboolean IsSyncAllowedByPlatform(JNIEnv* env); void SetSyncAllowedByPlatform(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, jboolean allowed); - jboolean IsSyncFeatureActive(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsSyncDisabledByEnterprisePolicy( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsEngineInitialized(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsTransportStateActive( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jboolean IsSyncFeatureActive(JNIEnv* env); + jboolean IsSyncDisabledByEnterprisePolicy(JNIEnv* env); + jboolean IsEngineInitialized(JNIEnv* env); + jboolean IsTransportStateActive(JNIEnv* env); void SetSetupInProgress(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, jboolean in_progress); - jboolean IsFirstSetupComplete( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jboolean IsFirstSetupComplete(JNIEnv* env); void SetFirstSetupComplete(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, jint source); - base::android::ScopedJavaLocalRef<jintArray> GetActiveDataTypes( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - base::android::ScopedJavaLocalRef<jintArray> GetChosenDataTypes( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + base::android::ScopedJavaLocalRef<jintArray> GetActiveDataTypes(JNIEnv* env); + base::android::ScopedJavaLocalRef<jintArray> GetChosenDataTypes(JNIEnv* env); base::android::ScopedJavaLocalRef<jintArray> GetPreferredDataTypes( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + JNIEnv* env); void SetChosenDataTypes( JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, jboolean sync_everything, const base::android::JavaParamRef<jintArray>& model_type_selection); - jboolean IsCustomPassphraseAllowed( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsEncryptEverythingEnabled( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsPassphraseRequiredForPreferredDataTypes( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsTrustedVaultKeyRequired( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsTrustedVaultKeyRequiredForPreferredDataTypes( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsUsingExplicitPassphrase( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jint GetPassphraseType(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jboolean IsCustomPassphraseAllowed(JNIEnv* env); + jboolean IsEncryptEverythingEnabled(JNIEnv* env); + jboolean IsPassphraseRequiredForPreferredDataTypes(JNIEnv* env); + jboolean IsTrustedVaultKeyRequired(JNIEnv* env); + jboolean IsTrustedVaultKeyRequiredForPreferredDataTypes(JNIEnv* env); + jboolean IsUsingExplicitPassphrase(JNIEnv* env); + jint GetPassphraseType(JNIEnv* env); void SetEncryptionPassphrase( JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jstring>& passphrase); jboolean SetDecryptionPassphrase( JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jstring>& passphrase); // Returns 0 if there's no passphrase time. - jlong GetExplicitPassphraseTime(JNIEnv* env, - const base::android::JavaParamRef<jobject>&); + jlong GetExplicitPassphraseTime(JNIEnv* env); void GetAllNodes(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jobject>& callback); - jint GetAuthError(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean HasUnrecoverableError( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jint GetAuthError(JNIEnv* env); + jboolean HasUnrecoverableError(JNIEnv* env); jboolean IsUrlKeyedDataCollectionEnabled( JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, jboolean personalized); - jboolean RequiresClientUpgrade( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - void SetDecoupledFromAndroidMasterSync( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean GetDecoupledFromAndroidMasterSync( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jboolean RequiresClientUpgrade(JNIEnv* env); + void SetDecoupledFromAndroidMasterSync(JNIEnv* env); + jboolean GetDecoupledFromAndroidMasterSync(JNIEnv* env); base::android::ScopedJavaLocalRef<jobject> GetAuthenticatedAccountInfo( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean IsAuthenticatedAccountPrimary( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + JNIEnv* env); + jboolean IsAuthenticatedAccountPrimary(JNIEnv* env); // Pure SyncPrefs calls. - jboolean IsPassphrasePromptMutedForCurrentProductVersion( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - void MarkPassphrasePromptMutedForCurrentProductVersion( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); - jboolean HasKeepEverythingSynced( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jboolean IsPassphrasePromptMutedForCurrentProductVersion(JNIEnv* env); + void MarkPassphrasePromptMutedForCurrentProductVersion(JNIEnv* env); + jboolean HasKeepEverythingSynced(JNIEnv* env); void RecordKeyRetrievalTrigger( JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj, jint trigger); // Functionality only available for testing purposes. - jlong GetProfileSyncServiceForTest( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jlong GetProfileSyncServiceForTest(JNIEnv* env); // Returns a timestamp for when a sync was last executed. The return value is // the internal value of base::Time. - jlong GetLastSyncedTimeForTest( - JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + jlong GetLastSyncedTimeForTest(JNIEnv* env); void OverrideNetworkForTest(const syncer::CreateHttpPostProviderFactory& create_http_post_provider_factory_cb); - void TriggerRefresh(JNIEnv* env, - const base::android::JavaParamRef<jobject>& obj); + void TriggerRefresh(JNIEnv* env); private: // A reference to the Chrome profile object. @@ -188,8 +127,6 @@ // Java-side ProfileSyncService object. JavaObjectWeakGlobalRef weak_java_profile_sync_service_; - - DISALLOW_COPY_AND_ASSIGN(ProfileSyncServiceAndroid); }; #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_ANDROID_H_
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb index 44e6b79..e4113c5 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
@@ -86,6 +86,7 @@ <translation id="1544826120773021464">Google hesabınızı idarə etmək üçün "Hesabı idarə edin" düyməsinə toxunun</translation> <translation id="1549000191223877751">Başqa pəncərəyə keçin</translation> <translation id="1553358976309200471">Chrome'u güncəlləşdirin</translation> +<translation id="1558391695376153246">Anonim tabları qapadın</translation> <translation id="1569387923882100876">Qoşulmuş Cihaz</translation> <translation id="1571304935088121812">İstifadəçi adını kopyalayın</translation> <translation id="1592864538817356322">Standart qoruma:</translation> @@ -235,6 +236,7 @@ <translation id="2517472476991765520">Skan edin</translation> <translation id="2518590038762162553">Layt rejimində Chrome səhifələri daha tez yükləyir və dataya 60 faizədək qənaət edir. Daxil olduğunuz səhifəni optimallaşdırmaq üçün Chrome, veb trafiki Google'a göndərir. <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" /></translation> <translation id="2523184218357549926">Daxil olduğunuz səhifələrin linkləri Google'a göndərilir</translation> +<translation id="2527497042232966453">Anonim tablara keçib</translation> <translation id="2527779675047087889">Mübadilə buferindəki kontenti gizlədin</translation> <translation id="2532336938189706096">Veb Görünüşü</translation> <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> element silindi</translation> @@ -424,11 +426,13 @@ <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">İdarə edin</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> endirmə silindi</translation> +<translation id="3845098929839618392">Anonim tabda açın</translation> <translation id="3856096718352044181">Bunun etibarlı təminatçı olduğunu doğrulayın, ya da daha sonra təkrar cəhd edin</translation> <translation id="3861633093716975811">Populyar videolar</translation> <translation id="3892148308691398805">Mətni kopyalayın</translation> <translation id="3894427358181296146">Qovluq əlavə edin</translation> <translation id="3895926599014793903">Zoom'a icazə verməyə məcbur edin</translation> +<translation id="3899682235662194879">Bütün Anonim Tabları qapadın</translation> <translation id="3908308510347173149"><ph name="PRODUCT_NAME" /> məhsulunu güncəlləyin</translation> <translation id="3912508018559818924">Vebdən ən yaxşısını tapın…</translation> <translation id="3924911262913579434"><ph name="SAFE_BROWSING_MODE" /> aktivdir</translation> @@ -482,6 +486,7 @@ <translation id="4263656433980196874">Assistentin səsli axtarış razılıq UI-si tam hündürlükdə açılıb</translation> <translation id="4269820728363426813">Link ünvanını kopyalayın</translation> <translation id="4290281343757112331">Daha sonra endirilsin?</translation> +<translation id="4296252229500326964">Yeni Anonim tab</translation> <translation id="4298388696830689168">Əlaqədar saytlar</translation> <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4307992518367153382">Əsaslar</translation> @@ -573,6 +578,7 @@ <translation id="4865987431642283918">Defolt cihaz dili</translation> <translation id="4866368707455379617">Chrome üçün <ph name="MODULE" /> quraşdırmaq mümkün deyil</translation> <translation id="4875775213178255010">Kontent Təklifləri</translation> +<translation id="4877678010818027629">Anonim rejimə daxil olun</translation> <translation id="4878404682131129617">Proksi server vasitəsilə tunel yaratmaq alınmadı</translation> <translation id="4880127995492972015">Tərcümə edin...</translation> <translation id="4881695831933465202">Açın</translation> @@ -897,6 +903,7 @@ <translation id="686366188661646310">Parol silinsin?</translation> <translation id="6864459304226931083">Şəkli endirin</translation> <translation id="6865313869410766144">Avtomatik data doldurması</translation> +<translation id="6867400383614725881">Yeni Anonim tab</translation> <translation id="6882836635272038266">Təhlükəli hesab edilən veb saytlar, endirmələr və artırmalara qarşı standart qoruma.</translation> <translation id="688738109438487280">Mövcud datanı <ph name="TO_ACCOUNT" /> hesabına əlavə edin.</translation> <translation id="6891726759199484455">Parolu kopyalamaq üçün kiliddən çıxarın</translation> @@ -912,6 +919,7 @@ <translation id="6945221475159498467">Seçin</translation> <translation id="6955535239952325894">Bu ayar idarə edilən brauzerlərdə deaktiv edilib</translation> <translation id="6963766334940102469">Əlfəcinləri silin</translation> +<translation id="696447261358045621">Anonim rejimdən çıxın</translation> <translation id="6979737339423435258">Hər zaman</translation> <translation id="6981982820502123353">Giriş İmkanı</translation> <translation id="6989267951144302301">Endirilmədi</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb index 98dd6e5a..2ad9cde 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -86,6 +86,7 @@ <translation id="1544826120773021464">За да управлявате профила си в Google, докоснете бутона „Управление на профила“</translation> <translation id="1549000191223877751">Преместв. в другия прозорец</translation> <translation id="1553358976309200471">Актуализиране на Chrome</translation> +<translation id="1558391695376153246">Раздели „инкогнито“: Затв.</translation> <translation id="1569387923882100876">Свързано устройство</translation> <translation id="1571304935088121812">Копиране на потребителското име</translation> <translation id="1592864538817356322">Стандартна защита:</translation> @@ -235,6 +236,7 @@ <translation id="2517472476991765520">Сканиране</translation> <translation id="2518590038762162553">В олекотения режим на Chrome страниците се зареждат по-бързо и се използват до 60 процента по-малко данни. С цел оптимизиране на посещаваните от вас страници Chrome изпраща до Google уеб трафика ви. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation> <translation id="2523184218357549926">Изпраща до Google URL адресите на страниците, които посещавате</translation> +<translation id="2527497042232966453">Превключихте към разделите в режим „инкогнито“</translation> <translation id="2527779675047087889">Скриване на съдържанието в буферната памет</translation> <translation id="2532336938189706096">Изглед в мрежата</translation> <translation id="2534155362429831547">Изтрихте <ph name="NUMBER_OF_ITEMS" /> елемента</translation> @@ -424,11 +426,13 @@ <translation id="3810838688059735925">Видео</translation> <translation id="3810973564298564668">Управление</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> изтегляния бяха изтрити</translation> +<translation id="3845098929839618392">Отваряне в раздел „инкогнито“</translation> <translation id="3856096718352044181">Моля, проверете дали този доставчик е валиден или опитайте отново по-късно</translation> <translation id="3861633093716975811">Популярни видеоклипове</translation> <translation id="3892148308691398805">Копиране на текста</translation> <translation id="3894427358181296146">Добавяне на папка</translation> <translation id="3895926599014793903">Принудително активиране на промяната на мащаба</translation> +<translation id="3899682235662194879">Затваряне на всички раздели в режим „инкогнито“</translation> <translation id="3908308510347173149">Актуализиране на <ph name="PRODUCT_NAME" /></translation> <translation id="3912508018559818924">Намираме най-доброто от мрежата…</translation> <translation id="3924911262913579434">Режимът „<ph name="SAFE_BROWSING_MODE" />“ е включен</translation> @@ -482,6 +486,7 @@ <translation id="4263656433980196874">Потребителският интерфейс за даване на съгласие за ползване на Асистент при гласови търсения е отворен на пълната височина</translation> <translation id="4269820728363426813">Копиране на адреса на връзката</translation> <translation id="4290281343757112331">Да се изтегли ли по-късно вместо това?</translation> +<translation id="4296252229500326964">Нов раздел „инкогнито“</translation> <translation id="4298388696830689168">Свързани сайтове</translation> <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4307992518367153382">Основни положения</translation> @@ -573,6 +578,7 @@ <translation id="4865987431642283918">Основният език на устройството</translation> <translation id="4866368707455379617">Модулът „<ph name="MODULE" />“ за Chrome не може да се инсталира</translation> <translation id="4875775213178255010">Предложения за съдържание</translation> +<translation id="4877678010818027629">Влизане в режим „инкогнито“</translation> <translation id="4878404682131129617">Създаването на тунел през прокси сървъра не бе успешно</translation> <translation id="4880127995492972015">Превод…</translation> <translation id="4881695831933465202">Отваряне</translation> @@ -899,6 +905,7 @@ <translation id="686366188661646310">Искате ли да изтриете паролата?</translation> <translation id="6864459304226931083">Изтегляне на изображението</translation> <translation id="6865313869410766144">Данни за автоматично попълване на формуляри</translation> +<translation id="6867400383614725881">Нов раздел „инкогнито“</translation> <translation id="6882836635272038266">Стандартна защита срещу уебсайтове, изтеглени файлове и разширения, за които е известно, че са опасни.</translation> <translation id="688738109438487280">Добавяне на съществуващите данни към <ph name="TO_ACCOUNT" />.</translation> <translation id="6891726759199484455">Отключете, за да копирате паролата си</translation> @@ -914,6 +921,7 @@ <translation id="6945221475159498467">Избиране</translation> <translation id="6955535239952325894">Тази настройка е деактивирана за управлявани браузъри</translation> <translation id="6963766334940102469">Изтриване на отметките</translation> +<translation id="696447261358045621">Излизане от режим „инкогнито“</translation> <translation id="6979737339423435258">За цялото време</translation> <translation id="6981982820502123353">Достъпност</translation> <translation id="6989267951144302301">Неуспешно изтегляне</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb index 797431e..6641ca9 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -86,6 +86,7 @@ <translation id="1544826120773021464">Para pamahalaan ang iyong Google account, i-tap ang button na "Pamahalaan ang account"</translation> <translation id="1549000191223877751">Lumipat sa ibang window</translation> <translation id="1553358976309200471">I-update ang Chrome</translation> +<translation id="1558391695376153246">Isara ang mga Incognito tab</translation> <translation id="1569387923882100876">Nakakonektang Device</translation> <translation id="1571304935088121812">Kopyahin ang username</translation> <translation id="1592864538817356322">Karaniwang proteksyon:</translation> @@ -235,6 +236,7 @@ <translation id="2517472476991765520">I-scan</translation> <translation id="2518590038762162553">Sa Lite mode, mas mabilis na naglo-load ng mga page ang Chrome at gumagamit ito ng hanggang 60 porsyentong mas kaunting data. Para i-optimize ang mga page na binibisita mo, ipinapadala ng Chrome ang iyong trapiko sa web sa Google. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation> <translation id="2523184218357549926">Ipinapadala sa Google ang mga URL ng mga page na binibisita mo</translation> +<translation id="2527497042232966453">Lumipat sa mga tab na Incognito</translation> <translation id="2527779675047087889">Itago ang mga content ng clipboard</translation> <translation id="2532336938189706096">View ng Web</translation> <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> (na) item ang na-delete</translation> @@ -424,11 +426,13 @@ <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">Mamahala</translation> <translation id="3819178904835489326">Na-delete ang <ph name="NUMBER_OF_DOWNLOADS" /> (na) pag-download</translation> +<translation id="3845098929839618392">Buksan sa Incognito tab</translation> <translation id="3856096718352044181">Paki-verify na valid na provider ito o subukan ulit sa ibang pagkakataon</translation> <translation id="3861633093716975811">Mga sikat na video</translation> <translation id="3892148308691398805">Kopyahin ang text</translation> <translation id="3894427358181296146">Magdagdag ng folder</translation> <translation id="3895926599014793903">Puwersahang i-enable ang zoom</translation> +<translation id="3899682235662194879">Isara ang lahat ng tab na Incognito</translation> <translation id="3908308510347173149">I-update ang <ph name="PRODUCT_NAME" /></translation> <translation id="3912508018559818924">Hinahanap ang pinakamahusay mula sa web…</translation> <translation id="3924911262913579434">Naka-on ang <ph name="SAFE_BROWSING_MODE" /></translation> @@ -482,6 +486,7 @@ <translation id="4263656433980196874">Nakabukas ang ui ng pahintulot ng paghahanap gamit ang boses ng Assistant nang buo ang taas</translation> <translation id="4269820728363426813">Kopyahin ang address ng link</translation> <translation id="4290281343757112331">I-download na lang sa ibang pagkakataon?</translation> +<translation id="4296252229500326964">Bagong tab na Incognito</translation> <translation id="4298388696830689168">Mga naka-link na site</translation> <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4307992518367153382">Mga Pangunahing Kaalaman</translation> @@ -573,6 +578,7 @@ <translation id="4865987431642283918">Default na wika ng device</translation> <translation id="4866368707455379617">Hindi ma-install ang <ph name="MODULE" /> para sa Chrome</translation> <translation id="4875775213178255010">Mga Iminumungkahing Content</translation> +<translation id="4877678010818027629">Pumasok sa Incognito mode</translation> <translation id="4878404682131129617">Hindi nakagawa ng tunnel sa pamamagitan ng proxy server</translation> <translation id="4880127995492972015">Isalin…</translation> <translation id="4881695831933465202">Buksan</translation> @@ -899,6 +905,7 @@ <translation id="686366188661646310">I-delete ang password?</translation> <translation id="6864459304226931083">I-download ang larawan</translation> <translation id="6865313869410766144">Data ng form ng autofill</translation> +<translation id="6867400383614725881">Bagong tab na Incognito</translation> <translation id="6882836635272038266">Karaniwang proteksyon laban sa mga website, download, at extension na kilalang mapanganib.</translation> <translation id="688738109438487280">Idagdag ang kasalukuyang data sa <ph name="TO_ACCOUNT" />.</translation> <translation id="6891726759199484455">I-unlock upang kopyahin ang iyong password</translation> @@ -914,6 +921,7 @@ <translation id="6945221475159498467">Pumili</translation> <translation id="6955535239952325894">Naka-disable ang setting na ito sa mga pinapamahalaang browser</translation> <translation id="6963766334940102469">Mag-delete ng mga bookmark</translation> +<translation id="696447261358045621">Umalis sa Incognito mode?</translation> <translation id="6979737339423435258">Lahat ng oras</translation> <translation id="6981982820502123353">Accessibility</translation> <translation id="6989267951144302301">Hindi ma-download</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb index 3c65d7b..4e8f0c8 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
@@ -86,6 +86,7 @@ <translation id="1544826120773021464">כדי לנהל את חשבון Google, יש להקיש על הלחצן "ניהול החשבון"</translation> <translation id="1549000191223877751">העברה לחלון האחר</translation> <translation id="1553358976309200471">כדאי לעדכן את Chrome</translation> +<translation id="1558391695376153246">סגירת כרטיסיות מצב אנונימי</translation> <translation id="1569387923882100876">מכשיר מחובר</translation> <translation id="1571304935088121812">העתקת שם משתמש</translation> <translation id="1592864538817356322">הגנה רגילה:</translation> @@ -235,6 +236,7 @@ <translation id="2517472476991765520">סריקה</translation> <translation id="2518590038762162553">במצב טעינה מהירה, Chrome טוען דפים מהר יותר ומפחית את השימוש בנתונים בשיעור של עד 60 אחוזים. כדי לבצע אופטימיזציה לדפים שהמשתמש נכנס אליהם, Chrome שולח אל Google את התנועה שלו באינטרנט. <ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /></translation> <translation id="2523184218357549926">שליחת כתובות אתרים של דפים שבהם ביקרת ל-Google</translation> +<translation id="2527497042232966453">בוצעה החלפה לכרטיסיות מצב אנונימי</translation> <translation id="2527779675047087889">הסתרת התוכן שבלוח</translation> <translation id="2532336938189706096">תצוגת אינטרנט</translation> <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> פריטים נמחקו</translation> @@ -424,11 +426,13 @@ <translation id="3810838688059735925">סרטון</translation> <translation id="3810973564298564668">ניהול</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> הורדות נמחקו</translation> +<translation id="3845098929839618392">לפתיחה בכרטיסיית מצב אנונימי</translation> <translation id="3856096718352044181">יש לאמת שהספק הזה חוקי או לנסות שוב מאוחר יותר</translation> <translation id="3861633093716975811">סרטונים פופולריים</translation> <translation id="3892148308691398805">העתקת הטקסט</translation> <translation id="3894427358181296146">הוספת תיקייה</translation> <translation id="3895926599014793903">שינוי הזום בכל מקרה</translation> +<translation id="3899682235662194879">סגירה של כל כרטיסיות המצב האנונימי</translation> <translation id="3908308510347173149">יש לעדכן את <ph name="PRODUCT_NAME" /></translation> <translation id="3912508018559818924">כל הטוב שבאינטרנט…</translation> <translation id="3924911262913579434"><ph name="SAFE_BROWSING_MODE" /> פעילה</translation> @@ -482,6 +486,7 @@ <translation id="4263656433980196874">ההסכמה לחיפוש קולי של Assistant בממשק משתמש נפתחה בגובה מלא</translation> <translation id="4269820728363426813">העתקת כתובת של קישור</translation> <translation id="4290281343757112331">להוריד מאוחר יותר במקום זאת?</translation> +<translation id="4296252229500326964">כרטיסיית מצב אנונימי חדשה</translation> <translation id="4298388696830689168">אתרים מקושרים</translation> <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4307992518367153382">היסודות</translation> @@ -573,6 +578,7 @@ <translation id="4865987431642283918">ברירת המחדל לשפת המכשיר</translation> <translation id="4866368707455379617">לא ניתן להתקין את <ph name="MODULE" /> ל-Chrome</translation> <translation id="4875775213178255010">תוכן מוצע</translation> +<translation id="4877678010818027629">מעבר למצב אנונימי</translation> <translation id="4878404682131129617">יצירת מנהרה בעזרת שרת proxy נכשלה</translation> <translation id="4880127995492972015">תרגום…</translation> <translation id="4881695831933465202">פתיחה</translation> @@ -899,6 +905,7 @@ <translation id="686366188661646310">למחוק את הסיסמה?</translation> <translation id="6864459304226931083">הורדת תמונה</translation> <translation id="6865313869410766144">נתוני טפסים למילוי אוטומטי</translation> +<translation id="6867400383614725881">כרטיסיית מצב אנונימי חדשה</translation> <translation id="6882836635272038266">הגנה רגילה מפני אתרים, הורדות ותוספים שידועים כמסוכנים.</translation> <translation id="688738109438487280">הוספת נתונים קיימים אל <ph name="TO_ACCOUNT" />.</translation> <translation id="6891726759199484455">ביטול הנעילה יאפשר להעתיק את הסיסמה</translation> @@ -914,6 +921,7 @@ <translation id="6945221475159498467">בחירה</translation> <translation id="6955535239952325894">ההגדרה הזו מושבתת בדפדפנים מנוהלים</translation> <translation id="6963766334940102469">מחיקת סימניות</translation> +<translation id="696447261358045621">לצאת מהמצב האנונימי?</translation> <translation id="6979737339423435258">משחר ההיסטוריה</translation> <translation id="6981982820502123353">נגישות</translation> <translation id="6989267951144302301">ההורדה נכשלה</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb index 3ea4d09e..c27fb75d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
@@ -86,6 +86,7 @@ <translation id="1544826120773021464">თქვენი Google ანგარიშის სამართავად შეეხეთ „ანგარიშის მართვის“ ღილაკს</translation> <translation id="1549000191223877751">სხვა ფანჯარაში გადატანა</translation> <translation id="1553358976309200471">Chrome-ის განახლება</translation> +<translation id="1558391695376153246">ინკოგნ. ჩანართების დახურვა</translation> <translation id="1569387923882100876">დაკავშირებული მოწყობილობა</translation> <translation id="1571304935088121812">მომხმარებლის სახელის კოპირება</translation> <translation id="1592864538817356322">სტანდარტული დაცვა:</translation> @@ -235,6 +236,7 @@ <translation id="2517472476991765520">სკანირება</translation> <translation id="2518590038762162553">Lite რეჟიმში Chrome უფრო სწრაფად ტვირთავს გვერდებს და 60%-ით ნაკლებ ტრაფიკს მოიხმარს. თქვენ მიერ მონახულებული გვერდების ოპტიმიზაციის მიზნით, Chrome თქვენს ვებ-ტრაფიკს Google-ს უგზავნის. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation> <translation id="2523184218357549926">Google-ს უგზავნის თქვენ მიერ მონახულებული გვერდების URL-ებს</translation> +<translation id="2527497042232966453">გადართულია ინკოგნიტო ჩანართებზე</translation> <translation id="2527779675047087889">გაცვლის ბუფერის შიგთავსის დამალვა</translation> <translation id="2532336938189706096">ვებ-ხედი</translation> <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ერთეული წაიშალა</translation> @@ -424,11 +426,13 @@ <translation id="3810838688059735925">ვიდეო</translation> <translation id="3810973564298564668">მართვა</translation> <translation id="3819178904835489326"><ph name="NUMBER_OF_DOWNLOADS" /> ჩამოტვირთული ფაილი წაიშალა</translation> +<translation id="3845098929839618392">ინკოგნიტო ჩანართში გახსნა</translation> <translation id="3856096718352044181">დაადასტურეთ პროვაიდერის სისწორე ან ცადეთ მოგვიანებით</translation> <translation id="3861633093716975811">პოპულარული ვიდეოები</translation> <translation id="3892148308691398805">ტექსტის კოპირება</translation> <translation id="3894427358181296146">საქაღალდის დამატება</translation> <translation id="3895926599014793903">გადიდების იძულებით ჩართვა</translation> +<translation id="3899682235662194879">ყველა ინკოგნიტო ჩანართის დახურვა</translation> <translation id="3908308510347173149"><ph name="PRODUCT_NAME" />-ის განახლება</translation> <translation id="3912508018559818924">მიმდინარეობს საუკეთესო კონტენტის პოვნა ვებში…</translation> <translation id="3924911262913579434">„<ph name="SAFE_BROWSING_MODE" />“ ჩართულია</translation> @@ -482,6 +486,7 @@ <translation id="4263656433980196874">ასისტენტში ხმოვან ძიებაზე თანხმობის სამომხმარებლო ინტერფეისი გახსნილია სრულ სიმაღლეზე</translation> <translation id="4269820728363426813">ბმულის მისამართის კოპირება</translation> <translation id="4290281343757112331">გსურთ, მოგვიანებით ჩამოტვირთოთ?</translation> +<translation id="4296252229500326964">ახალი ინკოგნიტო ჩანართი</translation> <translation id="4298388696830689168">მიბმული საიტები</translation> <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4307992518367153382">ძირითადი</translation> @@ -573,6 +578,7 @@ <translation id="4865987431642283918">მოწყობილობის ნაგულისხმევი ენა</translation> <translation id="4866368707455379617"><ph name="MODULE" /> ვერ დაინსტალირდა Chrome-ისთვის</translation> <translation id="4875775213178255010">კონტენტის შემოთავაზება</translation> +<translation id="4877678010818027629">ინკოგნიტო რეჟიმზე გადასვლა</translation> <translation id="4878404682131129617">პროქსი-სერვერის მეშვეობით გვირაბული კავშირის დამყარება ვერ მოხერხდა</translation> <translation id="4880127995492972015">თარგმნა…</translation> <translation id="4881695831933465202">გახსნა</translation> @@ -899,6 +905,7 @@ <translation id="686366188661646310">გსურთ პაროლის წაშლა?</translation> <translation id="6864459304226931083">სურათის ჩამოტვირთვა</translation> <translation id="6865313869410766144">ფორმათა მონაცემების ავტომატური შევსება</translation> +<translation id="6867400383614725881">ახალი ინკოგნიტო ჩანართი</translation> <translation id="6882836635272038266">სტანდარტული დაცვა ცნობილი სახიფათო ვებსაიტებისგან, ჩამოტვირთვებისა და გაფართოებებისგან.</translation> <translation id="688738109438487280">არსებული მონაცემების <ph name="TO_ACCOUNT" />-ში დამატება.</translation> <translation id="6891726759199484455">განბლოკეთ თქვენი პაროლის კოპირებისთვის</translation> @@ -914,6 +921,7 @@ <translation id="6945221475159498467">არჩევა</translation> <translation id="6955535239952325894">ეს პარამეტრი გათიშულია მართულ ბრაუზერებში</translation> <translation id="6963766334940102469">სანიშნეების წაშლა</translation> +<translation id="696447261358045621">ინკოგნიტო რეჟიმიდან გამოსვლა</translation> <translation id="6979737339423435258">ყველა დროის</translation> <translation id="6981982820502123353">სპეციალური შესაძლებლობები</translation> <translation id="6989267951144302301">ჩამოტვირთვა ვერ მოხერხდა</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb index 437a986..f97d7892 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -62,6 +62,7 @@ <translation id="1376578503827013741">हिसाब गर्दै…</translation> <translation id="1383876407941801731">खोज्नुहोस्</translation> <translation id="1384704387250346179">Google लेन्स प्रयोग गरी फोटोमा भएका कुरा अनुवाद गर्नुहोस् <ph name="BEGIN_NEW" />नयाँ<ph name="END_NEW" /></translation> +<translation id="1385855801883526502">हाइलाइट गरिएको पाठ अर्को शैलीको बनाउनुहोस्</translation> <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> दिनअघि सक्रिय</translation> <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> मार्फत खोज्नुहोस्</translation> <translation id="1406000523432664303">“ट्रयाक नगर्नुहोस्”</translation> @@ -485,7 +486,7 @@ <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4307992518367153382">आधारभूत</translation> <translation id="4314815835985389558">सिंक व्यवस्थापन गर्नुहोस्</translation> -<translation id="4320177379694898372">कुनै इन्टरनेट जडान छैन</translation> +<translation id="4320177379694898372">इन्टरनेट छैन</translation> <translation id="4321739720395210191">तपाईंको क्यामेरा खोल्न सकिएन। आफ्नो यन्त्र पुनः सुरु गरी फेरि प्रयास गर्नुहोस्।</translation> <translation id="433213510553688132">फलो गरिँदै छ…</translation> <translation id="4335835283689002019">Safe Browsing अफ छ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb index 6680cb7..3239afd 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -86,6 +86,7 @@ <translation id="1544826120773021464">Če želite upravljati račun Google, se dotaknite gumba »Upravljanje računa«</translation> <translation id="1549000191223877751">Premik v drugo okno</translation> <translation id="1553358976309200471">Posodobi Chrome</translation> +<translation id="1558391695376153246">Zapri anonimne zavihke</translation> <translation id="1569387923882100876">Povezana naprava</translation> <translation id="1571304935088121812">Kopiranje uporabniškega imena</translation> <translation id="1592864538817356322">Standardna zaščita:</translation> @@ -235,6 +236,7 @@ <translation id="2517472476991765520">Išči</translation> <translation id="2518590038762162553">Chrome v lahkem načinu naloži strani hitreje in uporabi do 60 odstotkov manj podatkov. Chrome zaradi optimiziranja strani, ki jih obiščete, Googlu pošlje vaš spletni promet. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation> <translation id="2523184218357549926">Googlu pošlje URL-je strani, ki jih obiščete</translation> +<translation id="2527497042232966453">Preklopljeno na anonimne zavihke</translation> <translation id="2527779675047087889">Skrivanje vsebine odložišča</translation> <translation id="2532336938189706096">Spletni pogled</translation> <translation id="2534155362429831547">Št. izbrisanih elementov: <ph name="NUMBER_OF_ITEMS" /></translation> @@ -424,11 +426,13 @@ <translation id="3810838688059735925">Video</translation> <translation id="3810973564298564668">Upravljanje</translation> <translation id="3819178904835489326">Št. izbrisanih prenosov: <ph name="NUMBER_OF_DOWNLOADS" /></translation> +<translation id="3845098929839618392">Odpri na zav. brez bel. zg.</translation> <translation id="3856096718352044181">Preverite, ali je ponudnik veljaven, in poskusite pozneje znova</translation> <translation id="3861633093716975811">Priljubljeni videoposnetki</translation> <translation id="3892148308691398805">Kopiraj besedilo</translation> <translation id="3894427358181296146">Dodajanje mape</translation> <translation id="3895926599014793903">Vsili povečavo</translation> +<translation id="3899682235662194879">Zapri vse anonimne zavihke</translation> <translation id="3908308510347173149">Posodobi <ph name="PRODUCT_NAME" /></translation> <translation id="3912508018559818924">Iskanje najboljšega v spletu …</translation> <translation id="3924911262913579434">Način »<ph name="SAFE_BROWSING_MODE" />« je vklopljen</translation> @@ -482,6 +486,7 @@ <translation id="4263656433980196874">Uporabniški vmesnik za soglasje za glasovno iskanje v Pomočniku, odprt pri polni višini.</translation> <translation id="4269820728363426813">Kopiraj naslov povezave</translation> <translation id="4290281343757112331">Želite prenesti pozneje?</translation> +<translation id="4296252229500326964">Nov anonimni zavihek</translation> <translation id="4298388696830689168">Povezana spletna mesta</translation> <translation id="4303044213806199882">chrome_screenshot_<ph name="CURRENT_TIMESTAMP_MS" /></translation> <translation id="4307992518367153382">Osnove</translation> @@ -573,6 +578,7 @@ <translation id="4865987431642283918">Privzeti jezik v napravi</translation> <translation id="4866368707455379617">Modula <ph name="MODULE" /> za Chrome ni mogoče namestiti</translation> <translation id="4875775213178255010">Predlogi za vsebino</translation> +<translation id="4877678010818027629">Vklop anonimnega načina</translation> <translation id="4878404682131129617">Vzpostavljanje tunela prek strežnika proxy ni uspelo</translation> <translation id="4880127995492972015">Prevedi …</translation> <translation id="4881695831933465202">Odpri</translation> @@ -899,6 +905,7 @@ <translation id="686366188661646310">Želite izbrisati geslo?</translation> <translation id="6864459304226931083">Prenos slike</translation> <translation id="6865313869410766144">Podatki za samodejno izpolnjevanje obrazcev</translation> +<translation id="6867400383614725881">Nov anonimni zavihek</translation> <translation id="6882836635272038266">Standardna zaščita proti spletnim mestom, prenosom in razširitvam, za katere vemo, da so nevarni.</translation> <translation id="688738109438487280">Dodajanje obstoječih podatkov v račun <ph name="TO_ACCOUNT" />.</translation> <translation id="6891726759199484455">Odklenite, če želite kopirati geslo</translation> @@ -914,6 +921,7 @@ <translation id="6945221475159498467">Izberi</translation> <translation id="6955535239952325894">Ta nastavitev je onemogočena v upravljanih brskalnikih</translation> <translation id="6963766334940102469">Izbriši zaznamke</translation> +<translation id="696447261358045621">Izklop anonimnega načina</translation> <translation id="6979737339423435258">Od začetka</translation> <translation id="6981982820502123353">Dostopnost</translation> <translation id="6989267951144302301">Ni bilo mogoče prenesti</translation>
diff --git a/chrome/browser/ui/app_list/search/app_list_search_browsertest.cc b/chrome/browser/ui/app_list/search/app_list_search_browsertest.cc index 1e475dc03..5b77fb4 100644 --- a/chrome/browser/ui/app_list/search/app_list_search_browsertest.cc +++ b/chrome/browser/ui/app_list/search/app_list_search_browsertest.cc
@@ -323,4 +323,24 @@ EXPECT_EQ(base::UTF16ToASCII(results[0]->title()), "my_file"); } +// Test that Drive folders can be searched. +IN_PROC_BROWSER_TEST_F(AppListDriveSearchBrowserTest, DriveFolderTest) { + base::ScopedAllowBlockingForTesting allow_blocking; + + drive::DriveIntegrationService* drive_service = + drive::DriveIntegrationServiceFactory::FindForProfile(GetProfile()); + ASSERT_TRUE(drive_service->IsMounted()); + base::FilePath mount_path = drive_service->GetMountPointPath(); + + ASSERT_TRUE(base::CreateDirectory(mount_path.Append("my_folder"))); + ASSERT_TRUE(base::CreateDirectory(mount_path.Append("other_folder"))); + + SearchAndWaitForProviders("my", {ResultType::kDriveSearch}); + + const auto results = PublishedResultsForProvider(ResultType::kDriveSearch); + ASSERT_EQ(results.size(), 1u); + ASSERT_TRUE(results[0]); + EXPECT_EQ(base::UTF16ToASCII(results[0]->title()), "my_folder"); +} + } // namespace app_list
diff --git a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider.cc b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider.cc index f560008..dfe173d 100644 --- a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider.cc +++ b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider.cc
@@ -50,6 +50,7 @@ ClearResults(); return; } + last_query_ = query; weak_ptr_factory_.InvalidateWeakPtrs(); app_instance->GetIcingGlobalQueryResults( @@ -75,7 +76,7 @@ } new_results.emplace_back(std::make_unique<ArcAppDataSearchResult>( - std::move(result), list_controller_)); + std::move(result), list_controller_, last_query_)); } SwapResults(&new_results); }
diff --git a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider.h b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider.h index 9e303eb9..f407d50 100644 --- a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider.h +++ b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_provider.h
@@ -31,6 +31,7 @@ std::vector<arc::mojom::AppDataResultPtr> results); const int max_results_; + std::u16string last_query_; AppListControllerDelegate* const list_controller_; // Owned by AppListClient. base::WeakPtrFactory<ArcAppDataSearchProvider> weak_ptr_factory_{this};
diff --git a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_result.cc b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_result.cc index 51fc812d..de95d6e 100644 --- a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_result.cc +++ b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_result.cc
@@ -12,6 +12,7 @@ #include "chrome/browser/apps/app_service/app_icon_factory.h" #include "chrome/browser/ash/arc/icon_decode_request.h" #include "chrome/browser/ui/app_list/app_list_controller_delegate.h" +#include "chrome/browser/ui/app_list/search/search_tags_util.h" #include "chrome/common/chrome_features.h" #include "components/arc/arc_service_manager.h" #include "components/arc/session/arc_bridge_service.h" @@ -80,15 +81,20 @@ ArcAppDataSearchResult::ArcAppDataSearchResult( arc::mojom::AppDataResultPtr data, - AppListControllerDelegate* list_controller) + AppListControllerDelegate* list_controller, + const std::u16string& query) : data_(std::move(data)), list_controller_(list_controller) { - SetTitle(base::UTF8ToUTF16(data_->label)); + const std::u16string title = base::UTF8ToUTF16(data_->label); + SetTitle(title); + SetTitleTags(CalculateTags(query, title)); set_id(kAppDataSearchPrefix + launch_intent_uri()); if (data_->type == arc::mojom::AppDataResultType::PERSON) { SetDisplayType(ash::SearchResultDisplayType::kTile); SetMetricsType(ash::APP_DATA_RESULT_PERSON); } else if (data_->type == arc::mojom::AppDataResultType::NOTE_DOCUMENT) { - SetDetails(base::UTF8ToUTF16(data_->text)); + const std::u16string details = base::UTF8ToUTF16(data_->text); + SetDetails(details); + SetDetailsTags(CalculateTags(query, details)); SetDisplayType(ash::SearchResultDisplayType::kList); SetMetricsType(ash::APP_DATA_RESULT_NOTE_DOCUMENT); } else {
diff --git a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_result.h b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_result.h index 8c2f39fe..c536a9f 100644 --- a/chrome/browser/ui/app_list/search/arc/arc_app_data_search_result.h +++ b/chrome/browser/ui/app_list/search/arc/arc_app_data_search_result.h
@@ -26,7 +26,8 @@ class ArcAppDataSearchResult : public ChromeSearchResult { public: ArcAppDataSearchResult(arc::mojom::AppDataResultPtr data, - AppListControllerDelegate* list_controller); + AppListControllerDelegate* list_controller, + const std::u16string& query); ~ArcAppDataSearchResult() override; // ChromeSearchResult:
diff --git a/chrome/browser/ui/app_list/search/files/drive_search_provider.cc b/chrome/browser/ui/app_list/search/files/drive_search_provider.cc index 834b78e..60e5e8df 100644 --- a/chrome/browser/ui/app_list/search/files/drive_search_provider.cc +++ b/chrome/browser/ui/app_list/search/files/drive_search_provider.cc
@@ -71,6 +71,7 @@ return; } + last_query_ = query; last_tokenized_query_.emplace(query, TokenizedString::Mode::kWords); // New scores will be assigned for sorting purposes so use the default @@ -98,10 +99,13 @@ for (const auto& item : items) { if (item->metadata->type == drivefs::mojom::FileMetadata::Type::kDirectory) { - // Ignore directories in search. - continue; + const auto type = item->metadata->shared + ? FileResult::Type::kSharedDirectory + : FileResult::Type::kDirectory; + results.emplace_back(MakeResult(item->path, type)); + } else { + results.emplace_back(MakeResult(item->path, FileResult::Type::kFile)); } - results.emplace_back(MakeResult(item->path)); } SwapResults(&results); @@ -111,7 +115,8 @@ } std::unique_ptr<FileResult> DriveSearchProvider::MakeResult( - const base::FilePath& path) { + const base::FilePath& path, + FileResult::Type type) { // Strip leading separators so that the path can be reparented. // TODO(crbug.com/1154513): Remove this step once the drive backend returns // results in relative path format. @@ -128,8 +133,8 @@ return std::make_unique<FileResult>( kDriveSearchSchema, reparented_path, - ash::AppListSearchResultType::kDriveSearch, last_tokenized_query_, - FileResult::Type::kFile, profile_); + ash::AppListSearchResultType::kDriveSearch, last_query_, + last_tokenized_query_, type, profile_); } } // namespace app_list
diff --git a/chrome/browser/ui/app_list/search/files/drive_search_provider.h b/chrome/browser/ui/app_list/search/files/drive_search_provider.h index 785a717..8a96e99 100644 --- a/chrome/browser/ui/app_list/search/files/drive_search_provider.h +++ b/chrome/browser/ui/app_list/search/files/drive_search_provider.h
@@ -12,6 +12,7 @@ #include "base/optional.h" #include "base/sequence_checker.h" #include "base/time/time.h" +#include "chrome/browser/ui/app_list/search/files/file_result.h" #include "chrome/browser/ui/app_list/search/search_provider.h" #include "chromeos/components/drivefs/mojom/drivefs.mojom-forward.h" #include "chromeos/components/string_matching/tokenized_string.h" @@ -25,8 +26,6 @@ namespace app_list { -class FileResult; - class DriveSearchProvider : public SearchProvider { public: explicit DriveSearchProvider(Profile* profile); @@ -42,9 +41,11 @@ private: void SetSearchResults(drive::FileError error, std::vector<drivefs::mojom::QueryItemPtr> paths); - std::unique_ptr<FileResult> MakeResult(const base::FilePath& path); + std::unique_ptr<FileResult> MakeResult(const base::FilePath& path, + FileResult::Type type); base::TimeTicks query_start_time_; + std::u16string last_query_; base::Optional<chromeos::string_matching::TokenizedString> last_tokenized_query_;
diff --git a/chrome/browser/ui/app_list/search/files/file_result.cc b/chrome/browser/ui/app_list/search/files/file_result.cc index ebab623..921e5fcb 100644 --- a/chrome/browser/ui/app_list/search/files/file_result.cc +++ b/chrome/browser/ui/app_list/search/files/file_result.cc
@@ -21,6 +21,7 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/platform_util.h" +#include "chrome/browser/ui/app_list/search/search_tags_util.h" #include "chrome/grit/generated_resources.h" #include "chromeos/components/string_matching/tokenized_string_match.h" #include "ui/base/l10n/l10n_util.h" @@ -89,8 +90,9 @@ const base::FilePath& filepath, ResultType result_type, DisplayType display_type, + Type type, Profile* profile) - : filepath_(filepath), profile_(profile) { + : filepath_(filepath), type_(type), profile_(profile) { DCHECK(profile); set_id(schema + filepath.value()); @@ -131,7 +133,12 @@ DisplayType display_type, float relevance, Profile* profile) - : FileResult(schema, filepath, result_type, display_type, profile) { + : FileResult(schema, + filepath, + result_type, + display_type, + Type::kFile, + profile) { set_relevance(relevance); // TODO(crbug.com/1188495): Add relevance metrics for zero state files. @@ -155,15 +162,24 @@ const std::string& schema, const base::FilePath& filepath, ResultType result_type, - base::Optional<chromeos::string_matching::TokenizedString>& query, + const std::u16string& query, + const base::Optional<chromeos::string_matching::TokenizedString>& + tokenized_query, Type type, Profile* profile) - : FileResult(schema, filepath, result_type, DisplayType::kList, profile) { - const double relevance = CalculateRelevance(query, title()); + : FileResult(schema, + filepath, + result_type, + DisplayType::kList, + type, + profile) { + const double relevance = CalculateRelevance(tokenized_query, title()); DCHECK((relevance >= 0) && (relevance <= 1)); set_relevance(relevance); LogRelevance(result_type, relevance); + SetTitleTags(CalculateTags(query, title())); + // Launcher search results UI is light by default, so use icons for light // background if dark/light mode feature is not enabled. const bool dark_background = ash::features::IsDarkLightModeEnabled() && @@ -184,9 +200,19 @@ FileResult::~FileResult() = default; void FileResult::Open(int event_flags) { - platform_util::OpenItem(profile_, filepath_, - platform_util::OpenItemType::OPEN_FILE, - platform_util::OpenOperationCallback()); + switch (type_) { + case Type::kFile: + platform_util::OpenItem(profile_, filepath_, + platform_util::OpenItemType::OPEN_FILE, + platform_util::OpenOperationCallback()); + break; + case Type::kDirectory: + case Type::kSharedDirectory: + platform_util::OpenItem(profile_, filepath_, + platform_util::OpenItemType::OPEN_FOLDER, + platform_util::OpenOperationCallback()); + break; + } } ::std::ostream& operator<<(::std::ostream& os, const FileResult& result) {
diff --git a/chrome/browser/ui/app_list/search/files/file_result.h b/chrome/browser/ui/app_list/search/files/file_result.h index db1aa82..f492ae4a 100644 --- a/chrome/browser/ui/app_list/search/files/file_result.h +++ b/chrome/browser/ui/app_list/search/files/file_result.h
@@ -31,7 +31,9 @@ FileResult(const std::string& schema, const base::FilePath& filepath, ResultType result_type, - base::Optional<chromeos::string_matching::TokenizedString>& query, + const std::u16string& query, + const base::Optional<chromeos::string_matching::TokenizedString>& + tokenized_query, Type type, Profile* profile); ~FileResult() override; @@ -47,9 +49,11 @@ const base::FilePath& filepath, ResultType result_type, DisplayType display_type, + Type type, Profile* profile); const base::FilePath filepath_; + const Type type_; Profile* const profile_; };
diff --git a/chrome/browser/ui/app_list/search/files/file_search_provider.cc b/chrome/browser/ui/app_list/search/files/file_search_provider.cc index c23ea66..1b9603a 100644 --- a/chrome/browser/ui/app_list/search/files/file_search_provider.cc +++ b/chrome/browser/ui/app_list/search/files/file_search_provider.cc
@@ -54,25 +54,29 @@ return base::StrCat(query_pieces); } -std::vector<base::FilePath> SearchFilesByPattern( +// Returns a vector of matched filepaths and a bool indicating whether or not +// the path is a directory. +std::vector<std::pair<base::FilePath, bool>> SearchFilesByPattern( const base::FilePath& root_path, const std::string& query, const base::TimeTicks& query_start_time) { base::FileEnumerator enumerator( root_path, - /*recursive=*/true, base::FileEnumerator::FILES, + /*recursive=*/true, + base::FileEnumerator::DIRECTORIES | base::FileEnumerator::FILES, CreateFnmatchQuery(query), base::FileEnumerator::FolderSearchPolicy::ALL); const auto time_limit = base::TimeDelta::FromMilliseconds(kSearchTimeoutMs); bool timed_out = false; - - std::vector<base::FilePath> matched_paths; + std::vector<std::pair<base::FilePath, bool>> matched_paths; for (base::FilePath path = enumerator.Next(); !path.empty(); path = enumerator.Next()) { - matched_paths.emplace_back(path); + matched_paths.emplace_back(path, enumerator.GetInfo().IsDirectory()); - if (matched_paths.size() == kMaxResults || - base::TimeTicks::Now() - query_start_time > time_limit) { + if (matched_paths.size() == kMaxResults) + break; + + if (base::TimeTicks::Now() - query_start_time > time_limit) { timed_out = true; break; } @@ -109,6 +113,7 @@ if (query.empty()) return; + last_query_ = query; last_tokenized_query_.emplace(query, TokenizedString::Mode::kWords); base::ThreadPool::PostTaskAndReplyWithResult( @@ -120,7 +125,7 @@ } void FileSearchProvider::OnSearchComplete( - const std::vector<base::FilePath>& paths) { + const std::vector<std::pair<base::FilePath, bool>>& paths) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); SearchProvider::Results results; @@ -133,10 +138,12 @@ } std::unique_ptr<FileResult> FileSearchProvider::MakeResult( - const base::FilePath& path) { + const std::pair<base::FilePath, bool>& path) { + const auto type = + path.second ? FileResult::Type::kDirectory : FileResult::Type::kFile; return std::make_unique<FileResult>( - kFileSearchSchema, path, ash::AppListSearchResultType::kFileSearch, - last_tokenized_query_, FileResult::Type::kFile, profile_); + kFileSearchSchema, path.first, ash::AppListSearchResultType::kFileSearch, + last_query_, last_tokenized_query_, type, profile_); } } // namespace app_list
diff --git a/chrome/browser/ui/app_list/search/files/file_search_provider.h b/chrome/browser/ui/app_list/search/files/file_search_provider.h index 00d8ef6..c261a67 100644 --- a/chrome/browser/ui/app_list/search/files/file_search_provider.h +++ b/chrome/browser/ui/app_list/search/files/file_search_provider.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_APP_LIST_SEARCH_FILES_FILE_SEARCH_PROVIDER_H_ #define CHROME_BROWSER_UI_APP_LIST_SEARCH_FILES_FILE_SEARCH_PROVIDER_H_ +#include <utility> #include <vector> #include "base/files/file_path.h" @@ -38,10 +39,13 @@ } private: - void OnSearchComplete(const std::vector<base::FilePath>& paths); - std::unique_ptr<FileResult> MakeResult(const base::FilePath& path); + void OnSearchComplete( + const std::vector<std::pair<base::FilePath, bool>>& paths); + std::unique_ptr<FileResult> MakeResult( + const std::pair<base::FilePath, bool>& path); base::TimeTicks query_start_time_; + std::u16string last_query_; base::Optional<chromeos::string_matching::TokenizedString> last_tokenized_query_;
diff --git a/chrome/browser/ui/app_list/search/help_app_provider.cc b/chrome/browser/ui/app_list/search/help_app_provider.cc index 9249a3f..715ba680 100644 --- a/chrome/browser/ui/app_list/search/help_app_provider.cc +++ b/chrome/browser/ui/app_list/search/help_app_provider.cc
@@ -19,6 +19,7 @@ #include "chrome/browser/apps/app_service/launch_utils.h" #include "chrome/browser/ash/release_notes/release_notes_storage.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/app_list/search/search_tags_util.h" #include "chrome/browser/ui/web_applications/system_web_app_ui_utils.h" #include "chrome/browser/web_applications/components/web_app_id_constants.h" #include "chrome/browser/web_applications/system_web_apps/system_web_app_types.h" @@ -104,17 +105,20 @@ const float& relevance, Profile* profile, const chromeos::help_app::mojom::SearchResultPtr& result, - const gfx::ImageSkia& icon) + const gfx::ImageSkia& icon, + const std::u16string& query) : profile_(profile), url_path_(result->url_path_with_parameters) { DCHECK(profile_); set_id(chromeos::kChromeUIHelpAppURL + url_path_); set_relevance(relevance); SetTitle(result->title); + SetTitleTags(CalculateTags(query, result->title)); SetResultType(ResultType::kHelpApp); SetDisplayType(DisplayType::kList); SetMetricsType(ash::HELP_APP); SetIcon(icon); SetDetails(result->main_category); + SetDetailsTags(CalculateTags(query, result->main_category)); } HelpAppResult::~HelpAppResult() = default; @@ -241,8 +245,8 @@ // difference between each result's score keeps the help app results grouped // together. const float score = 0.95f - i * kScoreEps; - search_results.emplace_back( - std::make_unique<HelpAppResult>(score, profile_, result, icon_)); + search_results.emplace_back(std::make_unique<HelpAppResult>( + score, profile_, result, icon_, last_query_)); ++i; }
diff --git a/chrome/browser/ui/app_list/search/help_app_provider.h b/chrome/browser/ui/app_list/search/help_app_provider.h index 9f804b8..5dabe52 100644 --- a/chrome/browser/ui/app_list/search/help_app_provider.h +++ b/chrome/browser/ui/app_list/search/help_app_provider.h
@@ -46,7 +46,8 @@ HelpAppResult(const float& relevance, Profile* profile, const chromeos::help_app::mojom::SearchResultPtr& result, - const gfx::ImageSkia& icon); + const gfx::ImageSkia& icon, + const std::u16string& query); ~HelpAppResult() override;
diff --git a/chrome/browser/ui/app_list/search/omnibox_result.cc b/chrome/browser/ui/app_list/search/omnibox_result.cc index 0ddad86..4f5e0bd 100644 --- a/chrome/browser/ui/app_list/search/omnibox_result.cc +++ b/chrome/browser/ui/app_list/search/omnibox_result.cc
@@ -189,7 +189,8 @@ *match_.search_terms_args, &match_); } set_id(match_.stripped_destination_url.spec()); - SetResultType(ash::AppListSearchResultType::kOmnibox); + SetDisplayType(DisplayType::kList); + SetResultType(ResultType::kOmnibox); set_result_subtype(static_cast<int>(match_.type)); SetMetricsType(GetSearchResultType());
diff --git a/chrome/browser/ui/app_list/search/os_settings_provider.cc b/chrome/browser/ui/app_list/search/os_settings_provider.cc index f49f857..41f7fb32 100644 --- a/chrome/browser/ui/app_list/search/os_settings_provider.cc +++ b/chrome/browser/ui/app_list/search/os_settings_provider.cc
@@ -19,6 +19,7 @@ #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/app_list/search/search_tags_util.h" #include "chrome/browser/ui/settings_window_manager_chromeos.h" #include "chrome/browser/ui/webui/settings/chromeos/hierarchy.h" #include "chrome/browser/ui/webui/settings/chromeos/os_settings_manager.h" @@ -114,11 +115,13 @@ Profile* profile, const chromeos::settings::mojom::SearchResultPtr& result, const float relevance_score, - const gfx::ImageSkia& icon) + const gfx::ImageSkia& icon, + const std::u16string& query) : profile_(profile), url_path_(result->url_path_with_parameters) { set_id(kOsSettingsResultPrefix + url_path_); set_relevance(relevance_score); SetTitle(result->canonical_result_text); + SetTitleTags(CalculateTags(query, result->canonical_result_text)); SetResultType(ResultType::kOsSettings); SetDisplayType(DisplayType::kList); SetMetricsType(ash::OS_SETTINGS); @@ -134,6 +137,7 @@ LogError(Error::kHierarchyEmpty); } else if (result->type != SettingsResultType::kSection) { SetDetails(hierarchy.back()); + SetDetailsTags(CalculateTags(query, hierarchy.back())); } // Manually build the accessible name for the search result, in a way that @@ -272,8 +276,8 @@ int i = 0; for (const auto& result : FilterResults(query, sorted_results, hierarchy_)) { const float score = 1.0f - i * kScoreEps; - search_results.emplace_back( - std::make_unique<OsSettingsResult>(profile_, result, score, icon_)); + search_results.emplace_back(std::make_unique<OsSettingsResult>( + profile_, result, score, icon_, last_query_)); ++i; }
diff --git a/chrome/browser/ui/app_list/search/os_settings_provider.h b/chrome/browser/ui/app_list/search/os_settings_provider.h index 93509d2..a1d36a27 100644 --- a/chrome/browser/ui/app_list/search/os_settings_provider.h +++ b/chrome/browser/ui/app_list/search/os_settings_provider.h
@@ -30,7 +30,7 @@ class Hierarchy; class OsSettingsManager; class SearchHandler; -} +} // namespace settings } // namespace chromeos namespace gfx { @@ -45,7 +45,8 @@ OsSettingsResult(Profile* profile, const chromeos::settings::mojom::SearchResultPtr& result, float relevance_score, - const gfx::ImageSkia& icon); + const gfx::ImageSkia& icon, + const std::u16string& query); ~OsSettingsResult() override; OsSettingsResult(const OsSettingsResult&) = delete;
diff --git a/chrome/browser/ui/app_list/search/search_controller.h b/chrome/browser/ui/app_list/search/search_controller.h index 7c60db2..a3b5998 100644 --- a/chrome/browser/ui/app_list/search/search_controller.h +++ b/chrome/browser/ui/app_list/search/search_controller.h
@@ -13,6 +13,7 @@ #include <vector> #include "base/callback.h" +#include "base/containers/flat_map.h" #include "base/macros.h" #include "chrome/browser/ui/app_list/search/mixer.h" #include "chrome/browser/ui/app_list/search/search_result_ranker/app_launch_data.h"
diff --git a/chrome/browser/ui/app_list/search/tests/file_search_provider_unittest.cc b/chrome/browser/ui/app_list/search/tests/file_search_provider_unittest.cc index d4a23d3..b005c34 100644 --- a/chrome/browser/ui/app_list/search/tests/file_search_provider_unittest.cc +++ b/chrome/browser/ui/app_list/search/tests/file_search_provider_unittest.cc
@@ -102,13 +102,13 @@ UnorderedElementsAre(Title("FILE_1.png"), Title("FiLe_2.Png"))); } -TEST_F(FileSearchProviderTest, DirectoriesIgnored) { +TEST_F(FileSearchProviderTest, SearchDirectories) { CreateDirectory("my_folder"); provider_->Start(u"my_folder"); Wait(); - EXPECT_TRUE(provider_->results().empty()); + EXPECT_THAT(provider_->results(), UnorderedElementsAre(Title("my_folder"))); } TEST_F(FileSearchProviderTest, ResultMetadataTest) {
diff --git a/chrome/browser/ui/web_applications/web_app_launch_manager.cc b/chrome/browser/ui/web_applications/web_app_launch_manager.cc index 998a9dea..5550a7ed 100644 --- a/chrome/browser/ui/web_applications/web_app_launch_manager.cc +++ b/chrome/browser/ui/web_applications/web_app_launch_manager.cc
@@ -78,6 +78,18 @@ content::WebContents* NavigateWebAppUsingParams(const std::string& app_id, NavigateParams& nav_params) { + Browser* browser = nav_params.browser; + const base::Optional<web_app::SystemAppType> capturing_system_app_type = + web_app::GetCapturingSystemAppForURL(browser->profile(), nav_params.url); + // TODO(crbug.com/1201820): This block creates conditions where Navigate() + // returns early and causes a crash. Fail gracefully instead. Further + // debugging state will be implemented via Chrometto UMA traces. + if (capturing_system_app_type && + (!browser || !web_app::IsBrowserForSystemWebApp( + browser, capturing_system_app_type.value()))) { + return nullptr; + } + Navigate(&nav_params); content::WebContents* const web_contents =
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc index a033d5b5..30e0d68 100644 --- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
@@ -76,10 +76,6 @@ CallJS("login.NetworkScreen.setError", std::string()); } -void NetworkScreenHandler::ShowConnectingStatus( - bool connecting, - const std::u16string& network_id) {} - void NetworkScreenHandler::SetOfflineDemoModeEnabled(bool enabled) { CallJS("login.NetworkScreen.setOfflineDemoModeEnabled", enabled); }
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h index 7c46b22..833265f1 100644 --- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h
@@ -39,10 +39,6 @@ // Hides error messages showing no error state. virtual void ClearErrors() = 0; - // Shows network connecting status or network selection otherwise. - virtual void ShowConnectingStatus(bool connecting, - const std::u16string& network_id) = 0; - // Enables or disables offline Demo Mode during Demo Mode network selection. virtual void SetOfflineDemoModeEnabled(bool enabled) = 0; }; @@ -65,8 +61,6 @@ void Unbind() override; void ShowError(const std::u16string& message) override; void ClearErrors() override; - void ShowConnectingStatus(bool connecting, - const std::u16string& network_id) override; void SetOfflineDemoModeEnabled(bool enabled) override; // BaseScreenHandler:
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index d91ed87..f1e44ff5 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-master-1619966591-f42929a3fd562c8b16a79785937c115067e8ab5e.profdata +chrome-mac-master-1620043170-f9f7121fad7918d4dee699180472d4842fb312f1.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 45140f95..803ce2d 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-master-1619945388-c5b6d5f8a549c6867325f6db114694039fcbc16f.profdata +chrome-win32-master-1620031841-0620eda5ee1a0ce1fde9fd0b4ffda765e8f8e538.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index ebad1c9..7da9ecb 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-master-1619945388-30e7c3ef2e89e6b6a3f26852e5605c48493b9bb9.profdata +chrome-win64-master-1620031841-73280d6f9a6ae8910679ea9cb38345d41f90ec6f.profdata
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index caf4f13..caaea7e 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -577,6 +577,10 @@ "IncognitoBrandConsistencyForDesktop", base::FEATURE_DISABLED_BY_DEFAULT}; #endif +// When enabled, removes any entry points to the history UI from Incognito mode. +const base::Feature kUpdateHistoryEntryPointsInIncognito{ + "UpdateHistoryEntryPointsInIncognito", base::FEATURE_DISABLED_BY_DEFAULT}; + #if !defined(OS_ANDROID) // Support sharing in Chrome OS intent handling. const base::Feature kIntentHandlingSharing{"IntentHandlingSharing", @@ -840,7 +844,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) const base::Feature kSharesheet{"Sharesheet", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kSharesheetContentPreviews{ - "SharesheetContentPreviews", base::FEATURE_DISABLED_BY_DEFAULT}; + "SharesheetContentPreviews", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kChromeOSSharingHub{"ChromeOSSharingHub", base::FEATURE_DISABLED_BY_DEFAULT}; #endif
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h index f29ce940..d5fa5e41 100644 --- a/chrome/common/chrome_features.h +++ b/chrome/common/chrome_features.h
@@ -377,6 +377,9 @@ extern const base::Feature kIncognitoBrandConsistencyForDesktop; #endif +COMPONENT_EXPORT(CHROME_FEATURES) +extern const base::Feature kUpdateHistoryEntryPointsInIncognito; + #if !defined(OS_ANDROID) COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kIntentHandlingSharing;
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index eda76b9..b192429 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -6877,9 +6877,9 @@ } if (use_aura) { sources += [ "../browser/ui/views/tooltip/tooltip_browsertest.cc" ] - if (is_mac) { - deps += [ "//ui/touch_selection" ] - } + } + if (use_aura || is_mac) { + deps += [ "//ui/touch_selection" ] } if (is_mac) { deps += [ "//content/test:browsertest_support" ]
diff --git a/chrome/test/data/webui/chromeos/diagnostics/BUILD.gn b/chrome/test/data/webui/chromeos/diagnostics/BUILD.gn index 27fef10a..4535f3b 100644 --- a/chrome/test/data/webui/chromeos/diagnostics/BUILD.gn +++ b/chrome/test/data/webui/chromeos/diagnostics/BUILD.gn
@@ -55,6 +55,14 @@ externs_list = [ "$externs_path/mocha-2.5.js" ] } +js_library("cellular_info_test") { + deps = [ + "../..:chai_assert", + "../..:test_util.m", + "//chromeos/components/diagnostics_ui/resources:cellular_info", + ] +} + js_library("connectivity_card_test") { deps = [ "../..:chai_assert",
diff --git a/chrome/test/data/webui/chromeos/diagnostics/cellular_info_test.js b/chrome/test/data/webui/chromeos/diagnostics/cellular_info_test.js new file mode 100644 index 0000000..a225d8a --- /dev/null +++ b/chrome/test/data/webui/chromeos/diagnostics/cellular_info_test.js
@@ -0,0 +1,44 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'chrome://diagnostics/cellular_info.js'; + +import {assertFalse, assertTrue} from '../../chai_assert.js'; +import {flushTasks} from '../../test_util.m.js'; + +import * as dx_utils from './diagnostics_test_utils.js'; + +export function cellularInfoTestSuite() { + /** @type {?CellularInfoElement} */ + let cellularInfoElement = null; + + setup(() => { + document.body.innerHTML = ''; + }); + + teardown(() => { + cellularInfoElement.remove(); + cellularInfoElement = null; + }); + + function initializeCellularInfo() { + assertFalse(!!cellularInfoElement); + + // Add the cellular info to the DOM. + cellularInfoElement = + /** @type {!CellularInfoElement} */ ( + document.createElement('cellular-info')); + assertTrue(!!cellularInfoElement); + document.body.appendChild(cellularInfoElement); + + return flushTasks(); + } + + test('CellularInfoPopulated', () => { + return initializeCellularInfo().then(() => { + dx_utils.assertElementContainsText( + cellularInfoElement.$$('#cellularInfoContainer'), 'Cellular'); + }); + }); +} \ No newline at end of file
diff --git a/chrome/test/data/webui/chromeos/diagnostics/diagnostics_app_unified_test.js b/chrome/test/data/webui/chromeos/diagnostics/diagnostics_app_unified_test.js index 4441f9ca..50d835f 100644 --- a/chrome/test/data/webui/chromeos/diagnostics/diagnostics_app_unified_test.js +++ b/chrome/test/data/webui/chromeos/diagnostics/diagnostics_app_unified_test.js
@@ -6,6 +6,7 @@ import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js'; import {batteryStatusCardTestSuite} from './battery_status_card_test.js'; +import {cellularInfoTestSuite} from './cellular_info_test.js'; import {connectivityCardTestSuite} from './connectivity_card_test.js'; import {cpuCardTestSuite} from './cpu_card_test.js'; import {dataPointTestSuite} from './data_point_test.js'; @@ -40,6 +41,7 @@ runSuite('App', appTestSuite); runSuite('BatteryStatusCard', batteryStatusCardTestSuite); +runSuite('CellularInfo', cellularInfoTestSuite); runSuite('ConnectivityCard', connectivityCardTestSuite); runSuite('CpuCard', cpuCardTestSuite); runSuite('DataPoint', dataPointTestSuite);
diff --git a/chrome/test/data/webui/chromeos/diagnostics/diagnostics_browsertest.js b/chrome/test/data/webui/chromeos/diagnostics/diagnostics_browsertest.js index 7bba59b2..f242bd0 100644 --- a/chrome/test/data/webui/chromeos/diagnostics/diagnostics_browsertest.js +++ b/chrome/test/data/webui/chromeos/diagnostics/diagnostics_browsertest.js
@@ -47,6 +47,7 @@ const debug_suites_list = [ 'App', 'BatteryStatusCard', + 'CellularInfo', 'ConnectivityCard', 'CpuCard', 'DataPoint',
diff --git a/chrome/test/data/webui/chromeos/diagnostics/network_info_test.js b/chrome/test/data/webui/chromeos/diagnostics/network_info_test.js index b3b3072..d49aed5 100644 --- a/chrome/test/data/webui/chromeos/diagnostics/network_info_test.js +++ b/chrome/test/data/webui/chromeos/diagnostics/network_info_test.js
@@ -54,4 +54,11 @@ assertTrue(!!ethernetInfoElement); }); }); + + test('CellularInfoPresent', () => { + return initializeNetworkInfo().then(() => { + const cellularInfoElement = networkInfoElement.$$('cellular-info'); + assertTrue(!!cellularInfoElement); + }); + }); } \ No newline at end of file
diff --git a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test.js b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test.js index 5a2ad5d..a2c76525 100644 --- a/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test.js +++ b/chrome/test/data/webui/chromeos/emoji_picker/emoji_picker_test.js
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import {GROUP_ICON_SIZE} from 'chrome://emoji-picker/constants.js'; import {EmojiButton} from 'chrome://emoji-picker/emoji_button.js'; import {EmojiPicker} from 'chrome://emoji-picker/emoji_picker.js'; import {EmojiPickerApiProxyImpl} from 'chrome://emoji-picker/emoji_picker_api_proxy.js'; @@ -10,7 +11,7 @@ import {assert} from 'chrome://resources/js/assert.m.js'; import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -import {assertEquals, assertFalse, assertGT, assertLT, assertTrue} from '../../chai_assert.js'; +import {assertFalse, assertGT, assertLT, assertTrue} from '../../chai_assert.js'; import {deepQuerySelector, dispatchMouseEvent, timeout, waitForCondition, waitForEvent, waitWithTimeout} from './emoji_picker_test_util.js'; @@ -26,6 +27,12 @@ return element.classList.contains(ACTIVE_CLASS); } +function assertCloseTo(actual, expected) { + assertTrue( + Math.abs(1 - actual / expected) <= 0.001, + `expected ${expected} to be close to ${actual}`); +} + suite('<emoji-picker>', () => { /** @type {!EmojiPicker} */ @@ -59,18 +66,18 @@ test('first non-chevron, tab should be active by default', async () => { const button = findInEmojiPicker( 'emoji-group-button[data-group="history"]', 'cr-icon-button'); - assertTrue(isGroupButtonActive(button)); + assertFalse(isGroupButtonActive(button)); }); test('second non-chevron tab should be inactive by default', () => { const button = findInEmojiPicker( - 'emoji-group-button[data-group="1"]', 'cr-icon-button'); - assertFalse(isGroupButtonActive(button)); + 'emoji-group-button[data-group="0"]', 'cr-icon-button'); + assertTrue(isGroupButtonActive(button)); }); - test('Highlight bar should be at the left on start', () => { + test('Highlight bar should under emotions on start', () => { const button = findInEmojiPicker('#bar'); - assertEquals('', button.style.left); + assertCloseTo(GROUP_ICON_SIZE, parseFloat(button.style.left)); }); test('clicking second tab should activate it and scroll', async () => {
diff --git a/chromeos/components/camera_app_ui/resources/css/ptz_panel.css b/chromeos/components/camera_app_ui/resources/css/ptz_panel.css index 6580283..b898ed6 100644 --- a/chromeos/components/camera_app_ui/resources/css/ptz_panel.css +++ b/chromeos/components/camera_app_ui/resources/css/ptz_panel.css
@@ -344,7 +344,7 @@ } #ptz-zoom-divider { - height: 36px; + height: 16px; left: 50%; top: 50%; transform: translateY(-50%);
diff --git a/chromeos/components/diagnostics_ui/resources/BUILD.gn b/chromeos/components/diagnostics_ui/resources/BUILD.gn index 6d8447e..4447847b7 100644 --- a/chromeos/components/diagnostics_ui/resources/BUILD.gn +++ b/chromeos/components/diagnostics_ui/resources/BUILD.gn
@@ -11,6 +11,7 @@ is_polymer3 = true deps = [ ":battery_status_card", + ":cellular_info", ":connectivity_card", ":cpu_card", ":data_point", @@ -57,6 +58,12 @@ ] } +js_library("cellular_info") { + deps = [ + "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", + ] +} + js_library("connectivity_card") { deps = [ ":routine_section", @@ -263,6 +270,7 @@ html_to_js("web_components") { js_files = [ "battery_status_card.js", + "cellular_info.js", "connectivity_card.js", "cpu_card.js", "data_point.js",
diff --git a/chromeos/components/diagnostics_ui/resources/cellular_info.html b/chromeos/components/diagnostics_ui/resources/cellular_info.html new file mode 100644 index 0000000..f47a692a --- /dev/null +++ b/chromeos/components/diagnostics_ui/resources/cellular_info.html
@@ -0,0 +1,4 @@ +<style include="diagnostics-shared diagnostics-fonts"> +</style> + +<div id="cellularInfoContainer">Cellular</div> \ No newline at end of file
diff --git a/chromeos/components/diagnostics_ui/resources/cellular_info.js b/chromeos/components/diagnostics_ui/resources/cellular_info.js new file mode 100644 index 0000000..6ee8639 --- /dev/null +++ b/chromeos/components/diagnostics_ui/resources/cellular_info.js
@@ -0,0 +1,20 @@ +// Copyright 2021 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 './diagnostics_fonts_css.js'; +import './diagnostics_shared_css.js'; + +import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +/** + * @fileoverview + * 'cellular-info' is responsible for displaying data points related + * to a Cellular network. + */ +Polymer({ + is: 'cellular-info', + + _template: html`{__html_template__}`, + +});
diff --git a/chromeos/components/diagnostics_ui/resources/diagnostics_app_resources.grd b/chromeos/components/diagnostics_ui/resources/diagnostics_app_resources.grd index d081f2dd..53d3e59 100644 --- a/chromeos/components/diagnostics_ui/resources/diagnostics_app_resources.grd +++ b/chromeos/components/diagnostics_ui/resources/diagnostics_app_resources.grd
@@ -19,6 +19,7 @@ <include name="IDR_DIAGNOSTICS_BATTERY_STATUS_CARD_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/battery_status_card.js" resource_path="battery_status_card.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_BROWSER_PROXY_JS" file="diagnostics_browser_proxy.js" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_CARD_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/diagnostics_card.js" resource_path="diagnostics_card.js" use_base_dir="false" type="BINDATA"/> + <include name="IDR_DIAGNOSTICS_CELLULAR_INFO_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/cellular_info.js" resource_path="cellular_info.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_CONNECTIVITY_CARD_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/connectivity_card.js" resource_path="connectivity_card.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_CPU_CARD_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/cpu_card.js" resource_path="cpu_card.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_DATA_POINT_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/data_point.js" resource_path="data_point.js" use_base_dir="false" type="BINDATA"/>
diff --git a/chromeos/components/diagnostics_ui/resources/network_info.html b/chromeos/components/diagnostics_ui/resources/network_info.html index d565740e..c732a45 100644 --- a/chromeos/components/diagnostics_ui/resources/network_info.html +++ b/chromeos/components/diagnostics_ui/resources/network_info.html
@@ -9,4 +9,5 @@ ObserveNetwork is wired up. --> <wifi-info></wifi-info> <ethernet-info></ethernet-info> + <cellular-info></cellular-info> </diagnostics-card>
diff --git a/chromeos/components/diagnostics_ui/resources/network_info.js b/chromeos/components/diagnostics_ui/resources/network_info.js index 3e80d2e..5058921 100644 --- a/chromeos/components/diagnostics_ui/resources/network_info.js +++ b/chromeos/components/diagnostics_ui/resources/network_info.js
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import './cellular_info.js'; import './diagnostics_card.js'; import './diagnostics_fonts_css.js'; import './diagnostics_shared_css.js';
diff --git a/chromeos/strings/chromeos_strings_az.xtb b/chromeos/strings/chromeos_strings_az.xtb index cb75f5f..90467cf 100644 --- a/chromeos/strings/chromeos_strings_az.xtb +++ b/chromeos/strings/chromeos_strings_az.xtb
@@ -354,6 +354,7 @@ <translation id="8575298406870537639">Operatorunuz şəbəkəsinə qoşulmaq üçün bu seçimi tələb edə bilər. Ətraflı məlumat üçün operatorunuzla əlaqə saxlayın.</translation> <translation id="8576249514688522074">Başladılmayıb</translation> <translation id="8620617069779373398">Rominq statusu</translation> +<translation id="8660881923941176839">funt</translation> <translation id="8675354002693747642">Öncədən paylaşılan açar</translation> <translation id="871560550817059752">Alınmadı - Mürəkkəb yoxdur</translation> <translation id="8723108084122415655">Qeyri-defolt şəbəkə gecikmə həddindən yuxarıdır</translation>
diff --git a/chromeos/strings/chromeos_strings_bg.xtb b/chromeos/strings/chromeos_strings_bg.xtb index 79f5a66..0493cff 100644 --- a/chromeos/strings/chromeos_strings_bg.xtb +++ b/chromeos/strings/chromeos_strings_bg.xtb
@@ -355,6 +355,7 @@ <translation id="8575298406870537639">Тази опция може да е необходима за свързване с мрежата на оператора ви. За подробности се обърнете към него.</translation> <translation id="8576249514688522074">Неинициализирана</translation> <translation id="8620617069779373398">Състояние на роуминга</translation> +<translation id="8660881923941176839">фунта</translation> <translation id="8675354002693747642">Предварително споделен ключ</translation> <translation id="871560550817059752">Неуспешно – няма мастило</translation> <translation id="8723108084122415655">Забавянето на допълнителната мрежа е над прага</translation>
diff --git a/chromeos/strings/chromeos_strings_fil.xtb b/chromeos/strings/chromeos_strings_fil.xtb index 106413b..b755721 100644 --- a/chromeos/strings/chromeos_strings_fil.xtb +++ b/chromeos/strings/chromeos_strings_fil.xtb
@@ -355,6 +355,7 @@ <translation id="8575298406870537639">Posibleng kailanganin ng iyong carrier ang opsyong ito para makakonekta sa network nito. Makipag-ugnayan sa iyong carrier para sa mga detalye.</translation> <translation id="8576249514688522074">Hindi Nasimulan</translation> <translation id="8620617069779373398">Status ng roaming</translation> +<translation id="8660881923941176839">pounds</translation> <translation id="8675354002693747642">Pre-shared key:</translation> <translation id="871560550817059752">Hindi na-print - Wala nang ink</translation> <translation id="8723108084122415655">Mas mataas sa limitasyon ng latency ang hindi default na network</translation>
diff --git a/chromeos/strings/chromeos_strings_iw.xtb b/chromeos/strings/chromeos_strings_iw.xtb index c7bfe22..0d45716 100644 --- a/chromeos/strings/chromeos_strings_iw.xtb +++ b/chromeos/strings/chromeos_strings_iw.xtb
@@ -355,6 +355,7 @@ <translation id="8575298406870537639">ייתכן שהספק שלך ידרוש את האפשרות הזו כדי להתחבר לרשת שלו. למידע נוסף, ניתן לפנות לספק.</translation> <translation id="8576249514688522074">לא מאותחלת</translation> <translation id="8620617069779373398">סטטוס נדידה</translation> +<translation id="8660881923941176839">פאונד</translation> <translation id="8675354002693747642">מפתח משותף מראש</translation> <translation id="871560550817059752">נכשלה – הדיו נגמר</translation> <translation id="8723108084122415655">הרשת שאינה מוגדרת כברירת מחדל חורגת מסף זמן האחזור</translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb index 8885804b..4414f63 100644 --- a/chromeos/strings/chromeos_strings_ka.xtb +++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -355,6 +355,7 @@ <translation id="8575298406870537639">შესაძლოა, ეს ვარიანტი თქვენს ოპერატორს სჭირდებოდეს, თავის ქსელთან დაკავშირების საშუალება რომ მოგცეთ. დეტალური ინფორმაციისთვის მიმართეთ ოპერატორს.</translation> <translation id="8576249514688522074">არაინიცირებული</translation> <translation id="8620617069779373398">როუმინგის სტატუსი</translation> +<translation id="8660881923941176839">ფუნტი</translation> <translation id="8675354002693747642">წინასწარ გაზიარებული გასაღები</translation> <translation id="871560550817059752">ვერ მოხერხდა — მელანი გაუთავდა</translation> <translation id="8723108084122415655">არანაგულისხმევი ქსელი აღემატება რეაგირების დროის ზღვარს</translation>
diff --git a/chromeos/strings/chromeos_strings_ne.xtb b/chromeos/strings/chromeos_strings_ne.xtb index 331861d..30c62649 100644 --- a/chromeos/strings/chromeos_strings_ne.xtb +++ b/chromeos/strings/chromeos_strings_ne.xtb
@@ -81,6 +81,7 @@ <translation id="2862104018715411648">स्क्यानरमा आफ्नो कागजात राख्नुहोस् र स्क्यान गर्न थाल्न स्क्यान गर्नुहोस् विकल्प चयन गर्नुहोस्</translation> <translation id="2872961005593481000">बन्द गर्नुहोस्</translation> <translation id="2878387241690264070"><ph name="NUM_SECONDS" /> सेकेन्डमा <ph name="RATE" /> घट्यो।</translation> +<translation id="2983662233540284543">गेम निर्मातासँग विभिन्न कुरा सिक्नुहोस्, गेम डिजाइनसम्बन्धी एपहरू प्राप्त गर्नुहोस् र अन्य सुविधाहरू पाउनुहोस्</translation> <translation id="3008341117444806826">पुनः ताजा गर्नुहोस्</translation> <translation id="3009958530611748826">सुरक्षित गर्न कुनै फोल्डर चयन गर्नुहोस्</translation> <translation id="3054177598518735801"><ph name="CURRENT_VALUE" />mA</translation> @@ -193,6 +194,7 @@ <translation id="5154917547274118687">स्मरण</translation> <translation id="5168185087976003268">ब्याट्रीको अवस्था</translation> <translation id="5170568018924773124">फोल्डरमा देखाउनुहोस्</translation> +<translation id="519607504553633437">आफ्नै गेमहरू डिजाइन गर्नुहोस् र बनाउनुहोस्</translation> <translation id="5212543919916444558">मैले तपाईंको स्क्रिनमा आफूले मद्दत गर्न मिल्ने कुनै पनि कुरा फेला पार्न सकिन। मलाई केही कुरा सोध्न माइकमा ट्याप गरी हेर्नुहोस्।</translation> <translation id="5222676887888702881">साइन आउट गर्नुहोस्</translation> <translation id="5252456968953390977">रोमिङ</translation>
diff --git a/chromeos/strings/chromeos_strings_sl.xtb b/chromeos/strings/chromeos_strings_sl.xtb index 9de4638..2776f64 100644 --- a/chromeos/strings/chromeos_strings_sl.xtb +++ b/chromeos/strings/chromeos_strings_sl.xtb
@@ -355,6 +355,7 @@ <translation id="8575298406870537639">Operater lahko zahteva to možnost za povezovanje z njegovim omrežjem. Za podrobnejše informacije se obrnite na operaterja.</translation> <translation id="8576249514688522074">Neinicializirano</translation> <translation id="8620617069779373398">Stanje gostovanja</translation> +<translation id="8660881923941176839">funti</translation> <translation id="8675354002693747642">Ključ v predhodni skupni rabi</translation> <translation id="871560550817059752">Napaka – zmanjkalo je črnila</translation> <translation id="8723108084122415655">Omrežje, ki ni privzeto, je nad pragom zakasnitve</translation>
diff --git a/components/arc/mojom/auth.mojom b/components/arc/mojom/auth.mojom index 9a3af92..5ecfc81 100644 --- a/components/arc/mojom/auth.mojom +++ b/components/arc/mojom/auth.mojom
@@ -258,24 +258,24 @@ // tools/metrics/histograms/enums.xml. }; -// These values describe the result of ARC attempting to change supervision +// These values describe the result of ARC attempting to change management // state after an account type change. [Extensible] -enum SupervisionChangeStatus { - // CloudDPC supervision was disabled successfully. +enum ManagementChangeStatus { + // CloudDPC was disabled successfully. [MinVersion=13] CLOUD_DPC_DISABLED = 0, - // CloudDPC supervision was already disabled. + // CloudDPC was already disabled. [MinVersion=13] CLOUD_DPC_ALREADY_DISABLED = 1, - // CloudDPC supervision was enabled successfully. + // CloudDPC was enabled successfully. [MinVersion=13] CLOUD_DPC_ENABLED = 2, - // CloudDPC supervision was already enabled. + // CloudDPC was already enabled. [MinVersion=13] CLOUD_DPC_ALREADY_ENABLED = 3, // Invalid state returned from Chrome. - [MinVersion=13] INVALID_SUPERVISION_STATE = 4, + [MinVersion=13] INVALID_MANAGEMENT_STATE = 4, // Failed to disable CloudDPC due to an unspecified error. [MinVersion=13] CLOUD_DPC_DISABLING_FAILED = 5, @@ -384,12 +384,12 @@ // Reports result of account check. [MinVersion=9] ReportAccountCheckStatus@9(AccountCheckStatus status); - // Reports to Chrome the result of changing the supervision state. - // Chrome informs ARC on every boot if a supervision transition is necessary + // Reports to Chrome the result of changing the management state. + // Chrome informs ARC on every boot if a management transition is necessary // or not (see https://crrev.com/c/1069031). ARC should report back only if // a transition was necessary. - [MinVersion=13] ReportSupervisionChangeStatus@11( - SupervisionChangeStatus status); + [MinVersion=13] ReportManagementChangeStatus@11( + ManagementChangeStatus status); // Returns the primary account from Chrome. // |account_name| is the email address of the primary account for consumer and
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb index 8991cfe..7c0a037 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_az.xtb
@@ -92,6 +92,7 @@ <translation id="3333961966071413176">Bütün kontaktar</translation> <translation id="3386292677130313581">Saytlara məkanınızı bilmək icazəsi verməmişdən əvvəl soruşun (tövsiyə olunur)</translation> <translation id="3538390592868664640">Saytların ətrafınızdakı sahələrin 3D xəritəsini yaratmasına və ya kamera mövqeyini izləməsinə qarşı blok qoyun</translation> +<translation id="3551268116566418498">Anonim rejimdən çıxılsın?</translation> <translation id="3586500876634962664">Kamera və mikrofondan istifadə</translation> <translation id="358794129225322306">Sayta çoxsaylı faylları avtomatik endirmək icazəsi verin.</translation> <translation id="3594780231884063836">Videonu səssiz rejimə keçirin</translation> @@ -140,6 +141,7 @@ <translation id="4996978546172906250">Paylaşma vasitəsi:</translation> <translation id="5039804452771397117">İcazə verin</translation> <translation id="5048398596102334565">Saytların hərəkət sensorlarınıza daxil olmasına icazə verin (tövsiyə edilir)</translation> +<translation id="5050380848339752099">Bu sayt Anonim rejimdə olmayan tətbiqlə məlumat paylaşmaq üzrədir.</translation> <translation id="5063480226653192405">Istifadə</translation> <translation id="5100237604440890931">Yığcamlaşdırıldı - genişləndirmək üçün klikləyin.</translation> <translation id="5123685120097942451">Aanonim tab</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb index 7a16d5c8..b31541a 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_bg.xtb
@@ -92,6 +92,7 @@ <translation id="3333961966071413176">Всички контакти</translation> <translation id="3386292677130313581">Извеждане на запитване, преди на сайтовете да се разреши достъп до местоположението ви (препоръчително)</translation> <translation id="3538390592868664640">Блокиране на сайтовете, така че да не могат да създават триизмерна карта на заобикалящата ви среда или да следят позицията на камерата</translation> +<translation id="3551268116566418498">Излизане от режим „инкогнито“?</translation> <translation id="3586500876634962664">Ползване на камерата и микрофона</translation> <translation id="358794129225322306">Разрешаване на сайт автоматично да изтегля няколко файла.</translation> <translation id="3594780231884063836">Без образ</translation> @@ -140,6 +141,7 @@ <translation id="4996978546172906250">Споделяне чрез</translation> <translation id="5039804452771397117">Разрешаване</translation> <translation id="5048398596102334565">Разрешаване на достъпа на сайтовете до сензорите за движение (препоръчително)</translation> +<translation id="5050380848339752099">Този сайт е напът да сподели информация с приложение, което не е в режим „инкогнито“.</translation> <translation id="5063480226653192405">Употреба</translation> <translation id="5100237604440890931">Свито – кликнете за разгъване.</translation> <translation id="5123685120097942451">Раздел в режим „инкогнито“</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb index 6d3075f..da8c7147 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_fil.xtb
@@ -92,6 +92,7 @@ <translation id="3333961966071413176">Lahat ng contact</translation> <translation id="3386292677130313581">Magtanong bago payagan ang mga site na malaman ang iyong lokasyon (inirerekomenda)</translation> <translation id="3538390592868664640">I-block ang mga site sa paggawa ng 3D na mapa ng iyong kapaligiran o pagsubaybay sa posisyon ng camera</translation> +<translation id="3551268116566418498">Umalis sa Incognito mode?</translation> <translation id="3586500876634962664">Paggamit ng camera at mikropono</translation> <translation id="358794129225322306">Payagan ang isang site na awtomatikong mag-download ng maraming file.</translation> <translation id="3594780231884063836">I-mute ang video</translation> @@ -140,6 +141,7 @@ <translation id="4996978546172906250">Ibahagi gamit ang</translation> <translation id="5039804452771397117">Payagan</translation> <translation id="5048398596102334565">Payagan ang mga site na i-access ang mga sensor ng paggalaw (inirerekomenda)</translation> +<translation id="5050380848339752099">Magbabahagi ang site na ito ng impormasyon sa isang app sa labas ng Incognito mode.</translation> <translation id="5063480226653192405">Paggamit</translation> <translation id="5100237604440890931">Naka-collapse - i-click upang palawakin</translation> <translation id="5123685120097942451">Tab na incognito</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb index 40adce6..fb84c92 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_iw.xtb
@@ -92,6 +92,7 @@ <translation id="3333961966071413176">כל אנשי הקשר</translation> <translation id="3386292677130313581">יש לשאול לפני שמאפשרים לאתרים לדעת מה המיקום שלך (מומלץ)</translation> <translation id="3538390592868664640">חסימה של יצירת מפה בתלת ממד של הסביבה שלך או של מעקב אחר מיקום המצלמה על ידי אתרים.</translation> +<translation id="3551268116566418498">לצאת מהמצב האנונימי?</translation> <translation id="3586500876634962664">שימוש במצלמה ובמיקרופון</translation> <translation id="358794129225322306">מתן הרשאה לאתר להוריד קבצים מרובים באופן אוטומטי.</translation> <translation id="3594780231884063836">השתקת הסרטון</translation> @@ -140,6 +141,7 @@ <translation id="4996978546172906250">שיתוף באמצעות</translation> <translation id="5039804452771397117">זה בסדר</translation> <translation id="5048398596102334565">התרת גישה של אתרים אל חיישני התנועה (מומלץ)</translation> +<translation id="5050380848339752099">אתר זה עומד לשתף מידע עם אפליקציה מחוץ למצב האנונימי.</translation> <translation id="5063480226653192405">שימוש</translation> <translation id="5100237604440890931">מכווץ – יש ללחוץ כדי להרחיב.</translation> <translation id="5123685120097942451">כרטיסייה אנונימית</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb index 4b12144..0421b86c 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_ka.xtb
@@ -92,6 +92,7 @@ <translation id="3333961966071413176">ყველა კონტაქტი</translation> <translation id="3386292677130313581">შეკითხვა საიტებისთვის თქვენი მდებარეობის დადგენის დაშვებამდე (რეკომენდებული)</translation> <translation id="3538390592868664640">საიტებისთვის თქვენი გარემოს 3-განზომილებიანი რუკის შექმნის ან კამერის პოზიციისთვის თვალის მიდევნების დაბლოკვა</translation> +<translation id="3551268116566418498">გავიდეთ ინკოგნიტო რეჟიმიდან?</translation> <translation id="3586500876634962664">კამერის/მიკროფონის გამოყენება</translation> <translation id="358794129225322306">საიტისთვის რამდენიმე ფაილის ავტომატურად ჩამოტვირთვის დაშვება.</translation> <translation id="3594780231884063836">ვიდეოს დადუმება</translation> @@ -140,6 +141,7 @@ <translation id="4996978546172906250">გაზიარების პროგრამა</translation> <translation id="5039804452771397117">დაშვება</translation> <translation id="5048398596102334565">საიტებისთვის მოძრაობის სენსორებზე წვდომის დაშვება (რეკომენდებული)</translation> +<translation id="5050380848339752099">ეს საიტი აპირებს, ინკოგნიტო რეჟიმის გარეთ გაუზიაროს ინფორმაცია აპს.</translation> <translation id="5063480226653192405">გამოყენება</translation> <translation id="5100237604440890931">ჩაკეცილია — დააწკაპუნეთ გასაშლელად.</translation> <translation id="5123685120097942451">ინკოგნიტო ჩანართი</translation>
diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb index 8ae0323c..683e3ae4 100644 --- a/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb +++ b/components/browser_ui/strings/android/translations/browser_ui_strings_sl.xtb
@@ -92,6 +92,7 @@ <translation id="3333961966071413176">Vsi stiki</translation> <translation id="3386292677130313581">Prikaži poziv, preden se spletnim mestom razkrije vaša lokacija (priporočeno)</translation> <translation id="3538390592868664640">Preprečevanje, da bi spletna mesta ustvarila 3D-zemljevid vaše okolice ali spremljala položaj kamere</translation> +<translation id="3551268116566418498">Izklop anonimnega načina?</translation> <translation id="3586500876634962664">Uporaba kamere in mikrofona</translation> <translation id="358794129225322306">Dovoli spletnemu mestu samodejni prenos več datotek.</translation> <translation id="3594780231884063836">Izklop videa</translation> @@ -140,6 +141,7 @@ <translation id="4996978546172906250">Skupna raba prek</translation> <translation id="5039804452771397117">Dovoli</translation> <translation id="5048398596102334565">Spletnim mestom dovoli dostop do tipal gibanja (priporočeno)</translation> +<translation id="5050380848339752099">To spletno mesto bo delilo podatke z aplikacijo zunaj anonimnega načina.</translation> <translation id="5063480226653192405">Uporaba</translation> <translation id="5100237604440890931">Strnjeno – kliknite, če želite razširiti.</translation> <translation id="5123685120097942451">Anonimni zavihek</translation>
diff --git a/components/content_settings/browser/page_specific_content_settings.cc b/components/content_settings/browser/page_specific_content_settings.cc index 5b5d410..4d6ee2cc 100644 --- a/components/content_settings/browser/page_specific_content_settings.cc +++ b/components/content_settings/browser/page_specific_content_settings.cc
@@ -201,9 +201,8 @@ // There may be content settings that were updated for the navigated URL. // These would not have been sent before if we're navigating cross-origin. // Ensure up to date rules are sent before navigation commits. - MaybeSendRendererContentSettingsRules( - navigation_handle->GetWebContents()->GetMainFrame(), map_, - delegate_.get()); + MaybeSendRendererContentSettingsRules(navigation_handle->GetRenderFrameHost(), + map_, delegate_.get()); } void PageSpecificContentSettings::WebContentsHandler::DidFinishNavigation(
diff --git a/components/embedder_support/README b/components/embedder_support/README new file mode 100644 index 0000000..86e161d --- /dev/null +++ b/components/embedder_support/README
@@ -0,0 +1,5 @@ +The embedder_support component is for small shims and minimal glue layer on top +of the Content API that do not clearly justify a component of their own. Before +adding additional features to this component, consider whether the feature +justifies a new component instead (e.g. more than 5 files would be a good +indicator that a new component could be used instead)
diff --git a/components/exo/wayland/zwp_text_input_manager.cc b/components/exo/wayland/zwp_text_input_manager.cc index f548f3e..4c5a942 100644 --- a/components/exo/wayland/zwp_text_input_manager.cc +++ b/components/exo/wayland/zwp_text_input_manager.cc
@@ -76,6 +76,7 @@ break; case ui::ImeTextSpan::Type::kMisspellingSuggestion: case ui::ImeTextSpan::Type::kAutocorrect: + case ui::ImeTextSpan::Type::kGrammarSuggestion: style = ZWP_TEXT_INPUT_V1_PREEDIT_STYLE_INCORRECT; break; }
diff --git a/components/os_crypt/BUILD.gn b/components/os_crypt/BUILD.gn index 79f9744..573aff57 100644 --- a/components/os_crypt/BUILD.gn +++ b/components/os_crypt/BUILD.gn
@@ -49,6 +49,7 @@ "//crypto:platform", ] + configs += [ "//build/config/compiler:wexit_time_destructors" ] defines = [ "IS_OS_CRYPT_IMPL" ] if ((is_posix || is_fuchsia) && !is_apple &&
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc index 295e27c..1a45808d 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter.cc +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.cc
@@ -168,7 +168,8 @@ return passwords_; } -std::vector<PasswordForm> SavedPasswordsPresenter::GetUniquePasswords() const { +std::vector<PasswordForm> SavedPasswordsPresenter::GetUniquePasswordForms() + const { std::vector<PasswordForm> forms; auto it = sort_key_to_password_forms.begin(); @@ -243,11 +244,6 @@ void SavedPasswordsPresenter::OnGetPasswordStoreResultsFrom( PasswordStore* store, std::vector<std::unique_ptr<PasswordForm>> results) { - // Ignore blocked or federated credentials. - base::EraseIf(results, [](const auto& form) { - return form->blocked_by_user || form->IsFederatedCredential(); - }); - // Profile store passwords are always stored first in `passwords_`. auto account_passwords_it = base::ranges::partition_point( passwords_, @@ -280,6 +276,11 @@ std::make_pair(CreateSortKey(result, IgnoreStore(true)), result)); }); + // Remove blocked or federated credentials. + base::EraseIf(passwords_, [](const auto& form) { + return form.blocked_by_user || form.IsFederatedCredential(); + }); + NotifySavedPasswordsChanged(); }
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter.h b/components/password_manager/core/browser/ui/saved_passwords_presenter.h index b366b8a5..b0261b4 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter.h +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter.h
@@ -92,12 +92,13 @@ // Returns a list of the currently saved credentials. SavedPasswordsView GetSavedPasswords() const; - // Returns a list of unique credentials. If a same password is present both on + // Returns a list of unique password forms which includes normal credentials, + // federated credentials and blocked forms. If a same form is present both on // account and profile stores it will be represented as a single entity. // Uniqueness is determined using site name, username, password. For Android // credentials package name is also taken into account and for Federated // credentials federation origin. - std::vector<PasswordForm> GetUniquePasswords() const; + std::vector<PasswordForm> GetUniquePasswordForms() const; // Returns all the usernames for credentials saved for `signon_realm`. If // `is_using_account_store` is true, this method will only consider
diff --git a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc index 52fd275..25d9ee5 100644 --- a/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc +++ b/components/password_manager/core/browser/ui/saved_passwords_presenter_unittest.cc
@@ -386,6 +386,41 @@ presenter().RemoveObserver(&observer); } +TEST_F(SavedPasswordsPresenterTest, + GetUniquePasswordFormsShouldReturnBlockedAndFederatedForms) { + PasswordForm form; + form.signon_realm = "https://example.com"; + form.username_value = u"example@gmail.com"; + form.password_value = u"password"; + form.in_store = PasswordForm::Store::kProfileStore; + + PasswordForm blocked_form; + blocked_form.signon_realm = "https://example.com"; + blocked_form.blocked_by_user = true; + blocked_form.in_store = PasswordForm::Store::kProfileStore; + + PasswordForm federated_form; + federated_form.signon_realm = "https://federated.com"; + federated_form.username_value = u"example@gmail.com"; + federated_form.federation_origin = + url::Origin::Create(GURL(u"federatedOrigin.com")); + federated_form.in_store = PasswordForm::Store::kProfileStore; + + store().AddLogin(form); + store().AddLogin(blocked_form); + store().AddLogin(federated_form); + RunUntilIdle(); + + ASSERT_THAT( + store().stored_passwords(), + UnorderedElementsAre( + Pair(form.signon_realm, UnorderedElementsAre(form, blocked_form)), + Pair(federated_form.signon_realm, ElementsAre(federated_form)))); + + EXPECT_THAT(presenter().GetUniquePasswordForms(), + UnorderedElementsAre(form, blocked_form, federated_form)); +} + namespace { class SavedPasswordsPresenterWithTwoStoresTest : public ::testing::Test { @@ -686,7 +721,7 @@ expected_form.in_store = PasswordForm::Store::kProfileStore | PasswordForm::Store::kAccountStore; - EXPECT_THAT(presenter().GetUniquePasswords(), ElementsAre(expected_form)); + EXPECT_THAT(presenter().GetUniquePasswordForms(), ElementsAre(expected_form)); } // Prefixes like [m, mobile, www] are considered as "same-site". @@ -724,7 +759,7 @@ expected_form.in_store = PasswordForm::Store::kProfileStore | PasswordForm::Store::kAccountStore; - EXPECT_THAT(presenter().GetUniquePasswords(), ElementsAre(expected_form)); + EXPECT_THAT(presenter().GetUniquePasswordForms(), ElementsAre(expected_form)); } TEST_F(SavedPasswordsPresenterWithTwoStoresTest, EditPasswordBothStores) {
diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc index ddcf650..b888b7c3 100644 --- a/components/printing/renderer/print_render_frame_helper.cc +++ b/components/printing/renderer/print_render_frame_helper.cc
@@ -1113,7 +1113,7 @@ // Makes sure that it quits the runloop that runs while a Mojo call waits // for a reply if |print_manager_host_| is disconnected before the reply. print_manager_host_.set_disconnect_handler( - base::BindOnce(&PrintRenderFrameHelper::QuitRunLoopForMojoReply, + base::BindOnce(&PrintRenderFrameHelper::QuitActiveRunLoops, weak_ptr_factory_.GetWeakPtr())); } return print_manager_host_; @@ -1161,24 +1161,31 @@ if (!web_frame->GetDocument().GetFrame()) return; + if (in_scripted_print_) + return; + + in_scripted_print_ = true; + auto weak_this = weak_ptr_factory_.GetWeakPtr(); if (g_is_preview_enabled) { #if BUILDFLAG(ENABLE_PRINT_PREVIEW) print_preview_context_.InitWithFrame(web_frame); RequestPrintPreview(PRINT_PREVIEW_SCRIPTED); #endif } else { - auto weak_this = weak_ptr_factory_.GetWeakPtr(); web_frame->DispatchBeforePrintEvent(/*print_client=*/nullptr); if (!weak_this) return; Print(web_frame, blink::WebNode(), PrintRequestType::kScripted); + if (!weak_this) + return; - if (weak_this) - web_frame->DispatchAfterPrintEvent(); + web_frame->DispatchAfterPrintEvent(); } - // WARNING: |this| may be gone at this point. Do not do any more work here and - // just return. + if (!weak_this) + return; + + in_scripted_print_ = false; } void PrintRenderFrameHelper::WillBeDestroyed() { @@ -1227,6 +1234,17 @@ ScopedIPC scoped_ipc(weak_ptr_factory_.GetWeakPtr()); if (ipc_nesting_level_ > 1) return; + + if (scripted_print_preview_quit_closure_) { + // If an in-progress print preview already created a nested loop, avoid + // creating yet another nested loop. Instead, quit the current nested loop, + // and call this method again. + DCHECK(!do_deferred_print_for_system_dialog_); + do_deferred_print_for_system_dialog_ = true; + std::move(scripted_print_preview_quit_closure_).Run(); + return; + } + blink::WebLocalFrame* frame = print_preview_context_.source_frame(); if (!frame) { NOTREACHED(); @@ -2274,6 +2292,7 @@ mojom::PrintPagesParamsPtr print_settings; base::RunLoop loop{base::RunLoop::Type::kNestableTasksAllowed}; + get_print_settings_from_user_quit_closure_ = loop.QuitClosure(); GetPrintManagerHost()->ScriptedPrint( std::move(params), base::BindOnce( @@ -2282,7 +2301,10 @@ *output = std::move(input); std::move(quit_closure).Run(); }, - SetQuitRunLoopForMojoReply(loop.QuitClosure()), &print_settings)); + base::BindOnce( + &PrintRenderFrameHelper::QuitGetPrintSettingsFromUserRunLoop, + weak_ptr_factory_.GetWeakPtr()), + &print_settings)); // Runs the nested run loop until ScriptedPrint() gets the reply. loop.Run(); return print_settings; @@ -2439,15 +2461,26 @@ base::BindOnce(&PrintRenderFrameHelper::ShowScriptedPrintPreview, weak_ptr_factory_.GetWeakPtr())); } - auto self = weak_ptr_factory_.GetWeakPtr(); base::RunLoop loop{base::RunLoop::Type::kNestableTasksAllowed}; - GetPrintManagerHost()->SetupScriptedPrintPreview( - SetQuitRunLoopForMojoReply(loop.QuitClosure())); + scripted_print_preview_quit_closure_ = loop.QuitClosure(); + GetPrintManagerHost()->SetupScriptedPrintPreview(base::BindOnce( + &PrintRenderFrameHelper::QuitScriptedPrintPreviewRunLoop, + weak_ptr_factory_.GetWeakPtr())); loop.Run(); // Check if |this| is still valid. - if (self) + if (weak_this) { is_scripted_preview_delayed_ = false; + + if (do_deferred_print_for_system_dialog_) { + // PrintForSystemDialog() quit the |loop| to avoid running 2 levels of + // nested loops. Resume PrintForSystemDialog(). + do_deferred_print_for_system_dialog_ = false; + PrintForSystemDialog(); + // WARNING: |this| may be gone at this point. Do not do any more work + // here and just return. + } + } return; } case PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME: { @@ -2857,16 +2890,19 @@ GetPrintManagerHost()->DidGetDocumentCookie(settings.params->document_cookie); } -void PrintRenderFrameHelper::QuitRunLoopForMojoReply() { - if (quit_closure_for_mojo_reply_) - std::move(quit_closure_for_mojo_reply_).Run(); +void PrintRenderFrameHelper::QuitActiveRunLoops() { + QuitScriptedPrintPreviewRunLoop(); + QuitGetPrintSettingsFromUserRunLoop(); } -base::OnceClosure PrintRenderFrameHelper::SetQuitRunLoopForMojoReply( - base::OnceClosure closure) { - quit_closure_for_mojo_reply_ = std::move(closure); - return base::BindOnce(&PrintRenderFrameHelper::QuitRunLoopForMojoReply, - weak_ptr_factory_.GetWeakPtr()); +void PrintRenderFrameHelper::QuitScriptedPrintPreviewRunLoop() { + if (scripted_print_preview_quit_closure_) + std::move(scripted_print_preview_quit_closure_).Run(); +} + +void PrintRenderFrameHelper::QuitGetPrintSettingsFromUserRunLoop() { + if (get_print_settings_from_user_quit_closure_) + std::move(get_print_settings_from_user_quit_closure_).Run(); } PrintRenderFrameHelper::ScopedIPC::ScopedIPC(
diff --git a/components/printing/renderer/print_render_frame_helper.h b/components/printing/renderer/print_render_frame_helper.h index 8bd08c9..ae14b4e 100644 --- a/components/printing/renderer/print_render_frame_helper.h +++ b/components/printing/renderer/print_render_frame_helper.h
@@ -434,13 +434,14 @@ void SetPrintPagesParams(const mojom::PrintPagesParams& settings); - // Quits the runloop for a Mojo reply. It's called when the Mojo message gets - // a reply or |print_manager_host_| is disconnected before the reply. - void QuitRunLoopForMojoReply(); + // Quits all runloops waiting for Mojo replies. It's called when + // |print_manager_host_| is disconnected before the replies. + void QuitActiveRunLoops(); - // Updates |quit_closure_for_mojo_reply_| with |closure| and returns the - // callback to call QuitRunLoopForMojoReply(). - base::OnceClosure SetQuitRunLoopForMojoReply(base::OnceClosure closure); + // Quits a runloop waiting for a Mojo reply. These are called when a Mojo + // message gets a reply. + void QuitScriptedPrintPreviewRunLoop(); + void QuitGetPrintSettingsFromUserRunLoop(); // WebView used only to print the selection. std::unique_ptr<PrepareFrameAndViewForPrint> prep_frame_view_; @@ -643,6 +644,7 @@ PrintPreviewContext print_preview_context_; bool is_loading_ = false; bool is_scripted_preview_delayed_ = false; + bool in_scripted_print_ = false; int ipc_nesting_level_ = 0; bool render_frame_gone_ = false; bool delete_pending_ = false; @@ -660,9 +662,11 @@ // parameters so that it can be invoked after DidStopLoading. base::OnceClosure on_stop_loading_closure_; - // Stores a quit closure for the runloop that runs on waiting for a Mojo - // reply. - base::OnceClosure quit_closure_for_mojo_reply_; + // Stores quit closures for the runloops that are waiting for Mojo replies. + base::OnceClosure scripted_print_preview_quit_closure_; + base::OnceClosure get_print_settings_from_user_quit_closure_; + + bool do_deferred_print_for_system_dialog_ = false; mojo::AssociatedRemote<mojom::PrintManagerHost> print_manager_host_;
diff --git a/components/services/app_service/public/cpp/intent_util.cc b/components/services/app_service/public/cpp/intent_util.cc index d96c5e9..aa0ccda9 100644 --- a/components/services/app_service/public/cpp/intent_util.cc +++ b/components/services/app_service/public/cpp/intent_util.cc
@@ -13,6 +13,7 @@ #include "base/optional.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" +#include "base/values.h" namespace {
diff --git a/components/services/app_service/public/cpp/intent_util_unittest.cc b/components/services/app_service/public/cpp/intent_util_unittest.cc index 2c7dbf89..c664ea57 100644 --- a/components/services/app_service/public/cpp/intent_util_unittest.cc +++ b/components/services/app_service/public/cpp/intent_util_unittest.cc
@@ -4,6 +4,7 @@ #include "components/services/app_service/public/cpp/intent_util.h" +#include "base/values.h" #include "components/services/app_service/public/cpp/intent_filter_util.h" #include "components/services/app_service/public/cpp/intent_test_util.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb index f2f4626..d2debb8d 100644 --- a/components/strings/components_strings_az.xtb +++ b/components/strings/components_strings_az.xtb
@@ -432,6 +432,7 @@ <translation id="2535659140340599600">{COUNT,plural, =1{və daha 1}other{and daha #}}</translation> <translation id="2536110899380797252">Ünvan Əlavə Edin</translation> <translation id="2539524384386349900">Aşkarlayın</translation> +<translation id="2541219929084442027">Bütün Anonim tabları bağladıqdan sonra Anonim rejimdə baxdığınız səhifələr brauzerinizin tarixçəsində, kuki yaddaşında və ya axtarış tarixçəsində saxlanılmayacaq. Endirdiyiniz və ya əlfəcin yaratdığınız fayllar isə saxlanılacaq.</translation> <translation id="2544644783021658368">Tək sənəd</translation> <translation id="254947805923345898">Siyasət dəyəri düzgün deyil.</translation> <translation id="255002559098805027"><ph name="HOST_NAME" /> yalnış cavab göndərdi.</translation> @@ -504,6 +505,7 @@ <translation id="2850739647070081192">Dəvət edin (Zərf)</translation> <translation id="2856444702002559011">Hücumçular <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> saytından məlumat (məsələn, parol, mesaj və ya kredit kartları) oğurlamağa çalışa bilərlər. <ph name="BEGIN_LEARN_MORE_LINK" />Ətraflı məlumat<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="2859806420264540918">Bu sayt inadçı və ya aldadıcı reklamlar göstərir.</translation> +<translation id="2876489322757410363">Xarici tətbiqlə ödəniş etmək üçün Anonim rejimdən çıxırsınız. Davam edilsin?</translation> <translation id="2878197950673342043">Poster formasında qatlayın</translation> <translation id="2878424575911748999">A1</translation> <translation id="2880660355386638022">Pəncərənin yerləşdirilməsi</translation> @@ -695,6 +697,7 @@ <translation id="3584299510153766161">Altdan qoşa deşik açın</translation> <translation id="3586931643579894722">Detalları gizlədin</translation> <translation id="3587738293690942763">Orta</translation> +<translation id="3590643883886679995">Anonim rejimdən çıxdıqdan sonra giriş datası bu cihazda saxlanılacaq.</translation> <translation id="3592413004129370115">İtalyan (Zərf)</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Tətbiq admin tərəfindən bloklanıb</translation> @@ -1002,6 +1005,7 @@ <translation id="4738601419177586157"><ph name="TEXT" /> axtarış təklifi</translation> <translation id="4742407542027196863">Parolları idarə edin...</translation> <translation id="4744603770635761495">İcra olunan yol</translation> +<translation id="4749011317274908093">Anonim rejimə keçdiniz</translation> <translation id="4750917950439032686">Bu saytda göndərildiyi zaman məlumatınız (məsələn, parol və ya kredit kartı nömrəsi) gizli saxlanır.</translation> <translation id="4756388243121344051">&Tarixçə</translation> <translation id="4758311279753947758">Kontakt məlumatı əlavə edin</translation> @@ -1665,6 +1669,7 @@ <translation id="7349430561505560861">A4-Extra</translation> <translation id="7353601530677266744">Əmr sahəsi</translation> <translation id="7359588939039777303">Reklamlar blok edildi.</translation> +<translation id="7363096869660964304">Siz görünməz olmursunuz. Anonim rejim brauzeri şirkətinizdən, internet xidməti provayderi və ya daxil olduğunuz veb saytdan gizlətmir.</translation> <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, Chrome ayarlarında ünvanlar əlavə etmək və idarə etmək üçün Tab, sonra Enter düyməsinə basın</translation> <translation id="7365849542400970216">Cihazdan istifadəniz bilinsin?</translation> <translation id="7372973238305370288">axtarış nəticəsi</translation> @@ -1890,6 +1895,7 @@ <translation id="8175796834047840627">Daxil olduğunuza görə Chrome kartları Google Hesabında yadda saxlamağı təklif edir. Bunu ayarlarda dəyişə bilərsiniz.</translation> <translation id="8176440868214972690">Bu cihazın administratoru aşağıdakı veb saytlara ayarlar və ya siyasətlər kimi bəzi məlumatlar göndərib.</translation> <translation id="8184538546369750125">Qlobal defoltdan istifadə edin (İcazə verin)</translation> +<translation id="8193086767630290324">Məxfi olaraq işarələnmiş məlumatlarla aparılan əməliyyatlar</translation> <translation id="8194797478851900357">&Ləğv edin</translation> <translation id="8201077131113104583">"<ph name="EXTENSION_ID" />" identifikasiyalı artırma üçün güncəllənmə linki yanlışdır</translation> <translation id="8202097416529803614">Sifariş xülasəsi</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index 632fadf5..acae64c 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -430,6 +430,7 @@ <translation id="2535659140340599600">{COUNT,plural, =1{и още 1}other{и още #}}</translation> <translation id="2536110899380797252">Добавяне на адрес</translation> <translation id="2539524384386349900">Откриване</translation> +<translation id="2541219929084442027">Страниците, които преглеждате в разделите в режим „инкогнито“, няма да останат в историята на браузъра, хранилището за „бисквитки“ или историята на търсенето, след като затворите всички раздели в този режим. Изтеглените от вас файлове или създадените от вас отметки обаче ще бъдат запазени.</translation> <translation id="2544644783021658368">Един документ</translation> <translation id="254947805923345898">Стойността на правилото не е валидна.</translation> <translation id="255002559098805027"><ph name="HOST_NAME" /> изпрати невалиден отговор.</translation> @@ -500,6 +501,7 @@ <translation id="2850739647070081192">Invite (плик)</translation> <translation id="2856444702002559011">Възможно е извършители на атака да опитват да откраднат информацията ви от <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (например пароли, съобщения или номера на кредитни карти). <ph name="BEGIN_LEARN_MORE_LINK" />Научете повече<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="2859806420264540918">На този сайт се показват натрапчиви или подвеждащи реклами.</translation> +<translation id="2876489322757410363">Ще напуснете режим „инкогнито“, за да платите във външно приложение. Искате ли да продължите?</translation> <translation id="2878197950673342043">Кръстосано сгъване</translation> <translation id="2878424575911748999">A1</translation> <translation id="2880660355386638022">Разположение на прозорците</translation> @@ -694,6 +696,7 @@ <translation id="3584299510153766161">Двойно перфориране в долната част</translation> <translation id="3586931643579894722">Скриване на подробностите</translation> <translation id="3587738293690942763">Среден</translation> +<translation id="3590643883886679995">Данните за вход в профила ще бъдат съхранени на това устройство, след като излезете от режим „инкогнито“.</translation> <translation id="3592413004129370115">Italian (плик)</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Приложението е блокирано от администратора ви</translation> @@ -1003,6 +1006,7 @@ <translation id="4738601419177586157">Предложение за търсене на „<ph name="TEXT" />“</translation> <translation id="4742407542027196863">Управление на паролите…</translation> <translation id="4744603770635761495">Път към изпълнимия файл</translation> +<translation id="4749011317274908093">Преминахте в режим „инкогнито“</translation> <translation id="4750917950439032686">Информацията ви (например пароли или номера на кредитни карти) е частна, когато се изпраща до този сайт.</translation> <translation id="4756388243121344051">&История</translation> <translation id="4758311279753947758">Добавяне на информация за връзка</translation> @@ -1666,6 +1670,7 @@ <translation id="7349430561505560861">A4-Extra</translation> <translation id="7353601530677266744">Команден ред</translation> <translation id="7359588939039777303">Рекламите са блокирани.</translation> +<translation id="7363096869660964304">Сърфирането ви обаче не е невидимо. При преминаване в режим „инкогнито“ то не се скрива от работодателя ви и от доставчика ви на интернет услуги, нито от уебсайтовете, които посещавате.</translation> <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />. Натиснете Tab и след това Enter, за да добавяте адреси и да ги управлявате от настройките на Chrome</translation> <translation id="7365849542400970216">Да се разреши ли достъп до данните за използването на устройството ви?</translation> <translation id="7372973238305370288">резултат от търсенето</translation> @@ -1891,6 +1896,7 @@ <translation id="8175796834047840627">Chrome предлага да запази картите ви в профила ви в Google, защото сте влезли в него. Можете да промените това поведение от настройките.</translation> <translation id="8176440868214972690">Администраторът на това устройство изпрати известна информация, като например настройки или правила, до долупосочените уебсайтове.</translation> <translation id="8184538546369750125">Използване на глобалната стандартна стойност (разрешаване)</translation> +<translation id="8193086767630290324">Действия, предприети с данни, означени като поверителни</translation> <translation id="8194797478851900357">&Отмяна на преместването</translation> <translation id="8201077131113104583">Невалиден URL адрес за актуализиране на разширението с идентификационен номер <ph name="EXTENSION_ID" />.</translation> <translation id="8202097416529803614">Обобщена информация за поръчката</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb index 9315ee0b..4df00e8 100644 --- a/components/strings/components_strings_fil.xtb +++ b/components/strings/components_strings_fil.xtb
@@ -432,6 +432,7 @@ <translation id="2535659140340599600">{COUNT,plural, =1{at 1 pa}one{at # pa}other{at # pa}}</translation> <translation id="2536110899380797252">Magdagdag ng Address</translation> <translation id="2539524384386349900">Tukuyin</translation> +<translation id="2541219929084442027">Hindi mananatili ang mga page na titingnan mo sa mga tab na Incognito sa history, cookie store o history ng paghahanap ng iyong browser pagkatapos mong isara ang lahat ng iyong tab na incognito. Papanatilihin ang anumang file na ida-download o mga bookmark na gagawin mo.</translation> <translation id="2544644783021658368">Isang dokumento</translation> <translation id="254947805923345898">Di-wasto ang value ng patakaran.</translation> <translation id="255002559098805027">Nagpadala ng di-wastong tugon ang <ph name="HOST_NAME" />.</translation> @@ -504,6 +505,7 @@ <translation id="2850739647070081192">Invite (Envelope)</translation> <translation id="2856444702002559011">Maaaring sinusubukang nakawin ng mga attacker ang iyong impormasyon mula sa <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (halimbawa, mga password, mensahe, o credit card). <ph name="BEGIN_LEARN_MORE_LINK" />Matuto pa<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="2859806420264540918">Nagpapakita ang site na ito ng mga nakakasagabal o nakakapanlinlang na ad.</translation> +<translation id="2876489322757410363">Aalis sa Incognito mode upang magbayad sa pamamagitan ng external na application. Magpatuloy?</translation> <translation id="2878197950673342043">Poster fold</translation> <translation id="2878424575911748999">A1</translation> <translation id="2880660355386638022">Placement ng window</translation> @@ -698,6 +700,7 @@ <translation id="3584299510153766161">Dual punch bottom</translation> <translation id="3586931643579894722">Magtago ng mga detalye</translation> <translation id="3587738293690942763">Gitna</translation> +<translation id="3590643883886679995">Iso-store ang data ng pag-sign in sa device na ito pagkatapos mong lumabas sa Incognito mode.</translation> <translation id="3592413004129370115">Italian (Envelope)</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Na-block ng iyong administrator ang application</translation> @@ -1007,6 +1010,7 @@ <translation id="4738601419177586157">Suhestyon sa paghahanap para sa <ph name="TEXT" /></translation> <translation id="4742407542027196863">Pamahalaan ang mga password...</translation> <translation id="4744603770635761495">Naipapatupad na Path</translation> +<translation id="4749011317274908093">Napunta ka sa Incognito</translation> <translation id="4750917950439032686">Pribado ang iyong impormasyon (halimbawa, mga password o credit card number) kapag ipinadala ito sa site na ito.</translation> <translation id="4756388243121344051">&History</translation> <translation id="4758311279753947758">Magdagdag ng impormasyon sa pakikipag-ugnayan</translation> @@ -1670,6 +1674,7 @@ <translation id="7349430561505560861">A4-Extra</translation> <translation id="7353601530677266744">Command Line</translation> <translation id="7359588939039777303">Na-block ang mga ad.</translation> +<translation id="7363096869660964304">Gayunpaman, hindi ka invisible. Kahit mag-Incognito ka, hindi matatago ang iyong pagba-browse mula sa iyong employer, sa iyong internet service provider o sa mga website na binibisita mo.</translation> <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, pindutin ang Tab pagkatapos ay ang Enter para magdagdag at mamahala ng mga address sa mga setting ng Chrome</translation> <translation id="7365849542400970216">Alam mo ba ang iyong paggamit ng device?</translation> <translation id="7372973238305370288">resulta ng paghahanap</translation> @@ -1895,6 +1900,7 @@ <translation id="8175796834047840627">Nag-aalok ang Chrome na i-save ang iyong mga card sa Google Account mo dahil naka-sign in ka. Maaari mong baguhin ang gawing ito sa mga setting.</translation> <translation id="8176440868214972690">Nagpadala ang administrator ng device na ito ng ilang impormasyon sa mga sumusunod na website, tulad ng mga setting o patakaran.</translation> <translation id="8184538546369750125">Gamitin ang pangkalahatang default (Payagan)</translation> +<translation id="8193086767630290324">Mga isinagawang pagkilos na may data na na-flag bilang kumpidensyal</translation> <translation id="8194797478851900357">&I-undo ang Paglilipat</translation> <translation id="8201077131113104583">Di-wastong URL ng update para sa extension na may ID na "<ph name="EXTENSION_ID" />."</translation> <translation id="8202097416529803614">Buod ng order</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb index 84b9db0..2b4fd0ac 100644 --- a/components/strings/components_strings_iw.xtb +++ b/components/strings/components_strings_iw.xtb
@@ -432,6 +432,7 @@ <translation id="2535659140340599600">{COUNT,plural, =1{ודומיין אחד נוסף}two{ו-# דומיינים נוספים}many{ו-# דומיינים נוספים}other{ו-# דומיינים נוספים}}</translation> <translation id="2536110899380797252">הוספת כתובת</translation> <translation id="2539524384386349900">זהה</translation> +<translation id="2541219929084442027">דפים שהצגת בכרטיסיות המצב האנונימי לא יישמרו בהיסטוריית הדפדפן, באחסון קובצי ה-cookie או בהיסטוריית החיפושים לאחר שכל כרטיסיות המצב האנונימי ייסגרו. קבצים שהורדת או סימניות שיצרת יישמרו.</translation> <translation id="2544644783021658368">מסמך יחיד</translation> <translation id="254947805923345898">ערך המדיניות לא חוקי.</translation> <translation id="255002559098805027"><ph name="HOST_NAME" /> שלח תגובה לא חוקית.</translation> @@ -504,6 +505,7 @@ <translation id="2850739647070081192">Invite (Envelope)</translation> <translation id="2856444702002559011">ייתכן שתוקפים מנסים לגנוב את הפרטים שלך מהאתר <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (לדוגמה, סיסמאות, הודעות או כרטיסי אשראי). <ph name="BEGIN_LEARN_MORE_LINK" />מידע נוסף<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="2859806420264540918">באתר הזה מוצגות מודעות מפריעות או מטעות.</translation> +<translation id="2876489322757410363">בחרת לצאת מהמצב האנונימי כדי לשלם באמצעות אפליקציה חיצונית. להמשיך?</translation> <translation id="2878197950673342043">קיפול כרזה</translation> <translation id="2878424575911748999">A1</translation> <translation id="2880660355386638022">מיקום חלונות</translation> @@ -698,6 +700,7 @@ <translation id="3584299510153766161">שני ניקובים בחלק התחתון</translation> <translation id="3586931643579894722">הסתרת הפרטים</translation> <translation id="3587738293690942763">אמצעי</translation> +<translation id="3590643883886679995">פרטי הכניסה יאוחסנו במכשיר הזה אחרי היציאה מהמצב האנונימי.</translation> <translation id="3592413004129370115">Italian (Envelope)</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">האפליקציה נחסמה על ידי מנהל המערכת</translation> @@ -1005,6 +1008,7 @@ <translation id="4738601419177586157"><ph name="TEXT" /> – הצעת חיפוש</translation> <translation id="4742407542027196863">ניהול סיסמאות…</translation> <translation id="4744603770635761495">נתיב להפעלה</translation> +<translation id="4749011317274908093">עברת למצב אנונימי</translation> <translation id="4750917950439032686">הפרטים שלך (כמו סיסמאות או מספרי כרטיסי אשראי) נשלחים לאתר הזה במצב פרטי.</translation> <translation id="4756388243121344051">&היסטוריה</translation> <translation id="4758311279753947758">הוספת פרטים ליצירת קשר</translation> @@ -1673,6 +1677,7 @@ <translation id="7349430561505560861">A4-Extra</translation> <translation id="7353601530677266744">שורת פקודה </translation> <translation id="7359588939039777303">מודעות חסומות.</translation> +<translation id="7363096869660964304">עם זאת, עדיין אפשר לראות אותך. המעבר למצב אנונימי לא מסתיר את הגלישה שלך מהמעסיק, מספק האינטרנט או מהאתרים שאליהם נכנסת.</translation> <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, יש להקיש על Tab ואז על Enter כדי להוסיף ולנהל כתובות בהגדרות Chrome</translation> <translation id="7365849542400970216">רוצה שהאתר יקבל מידע לגבי השימוש שלך במכשיר?</translation> <translation id="7372973238305370288">תוצאת חיפוש</translation> @@ -1898,6 +1903,7 @@ <translation id="8175796834047840627">Chrome מציע לשמור את הכרטיסים שלך בחשבון Google כי התחברת לחשבון. אפשר לשנות את ההתנהגות הזאת בהגדרות.</translation> <translation id="8176440868214972690">מנהל המערכת של המכשיר הזה שלח מספר פרטים, כמו הגדרות ומדיניות, לאתרים הבאים.</translation> <translation id="8184538546369750125">שימוש בברירת המחדל הכללית (אפשר)</translation> +<translation id="8193086767630290324">פעולות שנעשו בנתונים שמסומנים כסודיים</translation> <translation id="8194797478851900357">&ביטול העברה</translation> <translation id="8201077131113104583">כתובת אתר לא חוקית לעדכון עבור תוסף עם המזהה "<ph name="EXTENSION_ID" />".</translation> <translation id="8202097416529803614">סיכום הזמנה</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb index bdb5dfc6..d859ba2 100644 --- a/components/strings/components_strings_ka.xtb +++ b/components/strings/components_strings_ka.xtb
@@ -428,6 +428,7 @@ <translation id="2535659140340599600">{COUNT,plural, =1{და 1 სხვა}other{და # სხვა}}</translation> <translation id="2536110899380797252">მისამართის დამატება</translation> <translation id="2539524384386349900">ამოცნობა</translation> +<translation id="2541219929084442027">ყველა ინკოგნიტო ჩანართის დახურვის შემდეგ, თქვენ მიერ ინკოგნიტო ჩანართების მეშვეობით მონახულებული გვერდები არ დარჩება თქვენი ბრაუზერის ისტორიაში, ქუქი-ჩანაწერების საცავში და არც ძიების ისტორიაში. ამის მიუხედავად, თქვენ მიერ ჩამოტვირთული ფაილები თუ შექმნილი სანიშნეები მაინც შეინახება.</translation> <translation id="2544644783021658368">ერთი დოკუმენტი</translation> <translation id="254947805923345898">წესების მნიშვნელობა არასწორია.</translation> <translation id="255002559098805027"><ph name="HOST_NAME" />-მა არასწორი პასუხი გამოაგზავნა.</translation> @@ -498,6 +499,7 @@ <translation id="2850739647070081192">Invite (კონვერტი)</translation> <translation id="2856444702002559011">თავდამსხმელები შეიძლება ცადონ <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />-დან თქვენი ინფორმაციის მოპარვა (მაგალითად, პაროლების, შეტყობინებების ან საკრედიტო ბარათების მონაცემების). <ph name="BEGIN_LEARN_MORE_LINK" />შეიტყვეთ მეტი<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="2859806420264540918">ამ საიტზე ნაჩვენებია მომაბეზრებელი ან შეცდომაში შემყვანი რეკლამა.</translation> +<translation id="2876489322757410363">გარე აპლიკაციით გადახდის შემთხვევაში, ინკოგნიტო რეჟიმიდან გახვალთ. გსურთ გაგრძელება?</translation> <translation id="2878197950673342043">დაკეცვა პოსტერის ფორმით</translation> <translation id="2878424575911748999">A1</translation> <translation id="2880660355386638022">ფანჯრის განლაგება</translation> @@ -692,6 +694,7 @@ <translation id="3584299510153766161">ორმაგად გახვრეტა ქვემოთ</translation> <translation id="3586931643579894722">დეტალების დამალვა</translation> <translation id="3587738293690942763">შუა</translation> +<translation id="3590643883886679995">ინკოგნიტო რეჟიმიდან გასვლის შემდეგ სისტემაში შესვლის მონაცემები ამ მოწყობილობაზე შეინახება.</translation> <translation id="3592413004129370115">Italian (კონვერტი)</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">აპლიკაცია დაბლოკილია თქვენი ადმინისტრატორის მიერ</translation> @@ -996,6 +999,7 @@ <translation id="4738601419177586157">„<ph name="TEXT" />“-ის ძიების შემოთავაზება</translation> <translation id="4742407542027196863">პაროლების მართვა…</translation> <translation id="4744603770635761495">შესრულებადი მისამართი</translation> +<translation id="4749011317274908093">თქვენ გადახვედით ინკოგნიტო რეჟიმზე</translation> <translation id="4750917950439032686">თქვენი ინფორმაცია (მაგალითად, პაროლები ან საკრედიტო ბარათების ნომრები) ამ საიტზე კონფიდენციალურად გაიგზავნება.</translation> <translation id="4756388243121344051">&ისტორია</translation> <translation id="4758311279753947758">საკონტაქტო ინფორმაციის დამატება</translation> @@ -1659,6 +1663,7 @@ <translation id="7349430561505560861">A4-Extra</translation> <translation id="7353601530677266744">ბრძანების სტრიქონი</translation> <translation id="7359588939039777303">რეკლამა დაიბლოკა.</translation> +<translation id="7363096869660964304">ამის მიუხედავად, თქვენ უჩინარი არ ხართ: ინკოგნიტო რეჟიმით სარგებლობა არ მალავს თქვენ მიერ დათვალიერებულს თქვენი დამსაქმებლისგან, ინტერნეტ სერვისის პროვაიდერისგან თუ თქვენ მიერ მონახულებული ვებსაიტებისგან.</translation> <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, მისამართების Chrome-ის პარამეტრებიდან დასამატებლად და სამართავად დააჭირეთ კლავიშს Tab, შემდეგ კი Enter-ს</translation> <translation id="7365849542400970216">იცოდეს თქვენ მიერ მოწყობილობის გამოყენების შესახებ?</translation> <translation id="7372973238305370288">ძიების შედეგი</translation> @@ -1884,6 +1889,7 @@ <translation id="8175796834047840627">თქვენს Google ანგარიშში ბარათების შენახვას Chrome გთავაზობთ, ვინაიდან შესული ხართ სისტემაში. ამ ქცევის შეცვლა შეგიძლიათ პარამეტრებიდან.</translation> <translation id="8176440868214972690">ამ მოწყობილობის ადმინისტრატორმა მითითებულ ვებსაიტებს გაუგზავნა გარკვეული ინფორმაცია, როგორიცაა პარამეტრები თუ წესები.</translation> <translation id="8184538546369750125">გლობალური ნაგულისხმევის გამოყენება (ნებართვა)</translation> +<translation id="8193086767630290324">კონფიდენციალურად მონიშნულ მონაცემებთან დაკავშირებით განხორციელებული ქმედებები</translation> <translation id="8194797478851900357">გადატანის &მოქმედების გაუქმება</translation> <translation id="8201077131113104583">URL-ის არასწორი განახლება განხორციელდა ID ”<ph name="EXTENSION_ID" />”-ის მქონე გაფართოებისთვის.</translation> <translation id="8202097416529803614">შეკვეთის რეზიუმე</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index 3dbef7c..856b1f9 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -432,6 +432,7 @@ <translation id="2535659140340599600">{COUNT,plural, =1{in še 1}one{in še #}two{in še #}few{in še #}other{in še #}}</translation> <translation id="2536110899380797252">Dodaj naslov</translation> <translation id="2539524384386349900">Zaznava</translation> +<translation id="2541219929084442027">Strani, ki si jih ogledujete na anonimnih zavihkih, se ne bodo ohranile v zgodovini brskalnika, hrambi piškotkov ali zgodovini iskanja, ko boste zaprli vse anonimne zavihke. Datoteke, ki jih prenesete, ali zaznamki, ki jih ustvarite, se bodo ohranili.</translation> <translation id="2544644783021658368">Enojni dokument</translation> <translation id="254947805923345898">Vrednost pravilnika ni veljavna.</translation> <translation id="255002559098805027">Spletno mesto <ph name="HOST_NAME" /> je poslalo neveljaven odgovor.</translation> @@ -504,6 +505,7 @@ <translation id="2850739647070081192">Invite (Envelope)</translation> <translation id="2856444702002559011">Morda poskušajo napadalci ukrasti vaše podatke s spletnega mesta <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> (na primer gesla, sporočila ali podatke kreditnih kartic). <ph name="BEGIN_LEARN_MORE_LINK" />Več o tem<ph name="END_LEARN_MORE_LINK" /></translation> <translation id="2859806420264540918">To spletno mesto prikazuje vsiljive ali zavajajoče oglase.</translation> +<translation id="2876489322757410363">Zaradi plačila v zunanji aplikaciji boste zapustili anonimni način. Želite nadaljevati?</translation> <translation id="2878197950673342043">Prepogibanje v obliki plakata</translation> <translation id="2878424575911748999">A1</translation> <translation id="2880660355386638022">Postavitev oken</translation> @@ -698,6 +700,7 @@ <translation id="3584299510153766161">Dvojno luknjanje spodaj</translation> <translation id="3586931643579894722">Skrij podrobnosti</translation> <translation id="3587738293690942763">Srednje</translation> +<translation id="3590643883886679995">Podatki za prijavo se bodo shranili v tej napravi, ko zaprete anonimni način.</translation> <translation id="3592413004129370115">Italian (Envelope)</translation> <translation id="3600246354004376029"><ph name="TITLE" />, <ph name="DOMAIN" />, <ph name="TIME" /></translation> <translation id="3603507503523709">Aplikacijo je blokiral skrbnik</translation> @@ -1007,6 +1010,7 @@ <translation id="4738601419177586157">Predlog za iskanje poizvedbe <ph name="TEXT" /></translation> <translation id="4742407542027196863">Upravljaj gesla …</translation> <translation id="4744603770635761495">Pot do izvedljive datoteke</translation> +<translation id="4749011317274908093">Uporabljate anonimni način</translation> <translation id="4750917950439032686">Vaši podatki (npr. gesla ali številke kreditnih kartic) so zasebni, kadar so poslani temu spletnemu mestu.</translation> <translation id="4756388243121344051">&Zgodovina</translation> <translation id="4758311279753947758">Dodaj podatke za stik</translation> @@ -1670,6 +1674,7 @@ <translation id="7349430561505560861">A4-Extra</translation> <translation id="7353601530677266744">Ukazna vrstica</translation> <translation id="7359588939039777303">Oglasi blokirani.</translation> +<translation id="7363096869660964304">Kljub temu pa niste nevidni. Z uporabo anonimnega načina svojega brskanja ne skrijete pred delodajalcem, ponudnikom internetnih storitev ali spletnimi mesti, ki jih obiščete.</translation> <translation id="7365596969960773405"><ph name="MANAGE_ADDRESSES_FOCUSED_FRIENDLY_MATCH_TEXT" />, pritisnite tabulatorko, nato Enter, če želite dodati in upravljati naslove v Chromovih nastavitvah.</translation> <translation id="7365849542400970216">Poznate podatke o uporabi naprave?</translation> <translation id="7372973238305370288">rezultat iskanja</translation> @@ -1895,6 +1900,7 @@ <translation id="8175796834047840627">Chrome ponuja shranjevanje kartic v račun Google, ker ste prijavljeni. To lahko spremenite v nastavitvah.</translation> <translation id="8176440868214972690">Skrbnik te naprave je poslal nekatere podatke, kot so nastavitve ali pravilniki, na ta spletna mesta.</translation> <translation id="8184538546369750125">Uporabi globalno privzeto (Dovoli)</translation> +<translation id="8193086767630290324">Izvedena dejanja s podatki, ki so označeni kot zaupni.</translation> <translation id="8194797478851900357">&Razveljavi premik</translation> <translation id="8201077131113104583">Neveljaven posodobitveni URL za razširitev z ID-jem »<ph name="EXTENSION_ID" />«.</translation> <translation id="8202097416529803614">Povzetek naročila</translation>
diff --git a/components/viz/OWNERS b/components/viz/OWNERS index db011f8..7815abbb 100644 --- a/components/viz/OWNERS +++ b/components/viz/OWNERS
@@ -49,10 +49,6 @@ magchen@chromium.org petermcneeley@chromium.org -# viz debugger -petermcneeley@chromium.org -sadrul@chromium.org - # scheduling / begin frames sunnyps@chromium.org
diff --git a/components/viz/common/BUILD.gn b/components/viz/common/BUILD.gn index 6869f9d..f1d04460 100644 --- a/components/viz/common/BUILD.gn +++ b/components/viz/common/BUILD.gn
@@ -2,24 +2,15 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//build/buildflag_header.gni") -import("//components/viz/common/debugger/viz_debugger.gni") import("//components/viz/viz.gni") import("//gpu/vulkan/features.gni") import("//skia/features.gni") import("//testing/test.gni") -import("//third_party/inspector_protocol/inspector_protocol.gni") - source_set("resource_format") { sources = [ "resources/resource_format.h" ] } -buildflag_header("buildflags") { - header = "buildflags.h" - flags = [ "USE_VIZ_DEBUGGER=$use_viz_debugger" ] -} - viz_component("resource_format_utils") { output_name = "viz_resource_format_utils" @@ -339,14 +330,12 @@ } public_deps = [ - ":buildflags", ":resource_format_utils", "//gpu/command_buffer/client", "//gpu/command_buffer/common", "//mojo/public/cpp/bindings", "//skia", ] - if (enable_vulkan) { public_deps += [ ":vulkan_context_provider" ] }
diff --git a/components/viz/common/debugger/viz_debugger.gni b/components/viz/common/debugger/viz_debugger.gni deleted file mode 100644 index 2c9354c..0000000 --- a/components/viz/common/debugger/viz_debugger.gni +++ /dev/null
@@ -1,10 +0,0 @@ -# Copyright 2021 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("//components/ui_devtools/devtools.gni") - -declare_args() { - # Indicates if the Viz Debugger is enabled. This is disabled by default on - # official builds due to security and performance reasons. - use_viz_debugger = use_viz_devtools && !is_official_build -}
diff --git a/components/viz/common/debugger/viz_debugger.pdl b/components/viz/common/debugger/viz_debugger.pdl deleted file mode 100644 index b762f5d..0000000 --- a/components/viz/common/debugger/viz_debugger.pdl +++ /dev/null
@@ -1,32 +0,0 @@ -# Copyright 2021 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. - -version - major 1 - minor 0 - - -# The VisualDebugger domain defines methods and events for the Visual Debugger. -domain VisualDebugger - # Sends filtering information to the visual debugging instance. - command filterStream - parameters - # This string contains filtering information for the debugging stream. - # See: //components/viz/service/debugger/README.md - object filter - - # Starts communication stream for visual debugger. - command startStream - # Simply informs the visual debugger that debugging session has ended. - command stopStream - - # Frame data is sent from the debugging instance with this event. - # This event will be emitted every render frame. - event frameResponse - parameters - # This Json dictionary object contains one full frame - # of visual debug submissions. - # See: //components/viz/service/debugger/README.md - object frameData -
diff --git a/components/viz/host/gpu_host_impl.cc b/components/viz/host/gpu_host_impl.cc index 297165a..b94d3c4 100644 --- a/components/viz/host/gpu_host_impl.cc +++ b/components/viz/host/gpu_host_impl.cc
@@ -14,7 +14,6 @@ #include "base/threading/thread_checker.h" #include "base/threading/thread_task_runner_handle.h" #include "base/trace_event/trace_event.h" -#include "base/values.h" #include "build/build_config.h" #include "components/viz/common/features.h" #include "gpu/config/gpu_driver_bug_workaround_type.h" @@ -276,22 +275,6 @@ channel_requests_.erase(client_id); } -#if BUILDFLAG(USE_VIZ_DEBUGGER) -void GpuHostImpl::FilterVisualDebugStream(base::Value json) { - viz_main_->FilterDebugStream(std::move(json)); -} - -void GpuHostImpl::StartVisualDebugStream( - base::RepeatingCallback<void(base::Value)> callback) { - viz_debug_output_callback_ = std::move(callback); - viz_main_->StartDebugStream(viz_debug_output_.BindNewPipeAndPassRemote()); -} - -void GpuHostImpl::StopVisualDebugStream() { - viz_main_->StopDebugStream(); - viz_debug_output_.reset(); -} -#endif void GpuHostImpl::SendOutstandingReplies() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -598,11 +581,4 @@ delegate_->RecordLogMessage(severity, header, message); } -#if BUILDFLAG(USE_VIZ_DEBUGGER) -void GpuHostImpl::LogFrame(base::Value frame_data) { - if (!viz_debug_output_callback_.is_null()) - viz_debug_output_callback_.Run(std::move(frame_data)); -} -#endif - } // namespace viz
diff --git a/components/viz/host/gpu_host_impl.h b/components/viz/host/gpu_host_impl.h index 31778511c1..daa0a4a 100644 --- a/components/viz/host/gpu_host_impl.h +++ b/components/viz/host/gpu_host_impl.h
@@ -20,11 +20,9 @@ #include "base/process/process_handle.h" #include "base/sequence_checker.h" #include "base/timer/timer.h" -#include "base/values.h" #include "build/build_config.h" #include "components/discardable_memory/public/mojom/discardable_shared_memory_manager.mojom.h" #include "components/ui_devtools/buildflags.h" -#include "components/viz/common/buildflags.h" #include "components/viz/host/viz_host_export.h" #include "gpu/command_buffer/common/activity_flags.h" #include "gpu/config/gpu_domain_guilt.h" @@ -56,12 +54,7 @@ namespace viz { -class VIZ_HOST_EXPORT GpuHostImpl : public mojom::GpuHost -#if BUILDFLAG(USE_VIZ_DEBUGGER) - , - public mojom::VizDebugOutput -#endif -{ +class VIZ_HOST_EXPORT GpuHostImpl : public mojom::GpuHost { public: class VIZ_HOST_EXPORT Delegate { public: @@ -183,19 +176,6 @@ EstablishChannelCallback callback); void CloseChannel(int client_id); -#if BUILDFLAG(USE_VIZ_DEBUGGER) - // Command as a Json string that the visual debugging instance interprets as - // stream filtering. - void FilterVisualDebugStream(base::Value filter_data); - - // Establishes the connection between the visual debugging instance and the - // output stream. - void StartVisualDebugStream( - base::RepeatingCallback<void(base::Value)> callback); - - void StopVisualDebugStream(); -#endif - void SendOutstandingReplies(); void BindInterface(const std::string& interface_name, @@ -266,11 +246,6 @@ const std::string& header, const std::string& message) override; - // Implements mojom::VizDebugOutput and is called by VizDebugger. -#if BUILDFLAG(USE_VIZ_DEBUGGER) - void LogFrame(base::Value frame_data) override; -#endif - Delegate* const delegate_; mojo::Remote<mojom::VizMain> viz_main_; const InitParams params_; @@ -286,11 +261,6 @@ mojo::Receiver<mojom::GpuHost> gpu_host_receiver_{this}; gpu::GpuProcessHostActivityFlags activity_flags_; -#if BUILDFLAG(USE_VIZ_DEBUGGER) - mojo::Receiver<mojom::VizDebugOutput> viz_debug_output_{this}; - base::RepeatingCallback<void(base::Value)> viz_debug_output_callback_; -#endif - base::ProcessId pid_ = base::kNullProcessId; // List of connection error handlers for the GpuService.
diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn index 2ff8732..159fa9e 100644 --- a/components/viz/service/BUILD.gn +++ b/components/viz/service/BUILD.gn
@@ -16,8 +16,6 @@ viz_component("service") { sources = [ - "debugger/viz_debugger.cc", - "debugger/viz_debugger.h", "display/aggregated_frame.cc", "display/aggregated_frame.h", "display/bsp_tree.cc", @@ -524,7 +522,6 @@ viz_source_set("unit_tests") { testonly = true sources = [ - "debugger/viz_debugger_unittest.cc", "display/bsp_tree_unittest.cc", "display/copy_output_scaling_pixeltest.cc", "display/delegated_ink_point_pixel_test_helper.cc",
diff --git a/components/viz/service/DEPS b/components/viz/service/DEPS index e7f63ed4..00c1c1c 100644 --- a/components/viz/service/DEPS +++ b/components/viz/service/DEPS
@@ -6,7 +6,6 @@ "-components/viz/common/features.h", "-components/viz/common/switches.h", "-components/viz/service", - "+components/viz/service/debugger/viz_debugger.h", "+components/viz/service/gl/gpu_service_impl.h", "+components/viz/service/viz_service_export.h", "+gpu/config/gpu_feature_info.h",
diff --git a/components/viz/service/debugger/DEPS b/components/viz/service/debugger/DEPS deleted file mode 100644 index 9263a086..0000000 --- a/components/viz/service/debugger/DEPS +++ /dev/null
@@ -1,9 +0,0 @@ -# Please consult components/viz/README.md about allowable dependencies. - -include_rules = [ - "+components/viz", - "+ui/base", - "+ui/gfx", - "+mojo/public", -] -
diff --git a/components/viz/service/debugger/README.md b/components/viz/service/debugger/README.md deleted file mode 100644 index 01d4385..0000000 --- a/components/viz/service/debugger/README.md +++ /dev/null
@@ -1,62 +0,0 @@ -# //components/viz/service/debugger - -## Viz Remote Visual Debugger - -The Viz Remote Debugger is a debug only connection that allows an active chromium instance to send graphical and text debug information to a remote client for display. - -### Motivation -[Visual Debugger one-pager](https://docs.google.com/document/d/1s2OLZcUrUxXRxOD8nR4giNRnCQZcdtXBp4DUI_Fb2GU/edit?usp=sharing). - - -### Usage -Macros constitute the full Viz Debugger logging API (as far as a nominal chromium developer is concerned). - -These macros tend to take the basic form below: - -DBG_DRAW_RECT(anno, rect); - -This macro will log a rect to the viz debugger for this frame. -anno - short for Annotation. This must be a string literal. The remote can filter on anno (as well as file and function). -rect - a (gfx::) rect. Expected dimensions is in pixels. - -Unlike a debugging session printfs these logging macros can be remain the chromium source. This allows developers to use these debug logs in future sessions and other share them with other developers. - - -The full list of these macros can be found in VizDebugger.h -At present, Visual debugging is currently limited to the VizCompositor thread. - - -### Operation -The debugging macros feed information into the VizDebugger static instance. At the end of each frame this cached information is fed upstream and eventually reaches the remote client. - -[Viz Debugger Communication](https://docs.google.com/drawings/d/11zqorcaRuyGx7W2AdL-7hSQJG0wknm0-RDkZSyobmy4/edit?usp=sharing) - - -### Performance -The logging performance of this system has several variants depending on the configuration. - -* Disabled at Compile time - - Zero overhead with the exception of mutable side effects in the creation of input variables. - -* Disabled at Runtime - - Every log call must check the debugging instance. This case has been optimized to be one memory read instruction followed by one predictable branch. - -* Disabled by Source Filter - - Must read the local static data to determine if this specific logging is enabled. This is on the order of tens of instructions. - -* Enabled - - Submits data into VizDebugger buffers. On the order of 100 instructions with the exception of when these buffers need to expand. - - -Additional performance overhead of this system comes from when the collected data is serialized and sent upstream. Unlike the logging submission overhead, this overhead is very easy to track and currently is not consider to be a concern. - - -### Security - -For official builds all visual debug macros are compiled out and the VizDebugger is reduced to a selective few method stubs. This means there are no security concerns for this system with exception of mutable side effects in the creation of input variables to the logging macros. These concerns for mutable side effects already exist for any other code; so no special attention is warranted for these macros. - -For non-official (debug) builds the dev-tools remote debugging port command line argument must be provided for the viz debugger to collect and stream data. Thus the security of this new system is identical to that of the remote dev tools for the case of debugging builds.
diff --git a/components/viz/service/debugger/viz_debugger.cc b/components/viz/service/debugger/viz_debugger.cc deleted file mode 100644 index 01ed564..0000000 --- a/components/viz/service/debugger/viz_debugger.cc +++ /dev/null
@@ -1,339 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -#include <algorithm> -#include <atomic> -#include <string> -#include <utility> - -#include "base/strings/string_number_conversions.h" -#include "base/values.h" -#include "components/viz/service/debugger/viz_debugger.h" - -#if VIZ_DEBUGGER_IS_ON() - -#include "base/json/json_reader.h" -#include "base/json/json_writer.h" -#include "base/threading/sequenced_task_runner_handle.h" - -namespace viz { - -std::atomic<bool> VizDebugger::enabled_; - -VizDebugger* VizDebugger::GetInstance() { - static VizDebugger g_debugger; - return &g_debugger; -} - -VizDebugger::FilterBlock::FilterBlock(const std::string file_str, - const std::string func_str, - const std::string anno_str, - bool is_active) - : file(std::move(file_str)), - func(std::move(func_str)), - anno(std::move(anno_str)), - active(is_active) {} - -VizDebugger::FilterBlock::~FilterBlock() = default; - -VizDebugger::FilterBlock::FilterBlock(const FilterBlock& other) = default; - -base::DictionaryValue VizDebugger::CallSubmitCommon::GetDictionaryValue() - const { - base::DictionaryValue option_dict; - option_dict.SetString("color", - base::StringPrintf("#%02x%02x%02x", option.color_r, - option.color_g, option.color_b)); - option_dict.SetInteger("alpha", option.color_a); - - base::DictionaryValue dict; - dict.SetInteger("drawindex", draw_index); - dict.SetInteger("source_index", source_index); - dict.SetKey("option", std::move(option_dict)); - return dict; -} - -VizDebugger::StaticSource::StaticSource(const char* anno_name, - const char* file_name, - int file_line, - const char* func_name) - : anno(anno_name), file(file_name), func(func_name), line(file_line) { - VizDebugger::GetInstance()->RegisterSource(this); -} - -VizDebugger::VizDebugger() - : gpu_thread_task_runner_(base::SequencedTaskRunnerHandle::Get()) { - DETACH_FROM_THREAD(viz_compositor_thread_checker_); - enabled_.store(false); -} - -VizDebugger::~VizDebugger() = default; - -base::Value VizDebugger::FrameAsJson(const uint64_t counter, - const gfx::Size& window_pix, - base::TimeTicks time_ticks) { - // TODO(petermcneeley): When we move to multithread we need to do something - // like an atomic swap here. Currently all multithreading concerns are handled - // by having a lock around the |json_frame_output_| object. - common_lock_.AssertAcquired(); - submission_count_ = 0; - - base::DictionaryValue global_dict; - global_dict.SetString("frame", base::NumberToString(counter)); - global_dict.SetInteger("windowx", window_pix.width()); - global_dict.SetInteger("windowy", window_pix.height()); - global_dict.SetString( - "time", base::NumberToString(time_ticks.since_origin().InMicroseconds())); - - base::ListValue new_sources; - for (size_t i = last_sent_source_count_; i < sources_.size(); i++) { - const StaticSource* each = sources_[i]; - base::DictionaryValue dict; - dict.SetString("file", each->file); - dict.SetInteger("line", each->line); - dict.SetString("func", each->func); - dict.SetString("anno", each->anno); - dict.SetInteger("index", each->reg_index); - new_sources.Append(std::move(dict)); - } - - // Remote connection will now have acknowledged all the new sources. - last_sent_source_count_ = sources_.size(); - global_dict.SetKey("new_sources", std::move(new_sources)); - - base::ListValue draw_calls; - for (auto&& each : draw_rect_calls_) { - base::DictionaryValue dict = each.GetDictionaryValue(); - { - base::ListValue list_xy; - list_xy.AppendInteger(each.obj_size.width()); - list_xy.AppendInteger(each.obj_size.height()); - dict.SetKey("size", std::move(list_xy)); - } - { - base::ListValue list_xy; - list_xy.AppendDouble(each.pos.x()); - list_xy.AppendDouble(each.pos.y()); - dict.SetKey("pos", std::move(list_xy)); - } - - draw_calls.Append(std::move(dict)); - } - global_dict.SetKey("drawcalls", std::move(draw_calls)); - - base::ListValue logs; - for (auto&& log : logs_) { - base::DictionaryValue dict = log.GetDictionaryValue(); - dict.SetString("value", std::move(log.value)); - logs.Append(std::move(dict)); - } - global_dict.SetKey("logs", std::move(logs)); - - base::ListValue texts; - for (auto&& text : draw_text_calls_) { - base::DictionaryValue dict = text.GetDictionaryValue(); - { - base::ListValue list_xy; - list_xy.AppendDouble(text.pos.x()); - list_xy.AppendDouble(text.pos.y()); - dict.SetKey("pos", std::move(list_xy)); - } - dict.SetString("text", text.text); - texts.Append(std::move(dict)); - } - global_dict.SetKey("text", std::move(texts)); - - logs_.clear(); - draw_rect_calls_.clear(); - draw_text_calls_.clear(); - return std::move(global_dict); -} - -void VizDebugger::UpdateFilters() { - common_lock_.AssertAcquired(); - if (apply_new_filters_next_frame_) { - cached_filters_ = new_filters_; - for (auto&& source : sources_) { - ApplyFilters(source); - } - new_filters_.clear(); - apply_new_filters_next_frame_ = false; - } -} - -void VizDebugger::CompleteFrame(uint64_t counter, - const gfx::Size& window_pix, - base::TimeTicks time_ticks) { - DCHECK_CALLED_ON_VALID_THREAD(viz_compositor_thread_checker_); - base::AutoLock scoped_lock(common_lock_); - UpdateFilters(); - json_frame_output_ = FrameAsJson(counter, window_pix, time_ticks); - gpu_thread_task_runner_->PostTask( - FROM_HERE, - base::BindOnce(&VizDebugger::AddFrame, base::Unretained(this))); -} - -void VizDebugger::ApplyFilters(VizDebugger::StaticSource* src) { - // In the case of no filters we disable this source. - src->active = false; - - // TODO(petermcneeley): We should probably make this string filtering more - // optimal. However, for the most part it the cost is only paid on the - // application of new filters. - auto simple_match = [](const char* source_str, - const std::string& filter_match) { - if (filter_match.empty() || source_str == nullptr) { - return true; - } - return std::strstr(source_str, filter_match.c_str()) != nullptr; - }; - - for (const auto& filter_block : cached_filters_) { - if (simple_match(src->file, filter_block.file) && - simple_match(src->func, filter_block.func) && - simple_match(src->anno, filter_block.anno)) { - src->active = filter_block.active; - } - } -} - -void VizDebugger::RegisterSource(StaticSource* src) { - DCHECK_CALLED_ON_VALID_THREAD(viz_compositor_thread_checker_); - int index = sources_.size(); - src->reg_index = index; - ApplyFilters(src); - sources_.push_back(src); -} - -void VizDebugger::Draw(const gfx::SizeF& obj_size, - const gfx::Vector2dF& pos, - const VizDebugger::StaticSource* dcs, - VizDebugger::DrawOption option) { - DCHECK_CALLED_ON_VALID_THREAD(viz_compositor_thread_checker_); - Draw(gfx::Size(obj_size.width(), obj_size.height()), pos, dcs, option); -} - -void VizDebugger::Draw(const gfx::Size& obj_size, - const gfx::Vector2dF& pos, - const VizDebugger::StaticSource* dcs, - VizDebugger::DrawOption option) { - DCHECK_CALLED_ON_VALID_THREAD(viz_compositor_thread_checker_); - DrawInternal(obj_size, pos, dcs, option); -} - -void VizDebugger::DrawInternal(const gfx::Size& obj_size, - const gfx::Vector2dF& pos, - const VizDebugger::StaticSource* dcs, - VizDebugger::DrawOption option) { - DCHECK_CALLED_ON_VALID_THREAD(viz_compositor_thread_checker_); - draw_rect_calls_.emplace_back(submission_count_++, dcs->reg_index, option, - obj_size, pos); -} - -void VizDebugger::DrawText(const gfx::Point& pos, - const std::string& text, - const VizDebugger::StaticSource* dcs, - VizDebugger::DrawOption option) { - DCHECK_CALLED_ON_VALID_THREAD(viz_compositor_thread_checker_); - DrawText(gfx::Vector2dF(pos.x(), pos.y()), text, dcs, option); -} - -void VizDebugger::DrawText(const gfx::Vector2dF& pos, - const std::string& text, - const VizDebugger::StaticSource* dcs, - VizDebugger::DrawOption option) { - DCHECK_CALLED_ON_VALID_THREAD(viz_compositor_thread_checker_); - draw_text_calls_.emplace_back(submission_count_++, dcs->reg_index, option, - pos, text); -} - -void VizDebugger::AddFrame() { - // TODO(petermcneeley): This code has duel thread entry. One to launch the - // task and one for the task to run. We should improve on this design in the - // future and have a better multithreaded frame data aggregation system. - base::AutoLock scoped_lock(common_lock_); - DCHECK(gpu_thread_task_runner_->RunsTasksInCurrentSequence()); - if (debug_output_.is_bound()) { - debug_output_->LogFrame(std::move(json_frame_output_)); - } -} - -void VizDebugger::FilterDebugStream(base::Value json) { - base::AutoLock scoped_lock(common_lock_); - DCHECK(gpu_thread_task_runner_->RunsTasksInCurrentSequence()); - const base::Value* value = &(json); - const base::Value* filterlist = value->FindPath("filters"); - - if (!filterlist || !filterlist->is_list()) { - LOG(ERROR) << "Missing filter list in json: " << json; - return; - } - - new_filters_.clear(); - - for (const auto& filter : filterlist->GetList()) { - const base::Value* file = filter.FindPath("selector.file"); - const base::Value* func = filter.FindPath("selector.func"); - const base::Value* anno = filter.FindPath("selector.anno"); - const base::Value* active = filter.FindPath("active"); - - if (!active) { - LOG(ERROR) << "Missing filter props in json: " << json; - return; - } - - if ((file && !file->is_string()) || (func && !func->is_string()) || - (anno && !anno->is_string()) || !active->is_bool()) { - LOG(ERROR) << "Filter props wrong type in json: " << json; - continue; - } - - auto check_str = [](const base::Value* filter_str) { - return (filter_str ? filter_str->GetString() : std::string()); - }; - - new_filters_.emplace_back(check_str(file), check_str(func), check_str(anno), - active->GetBool()); - } - - apply_new_filters_next_frame_ = true; -} - -void VizDebugger::StartDebugStream( - mojo::PendingRemote<mojom::VizDebugOutput> pending_debug_output) { - base::AutoLock scoped_lock(common_lock_); - DCHECK(gpu_thread_task_runner_->RunsTasksInCurrentSequence()); - debug_output_.Bind(std::move(pending_debug_output)); - debug_output_.reset_on_disconnect(); - last_sent_source_count_ = 0; - - // Reset our filters for our new connection. By default the client will send - // along the new filters after establishing the connection. - new_filters_.clear(); - apply_new_filters_next_frame_ = true; - - base::DictionaryValue dict; - dict.SetString("connection", "ok"); - debug_output_->LogFrame(std::move(dict)); - - enabled_.store(true); -} - -void VizDebugger::StopDebugStream() { - base::AutoLock scoped_lock(common_lock_); - DCHECK(gpu_thread_task_runner_->RunsTasksInCurrentSequence()); - debug_output_.reset(); - enabled_.store(false); -} - -void VizDebugger::AddLogMessage(std::string log, - const VizDebugger::StaticSource* dcs, - DrawOption option) { - DCHECK_CALLED_ON_VALID_THREAD(viz_compositor_thread_checker_); - logs_.emplace_back(submission_count_++, dcs->reg_index, option, - std::move(log)); -} - -} // namespace viz - -#endif // VIZ_DEBUGGER_IS_ON()
diff --git a/components/viz/service/debugger/viz_debugger.h b/components/viz/service/debugger/viz_debugger.h deleted file mode 100644 index b5fb992..0000000 --- a/components/viz/service/debugger/viz_debugger.h +++ /dev/null
@@ -1,328 +0,0 @@ -// Copyright 2020 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef COMPONENTS_VIZ_SERVICE_DEBUGGER_VIZ_DEBUGGER_H_ -#define COMPONENTS_VIZ_SERVICE_DEBUGGER_VIZ_DEBUGGER_H_ - -#include <atomic> -#include <string> -#include <utility> -#include <vector> - -#include "base/debug/debugging_buildflags.h" -#include "base/sequenced_task_runner.h" -#include "base/strings/stringprintf.h" -#include "base/synchronization/lock.h" -#include "base/time/time.h" -#include "base/values.h" -#include "components/viz/common/buildflags.h" -#include "components/viz/service/viz_service_export.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "services/viz/privileged/mojom/viz_main.mojom.h" -#include "ui/gfx/geometry/vector2d_f.h" - -// The visual debugger can be completely disabled/enabled at compile time via -// the |USE_VIZ_DEBUGGER| build flag which corresponds to boolean gn arg -// 'use_viz_debugger'. Consult README.md for more information. - -#if BUILDFLAG(USE_VIZ_DEBUGGER) - -#define VIZ_DEBUGGER_IS_ON() true - -namespace viz { - -class VIZ_SERVICE_EXPORT VizDebugger { - public: - // These functions are called on a gpu thread that is not the - // 'VizCompositorThread' and therefore have mulithreaded considerations. - void FilterDebugStream(base::Value json); - void StartDebugStream( - mojo::PendingRemote<mojom::VizDebugOutput> pending_debug_output); - void StopDebugStream(); - - struct VIZ_SERVICE_EXPORT StaticSource { - StaticSource(const char* anno_name, - const char* file_name, - int file_line, - const char* func_name); - inline bool IsActive() const { return active; } - const char* anno; - const char* file; - const char* func; - const int line; - - int reg_index; - bool active; - }; - - struct DrawOption { - // TODO(petermcneeley): Consider moving this custom rgba color data over to - // |SkColor| representation. - uint8_t color_r; - uint8_t color_g; - uint8_t color_b; - // Alpha is applied to rect fill only. - uint8_t color_a; - }; - - static ALWAYS_INLINE bool IsEnabled() { - return enabled_.load(std::memory_order_acquire); - } - - static VizDebugger* GetInstance(); - - ~VizDebugger(); - - void CompleteFrame(const uint64_t counter, - const gfx::Size& window_pix, - base::TimeTicks time_ticks); - void DrawText(const gfx::Point& pos, - const std::string& text, - const StaticSource* dcs, - DrawOption option); - void DrawText(const gfx::Vector2dF& pos, - const std::string& text, - const StaticSource* dcs, - DrawOption option); - void Draw(const gfx::Size& obj_size, - const gfx::Vector2dF& pos, - const StaticSource* dcs, - DrawOption option); - void Draw(const gfx::SizeF& obj_size, - const gfx::Vector2dF& pos, - const StaticSource* dcs, - DrawOption option); - - void AddLogMessage(std::string log, - const StaticSource* dcs, - DrawOption option); - - VizDebugger(const VizDebugger&) = delete; - VizDebugger& operator=(const VizDebugger&) = delete; - - private: - friend class VizDebuggerInternal; - static std::atomic<bool> enabled_; - VizDebugger(); - base::Value FrameAsJson(const uint64_t counter, - const gfx::Size& window_pix, - base::TimeTicks time_ticks); - - void AddFrame(); - void UpdateFilters(); - void RegisterSource(StaticSource* source); - void DrawInternal(const gfx::Size& obj_size, - const gfx::Vector2dF& pos, - const StaticSource* dcs, - DrawOption option); - void ApplyFilters(VizDebugger::StaticSource* source); - mojo::Remote<mojom::VizDebugOutput> debug_output_; - - // This |task_runner_| is required to send json through mojo. - scoped_refptr<base::SequencedTaskRunner> gpu_thread_task_runner_; - - struct CallSubmitCommon { - CallSubmitCommon(int index, int source, DrawOption draw_option) - : draw_index(index), source_index(source), option(draw_option) {} - base::DictionaryValue GetDictionaryValue() const; - int draw_index; - int source_index; - VizDebugger::DrawOption option; - }; - - struct DrawCall : public CallSubmitCommon { - DrawCall(int index, - int source, - DrawOption draw_option, - gfx::Size size, - gfx::Vector2dF position) - : CallSubmitCommon(index, source, draw_option), - obj_size(size), - pos(position) {} - gfx::Size obj_size; - gfx::Vector2dF pos; - }; - - struct DrawTextCall : public CallSubmitCommon { - DrawTextCall(int index, - int source, - DrawOption draw_option, - gfx::Vector2dF position, - std::string str) - : CallSubmitCommon(index, source, draw_option), - pos(position), - text(str) {} - gfx::Vector2dF pos; - std::string text; - }; - - struct LogCall : public CallSubmitCommon { - LogCall(int index, int source, DrawOption draw_option, std::string str) - : CallSubmitCommon(index, source, draw_option), value(std::move(str)) {} - std::string value; - }; - - struct FilterBlock { - FilterBlock(const std::string file_str, - const std::string func_str, - const std::string anno_str, - bool is_active); - ~FilterBlock(); - FilterBlock(const FilterBlock& other); - std::string file; - std::string func; - std::string anno; - bool active; - }; - - // Synchronize access to the variables in the block below as it is mutated by - // multiple threads. - base::Lock common_lock_; - // New filters to promoted to cached filters on next frame. - std::vector<FilterBlock> new_filters_; - bool apply_new_filters_next_frame_ = false; - // Json is saved out every frame on the call to 'CompleteFrame' but may not be - // uploaded immediately due to task runner sequencing. - base::Value json_frame_output_; - size_t last_sent_source_count_ = 0; - - // Cached filters to apply filtering to new sources not just on filter update. - std::vector<FilterBlock> cached_filters_; - // Common counter for all submissions. - int submission_count_ = 0; - std::vector<DrawCall> draw_rect_calls_; - std::vector<DrawTextCall> draw_text_calls_; - std::vector<LogCall> logs_; - std::vector<StaticSource*> sources_; - - THREAD_CHECKER(viz_compositor_thread_checker_); -}; - -} // namespace viz - -#define DBG_OPT_RED \ - (viz::VizDebugger::DrawOption) { 255, 0, 0, 0 } -#define DBG_OPT_GREEN \ - (viz::VizDebugger::DrawOption) { 0, 255, 0, 0 } -#define DBG_OPT_BLUE \ - (viz::VizDebugger::DrawOption) { 0, 0, 255, 0 } -#define DBG_OPT_BLACK \ - (viz::VizDebugger::DrawOption) { 0, 0, 0, 0 } - -#define DBG_DRAW_RECTANGLE_OPT(anno, option, pos, size) \ - do { \ - if (viz::VizDebugger::IsEnabled()) { \ - static VizDebugger::StaticSource dcs(anno, __FILE__, __LINE__, \ - __func__); \ - if (dcs.IsActive()) { \ - viz::VizDebugger::GetInstance()->Draw(size, pos, &dcs, option); \ - } \ - } \ - } while (0) - -#define DBG_DRAW_RECTANGLE(anno, pos, size) \ - DBG_DRAW_RECTANGLE_OPT(anno, DBG_OPT_BLACK, pos, size) - -#define DBG_DRAW_TEXT_OPT(anno, option, pos, text) \ - do { \ - if (viz::VizDebugger::IsEnabled()) { \ - static VizDebugger::StaticSource dcs(anno, __FILE__, __LINE__, \ - __func__); \ - if (dcs.IsActive()) { \ - viz::VizDebugger::GetInstance()->DrawText(pos, text, &dcs, option); \ - } \ - } \ - } while (0) - -#define DBG_DRAW_TEXT(anno, pos, text) \ - DBG_DRAW_TEXT_OPT(anno, DBG_OPT_BLACK, pos, text) - -#define DBG_LOG_OPT(anno, option, format, ...) \ - do { \ - if (VizDebugger::IsEnabled()) { \ - static VizDebugger::StaticSource dcs(anno, __FILE__, __LINE__, \ - __func__); \ - if (dcs.IsActive()) { \ - VizDebugger::GetInstance()->AddLogMessage( \ - base::StringPrintf(format, __VA_ARGS__), &dcs, option); \ - } \ - } \ - } while (0) - -#define DBG_LOG(anno, format, ...) \ - DBG_LOG_OPT(anno, DBG_OPT_BLACK, format, __VA_ARGS__) - -#define DBG_DRAW_RECT_OPT(anno, option, rect) \ - DBG_DRAW_RECTANGLE( \ - anno, gfx::Vector2dF(rect.origin().x(), rect.origin().y()), rect.size()) - -#define DBG_DRAW_RECT(anno, rect) DBG_DRAW_RECT_OPT(anno, DBG_OPT_BLACK, rect) - -#else // !BUILDFLAG(USE_VIZ_DEBUGGER) - -#define VIZ_DEBUGGER_IS_ON() false - -// Viz Debugger is not enabled. The |VizDebugger| class is minimally defined to -// reduce the need for if/def checks in external code. All debugging macros -// compiled to empty statements but do eat some parameters to prevent used -// variable warnings. - -namespace viz { -class VIZ_SERVICE_EXPORT VizDebugger { - public: - VizDebugger() = default; - static inline VizDebugger* GetInstance() { - static VizDebugger g_debugger; - return &g_debugger; - } - inline void CompleteFrame(uint64_t counter, - const gfx::Size& window_pix, - base::TimeTicks time_ticks) {} - - static inline bool IsEnabled() { return false; } - VizDebugger(const VizDebugger&) = delete; - VizDebugger& operator=(const VizDebugger&) = delete; -}; -} // namespace viz - -#define DBG_OPT_RED 0 - -#define DBG_OPT_GREEN 0 - -#define DBG_OPT_BLUE 0 - -#define DBG_OPT_BLACK 0 - -#define DBG_DRAW_RECTANGLE_OPT(anno, option, pos, size) \ - ANALYZER_ALLOW_UNUSED(anno) \ - ANALYZER_ALLOW_UNUSED(option) \ - ANALYZER_ALLOW_UNUSED(pos) ANALYZER_ALLOW_UNUSED(size) - -#define DBG_DRAW_RECTANGLE(anno, pos, size) \ - DBG_DRAW_RECTANGLE_OPT(anno, DBG_OPT_BLACK, pos, size) - -#define DBG_DRAW_TEXT_OPT(anno, option, pos, text) \ - ANALYZER_ALLOW_UNUSED(anno) \ - ANALYZER_ALLOW_UNUSED(option) \ - ANALYZER_ALLOW_UNUSED(pos) ANALYZER_ALLOW_UNUSED(text) - -#define DBG_DRAW_TEXT(anno, pos, text) \ - DBG_DRAW_TEXT_OPT(anno, DBG_OPT_BLACK, pos, text) - -#define DBG_LOG_OPT(anno, option, format, ...) \ - ANALYZER_ALLOW_UNUSED(anno) \ - ANALYZER_ALLOW_UNUSED(option) ANALYZER_ALLOW_UNUSED(format) - -#define DBG_LOG(anno, format, ...) DBG_LOG_OPT(anno, DBG_OPT_BLACK, format, ...) - -#define DBG_DRAW_RECT_OPT(anno, option, rect) \ - ANALYZER_ALLOW_UNUSED(anno) \ - ANALYZER_ALLOW_UNUSED(option) ANALYZER_ALLOW_UNUSED(rect) - -#define DBG_DRAW_RECT(anno, rect) DBG_DRAW_RECT_OPT(anno, DBG_OPT_BLACK, rect) - -#endif // BUILDFLAG(USE_VIZ_DEBUGGER) - -#endif // COMPONENTS_VIZ_SERVICE_DEBUGGER_VIZ_DEBUGGER_H_
diff --git a/components/viz/service/debugger/viz_debugger_unittest.cc b/components/viz/service/debugger/viz_debugger_unittest.cc deleted file mode 100644 index 8d76c99..0000000 --- a/components/viz/service/debugger/viz_debugger_unittest.cc +++ /dev/null
@@ -1,386 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -#include <stddef.h> - -#include <cstdio> -#include <unordered_map> -#include <utility> -#include <vector> - -#include "base/bind.h" -#include "base/callback_helpers.h" -#include "base/json/json_reader.h" -#include "base/strings/stringprintf.h" -#include "base/time/time.h" -#include "components/viz/service/debugger/viz_debugger.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "ui/gfx/geometry/vector2d_f.h" - -#if VIZ_DEBUGGER_IS_ON() -using testing::_; -using testing::Mock; - -namespace viz { - -class VizDebuggerInternal : public VizDebugger { - public: - void ForceEnabled() { enabled_ = true; } - bool Reset(); - - int GetSourceCount() { return static_cast<int>(sources_.size()); } - - using VizDebugger::CallSubmitCommon; - using VizDebugger::common_lock_; - using VizDebugger::DrawCall; - using VizDebugger::DrawTextCall; - using VizDebugger::FrameAsJson; - using VizDebugger::LogCall; - using VizDebugger::UpdateFilters; -}; - -bool VizDebuggerInternal::Reset() { - submission_count_ = 0; - draw_rect_calls_.clear(); - draw_text_calls_.clear(); - logs_.clear(); - last_sent_source_count_ = 0; - sources_.clear(); - return true; -} - -namespace { - -struct TestFilter { - std::string anno; - std::string func; - std::string file; - bool active = true; -}; - -static_assert(sizeof(VizDebuggerInternal) == sizeof(VizDebugger), - "This test code exposes the internals of |VizDebugger| via an " - "upcast; thus they must be the same size."); - -class VisualDebuggerTest : public testing::Test { - protected: - VizDebuggerInternal* GetInternal() { - return static_cast<VizDebuggerInternal*>(VizDebugger::GetInstance()); - } - - void SetUp() override { GetInternal()->Reset(); } - void TearDown() override { GetInternal()->Reset(); } - - void SetFilter(std::vector<TestFilter> filters) { - base::DictionaryValue filters_json; - base::ListValue filters_list; - for (auto&& each : filters) { - base::DictionaryValue full_filter; - base::DictionaryValue selector; - if (!each.file.empty()) - selector.SetString("file", each.file); - - if (!each.func.empty()) - selector.SetString("func", each.func); - - selector.SetString("anno", each.anno); - - full_filter.SetKey("selector", std::move(selector)); - full_filter.SetBoolean("active", each.active); - filters_list.Append(std::move(full_filter)); - } - filters_json.SetKey("filters", std::move(filters_list)); - GetInternal()->FilterDebugStream(std::move(filters_json)); - GetInternal()->common_lock_.Acquire(); - GetInternal()->UpdateFilters(); - GetInternal()->common_lock_.Release(); - } - - public: - struct StaticSource { - std::string file; - std::string func; - std::string anno; - int line; - int index; - }; - - void GetFrameData() { - sources_.clear(); - draw_calls_.clear(); - log_calls_.clear(); - draw_text_calls_.clear(); - GetInternal()->common_lock_.Acquire(); - base::Optional<base::Value> global_dict = GetInternal()->FrameAsJson( - frame_counter_, gfx::Size(window_x_, window_y_), base::TimeTicks()); - GetInternal()->common_lock_.Release(); - frame_counter_++; - - EXPECT_TRUE(global_dict->is_dict()); - - std::string str; - global_dict->FindKey("frame")->GetAsString(&str); - base::StringToUint64(str.c_str(), &counter_); - static const int kNoVal = -1; - - window_x_ = global_dict->FindKey("windowx")->GetIfInt().value_or(kNoVal); - window_y_ = global_dict->FindKey("windowy")->GetIfInt().value_or(kNoVal); - - base::Value* list_source = global_dict->FindListKey("new_sources"); - EXPECT_TRUE(list_source->is_list()); - - for (size_t i = 0; i < list_source->GetList().size(); i++) { - auto&& local_dict = list_source->GetList()[i]; - StaticSource ss; - local_dict.FindKey("file")->GetAsString(&str); - ss.file = str; - - local_dict.FindKey("func")->GetAsString(&str); - ss.func = str; - - local_dict.FindKey("anno")->GetAsString(&str); - ss.anno = str; - - ss.line = local_dict.FindKey("line")->GetIfInt().value_or(kNoVal); - ss.index = local_dict.FindKey("index")->GetIfInt().value_or(kNoVal); - sources_.push_back(ss); - } - - base::Value* draw_call_list = global_dict->FindListKey("drawcalls"); - EXPECT_TRUE(draw_call_list->is_list()); - - auto func_common_call = [](const base::Value& dict, int* draw_index, - int* source_index, - VizDebugger::DrawOption* option) { - *draw_index = dict.FindKey("drawindex")->GetIfInt().value_or(kNoVal); - *source_index = dict.FindKey("source_index")->GetIfInt().value_or(kNoVal); - - std::string str; - const base::Value* option_dict = dict.FindDictKey("option"); - option_dict->FindKey("color")->GetAsString(&str); - - uint32_t red; - uint32_t green; - uint32_t blue; - std::sscanf(str.c_str(), "#%x%x%x", &red, &green, &blue); - - option->color_r = red; - option->color_g = green; - option->color_b = blue; - option->color_a = static_cast<uint8_t>( - option_dict->FindKey("alpha")->GetIfInt().value_or(kNoVal)); - }; - - for (size_t i = 0; i < draw_call_list->GetList().size(); i++) { - const base::Value& local_dict = draw_call_list->GetList()[i]; - int draw_index; - int source_index; - VizDebugger::DrawOption option; - func_common_call(local_dict, &draw_index, &source_index, &option); - - const base::Value* list_size = local_dict.FindListKey("size"); - EXPECT_TRUE(list_size->is_list()); - int size_x = list_size->GetList()[0].GetIfInt().value_or(kNoVal); - int size_y = list_size->GetList()[1].GetIfInt().value_or(kNoVal); - - const base::Value* list_pos = local_dict.FindListKey("pos"); - EXPECT_TRUE(list_pos->is_list()); - float pos_x = list_pos->GetList()[0].GetIfDouble().value_or(kNoVal); - float pos_y = list_pos->GetList()[1].GetIfDouble().value_or(kNoVal); - - VizDebuggerInternal::DrawCall draw_call(draw_index, source_index, option, - gfx::Size(size_x, size_y), - gfx::Vector2dF(pos_x, pos_y)); - - draw_calls_.push_back(draw_call); - } - - base::Value* text_call_list = global_dict->FindListKey("text"); - EXPECT_TRUE(text_call_list->is_list()); - - for (size_t i = 0; i < text_call_list->GetList().size(); i++) { - const base::Value& local_dict = text_call_list->GetList()[i]; - int draw_index; - int source_index; - VizDebugger::DrawOption option; - - func_common_call(local_dict, &draw_index, &source_index, &option); - - local_dict.FindKey("text")->GetAsString(&str); - std::string text_str = str; - - const base::Value* list_pos = local_dict.FindListKey("pos"); - EXPECT_TRUE(list_pos->is_list()); - float pos_x = list_pos->GetList()[0].GetIfDouble().value_or(kNoVal); - float pos_y = list_pos->GetList()[1].GetIfDouble().value_or(kNoVal); - - VizDebuggerInternal::DrawTextCall text_call( - draw_index, source_index, option, gfx::Vector2dF(pos_x, pos_y), - text_str); - - draw_text_calls_.push_back(text_call); - } - - base::Value* log_call_list = global_dict->FindListKey("logs"); - EXPECT_TRUE(log_call_list->is_list()); - - for (size_t i = 0; i < log_call_list->GetList().size(); i++) { - const base::Value& local_dict = log_call_list->GetList()[i]; - int draw_index; - int source_index; - VizDebugger::DrawOption option; - func_common_call(local_dict, &draw_index, &source_index, &option); - - local_dict.FindKey("value")->GetAsString(&str); - std::string log_str = str; - - VizDebuggerInternal::LogCall log_call(draw_index, source_index, option, - log_str); - - log_calls_.push_back(log_call); - } - } - - uint64_t frame_counter_ = 0; - - // Cached result of call to 'GetFrameData' to simplify code. - uint64_t counter_; - int window_x_ = 256; - int window_y_ = 256; - std::vector<StaticSource> sources_; - std::vector<VizDebuggerInternal::DrawCall> draw_calls_; - std::vector<VizDebuggerInternal::LogCall> log_calls_; - std::vector<VizDebuggerInternal::DrawTextCall> draw_text_calls_; -}; - -TEST_F(VisualDebuggerTest, GeneralDrawSubmission) { - const char kAnnoRect[] = "annorect"; - const char kAnnoText[] = "annotext"; - const char kAnnoLog[] = "annolog"; - const gfx::Rect kTestRect = gfx::Rect(12, 34, 56, 78); - static const int kNumFrames = 4; - GetInternal()->ForceEnabled(); - for (uint64_t frame_idx = 0; frame_idx < kNumFrames; frame_idx++) { - SetFilter({TestFilter({""})}); - - static const int kNumSubmission = 8; - for (int i = 0; i < kNumSubmission; i++) { - DBG_DRAW_RECT(kAnnoRect, kTestRect); - DBG_DRAW_TEXT(kAnnoText, kTestRect.origin(), - base::StringPrintf("Text %d", i)); - DBG_LOG(kAnnoLog, "%d", i); - } - - GetFrameData(); - - EXPECT_EQ(counter_, frame_idx); - EXPECT_EQ(window_x_, 256); - EXPECT_EQ(window_x_, 256); - EXPECT_EQ(draw_calls_.size(), static_cast<size_t>(kNumSubmission)); - EXPECT_EQ(log_calls_.size(), static_cast<size_t>(kNumSubmission)); - EXPECT_EQ(draw_text_calls_.size(), static_cast<size_t>(kNumSubmission)); - - if (frame_idx == 0) { - EXPECT_EQ(sources_.size(), 3u); - EXPECT_EQ(sources_[0].func, "TestBody"); - EXPECT_EQ(sources_[0].file, __FILE__); - EXPECT_EQ(sources_[0].anno, kAnnoRect); - EXPECT_EQ(sources_[1].func, "TestBody"); - EXPECT_EQ(sources_[1].file, __FILE__); - EXPECT_EQ(sources_[1].anno, kAnnoText); - EXPECT_EQ(sources_[2].func, "TestBody"); - EXPECT_EQ(sources_[2].file, __FILE__); - EXPECT_EQ(sources_[2].anno, kAnnoLog); - } else { - // After the first frame there are no new sources in the loop. - EXPECT_EQ(sources_.size(), 0u); - } - - for (int i = 0; i < kNumSubmission; i++) { - EXPECT_EQ(draw_calls_[i].pos, - gfx::Vector2dF(kTestRect.origin().x(), kTestRect.origin().y())); - EXPECT_EQ(draw_calls_[i].obj_size, kTestRect.size()); - EXPECT_EQ(draw_calls_[i].source_index, 0); - EXPECT_EQ(draw_calls_[i].draw_index, i * 3); - - EXPECT_EQ(draw_text_calls_[i].pos, - gfx::Vector2dF(kTestRect.origin().x(), kTestRect.origin().y())); - EXPECT_EQ(draw_text_calls_[i].source_index, 1); - EXPECT_EQ(draw_text_calls_[i].draw_index, i * 3 + 1); - EXPECT_EQ(draw_text_calls_[i].text, base::StringPrintf("Text %d", i)); - - EXPECT_EQ(log_calls_[i].value, base::StringPrintf("%d", i)); - EXPECT_EQ(log_calls_[i].source_index, 2); - EXPECT_EQ(log_calls_[i].draw_index, i * 3 + 2); - } - } -} - -static void FunctionNameTest(const char* anno_rect, gfx::Rect rect) { - DBG_DRAW_RECT(anno_rect, rect); -} - -TEST_F(VisualDebuggerTest, FilterDrawSubmission) { - const char kAnnoRect[] = "annorect"; - const char kAnnoMissing[] = "testmissing"; - const char kAnnoMatch[] = "before_annorect_after"; - - GetInternal()->ForceEnabled(); - const gfx::Rect kTestRect = gfx::Rect(10, 30, 50, 70); - const gfx::Rect kMissingRect = gfx::Rect(11, 33, 55, 77); - std::vector<int> valid_indices; - SetFilter({TestFilter({"annorect"})}); - valid_indices.push_back(GetInternal()->GetSourceCount()); - FunctionNameTest(kAnnoRect, kTestRect); - valid_indices.push_back(GetInternal()->GetSourceCount()); - DBG_DRAW_RECT(kAnnoRect, kTestRect); - DBG_DRAW_RECT(kAnnoMissing, kMissingRect); - valid_indices.push_back(GetInternal()->GetSourceCount()); - DBG_DRAW_RECT(kAnnoMatch, kTestRect); - - SetFilter({TestFilter({"", "FunctionNameTest"})}); - DBG_DRAW_RECT(kAnnoRect, kMissingRect); - valid_indices.push_back(0); - FunctionNameTest(kAnnoRect, kTestRect); - - SetFilter({TestFilter({"", "TestBody"})}); - FunctionNameTest(kAnnoRect, kMissingRect); - valid_indices.push_back(GetInternal()->GetSourceCount()); - DBG_DRAW_RECT(kAnnoRect, kTestRect); - - SetFilter({TestFilter({"", "", "no_file"})}); - DBG_DRAW_RECT(kAnnoRect, kMissingRect); - - SetFilter({TestFilter({"", "", __FILE__})}); - valid_indices.push_back(GetInternal()->GetSourceCount()); - DBG_DRAW_RECT(kAnnoRect, kTestRect); - - GetFrameData(); - EXPECT_EQ(sources_[0].func, "FunctionNameTest"); - EXPECT_EQ(sources_[0].file, __FILE__); - EXPECT_EQ(sources_[0].anno, kAnnoRect); - EXPECT_EQ(sources_[1].func, "TestBody"); - EXPECT_EQ(sources_[1].file, __FILE__); - EXPECT_EQ(sources_[1].anno, kAnnoRect); - EXPECT_EQ(sources_[2].anno, kAnnoMissing); - EXPECT_EQ(sources_[3].anno, kAnnoMatch); - - auto check_draw = [](const VizDebuggerInternal::DrawCall& draw_call, - const gfx::Rect& rect, int src_idx, int draw_idx) { - EXPECT_EQ(draw_call.pos, - gfx::Vector2dF(rect.origin().x(), rect.origin().y())); - EXPECT_EQ(draw_call.obj_size, rect.size()); - EXPECT_EQ(draw_call.source_index, src_idx); - EXPECT_EQ(draw_call.draw_index, draw_idx); - }; - - // Makes sure all valid indices are here and have the correct rect. - for (size_t i = 0; i < draw_calls_.size(); i++) { - check_draw(draw_calls_[i], kTestRect, valid_indices[i], i); - } -} - -} // namespace -} // namespace viz -#endif // VIZ_DEBUGGER_IS_ON()
diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc index 0e1a89b..bb73fb2 100644 --- a/components/viz/service/main/viz_main_impl.cc +++ b/components/viz/service/main/viz_main_impl.cc
@@ -17,7 +17,6 @@ #include "build/build_config.h" #include "components/ui_devtools/buildflags.h" #include "components/viz/common/features.h" -#include "components/viz/service/debugger/viz_debugger.h" #include "gpu/command_buffer/common/activity_flags.h" #include "gpu/config/gpu_finch_features.h" #include "gpu/ipc/service/gpu_init.h" @@ -112,7 +111,6 @@ gpu_init_->gpu_feature_info_for_hardware_gpu(), gpu_init_->gpu_extra_info(), gpu_init_->vulkan_implementation(), base::BindOnce(&VizMainImpl::ExitProcess, base::Unretained(this))); - VizDebugger::GetInstance(); } VizMainImpl::~VizMainImpl() { @@ -268,21 +266,6 @@ #endif } -#if BUILDFLAG(USE_VIZ_DEBUGGER) -void VizMainImpl::FilterDebugStream(base::Value filter_data) { - VizDebugger::GetInstance()->FilterDebugStream(std::move(filter_data)); -} - -void VizMainImpl::StartDebugStream( - mojo::PendingRemote<mojom::VizDebugOutput> pending_debug_output) { - VizDebugger::GetInstance()->StartDebugStream(std::move(pending_debug_output)); -} - -void VizMainImpl::StopDebugStream() { - VizDebugger::GetInstance()->StopDebugStream(); -} -#endif - scoped_refptr<gpu::SharedContextState> VizMainImpl::GetSharedContextState() { return gpu_service_->GetContextState(); }
diff --git a/components/viz/service/main/viz_main_impl.h b/components/viz/service/main/viz_main_impl.h index 6315f74..4b82e5a2 100644 --- a/components/viz/service/main/viz_main_impl.h +++ b/components/viz/service/main/viz_main_impl.h
@@ -13,7 +13,6 @@ #include "base/threading/thread.h" #include "build/build_config.h" #include "components/discardable_memory/client/client_discardable_shared_memory_manager.h" -#include "components/viz/common/buildflags.h" #include "components/viz/service/gl/gpu_service_impl.h" #include "components/viz/service/main/viz_compositor_thread_runner_impl.h" #include "gpu/ipc/gpu_in_process_thread_service.h" @@ -127,12 +126,6 @@ #endif void CreateFrameSinkManager(mojom::FrameSinkManagerParamsPtr params) override; void CreateVizDevTools(mojom::VizDevToolsParamsPtr params) override; -#if BUILDFLAG(USE_VIZ_DEBUGGER) - void FilterDebugStream(base::Value filter_data) override; - void StartDebugStream( - mojo::PendingRemote<mojom::VizDebugOutput> debug_output) override; - void StopDebugStream() override; -#endif // gpu::GpuInProcessThreadServiceDelegate implementation: scoped_refptr<gpu::SharedContextState> GetSharedContextState() override;
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index bad677b..0cc1eb2e 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -11,7 +11,6 @@ import("//build/config/ui.gni") import("//chromeos/assistant/assistant.gni") import("//components/ui_devtools/devtools.gni") -import("//components/viz/common/debugger/viz_debugger.gni") import("//content/common/features.gni") import("//content/public/common/zygote/features.gni") import("//device/vr/buildflags/buildflags.gni") @@ -2162,14 +2161,6 @@ ] } - if (use_viz_debugger) { - sources += [ - "$target_gen_dir/devtools/protocol/visual_debugger.cc", - "$target_gen_dir/devtools/protocol/visual_debugger.h", - "devtools/protocol/visual_debugger_handler.cc", - "devtools/protocol/visual_debugger_handler.h", - ] - } if (toolkit_views) { deps += [ "//ui/events" ] }
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index 397567a..92d746a 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -1476,6 +1476,10 @@ RunHtmlTest(FILE_PATH_LITERAL("br.html")); } +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityBRWithChild) { + RunHtmlTest(FILE_PATH_LITERAL("br-with-child.html")); +} + IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityButton) { RunHtmlTest(FILE_PATH_LITERAL("button.html")); } @@ -2733,6 +2737,11 @@ } IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, + AccessibilityTextareaChanges) { + RunHtmlTest(FILE_PATH_LITERAL("textarea-changes.html")); +} + +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityTextareaReadOnly) { RunHtmlTest(FILE_PATH_LITERAL("textarea-read-only.html")); }
diff --git a/content/browser/cross_origin_opener_policy_browsertest.cc b/content/browser/cross_origin_opener_policy_browsertest.cc index 852a2e70..215711db 100644 --- a/content/browser/cross_origin_opener_policy_browsertest.cc +++ b/content/browser/cross_origin_opener_policy_browsertest.cc
@@ -162,6 +162,7 @@ // Disabled: { features::kSharedArrayBuffer, + features::kSharedArrayBufferOnDesktop, features::kWebAssemblyThreads, }); } @@ -3059,6 +3060,7 @@ { // Disabled features::kSharedArrayBuffer, + features::kSharedArrayBufferOnDesktop, features::kWebAssemblyThreads, }); }
diff --git a/content/browser/devtools/BUILD.gn b/content/browser/devtools/BUILD.gn index ac10fe1..24749934 100644 --- a/content/browser/devtools/BUILD.gn +++ b/content/browser/devtools/BUILD.gn
@@ -2,7 +2,6 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//components/viz/common/debugger/viz_debugger.gni") import("//third_party/inspector_protocol/inspector_protocol.gni") import("//third_party/protobuf/proto_library.gni") import("//tools/grit/grit_rule.gni") @@ -39,41 +38,20 @@ } } -# Here we concatenate the viz_debugger.pdl into our browser protocol. -# This technique is nearly identical to what is done for cros_protocol.pdl in chrome/browser/devtools -_concatenated_protocol_path = - "$root_gen_dir/content/browser/devtools/protocol.json" -action("concatenate_protocols") { - script = "//third_party/inspector_protocol/concatenate_protocols.py" - deps = [ "//third_party/blink/public/devtools_protocol:protocol_version" ] - - _blink_protocol_path = - "$root_gen_dir/third_party/blink/public/devtools_protocol/protocol.json" - inputs = [ _blink_protocol_path ] - output_file = _concatenated_protocol_path - outputs = [ output_file ] - - args = [ rebase_path(_blink_protocol_path, root_build_dir) ] - if (use_viz_debugger) { - _visual_debugger_pdl = "//components/viz/common/debugger/viz_debugger.pdl" - inputs += [ _visual_debugger_pdl ] - args += [ rebase_path(_visual_debugger_pdl, root_build_dir) ] - } - - args += [ rebase_path(output_file, root_build_dir) ] -} - inspector_protocol_generate("protocol_sources") { visibility = [ "//content/browser" ] - deps = [ ":concatenate_protocols" ] + deps = [ "//third_party/blink/public/devtools_protocol:protocol_version" ] + _blink_protocol_path = rebase_path( + "$root_gen_dir/third_party/blink/public/devtools_protocol/protocol.json", + root_build_dir) + inspector_protocol_dir = "//third_party/inspector_protocol" out_dir = target_gen_dir config_file = "protocol_config.json" - protocol_path = rebase_path(_concatenated_protocol_path, root_build_dir) - config_values = [ "protocol.path=$protocol_path" ] + config_values = [ "protocol.path=$_blink_protocol_path" ] inputs = [ - _concatenated_protocol_path, + "$root_gen_dir/third_party/blink/public/devtools_protocol/protocol.json", config_file, ] @@ -133,13 +111,6 @@ "protocol/web_authn.cc", "protocol/web_authn.h", ] - - if (use_viz_debugger) { - outputs += [ - "protocol/visual_debugger.cc", - "protocol/visual_debugger.h", - ] - } } proto_library("devtools_background_services_proto") {
diff --git a/content/browser/devtools/browser_devtools_agent_host.cc b/content/browser/devtools/browser_devtools_agent_host.cc index cdad4cb9..55efb9d 100644 --- a/content/browser/devtools/browser_devtools_agent_host.cc +++ b/content/browser/devtools/browser_devtools_agent_host.cc
@@ -10,7 +10,6 @@ #include "base/memory/ptr_util.h" #include "base/no_destructor.h" #include "base/single_thread_task_runner.h" -#include "components/viz/common/buildflags.h" #include "content/browser/devtools/devtools_session.h" #include "content/browser/devtools/protocol/browser_handler.h" #include "content/browser/devtools/protocol/fetch_handler.h" @@ -25,10 +24,6 @@ #include "content/browser/devtools/protocol/tracing_handler.h" #include "content/browser/renderer_host/frame_tree_node.h" -#if BUILDFLAG(USE_VIZ_DEBUGGER) -#include "content/browser/devtools/protocol/visual_debugger_handler.h" -#endif - namespace content { scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::CreateForBrowser( @@ -86,9 +81,6 @@ session->AddHandler(std::make_unique<protocol::BrowserHandler>( session->GetClient()->MayWriteLocalFiles())); -#if BUILDFLAG(USE_VIZ_DEBUGGER) - session->AddHandler(std::make_unique<protocol::VisualDebuggerHandler>()); -#endif session->AddHandler(std::make_unique<protocol::IOHandler>(GetIOContext())); session->AddHandler(std::make_unique<protocol::FetchHandler>( GetIOContext(),
diff --git a/content/browser/devtools/protocol/visual_debugger_handler.cc b/content/browser/devtools/protocol/visual_debugger_handler.cc deleted file mode 100644 index e9b1b10..0000000 --- a/content/browser/devtools/protocol/visual_debugger_handler.cc +++ /dev/null
@@ -1,93 +0,0 @@ -// Copyright 2021 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/devtools/protocol/visual_debugger_handler.h" - -#include <string.h> -#include <algorithm> - -#include "base/bind_post_task.h" -#include "base/json/json_writer.h" -#include "base/values.h" -#include "build/build_config.h" -#include "content/browser/devtools/protocol/base_string_adapter.h" -#include "content/browser/gpu/gpu_process_host.h" -#include "content/public/browser/browser_context.h" -#include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/browser_thread.h" -#include "third_party/inspector_protocol/crdtp/json.h" - -namespace content { -namespace protocol { - -static const int sMaxJsonDepth = 1000; -VisualDebuggerHandler::VisualDebuggerHandler() - : DevToolsDomainHandler(VisualDebugger::Metainfo::domainName) {} - -VisualDebuggerHandler::~VisualDebuggerHandler() { - StopStream(); -} - -void VisualDebuggerHandler::Wire(UberDispatcher* dispatcher) { - frontend_ = std::make_unique<VisualDebugger::Frontend>(dispatcher->channel()); - VisualDebugger::Dispatcher::wire(dispatcher, this); -} - -DispatchResponse VisualDebuggerHandler::FilterStream( - std::unique_ptr<protocol::DictionaryValue> in_filter) { - std::unique_ptr<base::Value> dict = - toBaseValue(in_filter.get(), sMaxJsonDepth); - - GpuProcessHost::CallOnIO( - GPU_PROCESS_KIND_SANDBOXED, - /*force_create=*/false, - base::BindOnce( - [](base::Value json, GpuProcessHost* host) { - host->gpu_host()->FilterVisualDebugStream(std::move(json)); - }, - std::move(*dict.get()))); - - return DispatchResponse::Success(); -} - -DispatchResponse VisualDebuggerHandler::StartStream() { - enabled_ = true; - GpuProcessHost::CallOnIO( - GPU_PROCESS_KIND_SANDBOXED, - /*force_create=*/false, - base::BindOnce( - [](base::RepeatingCallback<void(base::Value)> callback, - GpuProcessHost* host) { - host->gpu_host()->StartVisualDebugStream(callback); - }, - base::BindPostTask( - base::ThreadTaskRunnerHandle::Get(), - base::BindRepeating(&VisualDebuggerHandler::OnFrameResponse, - weak_ptr_factory_.GetWeakPtr()), - FROM_HERE))); - return DispatchResponse::Success(); -} - -void VisualDebuggerHandler::OnFrameResponse(base::Value json) { - // This should be called via the 'BindPostTask' in 'StartStream' function - // above and thus should be in the correct thread. - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - std::unique_ptr<protocol::DictionaryValue> dict = - protocol::DictionaryValue::cast(toProtocolValue(&json, sMaxJsonDepth)); - frontend_->FrameResponse(std::move(dict)); -} - -DispatchResponse VisualDebuggerHandler::StopStream() { - if (enabled_) { - GpuProcessHost::CallOnIO(GPU_PROCESS_KIND_SANDBOXED, - /*force_create=*/false, - base::BindOnce([](GpuProcessHost* host) { - host->gpu_host()->StopVisualDebugStream(); - })); - } - enabled_ = false; - return DispatchResponse::Success(); -} -} // namespace protocol -} // namespace content
diff --git a/content/browser/devtools/protocol/visual_debugger_handler.h b/content/browser/devtools/protocol/visual_debugger_handler.h deleted file mode 100644 index cbfe9e4..0000000 --- a/content/browser/devtools/protocol/visual_debugger_handler.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2021 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_DEVTOOLS_PROTOCOL_VISUAL_DEBUGGER_HANDLER_H_ -#define CONTENT_BROWSER_DEVTOOLS_PROTOCOL_VISUAL_DEBUGGER_HANDLER_H_ - -#include "base/containers/flat_set.h" -#include "base/macros.h" -#include "base/memory/weak_ptr.h" -#include "content/browser/devtools/protocol/browser.h" -#include "content/browser/devtools/protocol/devtools_domain_handler.h" -#include "content/browser/devtools/protocol/visual_debugger.h" - -namespace content { -namespace protocol { - -class VisualDebuggerHandler : public DevToolsDomainHandler, - public VisualDebugger::Backend { - public: - VisualDebuggerHandler(); - ~VisualDebuggerHandler() override; - - private: - // DevToolsDomainHandler: - void Wire(UberDispatcher* dispatcher) override; - - DispatchResponse FilterStream( - std::unique_ptr<protocol::DictionaryValue> in_filter) override; - - DispatchResponse StartStream() override; - DispatchResponse StopStream() override; - - void OnFrameResponse(base::Value json); - - bool enabled_ = false; - std::unique_ptr<VisualDebugger::Frontend> frontend_; - base::WeakPtrFactory<VisualDebuggerHandler> weak_ptr_factory_{this}; -}; - -} // namespace protocol -} // namespace content - -#endif // CONTENT_BROWSER_DEVTOOLS_PROTOCOL_VISUAL_DEBUGGER_HANDLER_H_
diff --git a/content/browser/devtools/protocol/visual_debugger_handler_unittest.cc b/content/browser/devtools/protocol/visual_debugger_handler_unittest.cc deleted file mode 100644 index 0db88bd9..0000000 --- a/content/browser/devtools/protocol/visual_debugger_handler_unittest.cc +++ /dev/null
@@ -1,42 +0,0 @@ -// Copyright 2021 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 <stddef.h> -#include <memory> -#include <utility> - -#include "base/bind.h" -#include "base/callback_helpers.h" -#include "base/command_line.h" -#include "base/json/json_reader.h" -#include "base/system/sys_info.h" -#include "base/test/scoped_feature_list.h" -#include "base/values.h" -#include "build/build_config.h" -#include "content/browser/devtools/protocol/devtools_protocol_test_support.h" -#include "content/public/common/content_switches.h" -#include "content/public/common/url_constants.h" -#include "content/public/test/browser_test.h" -#include "content/public/test/browser_test_utils.h" -#include "content/public/test/content_browser_test_utils.h" - -namespace content { -IN_PROC_BROWSER_TEST_F(DevToolsProtocolTest, VisualDebuggerTest) { - set_agent_host_can_close(); - GURL url = GURL("data:text/html,<body></body>"); - NavigateToURLBlockUntilNavigationsComplete(shell(), url, 1); - Attach(); - SendCommand("VisualDebugger.startStream", nullptr, true); - WaitForNotification("VisualDebugger.frameResponse", true); - - std::unique_ptr<base::DictionaryValue> command_params = - std::make_unique<base::DictionaryValue>(); - auto filter_param = - std::string(R"({"filters":[{"selector":{"anno":""},"active":true}]})"); - command_params->SetString("json", filter_param); - SendCommand("VisualDebugger.filterStream", std::move(command_params), true); - SendCommand("VisualDebugger.stopStream", nullptr, true); -} - -} // namespace content
diff --git a/content/browser/devtools/protocol_config.json b/content/browser/devtools/protocol_config.json index 4ac51e5..9129e527 100644 --- a/content/browser/devtools/protocol_config.json +++ b/content/browser/devtools/protocol_config.json
@@ -105,11 +105,6 @@ "async": ["start", "getCategories", "requestMemoryDump"] }, { - "domain": "VisualDebugger", - "include": ["filterStream", "startStream", "stopStream"], - "include_events": ["frameResponse"] - }, - { "domain": "Fetch", "async": ["enable", "continueRequest", "failRequest", "fulfillRequest", "continueWithAuth", "getResponseBody", "takeResponseBodyAsStream"] },
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc index 40499c0..160a34f 100644 --- a/content/browser/devtools/render_frame_devtools_agent_host.cc +++ b/content/browser/devtools/render_frame_devtools_agent_host.cc
@@ -16,7 +16,6 @@ #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" -#include "components/viz/common/buildflags.h" #include "content/browser/bad_message.h" #include "content/browser/child_process_security_policy_impl.h" #include "content/browser/devtools/devtools_manager.h" @@ -73,10 +72,6 @@ #include "content/browser/devtools/protocol/webauthn_handler.h" #endif -#if BUILDFLAG(USE_VIZ_DEBUGGER) -#include "content/browser/devtools/protocol/visual_debugger_handler.h" -#endif - namespace content { namespace { @@ -306,9 +301,6 @@ session->AddHandler(std::make_unique<protocol::InspectorHandler>()); session->AddHandler(std::make_unique<protocol::IOHandler>(GetIOContext())); session->AddHandler(std::make_unique<protocol::MemoryHandler>()); -#if BUILDFLAG(USE_VIZ_DEBUGGER) - session->AddHandler(std::make_unique<protocol::VisualDebuggerHandler>()); -#endif if (!frame_tree_node_ || !frame_tree_node_->parent()) session->AddHandler(std::make_unique<protocol::OverlayHandler>()); session->AddHandler(std::make_unique<protocol::NetworkHandler>(
diff --git a/content/browser/renderer_host/input/scroll_latency_browsertest.cc b/content/browser/renderer_host/input/scroll_latency_browsertest.cc index b38023c..a43f4393 100644 --- a/content/browser/renderer_host/input/scroll_latency_browsertest.cc +++ b/content/browser/renderer_host/input/scroll_latency_browsertest.cc
@@ -546,8 +546,14 @@ RunScrollbarButtonLatencyTest(); } +// Crashes on Mac ASAN. https://crbug.com/1188553 +#if defined(OS_MAC) +#define MAYBE_ScrollbarThumbDragLatency DISABLED_ScrollbarThumbDragLatency +#else +#define MAYBE_ScrollbarThumbDragLatency ScrollbarThumbDragLatency +#endif IN_PROC_BROWSER_TEST_F(ScrollLatencyCompositedScrollbarBrowserTest, - ScrollbarThumbDragLatency) { + MAYBE_ScrollbarThumbDragLatency) { LoadURL(); RunScrollbarThumbDragLatencyTest();
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index 839bd7a..7dad76b4 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -655,7 +655,7 @@ // platforms. This flag is used only as a "kill switch" as we migrate towards // requiring 'crossOriginIsolated'. const base::Feature kSharedArrayBufferOnDesktop{ - "SharedArrayBufferOnDesktop", base::FEATURE_DISABLED_BY_DEFAULT}; + "SharedArrayBufferOnDesktop", base::FEATURE_ENABLED_BY_DEFAULT}; // Signed HTTP Exchange prefetch cache for navigations // https://crbug.com/968427
diff --git a/content/renderer/pepper/v8_var_converter.cc b/content/renderer/pepper/v8_var_converter.cc index 05d3226..9110d48 100644 --- a/content/renderer/pepper/v8_var_converter.cc +++ b/content/renderer/pepper/v8_var_converter.cc
@@ -323,6 +323,8 @@ v8::Context::Scope context_scope(context); v8::Isolate* isolate = context->GetIsolate(); v8::EscapableHandleScope handle_scope(isolate); + v8::MicrotasksScope microtasks_scope( + isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); VarHandleMap visited_ids; ParentVarSet parent_ids; @@ -475,7 +477,10 @@ v8::Local<v8::Context> context, ppapi::ScopedPPVar* result_var) { v8::Context::Scope context_scope(context); - v8::HandleScope handle_scope(context->GetIsolate()); + v8::Isolate* isolate = context->GetIsolate(); + v8::HandleScope handle_scope(isolate); + v8::MicrotasksScope microtasks_scope( + isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); HandleVarMap visited_handles; ParentHandleSet parent_handles; @@ -573,8 +578,7 @@ // Extend this test to cover more types as necessary and if sensible. if (!key->IsString() && !key->IsNumber()) { - NOTREACHED() << "Key \"" - << *v8::String::Utf8Value(context->GetIsolate(), key) + NOTREACHED() << "Key \"" << *v8::String::Utf8Value(isolate, key) << "\" " "is neither a string nor a number"; return false; @@ -588,7 +592,7 @@ continue; } - v8::String::Utf8Value name_utf8(context->GetIsolate(), key_string); + v8::String::Utf8Value name_utf8(isolate, key_string); v8::Local<v8::Value> child_v8; if (!v8_object->Get(context, key).ToLocal(&child_v8))
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 88ff040c..b35c0f9 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -1060,7 +1060,6 @@ "../browser/devtools/protocol/devtools_protocol_browsertest.cc", "../browser/devtools/protocol/devtools_protocol_test_support.cc", "../browser/devtools/protocol/devtools_protocol_test_support.h", - "../browser/devtools/protocol/visual_debugger_handler_unittest.cc", "../browser/devtools/render_frame_devtools_agent_host_browsertest.cc", "../browser/devtools/site_per_process_devtools_browsertest.cc", "../browser/display_cutout/display_cutout_browsertest.cc",
diff --git a/content/test/data/accessibility/html/br-with-child-expected-blink.txt b/content/test/data/accessibility/html/br-with-child-expected-blink.txt new file mode 100644 index 0000000..95a35e05 --- /dev/null +++ b/content/test/data/accessibility/html/br-with-child-expected-blink.txt
@@ -0,0 +1,10 @@ +rootWebArea +++genericContainer ignored +++++genericContainer ignored +++++++paragraph +++++++++staticText name='Text line 1' +++++++++++inlineTextBox name='Text line 1' +++++++++lineBreak name='<newline>' +++++++++++inlineTextBox name='<newline>' +++++++++staticText name='Text line 2' +++++++++++inlineTextBox name='Text line 2'
diff --git a/content/test/data/accessibility/html/br-with-child.html b/content/test/data/accessibility/html/br-with-child.html new file mode 100644 index 0000000..645576e --- /dev/null +++ b/content/test/data/accessibility/html/br-with-child.html
@@ -0,0 +1,12 @@ +<!DOCTYPE html> +<!-- Test that content appended as a <br>'s child is not in AX tree. --> +<html> +<body> +<p>Text line 1<br>Text line 2</p> +</body> +<script> + document.querySelector('br').appendChild(document.createElement('p')); + document.querySelector('br > p').appendChild(document.createTextNode('not shown')); + document.querySelector('br > p').appendChild(document.createTextNode('more')); +</script> +</html>
diff --git a/content/test/data/accessibility/html/textarea-changes-expected-blink.txt b/content/test/data/accessibility/html/textarea-changes-expected-blink.txt new file mode 100644 index 0000000..ef9cf85 --- /dev/null +++ b/content/test/data/accessibility/html/textarea-changes-expected-blink.txt
@@ -0,0 +1,7 @@ +rootWebArea name='done' +++genericContainer ignored +++++genericContainer +++++++textField multiline value='xyz' +++++++++genericContainer +++++++++++staticText name='xyz' +++++++++++++inlineTextBox name='xyz'
diff --git a/content/test/data/accessibility/html/textarea-changes.html b/content/test/data/accessibility/html/textarea-changes.html new file mode 100644 index 0000000..7c98a923 --- /dev/null +++ b/content/test/data/accessibility/html/textarea-changes.html
@@ -0,0 +1,38 @@ +<!-- +@WAIT-FOR:done +--> +<html> +<head> + + <style> + @font-face { + font-family: 'Ahem'; + src: local('Ahem'), + url('../../font/Ahem.ttf'); + } + .textarea-width { + font-size: 50ch; + font-family: "Ahem"; + letter-spacing: 1ch; + } + </style> +</head> +<body> + <textarea class="textarea-width"></textarea> +</body> +<script> +document.addEventListener('DOMContentLoaded', () => { + setTimeout(() => { + const textarea = document.querySelector('textarea'); + textarea.role = 'textbox'; + textarea.innerText = 'xyz'; + const paragraph = document.createElement('p'); + paragraph.innerText ='abc'; + textarea.appendChild(paragraph); + document.title = 'done'; + }, 150); +}); +</script> + +</body> +</html>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb index 2477cff..a5a5783f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_az.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -204,6 +204,7 @@ <translation id="3081338492074632642">Yadda saxlanılan parolun <ph name="WEBSITE" /> paroluna uyğun olduğuna əmin olun</translation> <translation id="3112556859945124369">Qeyd edin...</translation> <translation id="3131206671572504478">Hamısını blok edin</translation> +<translation id="313283613037595347">Yeni Anonim tab yaradın.</translation> <translation id="3153862085237805241">Kartı Yadda saxlayın</translation> <translation id="3157387275655328056">Oxu Siyahısına əlavə edin</translation> <translation id="3157684681743766797">Hamısını Qeyd Edin…</translation> @@ -498,6 +499,7 @@ <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} Tabı bağlayın}other{{COUNT} Tabı bağlayın}}</translation> <translation id="6219688215832490856">Heç Vaxt Tərcümə Etməyin</translation> <translation id="6223816392543092032">Bütün cihazlarınızda əlfəcin, tarixçə, parol və digər ayarları əldə edin.</translation> +<translation id="6232329973559504466">Anonim Axtarış</translation> <translation id="6254066287920239840">Linkləri brauzer əvəzinə tətbiqdə açın</translation> <translation id="6255097610484507482">Kredit Kartına Düzəliş edin</translation> <translation id="6284652193729350524"><ph name="LANGUAGE" /> dilindən tərcümə etməyi təklif edin</translation> @@ -562,6 +564,9 @@ <translation id="6656103420185847513">Qovluğa düzəliş edin</translation> <translation id="6657585470893396449">Parol</translation> <translation id="6668619169535738264">Əlfəcinə düzəliş edin</translation> +<translation id="6672241253012342409">Saytlar baxış təcrübənizi yaxşılaşdırmaq üçün, məsələn, sizi daxil olmuş vəziyyətdə saxlamaq və ya alış-veriş səbətinizdəki elementləri yadda saxlamaq üçün kukilərdən istifadə edə bilər. + +Anonim rejimdə olduqda saytlar müxtəlif saytlarda baxış tarixçənizi görmək üçün kukilərinizdən istifadə edə bilmir (məsələn, reklamları fərdiləşdirmək üçün).</translation> <translation id="6674571176963658787">Sinxronizasiyanı başlatmaq üçün parol ifadənizi daxil edin</translation> <translation id="667999046851023355">Sənəd</translation> <translation id="6691331417640343772">Google İdarə panelində sinxronizasiya olunmuş datanı idarə edin</translation> @@ -573,6 +578,7 @@ <translation id="6780034285637185932">Poçt İndeksi</translation> <translation id="6785453220513215166">Qəza haqqında hesabat göndərilir...</translation> <translation id="6797885426782475225">Səsli Axtarış</translation> +<translation id="6801927553864092214">Məxfi axtarış etmək üçün Anonim tab açın</translation> <translation id="6807889908376551050">Hamısını göstərin...</translation> <translation id="681368974849482173">Element yaradılmışdır</translation> <translation id="6831043979455480757">Tərcümə et</translation> @@ -715,6 +721,7 @@ <translation id="8281886186245836920">Keçin</translation> <translation id="8283172974887967105">Ayarlayın:</translation> <translation id="8299417921174340354">Parollardan istifadə etmək üçün əvvəlcə cihazınızda parol ayarlamalısınız.</translation> +<translation id="8299613349954694191">Vebə məxfi olaraq axtarış etmək üçün Anonim tab açın.</translation> <translation id="83100941411593607">Giriş deaktiv edilib</translation> <translation id="8319076807703933069">Yeni Axtarış</translation> <translation id="8323906514956095947">Əlavə tab seçimləri üçün basıb saxlayın</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bg.xtb b/ios/chrome/app/strings/resources/ios_strings_bg.xtb index 1d7af19..fba31e5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bg.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bg.xtb
@@ -204,6 +204,7 @@ <translation id="3081338492074632642">Уверете се, че запазваната парола съвпада с тази за <ph name="WEBSITE" /></translation> <translation id="3112556859945124369">Означаване…</translation> <translation id="3131206671572504478">Блокиране на всички</translation> +<translation id="313283613037595347">Създаване на нов раздел в режим „инкогнито“.</translation> <translation id="3153862085237805241">Запазване на картата</translation> <translation id="3157387275655328056">Добавяне към списъка за четене</translation> <translation id="3157684681743766797">Означаване на всички…</translation> @@ -498,6 +499,7 @@ <translation id="6202364442240589072">{COUNT,plural, =1{Затваряне на {COUNT} раздел}other{Затваряне на {COUNT} раздела}}</translation> <translation id="6219688215832490856">Никога да не се превежда</translation> <translation id="6223816392543092032">Получете отметките, историята, паролите и другите си настройки на всичките си устройства.</translation> +<translation id="6232329973559504466">Търсене в режим „инкогнито“</translation> <translation id="6254066287920239840">Отваряне на връзките в приложението вместо в браузъра.</translation> <translation id="6255097610484507482">Редактиране на кредитната карта</translation> <translation id="6284652193729350524">Предлагане на превод от <ph name="LANGUAGE" /></translation> @@ -562,6 +564,9 @@ <translation id="6656103420185847513">Редактиране на папката</translation> <translation id="6657585470893396449">Парола</translation> <translation id="6668619169535738264">Редактиране на отметката</translation> +<translation id="6672241253012342409">Сайтовете могат да използват „бисквитки“ с цел по-добро сърфиране, например за да оставате в профила си или за да запомнят артикулите в пазарската ви кошница. + +Докато сте в режим „инкогнито“, сайтовете не могат да използват „бисквитки“, за да следят активността ви при сърфиране в различни сайтове, например с цел персонализиране на реклами.</translation> <translation id="6674571176963658787">За да стартирате синхронизирането, въведете пропуска си</translation> <translation id="667999046851023355">Документ</translation> <translation id="6691331417640343772">Управление на синхронизираните данни чрез Google Табло за управление</translation> @@ -573,6 +578,7 @@ <translation id="6780034285637185932">Пощенски код</translation> <translation id="6785453220513215166">Сигналите за сривове се изпращат...</translation> <translation id="6797885426782475225">Гласово търсене</translation> +<translation id="6801927553864092214">За да сърфирате частно, отворете раздел в режим „инкогнито“</translation> <translation id="6807889908376551050">Показване на всички...</translation> <translation id="681368974849482173">Елементът е създаден</translation> <translation id="6831043979455480757">Превод</translation> @@ -715,6 +721,7 @@ <translation id="8281886186245836920">Пропускане</translation> <translation id="8283172974887967105">Задаване…</translation> <translation id="8299417921174340354">За да използвате паролите, трябва първо да зададете код за достъп на устройството си.</translation> +<translation id="8299613349954694191">Отворете раздел в режим „инкогнито“, за да сърфирате частно в мрежата.</translation> <translation id="83100941411593607">Влизането е деактивирано</translation> <translation id="8319076807703933069">Ново търсене</translation> <translation id="8323906514956095947">Докоснете и задръжте, за да видите още опции за разделите</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb index a34e51e..06b4edc 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -204,6 +204,7 @@ <translation id="3081338492074632642">Tiyaking tumutugma ang password na sine-save mo sa iyong password para sa <ph name="WEBSITE" /></translation> <translation id="3112556859945124369">Markahan…</translation> <translation id="3131206671572504478">I-block Lahat</translation> +<translation id="313283613037595347">Gumawa ng bagong tab na Incognito.</translation> <translation id="3153862085237805241">I-save ang Card</translation> <translation id="3157387275655328056">Idagdag sa Listahan ng Babasahin</translation> <translation id="3157684681743766797">Markahan Lahat...</translation> @@ -498,6 +499,7 @@ <translation id="6202364442240589072">{COUNT,plural, =1{Isara ang {COUNT} Tab}one{Isara ang {COUNT} Tab}other{Isara ang {COUNT} na Tab}}</translation> <translation id="6219688215832490856">Huwag Kailanman I-translate</translation> <translation id="6223816392543092032">Kunin ang iyong mga bookmark, history, password, at iba pang setting sa lahat ng device mo.</translation> +<translation id="6232329973559504466">Paghahanap na Incognito</translation> <translation id="6254066287920239840">Buksan ang mga link sa app sa halip na sa browser.</translation> <translation id="6255097610484507482">I-edit ang Credit Card</translation> <translation id="6284652193729350524">Mag-alok na isalin ang <ph name="LANGUAGE" /></translation> @@ -562,6 +564,9 @@ <translation id="6656103420185847513">I-edit ang Folder</translation> <translation id="6657585470893396449">Password</translation> <translation id="6668619169535738264">I-edit ang Bookmark</translation> +<translation id="6672241253012342409">Puwedeng gumamit ng cookies ang mga site para pahusayin ang iyong karanasan sa pag-browse, halimbawa, para mapanatili kang naka-sign in o para maalala ang mga item sa shopping cart mo. + +Habang nasa Incognito, hindi magagamit ng mga site ang cookies para makita ang iyong aktibidad sa pag-browse sa iba't ibang site, halimbawa, para mag-personalize ng mga ad.</translation> <translation id="6674571176963658787">Para simulan ang pag-sync, ilagay ang iyong passphrase</translation> <translation id="667999046851023355">Dokumento</translation> <translation id="6691331417640343772">Pamahalaan ang naka-sync na data sa Google Dashboard</translation> @@ -573,6 +578,7 @@ <translation id="6780034285637185932">Zip Code</translation> <translation id="6785453220513215166">Nagpapadala ng ulat sa pag-crash...</translation> <translation id="6797885426782475225">Paghahanap Gamit ang Boses</translation> +<translation id="6801927553864092214">Para mag-browse nang pribado, magbukas ng tab na Incognito</translation> <translation id="6807889908376551050">Ipakita Lahat...</translation> <translation id="681368974849482173">Nagawa ang item</translation> <translation id="6831043979455480757">Isalin</translation> @@ -715,6 +721,7 @@ <translation id="8281886186245836920">Laktawan</translation> <translation id="8283172974887967105">Itakda…</translation> <translation id="8299417921174340354">Para gumamit ng mga password, dapat ka munang magtakda ng passcode sa iyong device.</translation> +<translation id="8299613349954694191">Magbukas ng tab na Incognito para pribadong i-browse ang web.</translation> <translation id="83100941411593607">Naka-disable ang Pag-sign In</translation> <translation id="8319076807703933069">Bagong Paghahanap</translation> <translation id="8323906514956095947">Pindutin nang matagal para sa higit pang opsyon sa tab</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_iw.xtb b/ios/chrome/app/strings/resources/ios_strings_iw.xtb index 3c643b5..4c049edc 100644 --- a/ios/chrome/app/strings/resources/ios_strings_iw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_iw.xtb
@@ -204,6 +204,7 @@ <translation id="3081338492074632642">יש לוודא שהסיסמה שנשמרת זהה לסיסמה שלך עבור <ph name="WEBSITE" />.</translation> <translation id="3112556859945124369">סימון…</translation> <translation id="3131206671572504478">חסימת כל קובצי ה-cookie</translation> +<translation id="313283613037595347">יצירת כרטיסיית מצב אנונימי חדשה.</translation> <translation id="3153862085237805241">שמירת כרטיס</translation> <translation id="3157387275655328056">הוסף לרשימת הקריאה</translation> <translation id="3157684681743766797">סימון הכול…</translation> @@ -498,6 +499,7 @@ <translation id="6202364442240589072">{COUNT,plural, =1{סגירת כרטיסייה אחת ({COUNT})}two{סגירת {COUNT} כרטיסיות}many{סגירת {COUNT} כרטיסיות}other{סגירת {COUNT} כרטיסיות}}</translation> <translation id="6219688215832490856">לא לתרגם אף פעם</translation> <translation id="6223816392543092032">קבלת הסימניות, ההיסטוריה, הסיסמאות והגדרות נוספות בכל המכשירים.</translation> +<translation id="6232329973559504466">חיפוש במצב אנונימי</translation> <translation id="6254066287920239840">פתיחת קישורים באפליקציה ולא בדפדפן.</translation> <translation id="6255097610484507482">עריכת כרטיס אשראי</translation> <translation id="6284652193729350524">הצגת הצעה לתרגום <ph name="LANGUAGE" /></translation> @@ -562,6 +564,9 @@ <translation id="6656103420185847513">עריכת תיקייה</translation> <translation id="6657585470893396449">סיסמה</translation> <translation id="6668619169535738264">עריכת סימנייה</translation> +<translation id="6672241253012342409">אתרים יכולים להשתמש בקובצי cookie כדי לשפר את חוויית הגלישה – למשל כדי למנוע ניתוק שלך מהחשבון או כדי לשמור את הפריטים שהוספת לעגלת הקניות. + +במצב אנונימי אתרים לא יכולים להשתמש בקובצי cookie כדי לקבל מידע על פעילות הגלישה שלך באתרים שונים – למשל כדי להציג מודעות בהתאמה אישית.</translation> <translation id="6674571176963658787">כדי להתחיל לסנכרן צריך להזין את ביטוי הסיסמה</translation> <translation id="667999046851023355">מסמך</translation> <translation id="6691331417640343772">ניהול נתונים מסוכרנים במרכז השליטה של Google</translation> @@ -573,6 +578,7 @@ <translation id="6780034285637185932">מיקוד</translation> <translation id="6785453220513215166">שליחת דוח קריסה מתבצעת...</translation> <translation id="6797885426782475225">חיפוש קולי</translation> +<translation id="6801927553864092214">כדי לגלוש באופן פרטי יש לפתוח כרטיסיית מצב אנונימי</translation> <translation id="6807889908376551050">הצגת הכול...</translation> <translation id="681368974849482173">הפריט נוצר</translation> <translation id="6831043979455480757">תרגום</translation> @@ -715,6 +721,7 @@ <translation id="8281886186245836920">דילוג</translation> <translation id="8283172974887967105">להגדרה…</translation> <translation id="8299417921174340354">כדי שניתן יהיה להשתמש בסיסמאות, יש להגדיר תחילה קוד גישה במכשיר.</translation> +<translation id="8299613349954694191">אפשר לפתוח כרטיסיית מצב אנונימי כדי לגלוש בפרטיות באינטרנט.</translation> <translation id="83100941411593607">אפשרות הכניסה מושבתת</translation> <translation id="8319076807703933069">חיפוש חדש</translation> <translation id="8323906514956095947">לחיצה ארוכה תציג אפשרויות נוספות של כרטיסיות</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb index 08614b2..63b8de0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -204,6 +204,7 @@ <translation id="3081338492074632642">დარწმუნდით, რომ პაროლი, რომლის შენახვასაც აპირებთ, ემთხვევა <ph name="WEBSITE" />-ის პაროლს</translation> <translation id="3112556859945124369">მონიშვნა…</translation> <translation id="3131206671572504478">ყველას დაბლოკვა</translation> +<translation id="313283613037595347">ახალი ინკოგნიტო ჩანართის შექმნა.</translation> <translation id="3153862085237805241">ბარათის შენახვა</translation> <translation id="3157387275655328056">საკითხავ სიაში დამატება</translation> <translation id="3157684681743766797">ყველას მონიშვნა…</translation> @@ -498,6 +499,7 @@ <translation id="6202364442240589072">{COUNT,plural, =1{{COUNT} ჩანართის დახურვა}other{{COUNT} ჩანართის დახურვა}}</translation> <translation id="6219688215832490856">არასოდეს ითარგმნოს</translation> <translation id="6223816392543092032">იქონიეთ წვდომა თქვენს სანიშნეებზე, ისტორიაზე, პაროლებსა და სხვა პარამეტრებზე თქვენი ყველა მოწყობილობიდან.</translation> +<translation id="6232329973559504466">ინკოგნიტო ძიება</translation> <translation id="6254066287920239840">ბმულების, ბრაუზერის ნაცვლად, აპში გახსნა.</translation> <translation id="6255097610484507482">საკრედიტო ბარათის რედაქტირება</translation> <translation id="6284652193729350524"><ph name="LANGUAGE" /> ენის თარგმნის შემოთავაზება</translation> @@ -562,6 +564,9 @@ <translation id="6656103420185847513">საქაღალდის რედაქტირება</translation> <translation id="6657585470893396449">პაროლი</translation> <translation id="6668619169535738264">სანიშნის რედაქტირება</translation> +<translation id="6672241253012342409">საიტებს შეუძლია ქუქი-ჩანაწერების გამოყენება ვების დათვალიერების პროცესის გასაუმჯობესებლად, მაგალითად, სისტემაში შესული მდგომარეობის შესანარჩუნებლად ან საყიდლების კალათაში დამატებული ერთეულების დასამახსოვრებლად. + +ინკოგნიტო რეჟიმში საიტებს არ შეუძლია თქვენი ქუქი-ჩანაწერების გამოყენება სხვადასხვა საიტის თქვენ მიერ დათვალიერების აქტივობის სანახავად, მაგალითად, რეკლამის თქვენზე მოსარგებად.</translation> <translation id="6674571176963658787">სინქრონიზაციის დასაწყებად შეიყვანეთ თქვენი საიდუმლო ფრაზა</translation> <translation id="667999046851023355">დოკუმენტი</translation> <translation id="6691331417640343772">სინქრონიზებული მონაცემების მართვა Google Dashboard-ში</translation> @@ -573,6 +578,7 @@ <translation id="6780034285637185932">საფოსტო კოდი</translation> <translation id="6785453220513215166">შეცდომების შესახებ მოხსენების გაგზავნა…</translation> <translation id="6797885426782475225">ხმოვანი ძიება</translation> +<translation id="6801927553864092214">ვების კონფიდენციალურად დასათვალიერებლად გახსენით ინკოგნიტო ჩანართი</translation> <translation id="6807889908376551050">ყველას ჩვენება…</translation> <translation id="681368974849482173">ელემენტი შექმნილია</translation> <translation id="6831043979455480757">თარგმნა</translation> @@ -715,6 +721,7 @@ <translation id="8281886186245836920">გამოტოვება</translation> <translation id="8283172974887967105">დაყენება…</translation> <translation id="8299417921174340354">პაროლების გამოსაყენებლად, პირველ რიგში, საჭიროა საიდუმლო კოდის დაყენება თქვენს მოწყობილობაზე.</translation> +<translation id="8299613349954694191">ვების კონფიდენციალურად დასათვალიერებლად გახსენით ინკოგნიტო ჩანართი.</translation> <translation id="83100941411593607">შესვლა გათიშულია</translation> <translation id="8319076807703933069">ახალი ძიება</translation> <translation id="8323906514956095947">ჩანართებთან დაკავშირებული სხვა ვარიანტების სანახავად შეეხეთ ხანგრძლივად</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ne.xtb b/ios/chrome/app/strings/resources/ios_strings_ne.xtb index 07ff275e..0dd7a5eb 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ne.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ne.xtb
@@ -83,6 +83,7 @@ <translation id="1687475363370981210">सबै पढिसकिएको भनी चिन्ह लगाउनुहोस्</translation> <translation id="1689333818294560261">उपनाम</translation> <translation id="1690731385917361335">कुनै वस्तुहरू छैन</translation> +<translation id="1691390244342876227">Chrome ले तपाईंको जानकारी पुष्टि गर्न सकेन</translation> <translation id="1692118695553449118">सिंक खुला छ</translation> <translation id="1700629756560807968"><ph name="NUMBER_OF_SELECTED_BOOKMARKS" /> चयन गरियो</translation> <translation id="1740468249224277719">स्थापना गर्न डबल ट्याप गर्नुहोस्।</translation> @@ -271,7 +272,7 @@ <translation id="3740397331642243698">प्रविष्टि गरिएका URL हरू Google Chrome को इन्कोग्निटो मोडमा खोलिन्छ।</translation> <translation id="3771033907050503522">इन्कग्निटो ट्याबहरू</translation> <translation id="3775743491439407556">सिंक गर्ने सुविधाले काम गरिरहेको छैन</translation> -<translation id="3779810277399252432">कुनै इन्टरनेट जडान छैन</translation> +<translation id="3779810277399252432">इन्टरनेट छैन</translation> <translation id="3783017676699494206">छवि सेभ गर्नुहोस्</translation> <translation id="3789841737615482174">स्थापना गर्नुहोस्</translation> <translation id="3803696231112616155">यो साइट अनुवाद गर्ने प्रस्ताव गर्नुहोस्</translation> @@ -348,6 +349,8 @@ तपाईँको डेटालाई तपाईँको सिंकको पासफ्रेजमार्फत इन्क्रिप्ट गरिएको छ। सिंक सुरु गर्न त्यो पासफ्रेज प्रविष्टि गर्नुहोस्।</translation> <translation id="4689564913179979534">भुक्तानी विधिहरूको व्यवस्थापन गर्नुहोस्...</translation> +<translation id="4704093130121805775">आफ्ना विभिन्न डिभाइसहरूमा डेटा सिंक गर्नुहोस्</translation> +<translation id="470966556546083668">सिंक गर्ने सुविधा अन नगरियोस्</translation> <translation id="473775607612524610">अपडेट गर्नुहोस्</translation> <translation id="4747097190499141774">पासफ्रेजमार्फत इन्क्रिप्सन गर्ने कार्यअन्तर्गत Google Pay का भुक्तानी विधि र ठेगानाहरू समावेश हुँदैनन्। तपाईंको पासफ्रेज थाहा हुने व्यक्तिले मात्र तपाईंको इन्क्रिप्ट गरिएको डेटा पढ्न सक्छ। उक्त पासफ्रेज Google मा पठाइँदैन वा त्यहाँ भण्डारण गरिँदैन। तपाईंले आफ्नो पासफ्रेज बिर्सनुभयो वा तपाईं यो सेटिङ परिवर्तन गर्न चाहनुहुन्छ भने तपाईंले सिंक रिसेट गर्नु पर्ने हुन्छ। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation> <translation id="4751645464639803239">नयाँ इन्कोग्निटो ट्याब</translation> @@ -509,6 +512,7 @@ <translation id="6342069812937806050">अहिले भर्खर</translation> <translation id="6344783595350022745">पाठ खाली गर्नुहोस्</translation> <translation id="6346549652287021269">नयाँ डाउनलोड सुरु गर्ने हो?</translation> +<translation id="634878792104344809">आफ्ना सबै डिभाइसहरूमा तपाईंका बुकमार्क, पासवर्ड, इतिहास र अन्य कुराहरू सिंक गर्नुहोस्</translation> <translation id="6362362396625799311">कुनै इन्कोग्निटो ट्याबहरू छैनन्</translation> <translation id="6363526231572697780">युजरनेम नामक क्षेत्रमा कुनै पनि नाम छैन</translation> <translation id="6374469231428023295">फेरि प्रयास गर्नुहोस्</translation> @@ -750,6 +754,7 @@ <translation id="8680787084697685621">खाता साइन-इन विवरणहरूको समय समाप्त भएको छ।</translation> <translation id="8706588385081740091">पासवर्डहरू</translation> <translation id="8717864919010420084">लिंक प्रतिलिपि गर्नुहोस्</translation> +<translation id="8721206573513844242">माफ गर्नुहोला, हामीले तपाईंका युजरनेम, पासवर्ड आदि पुष्टि गर्न सकेनौँ</translation> <translation id="8721297211384281569">उपकरणहरू मेनु</translation> <translation id="8725066075913043281">पुन: प्रयास गर्नुहोस्</translation> <translation id="8730621377337864115">गरियो</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index 15d25bc9..45a3906 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -204,6 +204,7 @@ <translation id="3081338492074632642">Geslo, ki ga želite shraniti, se mora ujemati z geslom za <ph name="WEBSITE" />.</translation> <translation id="3112556859945124369">Označi …</translation> <translation id="3131206671572504478">Blokiraj vse</translation> +<translation id="313283613037595347">Ustvarjanje novega anonimnega zavihka</translation> <translation id="3153862085237805241">Shranjevanje kartice</translation> <translation id="3157387275655328056">Dodaj na bralni seznam</translation> <translation id="3157684681743766797">Označi vse …</translation> @@ -498,6 +499,7 @@ <translation id="6202364442240589072">{COUNT,plural, =1{Zapri {COUNT} zavihek}one{Zapri {COUNT} zavihek}two{Zapri {COUNT} zavihka}few{Zapri {COUNT} zavihke}other{Zapri {COUNT} zavihkov}}</translation> <translation id="6219688215832490856">Nikoli ne prevedi</translation> <translation id="6223816392543092032">Dostopajte do zaznamkov, zgodovine, gesel in drugih nastavitev v vseh napravah.</translation> +<translation id="6232329973559504466">Anonimno iskanje</translation> <translation id="6254066287920239840">Povezave namesto v brskalniku odpri v aplikaciji.</translation> <translation id="6255097610484507482">Urejanje kreditne kartice</translation> <translation id="6284652193729350524">Ponudi prevajanje iz jezika <ph name="LANGUAGE" /></translation> @@ -562,6 +564,9 @@ <translation id="6656103420185847513">Urejanje mape</translation> <translation id="6657585470893396449">Geslo</translation> <translation id="6668619169535738264">Uredi zaznamek</translation> +<translation id="6672241253012342409">Spletna mesta lahko uporabljajo piškotke za izboljšanje izkušnje brskanja, na primer tako, da poskrbijo, da ostanete prijavljeni, ali si zapomnijo izdelke v nakupovalnem vozičku. + +Ko uporabljate anonimni način, spletna mesta ne smejo uporabljati piškotkov za ogled dejavnosti brskanja na različnih spletnih mestih, na primer za osebno prilagajanje oglasov.</translation> <translation id="6674571176963658787">Če želite začeti sinhronizacijo, vnesite geslo.</translation> <translation id="667999046851023355">Dokument</translation> <translation id="6691331417640343772">Upravljanje sinhroniziranih podatkov na Google Nadzorni plošči</translation> @@ -573,6 +578,7 @@ <translation id="6780034285637185932">Poštna številka</translation> <translation id="6785453220513215166">Pošiljanje poročila o zrušitvi ...</translation> <translation id="6797885426782475225">Glasovno iskanje</translation> +<translation id="6801927553864092214">Če želite zasebno brskati, odprite anonimni zavihek.</translation> <translation id="6807889908376551050">Pokaži vse ...</translation> <translation id="681368974849482173">Item created</translation> <translation id="6831043979455480757">Prevedi</translation> @@ -715,6 +721,7 @@ <translation id="8281886186245836920">Preskoči</translation> <translation id="8283172974887967105">Nastavi …</translation> <translation id="8299417921174340354">Če želite uporabiti gesla, morate najprej nastaviti geslo v napravi.</translation> +<translation id="8299613349954694191">Odpiranje anonimnega zavihka za zasebno brskanje po spletu.</translation> <translation id="83100941411593607">Prijava je onemogočena</translation> <translation id="8319076807703933069">Novo iskanje</translation> <translation id="8323906514956095947">Pridržite za več možnosti zavihkov</translation>
diff --git a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.mm b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.mm index 46a28fc..72f36ac 100644 --- a/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.mm +++ b/ios/chrome/browser/ui/send_tab_to_self/send_tab_to_self_table_view_controller.mm
@@ -6,6 +6,7 @@ #include "base/check.h" #include "base/mac/foundation_util.h" +#include "base/metrics/histogram_functions.h" #include "base/strings/string_number_conversions.h" #include "base/strings/sys_string_conversions.h" #include "components/send_tab_to_self/send_tab_to_self_model.h" @@ -36,6 +37,21 @@ NSString* const kSendTabToSelfModalSendButton = @"kSendTabToSelfModalSendButton"; +// Per histograms.xml this records whether the user has clicked the item when it +// is shown. +const char kClickResultHistogramName[] = "SendTabToSelf.ShareMenu.ClickResult"; + +// TODO(crbug.com/970886): Move to a directory accessible on all platforms. +// State of the send tab to self option in the context menu. +// These values are persisted to logs. Entries should not be renumbered and +// numeric values should never be reused. +enum class SendTabToSelfClickResult { + kShowItem = 0, + kClickItem = 1, + kShowDeviceList = 2, + kMaxValue = kShowDeviceList, +}; + } // namespace typedef NS_ENUM(NSInteger, SectionIdentifier) { @@ -206,6 +222,8 @@ #pragma mark - Helpers - (void)sendTabWhenPressed:(UIButton*)sender { + base::UmaHistogramEnumeration(kClickResultHistogramName, + SendTabToSelfClickResult::kClickItem); [self.delegate sendTabToTargetDeviceCacheGUID:self.selectedItem.cacheGuid targetDeviceName:self.selectedItem.text]; [self.delegate dismissViewControllerAnimated:YES completion:nil];
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_az.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_az.xtb index bcb584a..4bf48d3 100644 --- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_az.xtb +++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_az.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="az"> <translation id="2542770169955243077">Chrome Dinozavr Oyunu</translation> <translation id="302608144225178783">Əsas Ekrandan Chrome Dinozavr oyununa keçin.</translation> +<translation id="3464120926993669599">Anonim Axtarış</translation> <translation id="3528874492835415837">Axtarış edin və ya URL'i yazın</translation> <translation id="405442954313519726">Səsiniz və ya QR kodu ilə yeni tabda Anonim rejimdə axtarış və ya naviqasiya edin.</translation> <translation id="4954445889641385956">Axtarış edin və ya URL'i yazın</translation>
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_bg.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_bg.xtb index e3a9577..03f48d7 100644 --- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_bg.xtb +++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_bg.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="bg"> <translation id="2542770169955243077">Играта с динозавъра в Chrome</translation> <translation id="302608144225178783">Влизайте в играта с динозавъра в Chrome направо от началния си екран.</translation> +<translation id="3464120926993669599">Търсене в режим „инкогнито“</translation> <translation id="3528874492835415837">Търсете или въведете URL адрес</translation> <translation id="405442954313519726">Търсете или навигирайте в нов раздел, в режим „инкогнито“, като ползвате гласа си или чрез QR код.</translation> <translation id="4954445889641385956">Търсете или въведете URL адрес</translation>
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_fil.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_fil.xtb index 6f59482..6089aa5 100644 --- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_fil.xtb +++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_fil.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="fil"> <translation id="2542770169955243077">Larong Chrome Dino</translation> <translation id="302608144225178783">Pumunta sa larong Chrome Dino mula sa iyong Home Screen.</translation> +<translation id="3464120926993669599">Paghahanap na Incognito</translation> <translation id="3528874492835415837">Maghanap o Mag-type ng URL</translation> <translation id="405442954313519726">Maghanap o mag-navigate sa bagong tab, sa Incognito mode, gamit ang iyong boses, o gamit ang isang QR code.</translation> <translation id="4954445889641385956">Maghanap o mag-type ng URL</translation>
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_iw.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_iw.xtb index 3fb64a85..c2e34dd 100644 --- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_iw.xtb +++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_iw.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="iw"> <translation id="2542770169955243077">משחק Chrome Dino</translation> <translation id="302608144225178783">אפשר לעבור היישר למשחק Chrome Dino ממסך הבית.</translation> +<translation id="3464120926993669599">חיפוש במצב אנונימי</translation> <translation id="3528874492835415837">ניתן לחפש או להזין כתובת URL</translation> <translation id="405442954313519726">אפשר לחפש או לנווט בכרטיסייה חדשה, במצב אנונימי, באמצעות הקול או באמצעות קוד QR.</translation> <translation id="4954445889641385956">ניתן לחפש או להזין כתובת URL</translation>
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ka.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ka.xtb index ec2a98f..00ed8cf 100644 --- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ka.xtb +++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_ka.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="ka"> <translation id="2542770169955243077">Chrome დინოზავრის თამაში</translation> <translation id="302608144225178783">გადადით Chrome დინოზავრის თამაშზე თქვენი მთავარი ეკრანიდან.</translation> +<translation id="3464120926993669599">ინკოგნიტო ძიება</translation> <translation id="3528874492835415837">მოიძიეთ ან აკრიფეთ URL</translation> <translation id="405442954313519726">ძიება და ნავიგაცია ახალ ჩანართში, ინკოგნიტო რეჟიმში, ხმის მეშვეობით ან QR კოდის საშუალებით.</translation> <translation id="4954445889641385956">მოიძიეთ ან აკრიფეთ URL</translation>
diff --git a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_sl.xtb b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_sl.xtb index 4284044..33e42687 100644 --- a/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_sl.xtb +++ b/ios/chrome/widget_kit_extension/strings/resources/ios_widget_kit_extension_strings_sl.xtb
@@ -3,6 +3,7 @@ <translationbundle lang="sl"> <translation id="2542770169955243077">Igra Dino za Chrome</translation> <translation id="302608144225178783">Začnite igrati igro Dino za Chrome kar z začetnega zaslona.</translation> +<translation id="3464120926993669599">Anonimno iskanje</translation> <translation id="3528874492835415837">Iskanje ali vnos URL-ja</translation> <translation id="405442954313519726">Iskanje ali pomikanje na novem zavihku, v anonimnem načinu, z govorom ali s kodo QR.</translation> <translation id="4954445889641385956">Iskanje ali vnos URL-ja</translation>
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 index fd770e0..2b55bd4 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -a418bf598d202bd0f563b3b07e265bd24f341910 \ No newline at end of file +38b2d6ff6c50d98ce0e169f93b6af56473e104f0 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 index bebfdeb6..a25f6c0b 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -29302d010a49cdade6452834f4f8f9b55ddca55d \ No newline at end of file +0a578fe3d130ce4598085f9034a70174f4da5dfc \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 index e4244c4..36cfbec5 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -b8501900b64626bcdfd1583b700eb268d8674515 \ No newline at end of file +c17ff36db80644c544dbd5f42774a84af1845137 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 index 9938787..523d14ba 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -90f54e968b248d480409b878f5edae06fbbf5b65 \ No newline at end of file +6d8cc16232022710362045c814b395ab26ddf67c \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 index c94d0d9..0e444159 100644 --- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -39b25e7764f3b260183ee56304032306c0172194 \ No newline at end of file +93c54a7bb408f52b87966d9114013633de518b75 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 index 55da74e..eae4a89 100644 --- a/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_dogfood_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -1cc78b2c4643854cf3504f0b19e7f60f3bcb64bb \ No newline at end of file +2f2294b52e1e30c14b57f1e8a2f622acd3487564 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 index 08f55fe0..e8b9a76 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -0ae9d8451144e1622144895cbcf9bb4a646d01f9 \ No newline at end of file +a9b87dd47a579326f1f148730e269153ff22b96a \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 index 614602d4..2799ea4 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -68854adb36ae4af41cc849aa7449d98ceb33a4c7 \ No newline at end of file +ae9a122c3ccfb6a9b47707ab5baabc9fb4d8a2ab \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 index 0ba70a6ed..83b657c 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.arm64.zip.sha1
@@ -1 +1 @@ -b868e4995ef042abfee57204c8b8a01967784eb5 \ No newline at end of file +e423d62818a17a8b36fcb03e014d5b8d35524976 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 index d52c74c..f2e6c3c 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.x64.zip.sha1
@@ -1 +1 @@ -8514f576b41bdb01e8e28b7361695d8e620a2c3f \ No newline at end of file +52067fac63abe69d7b9e7995a02ef8648b188d0b \ No newline at end of file
diff --git a/media/fuchsia/audio/fuchsia_audio_capturer_source.cc b/media/fuchsia/audio/fuchsia_audio_capturer_source.cc index 80c28b2..edc7a24 100644 --- a/media/fuchsia/audio/fuchsia_audio_capturer_source.cc +++ b/media/fuchsia/audio/fuchsia_audio_capturer_source.cc
@@ -11,6 +11,7 @@ #include "base/bits.h" #include "base/fuchsia/fuchsia_logging.h" #include "base/location.h" +#include "base/stl_util.h" #include "base/task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "media/base/audio_parameters.h"
diff --git a/remoting/resources/remoting_strings_pa.xtb b/remoting/resources/remoting_strings_pa.xtb index c0cb560..8eed1054 100644 --- a/remoting/resources/remoting_strings_pa.xtb +++ b/remoting/resources/remoting_strings_pa.xtb
@@ -73,7 +73,7 @@ <translation id="443560535555262820">ਪਹੁੰਚਯੋਗਤਾ ਤਰਜੀਹਾਂ ਖੋਲ੍ਹੋ</translation> <translation id="4450893287417543264">ਦੁਬਾਰਾ ਨਾ ਦਿਖਾਓ</translation> <translation id="4512952200932940229">Copyright 2021 The Chromium Authors. ਸਾਰੇ ਹੱਕ ਰਾਖਵੇਂ ਹਨ।</translation> -<translation id="4513946894732546136">ਫ਼ੀਡਬੈਕ</translation> +<translation id="4513946894732546136">ਵਿਚਾਰ</translation> <translation id="4563926062592110512">ਕਲਾਇੰਟ ਡਿਸਕਨੈਕਟ ਹੋ ਗਿਆ: <ph name="CLIENT_USERNAME" />।</translation> <translation id="4635770493235256822">ਰਿਮੋਟ ਡਿਵਾਈਸਾਂ</translation> <translation id="4660011489602794167">ਕੀ-ਬੋਰਡ ਦਿਖਾਓ</translation>
diff --git a/services/viz/privileged/mojom/BUILD.gn b/services/viz/privileged/mojom/BUILD.gn index 49f93d0..3ce7105 100644 --- a/services/viz/privileged/mojom/BUILD.gn +++ b/services/viz/privileged/mojom/BUILD.gn
@@ -2,17 +2,11 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -import("//components/viz/common/debugger/viz_debugger.gni") import("//mojo/public/tools/bindings/mojom.gni") mojom("mojom") { sources = [ "viz_main.mojom" ] - enabled_features = [] - if (use_viz_debugger) { - enabled_features += [ "use_viz_debugger" ] - } - public_deps = [ "//components/discardable_memory/public/mojom", "//services/network/public/mojom",
diff --git a/services/viz/privileged/mojom/viz_main.mojom b/services/viz/privileged/mojom/viz_main.mojom index 5738cf7..f13ce455 100644 --- a/services/viz/privileged/mojom/viz_main.mojom +++ b/services/viz/privileged/mojom/viz_main.mojom
@@ -5,7 +5,6 @@ module viz.mojom; import "components/discardable_memory/public/mojom/discardable_shared_memory_manager.mojom"; -import "mojo/public/mojom/base/values.mojom"; import "services/network/public/mojom/tcp_socket.mojom"; import "services/viz/public/mojom/compositing/compositing_mode_watcher.mojom"; import "services/viz/privileged/mojom/compositing/frame_sink_manager.mojom"; @@ -44,13 +43,6 @@ uint16 server_port; }; -// This interface provides mechanism for the Viz Debugger to output data. -[EnableIf=use_viz_debugger] -interface VizDebugOutput { - // Called by the VizDebugger instance at the end of each frame. - LogFrame(mojo_base.mojom.Value frameData); -}; - // This is the primordial interface used to (re)start the viz services. interface VizMain { CreateFrameSinkManager(FrameSinkManagerParams params); @@ -73,19 +65,4 @@ // FrameSinkManager in the viz compositor. This is only called if the flag // --enable-viz-devtools is used. CreateVizDevTools(VizDevToolsParams params); - - // Initiates the devtools enabled stream connection for the Viz Debugger. - // This is only called if the flag --enable-viz-devtools is used. - [EnableIf=use_viz_debugger] - StartDebugStream(pending_remote<VizDebugOutput> viz_debug); - - // Sends debug filtering information to the active Viz Debugger instance. - // This is only called if the flag --enable-viz-devtools is used. - [EnableIf=use_viz_debugger] - FilterDebugStream(mojo_base.mojom.Value filterData); - - // Ends the Viz debugging session. This is only called if the flag - // --enable-viz-devtools is used. - [EnableIf=use_viz_debugger] - StopDebugStream(); };
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index 29689d2..ba56c42c 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -4754,11 +4754,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.32" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.33" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.32", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.33", "resultdb": { "enable": true }, @@ -4768,7 +4768,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M91", - "revision": "version:91.0.4472.32" + "revision": "version:91.0.4472.33" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -4991,11 +4991,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.32" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.33" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.32", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.33", "resultdb": { "enable": true }, @@ -5005,7 +5005,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M91", - "revision": "version:91.0.4472.32" + "revision": "version:91.0.4472.33" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index cd162ee1..ca843bb 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -53918,11 +53918,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_with_chrome_apk_Client Library Skew Tests For 91.0.4472.32" + "weblayer_instrumentation_test_versions_with_chrome_apk_Client Library Skew Tests For 91.0.4472.33" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_with_chrome_apk_Client Library Skew Tests For 91.0.4472.32", + "name": "weblayer_instrumentation_test_versions_with_chrome_apk_Client Library Skew Tests For 91.0.4472.33", "resultdb": { "enable": true }, @@ -53932,7 +53932,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M91", - "revision": "version:91.0.4472.32" + "revision": "version:91.0.4472.33" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -54158,11 +54158,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_with_chrome_apk_Implementation Library Skew Tests For 91.0.4472.32" + "weblayer_instrumentation_test_versions_with_chrome_apk_Implementation Library Skew Tests For 91.0.4472.33" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_with_chrome_apk_Implementation Library Skew Tests For 91.0.4472.32", + "name": "weblayer_instrumentation_test_versions_with_chrome_apk_Implementation Library Skew Tests For 91.0.4472.33", "resultdb": { "enable": true }, @@ -54172,7 +54172,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M91", - "revision": "version:91.0.4472.32" + "revision": "version:91.0.4472.33" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -54462,11 +54462,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.32" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.33" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.32", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.33", "resultdb": { "enable": true }, @@ -54476,7 +54476,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M91", - "revision": "version:91.0.4472.32" + "revision": "version:91.0.4472.33" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -54699,11 +54699,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.32" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.33" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.32", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.33", "resultdb": { "enable": true }, @@ -54713,7 +54713,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M91", - "revision": "version:91.0.4472.32" + "revision": "version:91.0.4472.33" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -55003,11 +55003,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.32" + "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.33" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.32", + "name": "weblayer_instrumentation_test_versions_apk_Client Library Skew Tests For 91.0.4472.33", "resultdb": { "enable": true }, @@ -55017,7 +55017,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M91", - "revision": "version:91.0.4472.32" + "revision": "version:91.0.4472.33" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -55240,11 +55240,11 @@ "--bucket", "chromium-result-details", "--test-name", - "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.32" + "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.33" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" }, - "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.32", + "name": "weblayer_instrumentation_test_versions_apk_Implementation Library Skew Tests For 91.0.4472.33", "resultdb": { "enable": true }, @@ -55254,7 +55254,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M91", - "revision": "version:91.0.4472.32" + "revision": "version:91.0.4472.33" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 56a6c5b..9f7bba2 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -331,13 +331,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=91', ], - 'identifier': 'Implementation Library Skew Tests For 91.0.4472.32', + 'identifier': 'Implementation Library Skew Tests For 91.0.4472.33', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M91', - 'revision': 'version:91.0.4472.32', + 'revision': 'version:91.0.4472.33', } ], }, @@ -403,13 +403,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--impl-version=91', ], - 'identifier': 'Implementation Library Skew Tests For 91.0.4472.32', + 'identifier': 'Implementation Library Skew Tests For 91.0.4472.33', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M91', - 'revision': 'version:91.0.4472.32', + 'revision': 'version:91.0.4472.33', } ], }, @@ -475,13 +475,13 @@ '../../weblayer/browser/android/javatests/skew/expectations.txt', '--client-version=91', ], - 'identifier': 'Client Library Skew Tests For 91.0.4472.32', + 'identifier': 'Client Library Skew Tests For 91.0.4472.33', 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M91', - 'revision': 'version:91.0.4472.32', + 'revision': 'version:91.0.4472.33', } ], },
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl index beb9685..81a5671 100644 --- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl +++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -6785,6 +6785,9 @@ # This world name will be used as the ExecutionContextDescription::name when the corresponding # event is emitted. experimental optional string worldName + # Specifies whether command line API should be available to the script, defaults + # to false. + experimental optional boolean includeCommandLineAPI returns # Identifier of the added script. ScriptIdentifier identifier
diff --git a/third_party/blink/renderer/bindings/core/v8/module_record.cc b/third_party/blink/renderer/bindings/core/v8/module_record.cc index 52b7fd37..c3f7edf 100644 --- a/third_party/blink/renderer/bindings/core/v8/module_record.cc +++ b/third_party/blink/renderer/bindings/core/v8/module_record.cc
@@ -104,7 +104,8 @@ DCHECK(!record.IsEmpty()); v8::Local<v8::Context> context = script_state->GetContext(); v8::MicrotasksScope microtasks_scope( - isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); + isolate, ToMicrotaskQueue(script_state), + v8::MicrotasksScope::kDoNotRunMicrotasks); // Script IDs are not available on errored modules or on non-source text // modules, so we give them a default value.
diff --git a/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h b/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h index 0001d2e..ebe69661 100644 --- a/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h +++ b/third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h
@@ -126,9 +126,11 @@ // resolveOrReject shouldn't be called inside a ScriptForbiddenScope. { ScriptForbiddenScope::AllowUserAgentScript allow_script; - value_.Set(script_state_->GetIsolate(), - ToV8(value, script_state_->GetContext()->Global(), - script_state_->GetIsolate())); + v8::Isolate* isolate = script_state_->GetIsolate(); + v8::MicrotasksScope microtasks_scope( + isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); + value_.Set(isolate, ToV8(value, script_state_->GetContext()->Global(), + script_state_->GetIsolate())); } if (GetExecutionContext()->IsContextPaused()) {
diff --git a/third_party/blink/renderer/core/accessibility/ax_object_cache.h b/third_party/blink/renderer/core/accessibility/ax_object_cache.h index c2a5af9c..22a8899 100644 --- a/third_party/blink/renderer/core/accessibility/ax_object_cache.h +++ b/third_party/blink/renderer/core/accessibility/ax_object_cache.h
@@ -83,8 +83,10 @@ virtual void LocationChanged(const LayoutObject*) = 0; virtual void ImageLoaded(const LayoutObject*) = 0; + // Removes AXObject backed by passed-in object, if there is one. virtual void Remove(AccessibleNode*) = 0; - virtual void Remove(LayoutObject*) = 0; + // Returns true if the AXObject is removed. + virtual bool Remove(LayoutObject*) = 0; virtual void Remove(Node*) = 0; virtual void Remove(AbstractInlineTextBox*) = 0;
diff --git a/third_party/blink/renderer/core/accessibility/ax_object_cache_base.h b/third_party/blink/renderer/core/accessibility/ax_object_cache_base.h index bb79833b..707d7c81 100644 --- a/third_party/blink/renderer/core/accessibility/ax_object_cache_base.h +++ b/third_party/blink/renderer/core/accessibility/ax_object_cache_base.h
@@ -12,7 +12,6 @@ namespace blink { class LayoutObject; -class Node; class AXObject; // AXObjectCacheBase is a temporary class that sits between AXObjectCache and @@ -27,7 +26,6 @@ AXObjectCacheBase& operator=(const AXObjectCacheBase&) = delete; ~AXObjectCacheBase() override = default; - virtual AXObject* Get(const Node*) = 0; virtual AXObject* GetOrCreate(LayoutObject*, AXObject* parent_if_known = nullptr) = 0;
diff --git a/third_party/blink/renderer/core/css/resolver/selector_filter_parent_scope_test.cc b/third_party/blink/renderer/core/css/resolver/selector_filter_parent_scope_test.cc index 1912729..e125d4e 100644 --- a/third_party/blink/renderer/core/css/resolver/selector_filter_parent_scope_test.cc +++ b/third_party/blink/renderer/core/css/resolver/selector_filter_parent_scope_test.cc
@@ -16,6 +16,7 @@ protected: void SetUp() override { dummy_page_holder_ = std::make_unique<DummyPageHolder>(IntSize(800, 600)); + GetDocument().SetCompatibilityMode(Document::kNoQuirksMode); } Document& GetDocument() { return dummy_page_holder_->GetDocument(); } @@ -29,6 +30,8 @@ TEST_F(SelectorFilterParentScopeTest, ParentScope) { GetDocument().body()->setAttribute(html_names::kClassAttr, "match"); GetDocument().documentElement()->SetIdAttribute("myId"); + auto* div = GetDocument().CreateRawElement(html_names::kDivTag); + GetDocument().body()->appendChild(div); SelectorFilter& filter = GetDocument().GetStyleResolver().GetSelectorFilter(); GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); @@ -37,19 +40,24 @@ { SelectorFilterParentScope body_scope(*GetDocument().body()); SelectorFilterParentScope::EnsureParentStackIsPushed(); + { + SelectorFilterParentScope div_scope(*div); + SelectorFilterParentScope::EnsureParentStackIsPushed(); - CSSSelectorList selectors = CSSParser::ParseSelector( - MakeGarbageCollected<CSSParserContext>( - kHTMLStandardMode, SecureContextMode::kInsecureContext), - nullptr, "html, body, .match, #myId"); + CSSSelectorList selectors = CSSParser::ParseSelector( + MakeGarbageCollected<CSSParserContext>( + kHTMLStandardMode, SecureContextMode::kInsecureContext), + nullptr, "html *, body *, .match *, #myId *"); - for (const CSSSelector* selector = selectors.First(); selector; - selector = CSSSelectorList::Next(*selector)) { - unsigned selector_hashes[max_identifier_hashes]; - filter.CollectIdentifierHashes(*selector, selector_hashes, - max_identifier_hashes); - EXPECT_FALSE( - filter.FastRejectSelector<max_identifier_hashes>(selector_hashes)); + for (const CSSSelector* selector = selectors.First(); selector; + selector = CSSSelectorList::Next(*selector)) { + unsigned selector_hashes[max_identifier_hashes]; + filter.CollectIdentifierHashes(*selector, selector_hashes, + max_identifier_hashes); + EXPECT_NE(selector_hashes[0], 0u); + EXPECT_FALSE( + filter.FastRejectSelector<max_identifier_hashes>(selector_hashes)); + } } } } @@ -69,13 +77,14 @@ CSSSelectorList selectors = CSSParser::ParseSelector( MakeGarbageCollected<CSSParserContext>( kHTMLStandardMode, SecureContextMode::kInsecureContext), - nullptr, "html, body, div, span, .x, #y"); + nullptr, "html *, body *, div *, span *, .x *, #y *"); for (const CSSSelector* selector = selectors.First(); selector; selector = CSSSelectorList::Next(*selector)) { unsigned selector_hashes[max_identifier_hashes]; filter.CollectIdentifierHashes(*selector, selector_hashes, max_identifier_hashes); + EXPECT_NE(selector_hashes[0], 0u); EXPECT_FALSE( filter.FastRejectSelector<max_identifier_hashes>(selector_hashes)); } @@ -98,4 +107,40 @@ GetDocument().UpdateStyleAndLayoutTree(); } +TEST_F(SelectorFilterParentScopeTest, AttributeFilter) { + GetDocument().body()->setInnerHTML( + R"HTML(<div ATTR><svg VIewBox></svg></div>)HTML"); + auto* outer = To<Element>(GetDocument().body()->firstChild()); + auto* svg = To<Element>(outer->firstChild()); + auto* inner = GetDocument().CreateRawElement(html_names::kDivTag); + svg->appendChild(inner); + + ASSERT_TRUE(outer->hasAttributes()); + EXPECT_EQ("attr", outer->Attributes()[0].GetName().LocalName()); + + ASSERT_TRUE(svg->hasAttributes()); + EXPECT_EQ("viewBox", svg->Attributes()[0].GetName().LocalName()); + + SelectorFilter& filter = GetDocument().GetStyleResolver().GetSelectorFilter(); + GetDocument().Lifecycle().AdvanceTo(DocumentLifecycle::kInStyleRecalc); + + SelectorFilterRootScope span_scope(inner); + SelectorFilterParentScope::EnsureParentStackIsPushed(); + + CSSSelectorList selectors = CSSParser::ParseSelector( + MakeGarbageCollected<CSSParserContext>( + kHTMLStandardMode, SecureContextMode::kInsecureContext), + nullptr, "[Attr] *, [attr] *, [viewbox] *, [VIEWBOX] *"); + + for (const CSSSelector* selector = selectors.First(); selector; + selector = CSSSelectorList::Next(*selector)) { + unsigned selector_hashes[max_identifier_hashes]; + filter.CollectIdentifierHashes(*selector, selector_hashes, + max_identifier_hashes); + EXPECT_NE(selector_hashes[0], 0u); + EXPECT_FALSE( + filter.FastRejectSelector<max_identifier_hashes>(selector_hashes)); + } +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/css/selector_filter.cc b/third_party/blink/renderer/core/css/selector_filter.cc index 7d129889..0c67f267 100644 --- a/third_party/blink/renderer/core/css/selector_filter.cc +++ b/third_party/blink/renderer/core/css/selector_filter.cc
@@ -36,33 +36,89 @@ namespace blink { +namespace { + // Salt to separate otherwise identical string hashes so a class-selector like // .article won't match <article> elements. -enum { kTagNameSalt = 13, kIdAttributeSalt = 17, kClassAttributeSalt = 19 }; +enum { kTagNameSalt = 13, kIdSalt = 17, kClassSalt = 19, kAttributeSalt = 23 }; -static inline void CollectElementIdentifierHashes( +inline bool IsExcludedAttribute(const AtomicString& name) { + return name == html_names::kClassAttr.LocalName() || + name == html_names::kIdAttr.LocalName() || + name == html_names::kStyleAttr.LocalName(); +} + +inline void CollectElementIdentifierHashes( const Element& element, Vector<unsigned, 4>& identifier_hashes) { identifier_hashes.push_back( element.LocalNameForSelectorMatching().Impl()->ExistingHash() * kTagNameSalt); - if (element.HasID()) + if (element.HasID()) { identifier_hashes.push_back( - element.IdForStyleResolution().Impl()->ExistingHash() * - kIdAttributeSalt); + element.IdForStyleResolution().Impl()->ExistingHash() * kIdSalt); + } + if (element.IsStyledElement() && element.HasClass()) { const SpaceSplitString& class_names = element.ClassNames(); wtf_size_t count = class_names.size(); for (wtf_size_t i = 0; i < count; ++i) { - DCHECK(class_names[i].Impl()); - // Speculative fix for https://crbug.com/646026 - if (class_names[i].Impl()) - identifier_hashes.push_back(class_names[i].Impl()->ExistingHash() * - kClassAttributeSalt); + identifier_hashes.push_back(class_names[i].Impl()->ExistingHash() * + kClassSalt); } } + AttributeCollection attributes = element.AttributesWithoutUpdate(); + for (const auto& attribute_item : attributes) { + auto attribute_name = attribute_item.LocalName(); + if (IsExcludedAttribute(attribute_name)) + continue; + auto lower = attribute_name.IsLowerASCII() ? attribute_name + : attribute_name.LowerASCII(); + identifier_hashes.push_back(lower.Impl()->ExistingHash() * kAttributeSalt); + } } +inline void CollectDescendantSelectorIdentifierHashes( + const CSSSelector& selector, + unsigned*& hash) { + switch (selector.Match()) { + case CSSSelector::kId: + if (!selector.Value().IsEmpty()) + (*hash++) = selector.Value().Impl()->ExistingHash() * kIdSalt; + break; + case CSSSelector::kClass: + if (!selector.Value().IsEmpty()) + (*hash++) = selector.Value().Impl()->ExistingHash() * kClassSalt; + break; + case CSSSelector::kTag: + if (selector.TagQName().LocalName() != + CSSSelector::UniversalSelectorAtom()) { + (*hash++) = selector.TagQName().LocalName().Impl()->ExistingHash() * + kTagNameSalt; + } + break; + case CSSSelector::kAttributeExact: + case CSSSelector::kAttributeSet: + case CSSSelector::kAttributeList: + case CSSSelector::kAttributeContain: + case CSSSelector::kAttributeBegin: + case CSSSelector::kAttributeEnd: + case CSSSelector::kAttributeHyphen: { + auto attribute_name = selector.Attribute().LocalName(); + if (IsExcludedAttribute(attribute_name)) + break; + auto lower_name = attribute_name.IsLowerASCII() + ? attribute_name + : attribute_name.LowerASCII(); + (*hash++) = lower_name.Impl()->ExistingHash() * kAttributeSalt; + } break; + default: + break; + } +} + +} // namespace + void SelectorFilter::PushParentStackFrame(Element& parent) { DCHECK(ancestor_identifier_filter_); DCHECK(parent_stack_.IsEmpty() || @@ -123,30 +179,6 @@ PopParentStackFrame(); } -static inline void CollectDescendantSelectorIdentifierHashes( - const CSSSelector& selector, - unsigned*& hash) { - switch (selector.Match()) { - case CSSSelector::kId: - if (!selector.Value().IsEmpty()) - (*hash++) = selector.Value().Impl()->ExistingHash() * kIdAttributeSalt; - break; - case CSSSelector::kClass: - if (!selector.Value().IsEmpty()) - (*hash++) = - selector.Value().Impl()->ExistingHash() * kClassAttributeSalt; - break; - case CSSSelector::kTag: - if (selector.TagQName().LocalName() != - CSSSelector::UniversalSelectorAtom()) - (*hash++) = selector.TagQName().LocalName().Impl()->ExistingHash() * - kTagNameSalt; - break; - default: - break; - } -} - void SelectorFilter::CollectIdentifierHashes( const CSSSelector& selector, unsigned* identifier_hashes,
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index 7ad9651..1762a7d7 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -33,7 +33,7 @@ // instead of including more headers. If that is infeasible, adjust the limit. // For more info, see // https://chromium.googlesource.com/chromium/src/+/HEAD/docs/wmax_tokens.md -#pragma clang max_tokens_here 970000 +#pragma clang max_tokens_here 975000 #include <memory> #include <utility>
diff --git a/third_party/blink/renderer/core/editing/ime/ime_text_span.cc b/third_party/blink/renderer/core/editing/ime/ime_text_span.cc index eb8ec30d..67e11cc 100644 --- a/third_party/blink/renderer/core/editing/ime/ime_text_span.cc +++ b/third_party/blink/renderer/core/editing/ime/ime_text_span.cc
@@ -20,6 +20,8 @@ return ImeTextSpan::Type::kMisspellingSuggestion; case ui::ImeTextSpan::Type::kAutocorrect: return ImeTextSpan::Type::kAutocorrect; + case ui::ImeTextSpan::Type::kGrammarSuggestion: + return ImeTextSpan::Type::kGrammarSuggestion; } NOTREACHED(); @@ -68,6 +70,16 @@ return output; } +std::vector<std::string> ConvertVectorOfStringsToStdVectorOfStdStrings( + const Vector<String>& input) { + std::vector<std::string> output; + output.reserve(input.size()); + for (const String& val : input) { + output.push_back(val.Utf8()); + } + return output; +} + ui::mojom::ImeTextSpanThickness ConvertUiThicknessToThickness( ui::ImeTextSpan::Thickness thickness) { switch (thickness) { @@ -108,6 +120,8 @@ return ui::ImeTextSpan::Type::kAutocorrect; case ImeTextSpan::Type::kComposition: return ui::ImeTextSpan::Type::kComposition; + case ImeTextSpan::Type::kGrammarSuggestion: + return ui::ImeTextSpan::Type::kGrammarSuggestion; case ImeTextSpan::Type::kMisspellingSuggestion: return ui::ImeTextSpan::Type::kMisspellingSuggestion; case ImeTextSpan::Type::kSuggestion: @@ -133,8 +147,11 @@ ime_text_span.suggestions)) {} ui::ImeTextSpan ImeTextSpan::ToUiImeTextSpan() { - return ui::ImeTextSpan(ConvertImeTextSpanTypeToUiType(GetType()), - StartOffset(), EndOffset()); + auto span = ui::ImeTextSpan(ConvertImeTextSpanTypeToUiType(GetType()), + StartOffset(), EndOffset()); + span.suggestions = + ConvertVectorOfStringsToStdVectorOfStdStrings(Suggestions()); + return span; } } // namespace blink
diff --git a/third_party/blink/renderer/core/editing/ime/ime_text_span.h b/third_party/blink/renderer/core/editing/ime/ime_text_span.h index cfc26cb..57b4c2e 100644 --- a/third_party/blink/renderer/core/editing/ime/ime_text_span.h +++ b/third_party/blink/renderer/core/editing/ime/ime_text_span.h
@@ -45,6 +45,7 @@ kSuggestion, kMisspellingSuggestion, kAutocorrect, + kGrammarSuggestion, }; ImeTextSpan(Type,
diff --git a/third_party/blink/renderer/core/editing/ime/input_method_controller.cc b/third_party/blink/renderer/core/editing/ime/input_method_controller.cc index 1455d01..f8bbf52f 100644 --- a/third_party/blink/renderer/core/editing/ime/input_method_controller.cc +++ b/third_party/blink/renderer/core/editing/ime/input_method_controller.cc
@@ -293,6 +293,8 @@ switch (type) { case ImeTextSpan::Type::kAutocorrect: return SuggestionMarker::SuggestionType::kAutocorrect; + case ImeTextSpan::Type::kGrammarSuggestion: + return SuggestionMarker::SuggestionType::kGrammar; case ImeTextSpan::Type::kMisspellingSuggestion: return SuggestionMarker::SuggestionType::kMisspelling; case ImeTextSpan::Type::kComposition: @@ -306,6 +308,8 @@ switch (type) { case SuggestionMarker::SuggestionType::kAutocorrect: return ImeTextSpan::Type::kAutocorrect; + case SuggestionMarker::SuggestionType::kGrammar: + return ImeTextSpan::Type::kGrammarSuggestion; case SuggestionMarker::SuggestionType::kMisspelling: return ImeTextSpan::Type::kMisspellingSuggestion; case SuggestionMarker::SuggestionType::kNotMisspelling: @@ -315,8 +319,9 @@ // ImeTextSpans types that need to be provided to TextInputInfo can be added // here. -bool ShouldGetImeTextSpansAroundPosition(ImeTextSpan::Type type) { - return type == ImeTextSpan::Type::kAutocorrect; +bool ShouldGetImeTextSpans(ImeTextSpan::Type type) { + return type == ImeTextSpan::Type::kAutocorrect || + type == ImeTextSpan::Type::kGrammarSuggestion; } } // anonymous namespace @@ -509,6 +514,7 @@ switch (type) { case ImeTextSpan::Type::kAutocorrect: + case ImeTextSpan::Type::kGrammarSuggestion: case ImeTextSpan::Type::kMisspellingSuggestion: case ImeTextSpan::Type::kSuggestion: GetDocument().Markers().RemoveSuggestionMarkerByType( @@ -743,6 +749,7 @@ break; } case ImeTextSpan::Type::kAutocorrect: + case ImeTextSpan::Type::kGrammarSuggestion: case ImeTextSpan::Type::kSuggestion: case ImeTextSpan::Type::kMisspellingSuggestion: const SuggestionMarker::SuggestionType suggestion_type = @@ -1844,7 +1851,7 @@ To<SuggestionMarker>(node_marker_pair.second.Get()); ImeTextSpan::Type type = ConvertSuggestionMarkerType(marker->GetSuggestionType()); - if (ShouldGetImeTextSpansAroundPosition(type)) { + if (ShouldGetImeTextSpans(type)) { const Text* node = node_marker_pair.first; const EphemeralRange& marker_ephemeral_range = EphemeralRange(Position(node, marker->StartOffset()), @@ -1857,7 +1864,8 @@ marker_plain_text_range.End(), Color::kTransparent, ImeTextSpanThickness::kNone, ImeTextSpanUnderlineStyle::kNone, Color::kTransparent, - Color::kTransparent) + Color::kTransparent, Color::kTransparent, false, false, + marker->Suggestions()) .ToUiImeTextSpan()); } }
diff --git a/third_party/blink/renderer/core/editing/ime/input_method_controller_test.cc b/third_party/blink/renderer/core/editing/ime/input_method_controller_test.cc index b6f7b166..a86b50fc 100644 --- a/third_party/blink/renderer/core/editing/ime/input_method_controller_test.cc +++ b/third_party/blink/renderer/core/editing/ime/input_method_controller_test.cc
@@ -207,7 +207,7 @@ ->GetSuggestionType()); } -TEST_F(InputMethodControllerTest, GetImeTextSpansAroundPosition) { +TEST_F(InputMethodControllerTest, GetImeTextSpans) { InsertHTMLElement("<div id='sample' contenteditable>hello world</div>", "sample"); ImeTextSpan span1 = ImeTextSpan(ImeTextSpan::Type::kAutocorrect, 0, 5, @@ -219,17 +219,29 @@ ImeTextSpan span3 = ImeTextSpan( ImeTextSpan::Type::kMisspellingSuggestion, 1, 3, Color(255, 0, 0), ImeTextSpanThickness::kThin, ImeTextSpanUnderlineStyle::kSolid, 0, 0); + ImeTextSpan span4 = ImeTextSpan(ImeTextSpan::Type::kGrammarSuggestion, 6, 8, + Color(255, 0, 0), ImeTextSpanThickness::kThin, + ImeTextSpanUnderlineStyle::kSolid, 0, 0, 0, + false, false, {String("fake_suggestion")}); - Controller().AddImeTextSpansToExistingText({span1, span2, span3}, 0, 5); + Controller().AddImeTextSpansToExistingText({span1, span2, span3, span4}, 0, + 10); Controller().SetEditableSelectionOffsets(PlainTextRange(1, 1)); const WebVector<ui::ImeTextSpan>& ime_text_spans = Controller().TextInputInfo().ime_text_spans; - EXPECT_EQ(1u, ime_text_spans.size()); + EXPECT_EQ(2u, ime_text_spans.size()); EXPECT_EQ(0u, ime_text_spans[0].start_offset); EXPECT_EQ(5u, ime_text_spans[0].end_offset); EXPECT_EQ(ui::ImeTextSpan::Type::kAutocorrect, ime_text_spans[0].type); + EXPECT_EQ(0u, ime_text_spans[0].suggestions.size()); + + EXPECT_EQ(6u, ime_text_spans[1].start_offset); + EXPECT_EQ(8u, ime_text_spans[1].end_offset); + EXPECT_EQ(ui::ImeTextSpan::Type::kGrammarSuggestion, ime_text_spans[1].type); + EXPECT_EQ(1u, ime_text_spans[1].suggestions.size()); + EXPECT_EQ("fake_suggestion", ime_text_spans[1].suggestions[0]); } TEST_F(InputMethodControllerTest, SetCompositionAfterEmoji) {
diff --git a/third_party/blink/renderer/core/editing/markers/suggestion_marker.h b/third_party/blink/renderer/core/editing/markers/suggestion_marker.h index 19a3294..87fe667 100644 --- a/third_party/blink/renderer/core/editing/markers/suggestion_marker.h +++ b/third_party/blink/renderer/core/editing/markers/suggestion_marker.h
@@ -21,7 +21,12 @@ // SuggestionMarker a suggestion replace operation pertains to. class CORE_EXPORT SuggestionMarker final : public StyleableMarker { public: - enum class SuggestionType { kMisspelling, kNotMisspelling, kAutocorrect }; + enum class SuggestionType { + kMisspelling, + kNotMisspelling, + kAutocorrect, + kGrammar, + }; enum class RemoveOnFinishComposing { kRemove, kDoNotRemove }; SuggestionMarker(unsigned start_offset,
diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc index 2dd6a66..b3146dc 100644 --- a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
@@ -476,6 +476,9 @@ /*default_value=*/WTF::String()), worlds_to_evaluate_on_load_(&agent_state_, /*default_value=*/WTF::String()), + include_command_line_api_for_scripts_to_evaluate_on_load_( + &agent_state_, + /*default_value=*/false), standard_font_family_(&agent_state_, /*default_value=*/WTF::String()), fixed_font_family_(&agent_state_, /*default_value=*/WTF::String()), serif_font_family_(&agent_state_, /*default_value=*/WTF::String()), @@ -564,6 +567,7 @@ Response InspectorPageAgent::addScriptToEvaluateOnNewDocument( const String& source, Maybe<String> world_name, + Maybe<bool> include_command_line_api, String* identifier) { Vector<WTF::String> keys = scripts_to_evaluate_on_load_.Keys(); auto* result = std::max_element( @@ -578,6 +582,8 @@ scripts_to_evaluate_on_load_.Set(*identifier, source); worlds_to_evaluate_on_load_.Set(*identifier, world_name.fromMaybe("")); + include_command_line_api_for_scripts_to_evaluate_on_load_.Set( + *identifier, include_command_line_api.fromMaybe(false)); return Response::Success(); } @@ -587,13 +593,14 @@ return Response::ServerError("Script not found"); scripts_to_evaluate_on_load_.Clear(identifier); worlds_to_evaluate_on_load_.Clear(identifier); + include_command_line_api_for_scripts_to_evaluate_on_load_.Clear(identifier); return Response::Success(); } Response InspectorPageAgent::addScriptToEvaluateOnLoad(const String& source, String* identifier) { return addScriptToEvaluateOnNewDocument(source, Maybe<String>(""), - identifier); + Maybe<bool>(false), identifier); } Response InspectorPageAgent::removeScriptToEvaluateOnLoad( @@ -932,10 +939,26 @@ for (const WTF::String& key : keys) { const String source = scripts_to_evaluate_on_load_.Get(key); const String world_name = worlds_to_evaluate_on_load_.Get(key); + const bool include_command_line_api = + include_command_line_api_for_scripts_to_evaluate_on_load_.Get(key); + auto* window = frame->DomWindow(); if (world_name.IsEmpty()) { - ClassicScript::CreateUnspecifiedScript(ScriptSourceCode(source)) - ->RunScript(frame->DomWindow(), - ExecuteScriptPolicy::kExecuteScriptWhenScriptsDisabled); + if (include_command_line_api) { + v8::HandleScope handle_scope(window->GetIsolate()); + ScriptState* script_state = + ToScriptStateForMainWorld(window->GetFrame()); + auto scope = v8_session_->initializeCommandLineAPIScope( + v8_inspector::V8ContextInfo::executionContextId( + script_state->GetContext())); + DCHECK(scope); + ClassicScript::CreateUnspecifiedScript(ScriptSourceCode(source)) + ->RunScript(window, + ExecuteScriptPolicy::kExecuteScriptWhenScriptsDisabled); + } else { + ClassicScript::CreateUnspecifiedScript(ScriptSourceCode(source)) + ->RunScript(window, + ExecuteScriptPolicy::kExecuteScriptWhenScriptsDisabled); + } continue; } @@ -947,9 +970,21 @@ // Note: An error event in an isolated world will never be dispatched to // a foreign world. v8::HandleScope handle_scope(V8PerIsolateData::MainThreadIsolate()); - ClassicScript::CreateUnspecifiedScript(ScriptSourceCode(source)) - ->RunScriptInIsolatedWorldAndReturnValue(frame->DomWindow(), - world->GetWorldId()); + if (include_command_line_api) { + ScriptState* script_state = ToScriptState( + window->GetFrame(), + *DOMWrapperWorld::EnsureIsolatedWorld(ToIsolate(window->GetFrame()), + world->GetWorldId())); + auto scope = v8_session_->initializeCommandLineAPIScope( + v8_inspector::V8ContextInfo::executionContextId( + script_state->GetContext())); + DCHECK(scope); + ClassicScript::CreateUnspecifiedScript(ScriptSourceCode(source)) + ->RunScriptInIsolatedWorldAndReturnValue(window, world->GetWorldId()); + } else { + ClassicScript::CreateUnspecifiedScript(ScriptSourceCode(source)) + ->RunScriptInIsolatedWorldAndReturnValue(window, world->GetWorldId()); + } } if (!script_to_evaluate_on_load_once_.IsEmpty()) {
diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.h b/third_party/blink/renderer/core/inspector/inspector_page_agent.h index 578f8408..271ac08 100644 --- a/third_party/blink/renderer/core/inspector/inspector_page_agent.h +++ b/third_party/blink/renderer/core/inspector/inspector_page_agent.h
@@ -116,6 +116,7 @@ protocol::Response addScriptToEvaluateOnNewDocument( const String& source, Maybe<String> world_name, + Maybe<bool> include_command_line_api, String* identifier) override; protocol::Response removeScriptToEvaluateOnNewDocument( const String& identifier) override; @@ -281,6 +282,8 @@ InspectorAgentState::Boolean bypass_csp_enabled_; InspectorAgentState::StringMap scripts_to_evaluate_on_load_; InspectorAgentState::StringMap worlds_to_evaluate_on_load_; + InspectorAgentState::BooleanMap + include_command_line_api_for_scripts_to_evaluate_on_load_; InspectorAgentState::String standard_font_family_; InspectorAgentState::String fixed_font_family_; InspectorAgentState::String serif_font_family_;
diff --git a/third_party/blink/renderer/core/streams/miscellaneous_operations.cc b/third_party/blink/renderer/core/streams/miscellaneous_operations.cc index 7d6adeb..0bc975e 100644 --- a/third_party/blink/renderer/core/streams/miscellaneous_operations.cc +++ b/third_party/blink/renderer/core/streams/miscellaneous_operations.cc
@@ -460,7 +460,10 @@ int argc, v8::Local<v8::Value> argv[]) { DCHECK_GE(argc, 0); - v8::TryCatch trycatch(script_state->GetIsolate()); + v8::Isolate* isolate = script_state->GetIsolate(); + v8::TryCatch trycatch(isolate); + v8::MicrotasksScope microtasks_scope( + isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); // https://streams.spec.whatwg.org/#promise-call // 4. Let returnValue be Call(F, V, args).
diff --git a/third_party/blink/renderer/core/streams/writable_stream.cc b/third_party/blink/renderer/core/streams/writable_stream.cc index 72ab3dc8..3f7dcbd 100644 --- a/third_party/blink/renderer/core/streams/writable_stream.cc +++ b/third_party/blink/renderer/core/streams/writable_stream.cc
@@ -222,9 +222,11 @@ auto underlying_sink_value = ScriptValue::From(script_state, underlying_sink); - ExceptionState exception_state(script_state->GetIsolate(), - ExceptionState::kConstructionContext, + v8::Isolate* isolate = script_state->GetIsolate(); + ExceptionState exception_state(isolate, ExceptionState::kConstructionContext, "WritableStream"); + v8::MicrotasksScope microtasks_scope( + isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); auto* stream = MakeGarbageCollected<WritableStream>(); stream->InitInternal(script_state, underlying_sink_value, strategy_value, exception_state);
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc index f01d117c..1d444a9 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -3855,6 +3855,18 @@ return false; } + if (IsA<HTMLBRElement>(GetNode()) && + (!GetLayoutObject() || !GetLayoutObject()->IsBR())) { + // A <br> element that is not treated as a line break could occur when the + // <br> element has DOM children. A <br> does not usually have DOM children, + // but there is nothing preventing a script from creating this situation. + // This anomalous child content is not rendered, and therefore AXObjects + // should not be created for the children. Enforcing that <br>s to only have + // children when they are line breaks also helps create consistency: any AX + // child of a <br> will always be an AXInlineTextBox. + return false; + } + switch (native_role_) { case ax::mojom::blink::Role::kCheckBox: case ax::mojom::blink::Role::kListBoxOption: @@ -3865,20 +3877,18 @@ case ax::mojom::blink::Role::kProgressIndicator: case ax::mojom::blink::Role::kRadioButton: case ax::mojom::blink::Role::kScrollBar: - // case ax::mojom::blink::Role::kSearchBox: case ax::mojom::blink::Role::kSlider: case ax::mojom::blink::Role::kSplitter: case ax::mojom::blink::Role::kSwitch: case ax::mojom::blink::Role::kTab: - // case ax::mojom::blink::Role::kTextField: case ax::mojom::blink::Role::kToggleButton: return false; case ax::mojom::blink::Role::kPopUpButton: return true; case ax::mojom::blink::Role::kLineBreak: case ax::mojom::blink::Role::kStaticText: - // AddInlineTextBoxChildren() must also check - // AXObjectCache().InlineTextBoxAccessibilityEnabled(); + // Note: these can have AXInlineTextBox children, but when adding them, we + // also check AXObjectCache().InlineTextBoxAccessibilityEnabled(). return true; case ax::mojom::blink::Role::kImage: // Can turn into an image map if gains children later.
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc index 0f183e36..84fc455 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -192,14 +192,18 @@ if (!node) return nullptr; - // Prefer LayoutTreeBuilderTraversal::Parent(), which handles pseudo content. - Node* parent = LayoutTreeBuilderTraversal::Parent(*node); - if (parent) - return parent; - - // Unfortunately, LayoutTreeBuilderTraversal::Parent() can return nullptr for - // a text node, such as inside a text area. Fall back on DOM parentNode(). - return node->parentNode(); + // Use LayoutTreeBuilderTraversal::Parent(), which handles pseudo content. + // This can return nullptr for a node that is never visited by + // LayoutTreeBuilderTraversal's child traversal. For example, while an element + // can be appended as a <textarea>'s child, it is never visited by + // LayoutTreeBuilderTraversal's child traversal. Therefore, returning null in + // this case is appropriate, because that child content is not attached to any + // parent as far as rendering or accessibility are concerned. + // Whenever null is returned from this function, then a parent cannot be + // computed, and when a parent is not provided or computed, the accessible + // object will not be created. + // TODO(aleventhal) Remove this method / inline, if proven to be this simple. + return LayoutTreeBuilderTraversal::Parent(*node); } #if DCHECK_IS_ON() @@ -535,6 +539,10 @@ } void AXObject::Detach() { + // Prevents LastKnown*() methods from returning the wrong values. + cached_is_ignored_ = true; + cached_is_ignored_but_included_in_tree_ = false; + if (IsDetached()) { // Only mock objects can end up being detached twice, because their owner // may have needed to detach them when they were detached, but couldn't @@ -574,9 +582,21 @@ void AXObject::SetParent(AXObject* new_parent) const { #if DCHECK_IS_ON() - DCHECK(new_parent || IsRoot()) - << "Parent cannot be null, except at the root, was null at " << GetNode() - << " " << GetLayoutObject(); + if (!new_parent && !IsRoot()) { + std::ostringstream message; + message << "Parent cannot be null, except at the root. " + "Parent chain from DOM, starting at |this|:"; + int count = 0; + for (Node* node = GetNode(); node; + node = GetParentNodeForComputeParent(node)) { + message << "\n" + << (++count) << ". " << node + << "\n LayoutObject=" << node->GetLayoutObject(); + if (AXObject* obj = AXObjectCache().Get(node)) + message << "\n " << obj->ToString(true, true); + } + NOTREACHED() << message.str(); + } if (new_parent) { DCHECK(!new_parent->IsDetached()) @@ -623,8 +643,6 @@ DCHECK(IsMissingParent()); SetParent(ComputeParent()); - - DCHECK(parent_); } // In many cases, ComputeParent() is not called, because the parent adding @@ -667,7 +685,7 @@ } // static -bool AXObject::CanComputeAsParent(Node* node) { +bool AXObject::CanComputeAsNaturalParent(Node* node) { // A <select> menulist that will use AXMenuList is not allowed. if (AXObjectCacheImpl::UseAXMenuList()) { if (auto* select = DynamicTo<HTMLSelectElement>(node)) { @@ -675,10 +693,14 @@ return false; } } - // A <br> can only have an inline textbox child. + + // A <br> can only support AXInlineTextBox children, which is never the result + // of a parent computation (the parent of the children is set at Init()). if (IsA<HTMLBRElement>(node)) return false; - // Parents of <area> are handled separately above. + + // Image map parent-child relationships (from image to area) must be retrieved + // manually via AXImageMapLink::GetAXObjectForImageMap(). if (IsA<HTMLMapElement>(node) || IsA<HTMLAreaElement>(node) || IsA<HTMLImageElement>(node)) { return false; @@ -695,12 +717,6 @@ << "Can't compute parent without a backing Node " "or LayoutObject."; - // A WebArea's parent should be the page popup owner, if any, otherwise null. - if (IsA<Document>(current_node)) { - LocalFrame* frame = current_layout_obj->GetFrame(); - return cache.GetOrCreate(frame->PagePopupOwner()); - } - // If no node, use the layout parent. if (!current_node) { // If no DOM node, this is an anonymous layout object. @@ -714,7 +730,7 @@ if (!parent_layout_obj) return nullptr; Node* parent_node = parent_layout_obj->GetNode(); - if (!CanComputeAsParent(parent_node)) + if (!CanComputeAsNaturalParent(parent_node)) return nullptr; if (AXObject* ax_parent = cache.GetOrCreate(parent_layout_obj)) { DCHECK(!ax_parent->IsDetached()); @@ -729,6 +745,13 @@ << "Should not call ComputeParent() with disconnected node: " << current_node; + // A WebArea's parent should be the page popup owner, if any, otherwise null. + if (auto* document = DynamicTo<Document>(current_node)) { + LocalFrame* frame = document->GetFrame(); + DCHECK(frame); + return cache.GetOrCreate(frame->PagePopupOwner()); + } + // For <option> in <select size=1>, return the popup. if (AXObjectCacheImpl::UseAXMenuList()) { if (auto* option = DynamicTo<HTMLOptionElement>(current_node)) { @@ -747,34 +770,36 @@ } } - current_node = GetParentNodeForComputeParent(current_node); - DCHECK(current_node); - - // When AXMenuList is being used, a menu list is only allowed to parent an - // AXMenuListPopup, which is added as a child on creation. No other - // children are allowed, and null is returned for anything else where the - // parent would be AXMenuList. - if (AXObjectCacheImpl::UseAXMenuList()) { - if (auto* select = DynamicTo<HTMLSelectElement>(current_node)) { - if (select->UsesMenuList()) - return nullptr; - } + Node* parent_node = GetParentNodeForComputeParent(current_node); + if (!parent_node) { + // This occurs when a DOM child isn't visited by LayoutTreeBuilderTraversal, + // such as an element child of a <textarea>, which only supports plain text. + return nullptr; } - if (!CanComputeAsParent(current_node)) + // When the flag to use AXMenuList in on, a menu list is only allowed to + // parent an AXMenuListPopup, which is added as a child on creation. No other + // children are allowed, and nullptr is returned for anything else where the + // parent would be AXMenuList. + if (AXObjectCacheImpl::ShouldCreateAXMenuListFor( + parent_node->GetLayoutObject())) { + return nullptr; + } + + if (!CanComputeAsNaturalParent(parent_node)) return nullptr; - if (AXObject* ax_parent = cache.GetOrCreate(current_node)) { + if (AXObject* ax_parent = cache.GetOrCreate(parent_node)) { DCHECK(!ax_parent->IsDetached()); // If the parent can't have children, then return null so that the caller // knows that it is not a relevant natural parent, as it is a leaf. return ax_parent->CanHaveChildren() ? ax_parent : nullptr; } - // Could not create AXObject for this the parent node, therefore there is no - // relevant natural parent. For example, the AXObject that would have been - // created would have been a descendant of a leaf, or otherwise an illegal - // child of a specialized object. + // Could not create AXObject for |parent_node|, therefore there is no relevant + // natural parent. For example, the AXObject that would have been created + // would have been a descendant of a leaf, or otherwise an illegal child of a + // specialized object. return nullptr; } @@ -2500,10 +2525,15 @@ } bool AXObject::LastKnownIsIgnoredValue() const { + DCHECK(cached_is_ignored_ || !IsDetached()) + << "A detached object should always indicate that it is ignored so that " + "it won't ever accidentally be included in the tree."; return cached_is_ignored_; } bool AXObject::LastKnownIsIgnoredButIncludedInTreeValue() const { + DCHECK(!cached_is_ignored_but_included_in_tree_ || !IsDetached()) + << "A detached object should never be included in the tree."; return cached_is_ignored_but_included_in_tree_; } @@ -4044,17 +4074,22 @@ if (IsMissingParent()) RepairMissingParent(); } else { - if (parent_->IsDetached()) { - // TODO(accessibility) This should never happen, but it fails - // All/DumpAccessibilityTreeTest.IgnoredCrash/blink, meaning that when - // ClearChildren() was called, the parent did not find this as a child, - // and could not DetachFromParent() on the child. - NOTREACHED() << "Cached parent should never be detached:" - << "\n* Child: " << RoleValue() << " " << GetNode() << " " - << GetLayoutObject() - << "\n* Parent: " << parent_->ToString(true, true); - return nullptr; - } + // If the cached parent is detached, it means that when ClearChildren() was + // called, the parent did not find this as a child, and could not + // DetachFromParent() on the child. + // Hint: one way to debug this illegal condition when it it occurs, is to + // locally patch ComputeAccessibilityIsIgnoredButIncludedInTree() so + // that it returns true for all objects. This should allow ClearChildren() + // on the parent to find the children and call DetachFromParent() on them. + DCHECK(!parent_->IsDetached()) + << "Cached parent cannot be detached:" + << "\n* |this| = " << ToString(true, true) + << "\n* GetNode() = " << GetNode() + << "\n* GetLayoutObject() = " << GetLayoutObject() + << "\n* Parent: " << parent_->ToString(true, true) + << "\n* GetParentNodeForComputeParent() = " + << GetParentNodeForComputeParent(GetNode()) + << "\n* OwnerShadowHost(): " << GetNode()->OwnerShadowHost(); } return parent_; @@ -4214,6 +4249,7 @@ for (Node* child_node = LayoutTreeBuilderTraversal::FirstChild(*GetNode()); child_node; child_node = LayoutTreeBuilderTraversal::NextSibling(*child_node)) { + // Get the child object that should be detached from this parent. AXObject* ax_child_from_node = AXObjectCache().Get(child_node); if (ax_child_from_node && ax_child_from_node->CachedParentObject() == this) {
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.h b/third_party/blink/renderer/modules/accessibility/ax_object.h index 204a637..483c157b5 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object.h +++ b/third_party/blink/renderer/modules/accessibility/ax_object.h
@@ -1117,8 +1117,15 @@ // the parent. It calls ComputeParentImpl() for the actual work. AXObject* ComputeParent() const; - // Can this node be used to compute the parent of an object? - static bool CanComputeAsParent(Node*); + // Can this node be used to compute the natural parent of an object? + // These are objects that can have some children, but the children are + // only of a certain type or from another part of the tree, and therefore + // the parent-child relationships are not natural and must be handled + // specially. For example, a <select> may be an innapropriate natural parent + // for all of its child nodes as determined by LayoutTreeBuilderTraversal, + // such as an <optgroup> or <div> in the shadow DOM, because an AXMenuList, if + // used, only allows <option>/AXMenuListOption children. + static bool CanComputeAsNaturalParent(Node*); // Compute the AXObject parent for the given node or layout_object. // The layout object is only necessary if the node is null, which is the case
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc index f81afdf..1753495b 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
@@ -234,7 +234,9 @@ } bool IsTextRelevantForAccessibility(const LayoutText& layout_text) { - DCHECK(layout_text.Parent()); + if (!layout_text.Parent()) + return false; + Node* node = layout_text.GetNode(); DCHECK(node); // Anonymous text is processed earlier, doesn't reach here. @@ -278,35 +280,37 @@ if (!node->IsInUserAgentShadowRoot()) return true; - // All non-slot user agent shadow nodes are relevant. + // Don't use non-<option> descendants of an AXMenuList. + // If the UseAXMenuList flag is on, we use a specialized class AXMenuList + // for handling the user-agent shadow DOM exposed by a <select> element. + // That class adds a mock AXMenuListPopup, which adds AXMenuListOption + // children for <option> descendants only. + if (AXObjectCacheImpl::UseAXMenuList() && !IsA<HTMLOptionElement>(node)) { + // Find any ancestor <select> if it is present. + Node* host = node->OwnerShadowHost(); + auto* select_element = DynamicTo<HTMLSelectElement>(host); + if (!select_element) { + // An <optgroup> can be a shadow host too -- look for it's owner <select>. + if (auto* opt_group_element = DynamicTo<HTMLOptGroupElement>(host)) + select_element = opt_group_element->OwnerSelectElement(); + } + if (select_element) { + if (!select_element->GetLayoutObject()) + return select_element->IsInCanvasSubtree(); + // Non-option: only create AXObject if not inside an AXMenuList. + return !AXObjectCacheImpl::ShouldCreateAXMenuListFor( + select_element->GetLayoutObject()); + } + } + + // Outside of AXMenuList descendants, all other non-slot user agent shadow + // nodes are relevant. const HTMLSlotElement* slot_element = DynamicTo<HTMLSlotElement>(node); if (!slot_element) return true; - // All empty slots are irrelevant. - if (!LayoutTreeBuilderTraversal::FirstChild(*slot_element)) - return false; - - // If the UseAXMenuList flag is on, we use a specialized class AXMenuList - // for handling the user-agent shadow DOM exposed by a <select> element. - if (AXObjectCacheImpl::UseAXMenuList()) { - // Don't use any shadow root descendants, because AXMenuList already - // handles adding descendants and these would be redundant. - // DOM traversal is still necessary for the <canvas> case. - Node* host = node->OwnerShadowHost(); - auto* select_element = DynamicTo<HTMLSelectElement>(host); - if (!select_element) { - if (auto* opt_group_element = DynamicTo<HTMLOptGroupElement>(host)) - select_element = opt_group_element->OwnerSelectElement(); - } - - if (select_element) { - return !select_element->UsesMenuList() || - select_element->IsInCanvasSubtree(); - } - } - - return true; + // Slots are relevant if they have content. + return LayoutTreeBuilderTraversal::FirstChild(*slot_element); } bool IsLayoutObjectRelevantForAccessibility(const LayoutObject& layout_object) { @@ -317,9 +321,6 @@ return AXObjectCacheImpl::IsRelevantPseudoElementDescendant(layout_object); } - if (layout_object.IsText()) - return IsTextRelevantForAccessibility(To<LayoutText>(layout_object)); - Node* node = layout_object.GetNode(); DCHECK(node) << "Non-anonymous layout objects always have a node"; @@ -328,6 +329,9 @@ return false; } + if (layout_object.IsText()) + return IsTextRelevantForAccessibility(To<LayoutText>(layout_object)); + // Menu list option and HTML area elements are indexed by DOM node, never by // layout object. if (AXObjectCacheImpl::ShouldCreateAXMenuListOptionFor(node)) @@ -375,6 +379,11 @@ if (node->IsDocumentNode()) return true; + if (node->ContainingShadowRoot() && + !IsShadowContentRelevantForAccessibility(node)) { + return false; + } + if (node->IsTextNode()) { // Layout has more info available to determine if whitespace is relevant. // If display-locked, layout object may be missing or stale: @@ -405,12 +414,6 @@ return !To<Text>(node)->ContainsOnlyWhitespaceOrEmpty(); } - // Node also not relevant -- truncate subtree here. - if (node->ContainingShadowRoot() && - !IsShadowContentRelevantForAccessibility(node)) { - return false; - } - if (!node->IsElementNode()) return false; // Only documents, elements and text nodes get ax objects. @@ -799,22 +802,21 @@ return MakeGarbageCollected<AXSlider>(layout_object, *this); } - if (layout_object->IsBoxModelObject()) { - auto* css_box = To<LayoutBoxModelObject>(layout_object); - if (auto* select_element = DynamicTo<HTMLSelectElement>(node)) { - if (select_element->UsesMenuList()) { - if (use_ax_menu_list_) - return MakeGarbageCollected<AXMenuList>(css_box, *this); - } else { - return MakeGarbageCollected<AXListBox>(css_box, *this); + if (auto* select_element = DynamicTo<HTMLSelectElement>(node)) { + if (select_element->UsesMenuList()) { + if (use_ax_menu_list_) { + DCHECK(ShouldCreateAXMenuListFor(layout_object)); + return MakeGarbageCollected<AXMenuList>(layout_object, *this); } + } else { + return MakeGarbageCollected<AXListBox>(layout_object, *this); } + } - // progress bar - if (css_box->IsProgress()) { - return MakeGarbageCollected<AXProgressIndicator>( - To<LayoutProgress>(css_box), *this); - } + // progress bar + if (layout_object->IsProgress()) { + return MakeGarbageCollected<AXProgressIndicator>( + To<LayoutProgress>(layout_object), *this); } return MakeGarbageCollected<AXLayoutObject>(layout_object, *this); @@ -827,10 +829,25 @@ auto* option_element = DynamicTo<HTMLOptionElement>(node); if (!option_element) return false; - const HTMLSelectElement* select = option_element->OwnerSelectElement(); - if (!select || !select->UsesMenuList()) + + if (auto* select = option_element->OwnerSelectElement()) + return ShouldCreateAXMenuListFor(select->GetLayoutObject()); + + return false; +} + +// static +bool AXObjectCacheImpl::ShouldCreateAXMenuListFor(LayoutObject* layout_object) { + if (!layout_object) return false; - return select->GetLayoutObject() && AXObjectCacheImpl::UseAXMenuList(); + + if (!AXObjectCacheImpl::UseAXMenuList()) + return false; + + if (auto* select = DynamicTo<HTMLSelectElement>(layout_object->GetNode())) + return select->UsesMenuList(); + + return false; } // static @@ -982,6 +999,19 @@ return nullptr; } +#if DCHECK_IS_ON() + if (!IsA<HTMLOptionElement>(node) && node->IsInUserAgentShadowRoot()) { + if (Node* owner_shadow_host = node->OwnerShadowHost()) { + DCHECK(!AXObjectCacheImpl::ShouldCreateAXMenuListFor( + owner_shadow_host->GetLayoutObject())) + << "DOM descendants of an AXMenuList should not be added to the AX " + "hierarchy, except for the AXMenuListOption children added in " + "AXMenuListPopup. An attempt was made to create an AXObject for: " + << node; + } + } +#endif + AXObject* parent = parent_if_known ? parent_if_known : AXObject::ComputeNonARIAParent(*this, node); @@ -1057,6 +1087,20 @@ return nullptr; } +#if DCHECK_IS_ON() + if (node && !IsA<HTMLOptionElement>(node) && + node->IsInUserAgentShadowRoot()) { + if (Node* owner_shadow_host = node->OwnerShadowHost()) { + DCHECK(!AXObjectCacheImpl::ShouldCreateAXMenuListFor( + owner_shadow_host->GetLayoutObject())) + << "DOM descendants of an AXMenuList should not be added to the AX " + "hierarchy, except for the AXMenuListOption children added in " + "AXMenuListPopup. An attempt was made to create an AXObject for: " + << node; + } + } +#endif + // Prefer creating AXNodeObjects over AXLayoutObjects in locked subtrees // (e.g. content-visibility: auto), even if a LayoutObject is available, // because the LayoutObject is not guaranteed to be up-to-date (it might come @@ -1223,7 +1267,7 @@ if (!obj) return; - ChildrenChanged(obj->CachedParentObject()); + AXObject* parent = obj->CachedParentObject(); obj->Detach(); RemoveAXID(obj); @@ -1234,6 +1278,11 @@ if (!objects_.Take(ax_id)) return; + // This will clear the children of |parent| immediately, and therefore must + // come after obj->Detach(), which accesses the children in order + // to detach all of them from |parent|. + ChildrenChanged(parent); + DCHECK_GE(objects_.size(), ids_in_use_.size()); } @@ -1242,18 +1291,23 @@ return; AXID ax_id = accessible_node_mapping_.at(accessible_node); - Remove(ax_id); accessible_node_mapping_.erase(accessible_node); + + Remove(ax_id); } -void AXObjectCacheImpl::Remove(LayoutObject* layout_object) { +bool AXObjectCacheImpl::Remove(LayoutObject* layout_object) { if (!layout_object) - return; + return false; AXID ax_id = layout_object_mapping_.at(layout_object); + if (!ax_id) + return false; - Remove(ax_id); layout_object_mapping_.erase(layout_object); + Remove(ax_id); + + return true; } void AXObjectCacheImpl::Remove(Node* node) { @@ -1262,11 +1316,10 @@ // This is all safe even if we didn't have a mapping. AXID ax_id = node_object_mapping_.at(node); - Remove(ax_id); node_object_mapping_.erase(node); - if (node->GetLayoutObject()) - Remove(node->GetLayoutObject()); + if (!Remove(node->GetLayoutObject())) + Remove(ax_id); } void AXObjectCacheImpl::Remove(AbstractInlineTextBox* inline_text_box) { @@ -1274,8 +1327,9 @@ return; AXID ax_id = inline_text_box_object_mapping_.at(inline_text_box); - Remove(ax_id); inline_text_box_object_mapping_.erase(inline_text_box); + + Remove(ax_id); } AXID AXObjectCacheImpl::GenerateAXID() const { @@ -1730,9 +1784,11 @@ } void AXObjectCacheImpl::ChildrenChanged(AXObject* obj) { - if (!obj) + if (!obj || obj->IsDetached()) return; + obj->SetNeedsToUpdateChildren(); + Node* node = obj->GetNode(); if (node && !nodes_with_pending_children_changed_.insert(node).is_new_entry) return;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h index cfe3452..cb97ab0 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h +++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
@@ -107,7 +107,8 @@ void ImageLoaded(const LayoutObject*) override; void Remove(AccessibleNode*) override; - void Remove(LayoutObject*) override; + // Returns false if no associated AXObject exists in the cache. + bool Remove(LayoutObject*) override; void Remove(Node*) override; void Remove(AbstractInlineTextBox*) override; void Remove(AXObject*); // Calls more specific Remove methods as necessary. @@ -206,7 +207,9 @@ AXObject* Get(AccessibleNode*); AXObject* Get(AbstractInlineTextBox*); - AXObject* Get(const Node*) override; + // Get an AXObject* backed by the passed-in DOM node or the node's layout + // object, whichever is available. + AXObject* Get(const Node*); AXObject* Get(const LayoutObject*); AXObject* FirstAccessibleObjectFromNode(const Node*); @@ -313,6 +316,7 @@ AXObject* GetActiveAriaModalDialog() const; static bool UseAXMenuList() { return use_ax_menu_list_; } + static bool ShouldCreateAXMenuListFor(LayoutObject* layout_object); static bool ShouldCreateAXMenuListOptionFor(const Node*); static bool IsRelevantPseudoElement(const Node& node); static bool IsRelevantPseudoElementDescendant(
diff --git a/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc b/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc index 0b760c7..ae679b57 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_relation_cache.cc
@@ -136,7 +136,7 @@ // Many types of nodes cannot be used as parent in normal situations. // These rules also apply to allowing aria-owns. - if (!AXObject::CanComputeAsParent(owner->GetNode())) + if (!AXObject::CanComputeAsNaturalParent(owner->GetNode())) return false; return true;
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc b/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc index fe65452..a552b6d6 100644 --- a/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.cc
@@ -53,6 +53,8 @@ ScriptState::Scope scope(script_state); v8::Isolate* isolate = script_state->GetIsolate(); v8::Local<v8::Context> context = script_state->GetContext(); + v8::MicrotasksScope microtasks_scope( + isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); AudioWorkletProcessorDefinition* definition = global_scope_->FindDefinition(Name());
diff --git a/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h b/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h index b2937f6b..6cebd03 100644 --- a/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h +++ b/third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h
@@ -10,7 +10,6 @@ #include "base/compiler_specific.h" #include "base/macros.h" #include "third_party/blink/renderer/platform/heap/unified_heap_marking_visitor.h" -#include "third_party/blink/renderer/platform/heap/visitor.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "third_party/blink/renderer/platform/wtf/buildflags.h" #include "third_party/blink/renderer/platform/wtf/hash_traits.h"
diff --git a/third_party/blink/renderer/platform/heap/BUILD.gn b/third_party/blink/renderer/platform/heap/BUILD.gn index 4e507b9..626e0ddc 100644 --- a/third_party/blink/renderer/platform/heap/BUILD.gn +++ b/third_party/blink/renderer/platform/heap/BUILD.gn
@@ -67,6 +67,7 @@ "collection_support/heap_vector_backing.h", "custom_spaces.h", "disallow_new_wrapper.h", + "forward.h", "garbage_collected.h", "gc_task_runner.h", "handle.h",
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_deque.h b/third_party/blink/renderer/platform/heap/collection_support/heap_deque.h index 486f62fb..69f9467ee 100644 --- a/third_party/blink/renderer/platform/heap/collection_support/heap_deque.h +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_deque.h
@@ -7,9 +7,9 @@ // Include heap_vector.h to also make general VectorTraits available. #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" +#include "third_party/blink/renderer/platform/heap/forward.h" #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap_allocator_impl.h" -#include "third_party/blink/renderer/platform/heap/visitor.h" #include "third_party/blink/renderer/platform/wtf/deque.h" #include "third_party/blink/renderer/platform/wtf/type_traits.h"
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_counted_set.h b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_counted_set.h index af5034e..9fc631c 100644 --- a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_counted_set.h +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_counted_set.h
@@ -5,9 +5,9 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_HASH_COUNTED_SET_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_HASH_COUNTED_SET_H_ +#include "third_party/blink/renderer/platform/heap/forward.h" #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap_allocator_impl.h" -#include "third_party/blink/renderer/platform/heap/visitor.h" #include "third_party/blink/renderer/platform/wtf/hash_counted_set.h" namespace blink {
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h index e9d389c..0dbefa3 100644 --- a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h
@@ -6,9 +6,9 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_HASH_MAP_H_ #include "third_party/blink/renderer/platform/bindings/trace_wrapper_v8_reference.h" +#include "third_party/blink/renderer/platform/heap/forward.h" #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap_allocator_impl.h" -#include "third_party/blink/renderer/platform/heap/visitor.h" #include "third_party/blink/renderer/platform/wtf/hash_map.h" namespace blink {
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h index 7dd4d426..5209fc6 100644 --- a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h
@@ -5,9 +5,9 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_HASH_SET_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_HASH_SET_H_ +#include "third_party/blink/renderer/platform/heap/forward.h" #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap_allocator_impl.h" -#include "third_party/blink/renderer/platform/heap/visitor.h" #include "third_party/blink/renderer/platform/wtf/hash_set.h" namespace blink {
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h index 73814f4..31f0965 100644 --- a/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_hash_table_backing.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_HASH_TABLE_BACKING_H_ #include "third_party/blink/renderer/platform/heap/trace_traits.h" +#include "third_party/blink/renderer/platform/heap/visitor.h" #include "third_party/blink/renderer/platform/wtf/buildflags.h" #if BUILDFLAG(USE_V8_OILPAN)
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_linked_hash_set.h b/third_party/blink/renderer/platform/heap/collection_support/heap_linked_hash_set.h index 47c518aa..f74d768 100644 --- a/third_party/blink/renderer/platform/heap/collection_support/heap_linked_hash_set.h +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_linked_hash_set.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_LINKED_HASH_SET_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_LINKED_HASH_SET_H_ +#include "third_party/blink/renderer/platform/heap/forward.h" #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap_allocator_impl.h" #include "third_party/blink/renderer/platform/wtf/linked_hash_set.h"
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_list_hash_set.h b/third_party/blink/renderer/platform/heap/collection_support/heap_list_hash_set.h index aee44bb6..2a8ed51f 100644 --- a/third_party/blink/renderer/platform/heap/collection_support/heap_list_hash_set.h +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_list_hash_set.h
@@ -7,6 +7,7 @@ #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/member.h" +#include "third_party/blink/renderer/platform/heap/visitor.h" #include "third_party/blink/renderer/platform/wtf/list_hash_set.h" #include "third_party/blink/renderer/platform/wtf/type_traits.h"
diff --git a/third_party/blink/renderer/platform/heap/collection_support/heap_vector.h b/third_party/blink/renderer/platform/heap/collection_support/heap_vector.h index 1b3ccbc8..a6d7417 100644 --- a/third_party/blink/renderer/platform/heap/collection_support/heap_vector.h +++ b/third_party/blink/renderer/platform/heap/collection_support/heap_vector.h
@@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_VECTOR_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_COLLECTION_SUPPORT_HEAP_VECTOR_H_ +#include "third_party/blink/renderer/platform/heap/forward.h" #include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap_allocator_impl.h" #include "third_party/blink/renderer/platform/wtf/type_traits.h"
diff --git a/third_party/blink/renderer/platform/heap/forward.h b/third_party/blink/renderer/platform/heap/forward.h new file mode 100644 index 0000000..18a9238 --- /dev/null +++ b/third_party/blink/renderer/platform/heap/forward.h
@@ -0,0 +1,32 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_FORWARD_H_ +#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_FORWARD_H_ + +#include "third_party/blink/renderer/platform/wtf/buildflags.h" + +#if BUILDFLAG(USE_V8_OILPAN) + +namespace cppgc { +class Visitor; +} + +namespace blink { + +using Visitor = cppgc::Visitor; + +} // namespace blink + +#else // !USE_V8_OILPAN + +namespace blink { + +class Visitor; + +} // namespace blink + +#endif // !USE_V8_OILPAN + +#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_FORWARD_H_
diff --git a/third_party/blink/renderer/platform/heap/v8_wrapper/blink_gc.h b/third_party/blink/renderer/platform/heap/v8_wrapper/blink_gc.h index e2d376d9..b5fe0b2 100644 --- a/third_party/blink/renderer/platform/heap/v8_wrapper/blink_gc.h +++ b/third_party/blink/renderer/platform/heap/v8_wrapper/blink_gc.h
@@ -5,7 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_V8_WRAPPER_BLINK_GC_H_ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_V8_WRAPPER_BLINK_GC_H_ -#include "third_party/blink/renderer/platform/heap/visitor.h" +#include "third_party/blink/renderer/platform/heap/forward.h" #include "third_party/blink/renderer/platform/platform_export.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" #include "v8/include/cppgc/liveness-broker.h"
diff --git a/third_party/blink/renderer/platform/heap_observer_set.h b/third_party/blink/renderer/platform/heap_observer_set.h index 87e7db7..6e992ea 100644 --- a/third_party/blink/renderer/platform/heap_observer_set.h +++ b/third_party/blink/renderer/platform/heap_observer_set.h
@@ -6,7 +6,9 @@ #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_HEAP_OBSERVER_SET_H_ #include "base/auto_reset.h" -#include "third_party/blink/renderer/platform/heap/handle.h" +#include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h" +#include "third_party/blink/renderer/platform/heap/member.h" +#include "third_party/blink/renderer/platform/heap/visitor.h" namespace blink {
diff --git a/third_party/blink/web_tests/LeakExpectations b/third_party/blink/web_tests/LeakExpectations index 87441365..4b659a72 100644 --- a/third_party/blink/web_tests/LeakExpectations +++ b/third_party/blink/web_tests/LeakExpectations
@@ -200,6 +200,9 @@ crbug.com/1199904 [ Linux ] http/tests/devtools/editor/text-editor-accessibility.js [ Pass Failure ] crbug.com/1199904 [ Linux ] virtual/site-isolated-code-cache/http/tests/devtools/isolated-code-cache/cross-origin-test.js [ Pass Failure ] +# Sheriff 2021-05-03 +crbug.com/1197465 [ Linux ] virtual/scroll-unification/fast/events/mouse-cursor-no-mousemove.html [ Pass Failure ] + ########################################################################### # WARNING: Memory leaks must be fixed asap. Sheriff is expected to revert # # culprit CLs instead of suppressing the leaks. If you have any question, #
diff --git a/third_party/blink/web_tests/MSANExpectations b/third_party/blink/web_tests/MSANExpectations index 32a9be5..0774fb989 100644 --- a/third_party/blink/web_tests/MSANExpectations +++ b/third_party/blink/web_tests/MSANExpectations
@@ -133,7 +133,7 @@ crbug.com/856601 [ Linux ] external/wpt/compression/compression-stream.tentative.any.serviceworker.html [ Pass Timeout ] # Sheriff 2020-01-10 -crbug.com/1041052 [ Linux ] external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html [ Timeout ] +crbug.com/1041052 [ Linux ] external/wpt/html/canvas/offscreen/manual/filters/offscreencanvas.filter.w.html [ Timeout ] crbug.com/1041052 [ Linux ] external/wpt/html/canvas/element/fill-and-stroke-styles/canvas_colorsandstyles_createlineargradient_001.htm [ Timeout ] # Sheriff 2020-02-10
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 79fce70..337b5bb 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -58,6 +58,10 @@ crbug.com/1048761 external/wpt/websockets/interfaces/WebSocket/readyState/003.html?wss [ Pass Failure ] crbug.com/1048761 external/wpt/websockets/unload-a-document/002.html?wss [ Pass Failure ] +# Tests are flaky after a WPT import +crbug.com/1204961 [ Mac ] external/wpt/websockets/stream/tentative/abort.any.html?wpt_flags=h2 [ Pass Failure ] +crbug.com/1204961 [ Mac ] external/wpt/websockets/stream/tentative/constructor.any.sharedworker.html?wpt_flags=h2 [ Pass Failure ] + # WPT Test harness doesn't deal with finding an about:blank ref test crbug.com/1066130 external/wpt/infrastructure/assumptions/blank.html [ Failure ] @@ -2936,7 +2940,7 @@ crbug.com/626703 [ Win ] external/wpt/FileAPI/file/send-file-formdata-controls.html [ Failure Crash ] crbug.com/626703 [ Linux ] external/wpt/websockets/Close-1000-verify-code.any.worker.html?wpt_flags=h2 [ Timeout ] crbug.com/626703 [ Win ] external/wpt/websockets/Close-1000-verify-code.any.worker.html?wpt_flags=h2 [ Timeout ] -crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/stream/tentative/abort.any.serviceworker.html?wpt_flags=h2 [ Failure Crash ] +crbug.com/626703 [ Mac ] external/wpt/websockets/stream/tentative/abort.any.serviceworker.html?wpt_flags=h2 [ Failure Crash Pass ] crbug.com/626703 [ Win10 ] external/wpt/websockets/stream/tentative/abort.any.serviceworker.html?wpt_flags=h2 [ Failure Crash ] crbug.com/626703 [ Mac10.15 ] external/wpt/websockets/stream/tentative/abort.any.sharedworker.html?wpt_flags=h2 [ Failure Crash ] crbug.com/626703 [ Win10 ] external/wpt/websockets/stream/tentative/abort.any.sharedworker.html?wpt_flags=h2 [ Failure Crash ] @@ -6877,6 +6881,9 @@ # Sheriff 2021-03-23 crbug.com/1182689 [ Mac ] external/wpt/editing/run/delete.html?6001-last [ Failure ] +# Temporarily disable to update DevTools +crbug.com/1202024 http/tests/devtools/resource-tree/resource-tree-events.js [ Pass Failure ] + # Sheriff 2021-03-24 crbug.com/1192215 [ Linux ] external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html [ Pass Failure ] @@ -7070,3 +7077,8 @@ # Sheriff 2021-04-30 crbug.com/1204498 [ Linux ] virtual/scroll-unification/fast/events/hit-test-cache-iframes.html [ Pass Failure ] + +# Sheriff 2021-05-03 +crbug.com/1161155 [ Mac ] paint/invalidation/image/canvas-composite-repaint-by-all-imagesource.html [ Failure ] +crbug.com/1205012 external/wpt/html/cross-origin-opener-policy/reporting/access-reporting/reporting-observer.html [ Timeout Pass ] +crbug.com/1197465 [ Linux ] virtual/scroll-unification/fast/events/mouse-cursor-no-mousemove.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/crypto/random-values-expected.txt b/third_party/blink/web_tests/crypto/random-values-expected.txt index 92f0022..0756889f 100644 --- a/third_party/blink/web_tests/crypto/random-values-expected.txt +++ b/third_party/blink/web_tests/crypto/random-values-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. Tests crypto.randomValues. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/crypto/subtle/importKey-badParameters-expected.txt b/third_party/blink/web_tests/crypto/subtle/importKey-badParameters-expected.txt index 8152d60..97b3780 100644 --- a/third_party/blink/web_tests/crypto/subtle/importKey-badParameters-expected.txt +++ b/third_party/blink/web_tests/crypto/subtle/importKey-badParameters-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 69: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. Tests calling cypto.subtle.importKey with bad parameters On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/crypto/worker-random-values-expected.txt b/third_party/blink/web_tests/crypto/worker-random-values-expected.txt index d5b035e..07ff656 100644 --- a/third_party/blink/web_tests/crypto/worker-random-values-expected.txt +++ b/third_party/blink/web_tests/crypto/worker-random-values-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. [Worker] Tests crypto.randomValues. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filters/offscreencanvas.filter.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filters/offscreencanvas.filter.html rename to third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.html
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filters/offscreencanvas.filter.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.js similarity index 100% rename from third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filters/offscreencanvas.filter.js rename to third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.js
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filters/offscreencanvas.filter.w.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html similarity index 100% rename from third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filters/offscreencanvas.filter.w.html rename to third_party/blink/web_tests/external/wpt/html/canvas/offscreen/manual/filter/offscreencanvas.filter.w.html
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any-expected.txt b/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any-expected.txt new file mode 100644 index 0000000..9cad9da --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any-expected.txt
@@ -0,0 +1,8 @@ +This is a testharness.js-based test. +FAIL SharedArrayBuffer constructor does not exist without COOP+COEP assert_equals: expected (undefined) undefined but got (function) function "function SharedArrayBuffer() { [native code] }" +FAIL SharedArrayBuffer over MessageChannel without COOP+COEP assert_throws_dom: function "() => channel.port1.postMessage(sab)" did not throw +FAIL SharedArrayBuffer over BroadcastChannel without COOP+COEP assert_throws_dom: function "() => channel.postMessage(sab)" did not throw +FAIL SharedArrayBuffer over postMessage() without COOP+COEP assert_throws_dom: function "() => self.postMessage(sab)" did not throw +PASS Bonus: self.crossOriginIsolated +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.serviceworker-expected.txt b/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.serviceworker-expected.txt new file mode 100644 index 0000000..11ccabc --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.serviceworker-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +FAIL SharedArrayBuffer constructor does not exist without COOP+COEP assert_equals: expected (undefined) undefined but got (function) function "function SharedArrayBuffer() { [native code] }" +FAIL SharedArrayBuffer over MessageChannel without COOP+COEP assert_throws_dom: function "() => channel.port1.postMessage(sab)" did not throw +FAIL SharedArrayBuffer over BroadcastChannel without COOP+COEP assert_throws_dom: function "() => channel.postMessage(sab)" did not throw +PASS Bonus: self.crossOriginIsolated +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.sharedworker-expected.txt b/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.sharedworker-expected.txt new file mode 100644 index 0000000..11ccabc --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.sharedworker-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +FAIL SharedArrayBuffer constructor does not exist without COOP+COEP assert_equals: expected (undefined) undefined but got (function) function "function SharedArrayBuffer() { [native code] }" +FAIL SharedArrayBuffer over MessageChannel without COOP+COEP assert_throws_dom: function "() => channel.port1.postMessage(sab)" did not throw +FAIL SharedArrayBuffer over BroadcastChannel without COOP+COEP assert_throws_dom: function "() => channel.postMessage(sab)" did not throw +PASS Bonus: self.crossOriginIsolated +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.worker-expected.txt b/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.worker-expected.txt new file mode 100644 index 0000000..11ccabc --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/no-coop-coep.https.any.worker-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +FAIL SharedArrayBuffer constructor does not exist without COOP+COEP assert_equals: expected (undefined) undefined but got (function) function "function SharedArrayBuffer() { [native code] }" +FAIL SharedArrayBuffer over MessageChannel without COOP+COEP assert_throws_dom: function "() => channel.port1.postMessage(sab)" did not throw +FAIL SharedArrayBuffer over BroadcastChannel without COOP+COEP assert_throws_dom: function "() => channel.postMessage(sab)" did not throw +PASS Bonus: self.crossOriginIsolated +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/lint.ignore b/third_party/blink/web_tests/external/wpt/lint.ignore index a907b17c..f382f138 100644 --- a/third_party/blink/web_tests/external/wpt/lint.ignore +++ b/third_party/blink/web_tests/external/wpt/lint.ignore
@@ -289,7 +289,7 @@ GENERATE_TESTS: mediacapture-fromelement/capture.html GENERATE_TESTS: mediacapture-fromelement/creation.html GENERATE_TESTS: mediacapture-fromelement/ended.html -GENERATE_TESTS: html/canvas/offscreen/manual/filters/offscreencanvas.filter.html +GENERATE_TESTS: html/canvas/offscreen/manual/filter/offscreencanvas.filter.html GENERATE_TESTS: pointerevents/pointerevent_constructor.html GENERATE_TESTS: pointerevents/extension/pointerevent_constructor.html GENERATE_TESTS: selection/collapse.js
diff --git a/third_party/blink/web_tests/fast/beacon/beacon-basic-expected.txt b/third_party/blink/web_tests/fast/beacon/beacon-basic-expected.txt index f9ffbc6..63660ef6 100644 --- a/third_party/blink/web_tests/fast/beacon/beacon-basic-expected.txt +++ b/third_party/blink/web_tests/fast/beacon/beacon-basic-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. Exercising the Beacon API On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/canvas/OffscreenCanvas-2d-filter-object-blur-expected.html b/third_party/blink/web_tests/fast/canvas/OffscreenCanvas-2d-filter-object-blur-expected.html deleted file mode 100644 index ae8911b..0000000 --- a/third_party/blink/web_tests/fast/canvas/OffscreenCanvas-2d-filter-object-blur-expected.html +++ /dev/null
@@ -1,19 +0,0 @@ -<body> - <canvas id="canvas" width="300" height="300"></canvas> -</body> -<script> - var canvas = document.getElementById('canvas'); - var ctx = canvas.getContext('2d'); - ctx.filter = 'blur(2px)'; - ctx.fillStyle = 'yellow'; - ctx.fillRect(10,10,100,100); - ctx.filter = 'blur(5px)'; - ctx.fillStyle = 'magenta'; - ctx.fillRect(120, 10, 100, 100); - ctx.filter = 'blur(5px) blur(10px)'; - ctx.fillStyle = 'cyan'; - ctx.fillRect(10, 120, 100, 100); - ctx.filter = 'none'; - ctx.fillStyle = 'black'; - ctx.fillRect(120, 120, 100, 100); -</script>
diff --git a/third_party/blink/web_tests/fast/canvas/OffscreenCanvas-2d-filter-object-blur.html b/third_party/blink/web_tests/fast/canvas/OffscreenCanvas-2d-filter-object-blur.html deleted file mode 100644 index 152cb362..0000000 --- a/third_party/blink/web_tests/fast/canvas/OffscreenCanvas-2d-filter-object-blur.html +++ /dev/null
@@ -1,59 +0,0 @@ -<head> -<link rel="match" href="canvas-filter-object-blur-expected.html"> -<script src="/resources/testharness.js"></script> -<script src="/resources/testharnessreport.js"></script> -<script src="/html/canvas/resources/canvas-tests.js"></script> -</head> -<body> - <canvas id="canvas" width="300" height="300"></canvas> -</body> - -<body> - <script id="workerCode"> - self.onmessage = function(event) { - // const offscreenCanvas = event.data.canvas; - const offscreenCanvas = new OffscreenCanvas(300, 300); - const ctx = offscreenCanvas.getContext("2d"); - ctx.filter = new CanvasFilter({blur: {stdDeviation: 2}}); - ctx.fillStyle = 'yellow'; - ctx.fillRect(10,10,100,100); - ctx.filter = new CanvasFilter({blur: {stdDeviation: 5}}); - ctx.fillStyle = 'magenta'; - ctx.fillRect(120, 10, 100, 100); - ctx.filter = new CanvasFilter([{ - blur: {stdDeviation: 5}}, {blur: {stdDeviation: 10}}]); - ctx.fillStyle = 'cyan'; - ctx.fillRect(10, 120, 100, 100); - ctx.filter = 'none'; - ctx.fillStyle = 'black'; - ctx.fillRect(120, 120, 100, 100); - var img = offscreenCanvas.transferToImageBitmap(); - self.postMessage(img, img); - } - </script> - - <script> - if (window.testRunner) - testRunner.waitUntilDone(); - - function test() { - const workerCode = document.querySelector("#workerCode").textContent; - const blob = new Blob([workerCode], { type: 'text/javascript' }); - const url = URL.createObjectURL(blob); - const worker = new Worker(url); - const canvas = document.getElementById("canvas"); - const outputCtx = canvas.getContext("bitmaprenderer"); - // const offscreenCanvas = canvas.transferControlToOffscreen(); - // worker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]); - worker.postMessage({msg: "go"}); - worker.addEventListener('message', (event) => { - outputCtx.transferFromImageBitmap(event.data); - if (window.testRunner) - testRunner.notifyDone(); - }); - }; - test(); - </script> -</body> - -</html>
diff --git a/third_party/blink/web_tests/fast/css/fontface-arraybuffer-expected.txt b/third_party/blink/web_tests/fast/css/fontface-arraybuffer-expected.txt index 1b66ab06..ef6deffe 100644 --- a/third_party/blink/web_tests/fast/css/fontface-arraybuffer-expected.txt +++ b/third_party/blink/web_tests/fast/css/fontface-arraybuffer-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 29: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. Tests ArrayBuffer / ArrayBufferView constructors of FontFace. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix-expected.txt b/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix-expected.txt index ac5cc4a..09b692c 100644 --- a/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix-expected.txt +++ b/third_party/blink/web_tests/fast/dom/geometry-interfaces-dom-matrix-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 125: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. This is a testharness.js-based test. Harness Error. harness_status.status = 1 , harness_status.message = 1 duplicate test name: "DOMMatrix(numberSequence) constructor" PASS DOMMatrix() constructor
diff --git a/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor-expected.txt b/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor-expected.txt index c1c827b..db97d36 100644 --- a/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor-expected.txt +++ b/third_party/blink/web_tests/fast/events/constructors/midi-message-event-constructor-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 35: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. This tests the constructor for the MIDIMessageEvent DOM class. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/files/blob-constructor-expected.txt b/third_party/blink/web_tests/fast/files/blob-constructor-expected.txt index 790b64c..2cfd83c 100644 --- a/third_party/blink/web_tests/fast/files/blob-constructor-expected.txt +++ b/third_party/blink/web_tests/fast/files/blob-constructor-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. Test the Blob constructor. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer-expected.txt b/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer-expected.txt index a9c81a7..e448b9121 100644 --- a/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer-expected.txt +++ b/third_party/blink/web_tests/fast/webgl/webgl-sharedarraybuffer-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 29: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. This is a testharness.js-based test. PASS bufferData PASS compressedTexImage2D
diff --git a/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt b/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt index 64bf5d6..f859c05 100644 --- a/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt +++ b/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers-expected.txt
@@ -1,4 +1,85 @@ +CONSOLE WARNING: line 119: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. Test sharing SharedArrayBuffers between dedicated workers. -SharedArrayBuffers are not enabled -- skipping test. +Running SharedArrayBuffer test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred data is OK. +PASS: Transferred data is OK. +Running Int8Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Uint8Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Uint8ClampedArray test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Int16Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Uint16Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Int32Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Uint32Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Float32Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Float64Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +DONE
diff --git a/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers.html b/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers.html index 91739758..efb9863 100644 --- a/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers.html +++ b/third_party/blink/web_tests/fast/workers/chromium/worker-sharedarraybuffer-transfer-two-workers.html
@@ -164,7 +164,7 @@ testRunner.waitUntilDone(); } -if (window.internals && internals.runtimeFlags.sharedArrayBufferEnabled && window.SharedArrayBuffer) { +if (window.SharedArrayBuffer) { var worker = new Worker('../resources/worker-sharedarraybuffer-transfer.js'); var secondaryWorker = new Worker('../resources/worker-sharedarraybuffer-transfer.js'); var pendingWorkerReplies = 0;
diff --git a/third_party/blink/web_tests/fast/workers/worker-atomics-wait-expected.txt b/third_party/blink/web_tests/fast/workers/worker-atomics-wait-expected.txt index f10bb142..21fcba3 100644 --- a/third_party/blink/web_tests/fast/workers/worker-atomics-wait-expected.txt +++ b/third_party/blink/web_tests/fast/workers/worker-atomics-wait-expected.txt
@@ -1,4 +1,8 @@ +CONSOLE WARNING: line 18: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 2: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. Test that Atomics.wait is not allowed on the main thread. -SharedArrayBuffers are not enabled -- skipping test. +PASS: Calling Atomics.wait on the main thread throws. +PASS: Atomics.wait is allowed in a worker. +DONE
diff --git a/third_party/blink/web_tests/fast/workers/worker-atomics-wait.html b/third_party/blink/web_tests/fast/workers/worker-atomics-wait.html index bd47036..a5414631 100644 --- a/third_party/blink/web_tests/fast/workers/worker-atomics-wait.html +++ b/third_party/blink/web_tests/fast/workers/worker-atomics-wait.html
@@ -14,7 +14,7 @@ testRunner.waitUntilDone(); } -if (window.internals && internals.runtimeFlags.sharedArrayBufferEnabled && window.SharedArrayBuffer) { +if (window.SharedArrayBuffer) { var view = new Int32Array(new SharedArrayBuffer(4)); try { Atomics.wait(view, 0, 0, 0); @@ -42,4 +42,3 @@ </script> </body> </html> -
diff --git a/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer-expected.txt b/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer-expected.txt index 64bf5d6..2ee37cfdb 100644 --- a/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer-expected.txt +++ b/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer-expected.txt
@@ -1,4 +1,75 @@ +CONSOLE WARNING: line 113: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 27: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. Test sharing SharedArrayBuffers between dedicated workers. -SharedArrayBuffers are not enabled -- skipping test. +Running SharedArrayBuffer test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred data is OK. +Running Int8Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Uint8Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Uint8ClampedArray test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Int16Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Uint16Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Int32Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Uint32Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Float32Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running Float64Array test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: SharedArrayBuffer not neutered during transfer. +PASS: Original data not changed during transfer. +PASS: Transferred array type is OK. +PASS: Transferred data is OK. +Running SendSharedArrayBufferTwice test case +PASS: Transferred data is OK. +Running TransferArrayBufferAndSharedArrayBuffer test case +PASS: ArrayBuffer was neutered during transfer. +PASS: Transferred data is OK. +PASS: Transferred data is OK. +Running SharedArrayBufferInTransferListViaMessagePort test case +PASS: Passing SharedArrayBuffer in the transfer list threw. +PASS: ArrayBuffer 'ab1' was not neutered. +PASS: ArrayBuffer 'ab2' was not neutered. +DONE
diff --git a/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer.html b/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer.html index 3f03c94..ad40a881 100644 --- a/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer.html +++ b/third_party/blink/web_tests/fast/workers/worker-sharedarraybuffer-transfer.html
@@ -238,7 +238,7 @@ testRunner.waitUntilDone(); } -if (window.internals && internals.runtimeFlags.sharedArrayBufferEnabled && window.SharedArrayBuffer) { +if (window.SharedArrayBuffer) { var worker = new Worker('resources/worker-sharedarraybuffer-transfer.js'); runNextTest();
diff --git a/third_party/blink/web_tests/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt b/third_party/blink/web_tests/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt index 42e1de3..626853eb 100644 --- a/third_party/blink/web_tests/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt +++ b/third_party/blink/web_tests/fast/xmlhttprequest/xmlhttprequest-send-sharedarraybuffer-expected.txt
@@ -1,4 +1,5 @@ +CONSOLE WARNING: line 12: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. This is a testharness.js-based test. -Harness Error. harness_status.status = 1 , harness_status.message = done() was called without first defining any tests +PASS sending SharedArrayBuffer Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/issues/sab-postMessage-issue-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/sab-postMessage-issue-expected.txt index 5029e3ac..fc82b56 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/issues/sab-postMessage-issue-expected.txt +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/issues/sab-postMessage-issue-expected.txt
@@ -22,7 +22,7 @@ code : SharedArrayBufferIssue details : { sharedArrayBufferIssueDetails : { - isWarning : false + isWarning : true sourceCodeLocation : { columnNumber : 1 lineNumber : 0
diff --git a/third_party/blink/web_tests/http/tests/websocket/send-arraybufferview-expected.txt b/third_party/blink/web_tests/http/tests/websocket/send-arraybufferview-expected.txt index 0f06cbb..ec89e63 100644 --- a/third_party/blink/web_tests/http/tests/websocket/send-arraybufferview-expected.txt +++ b/third_party/blink/web_tests/http/tests/websocket/send-arraybufferview-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. +CONSOLE WARNING: line 46: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. WebSocket: Send ArrayBufferViews. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/inspector-protocol/page/add-script-to-evaluate-on-load-with-command-line-api-expected.txt b/third_party/blink/web_tests/inspector-protocol/page/add-script-to-evaluate-on-load-with-command-line-api-expected.txt new file mode 100644 index 0000000..1716269 --- /dev/null +++ b/third_party/blink/web_tests/inspector-protocol/page/add-script-to-evaluate-on-load-with-command-line-api-expected.txt
@@ -0,0 +1,10 @@ +Tests that Page.addScriptToEvaluateOnLoad has access to command line APIs +Without an isolated world: +1 function monitorEvents(object, [types]) { [Command Line API] } +2 function monitorEvents(object, [types]) { [Command Line API] } +3 undefined +With an isolated world: +1 function monitorEvents(object, [types]) { [Command Line API] } +2 function monitorEvents(object, [types]) { [Command Line API] } +3 undefined +
diff --git a/third_party/blink/web_tests/inspector-protocol/page/add-script-to-evaluate-on-load-with-command-line-api.js b/third_party/blink/web_tests/inspector-protocol/page/add-script-to-evaluate-on-load-with-command-line-api.js new file mode 100644 index 0000000..60ec41d7 --- /dev/null +++ b/third_party/blink/web_tests/inspector-protocol/page/add-script-to-evaluate-on-load-with-command-line-api.js
@@ -0,0 +1,50 @@ +(async function(testRunner) { + const {session, dp} = await testRunner.startBlank( + 'Tests that Page.addScriptToEvaluateOnLoad has access to command line APIs'); + dp.Runtime.enable(); + dp.Page.enable(); + + dp.Runtime.onConsoleAPICalled(msg => testRunner.log(msg.params.args[0].value)); + + testRunner.log('Without an isolated world:'); + const scriptIdentifiers = []; + + let result = await dp.Page.addScriptToEvaluateOnNewDocument({source: ` + console.log('1 ' + monitorEvents.toString()); + `, includeCommandLineAPI: true}); + + scriptIdentifiers.push(result.result.identifier); + + result = await dp.Page.addScriptToEvaluateOnNewDocument({source: ` + console.log('2 ' + monitorEvents.toString()); + `, includeCommandLineAPI: true}); + + scriptIdentifiers.push(result.result.identifier); + + result = await dp.Page.addScriptToEvaluateOnNewDocument({source: ` + console.log('3 ' + typeof window.monitorEvents); + `, includeCommandLineAPI: false}); + + scriptIdentifiers.push(result.result.identifier); + + await session.navigate('../resources/blank.html'); + + for (const identifier of scriptIdentifiers) { + await dp.Page.removeScriptToEvaluateOnNewDocument({identifier}); + } + + testRunner.log('With an isolated world:'); + await dp.Page.addScriptToEvaluateOnNewDocument({source: ` + console.log('1 ' + monitorEvents.toString()); + `, includeCommandLineAPI: true, worldName: 'inspector-tests'}); + await dp.Page.addScriptToEvaluateOnNewDocument({source: ` + console.log('2 ' + monitorEvents.toString()); + `, includeCommandLineAPI: true, worldName: 'inspector-tests'}); + await dp.Page.addScriptToEvaluateOnNewDocument({source: ` + console.log('3 ' + typeof window.monitorEvents); + `, includeCommandLineAPI: false, worldName: 'inspector-tests'}); + + await session.navigate('../resources/blank.html'); + + testRunner.completeTest(); +})
diff --git a/third_party/blink/web_tests/storage/indexeddb/shared-array-buffer-throws-expected.txt b/third_party/blink/web_tests/storage/indexeddb/shared-array-buffer-throws-expected.txt index 42e1de3..8913974f 100644 --- a/third_party/blink/web_tests/storage/indexeddb/shared-array-buffer-throws-expected.txt +++ b/third_party/blink/web_tests/storage/indexeddb/shared-array-buffer-throws-expected.txt
@@ -1,4 +1,5 @@ +CONSOLE WARNING: line 14: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. This is a testharness.js-based test. -Harness Error. harness_status.status = 1 , harness_status.message = done() was called without first defining any tests +PASS Serializing SharedArrayBuffer throws DataClone error. Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/webaudio/dom-exceptions-expected.txt b/third_party/blink/web_tests/webaudio/dom-exceptions-expected.txt index 30f0f5eb..dfb7f67 100644 --- a/third_party/blink/web_tests/webaudio/dom-exceptions-expected.txt +++ b/third_party/blink/web_tests/webaudio/dom-exceptions-expected.txt
@@ -1,6 +1,6 @@ -CONSOLE WARNING: line 4: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. CONSOLE WARNING: line 139: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet) CONSOLE WARNING: line 143: The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet) +CONSOLE WARNING: line 253: SharedArrayBuffer will require cross-origin isolation as of M91, around May 2021. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details. CONSOLE WARNING: line 348: The provided value 'fancy' is not a valid enum value of type ChannelCountMode. CONSOLE WARNING: line 354: The provided value 'undefined' is not a valid enum value of type ChannelInterpretation. CONSOLE WARNING: line 524: The provided value '9x' is not a valid enum value of type OverSampleType.
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/prompt-by-before-unload.html b/third_party/blink/web_tests/wpt_internal/prerender/resources/prompt-by-before-unload.html new file mode 100644 index 0000000..3af04c19 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/prompt-by-before-unload.html
@@ -0,0 +1,41 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="target"></div> +<script> + +assert_true(document.prerendering); + +window.onbeforeunload = function(e) { + // Call preventDefault() or set `returnValue` to trigger the prompt + // on beforeunload event. + e.preventDefault(); + e.returnValue = 'You have a return value.'; +} + +function changeWindowLocation() { + window.location.href = "about:blank"; + return new Promise(resolve => { + window.onunload = function(e) { + // Unload event should be triggered since changing the page + // location is not blocked by the prompt on beforeunload in the + // prerenderer. + resolve(); + } + }); +} + +async function asyncPromptOnBeforeUnload() { + const bc = new BroadcastChannel('prerender-channel'); + try { + await changeWindowLocation(); + bc.postMessage('unloaded without the prompt by beforeunload.'); + } catch (err) { + bc.postMessage(err); + } finally { + bc.close(); + } +} + +asyncPromptOnBeforeUnload(); +</script>
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/resources/request-picture-in-picture.html b/third_party/blink/web_tests/wpt_internal/prerender/resources/request-picture-in-picture.html new file mode 100644 index 0000000..4a12836 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/prerender/resources/request-picture-in-picture.html
@@ -0,0 +1,30 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<video id="target" + onloadeddata="loaded()" src="/media/test.ogv"></video> +<script> + +assert_true(document.prerendering); + +async function requestPictureInPicture() { + const bc = new BroadcastChannel('prerender-channel'); + + try { + document.pictureInPictureEnabled = true; + await target.requestPictureInPicture(); + bc.postMessage('unexpected success'); + } catch (err) { + if (err.name == 'NotAllowedError') + bc.postMessage('request failed for a user gesture'); + else + bc.postMessage(err.message); + } finally { + bc.close(); + } +} + +function loaded() { + requestPictureInPicture(); +} +</script>
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/restriction-prompt-by-before-unload.html b/third_party/blink/web_tests/wpt_internal/prerender/restriction-prompt-by-before-unload.html new file mode 100644 index 0000000..246e214 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/prerender/restriction-prompt-by-before-unload.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<!-- +This file cannot be upstreamed to WPT until: +* startPrerendering() usage is replaced with a WebDriver API +--> +<title>Prerendering cannot invoke the prompt generated by the + beforeunload event</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/utils.js"></script> +<body> +<script> +promise_test(async t => { + const bc = new BroadcastChannel('prerender-channel'); + t.add_cleanup(_ => bc.close()); + + const gotMessage = new Promise(resolve => { + bc.addEventListener('message', e => { + resolve(e.data); + }, { + once: true + }); + }); + // Start prerendering a page that attempts to invoke + // the prompt generated by the beforeunload event. + // It is activation-gated and expects to fail. + startPrerendering('resources/prompt-by-before-unload.html'); + + const result = await gotMessage; + assert_equals(result, + 'unloaded without the prompt by beforeunload.'); +}, 'Prerendering cannot invoke the prompt by the beforeunload event.'); +</script> +</body>
diff --git a/third_party/blink/web_tests/wpt_internal/prerender/restriction-request-picture-in-picture.html b/third_party/blink/web_tests/wpt_internal/prerender/restriction-request-picture-in-picture.html new file mode 100644 index 0000000..0f8858d --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/prerender/restriction-request-picture-in-picture.html
@@ -0,0 +1,35 @@ +<!DOCTYPE html> +<!-- +This file cannot be upstreamed to WPT until: +* startPrerendering() usage is replaced with a WebDriver API +--> +<title>Prerendering cannot invoke + HTMLVideoElement.requestPictureInPicture</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/utils.js"></script> +<body> +<script> +promise_test(async t => { + const bc = new BroadcastChannel('prerender-channel'); + t.add_cleanup(_ => bc.close()); + + const gotMessage = new Promise(resolve => { + bc.addEventListener('message', e => { + resolve(e.data); + }, { + once: true + }); + }); + + // Start prerendering a page that attempts to invoke + // HTMLVideoElement.requestPictureInPicture. This API needs + // transient activation. So it's expected to fail. + startPrerendering(`resources/request-picture-in-picture.html`); + + const result = await gotMessage; + assert_equals(result, 'request failed for a user gesture'); +}, 'prerendering page cannot invoke' + + 'HTMLVideoElement.requestPictureInPicture'); +</script> +</body>
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium index b82c5ba..3d240d8 100644 --- a/third_party/freetype/README.chromium +++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@ Name: FreeType URL: http://www.freetype.org/ -Version: VER-2-10-4-227-g4e1c6a12e -Revision: 4e1c6a12e5f285d57e66818177013cce7efbd7b0 +Version: VER-2-10-4-234-gec95f9c92 +Revision: ec95f9c9212e9bf9371471f845903bb0e895807d CPEPrefix: cpe:/a:freetype:freetype:2.10.4 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses"
diff --git a/third_party/freetype/include/freetype-custom/freetype/config/ftoption.h b/third_party/freetype/include/freetype-custom/freetype/config/ftoption.h index f76a371..7d69aac 100644 --- a/third_party/freetype/include/freetype-custom/freetype/config/ftoption.h +++ b/third_party/freetype/include/freetype-custom/freetype/config/ftoption.h
@@ -221,7 +221,7 @@ * options set by those programs have precedence, overwriting the value * here with the configured one. */ -/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ +#define FT_CONFIG_OPTION_SYSTEM_ZLIB /**************************************************************************
diff --git a/tools/clang/scripts/analyze_includes.py b/tools/clang/scripts/analyze_includes.py index dc4916b..8285eb3 100755 --- a/tools/clang/scripts/analyze_includes.py +++ b/tools/clang/scripts/analyze_includes.py
@@ -54,17 +54,6 @@ INCLUDE_RE = re.compile(r'(\.+) (.*)$') for line in build_log: - m = ENTER_DIR_RE.match(line) - if m: - build_dir = m.group(1) - - m = COMPILE_RE.match(line) - if m: - filename = m.group(1) - roots.add(filename) - file_stack = [filename] - includes.setdefault(filename, set()) - m = INCLUDE_RE.match(line) if m: prev_depth = len(file_stack) - 1 @@ -80,6 +69,20 @@ includes[file_stack[-1]].add(filename) file_stack.append(filename) + continue + + m = COMPILE_RE.match(line) + if m: + filename = m.group(1) + roots.add(filename) + file_stack = [filename] + includes.setdefault(filename, set()) + continue + + m = ENTER_DIR_RE.match(line) + if m: + build_dir = m.group(1) + continue # Normalize paths. normalized = {}
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 3527160..d283e89 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -44493,6 +44493,8 @@ <int value="-1937077699" label="http-form-warning"/> <int value="-1936032607" label="enable-experimental-webassembly-features"/> <int value="-1935787681" label="SystemNotifications:disabled"/> + <int value="-1935230557" + label="UpdateHistoryEntryPointsInIncognito:disabled"/> <int value="-1935055754" label="WebShare:enabled"/> <int value="-1934661084" label="ForceUnifiedConsentBump:disabled"/> <int value="-1933425042" label="OfflinePreviews:enabled"/> @@ -46955,6 +46957,7 @@ <int value="209792775" label="TabGroupsAndroid:enabled"/> <int value="212489101" label="AutofillAssistantChromeEntry:enabled"/> <int value="212977039" label="MediaFoundationD3D11VideoCapture:disabled"/> + <int value="214935999" label="UpdateHistoryEntryPointsInIncognito:enabled"/> <int value="215328738" label="ImprovedGeoLanguageData:disabled"/> <int value="215528151" label="NearbySharingWebRtc:enabled"/> <int value="217455219" label="SyncStandaloneTransport:enabled"/>
diff --git a/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS b/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS index 15e57cf..ad20aa4 100644 --- a/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS +++ b/tools/metrics/histograms/histograms_xml/METRIC_REVIEWER_OWNERS
@@ -10,6 +10,7 @@ ender@chromium.org harrisonsean@chromium.org javierrobles@chromium.org +lyf@chromium.org mcrouse@chromium.org mlippautz@chromium.org nancylingwang@chromium.org
diff --git a/tools/metrics/histograms/histograms_xml/others/histograms.xml b/tools/metrics/histograms/histograms_xml/others/histograms.xml index b80f477..61ead914 100644 --- a/tools/metrics/histograms/histograms_xml/others/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/others/histograms.xml
@@ -1718,7 +1718,7 @@ </histogram> <histogram name="Bookmarks.Count.OnProfileLoad.Duplicate{UniquenessCriterion}" - units="bookmarks" expires_after="2021-06-06"> + units="bookmarks" expires_after="2021-10-10"> <owner>mastiz@chromium.org</owner> <owner>sky@chromium.org</owner> <summary> @@ -1737,7 +1737,7 @@ </histogram> <histogram name="Bookmarks.Count.OnProfileLoad.Unique{UniquenessCriterion}" - units="bookmarks" expires_after="2021-06-06"> + units="bookmarks" expires_after="2021-10-10"> <owner>mastiz@chromium.org</owner> <owner>sky@chromium.org</owner> <summary>
diff --git a/tools/metrics/histograms/histograms_xml/session/histograms.xml b/tools/metrics/histograms/histograms_xml/session/histograms.xml index ca64fa4..3cb930f2 100644 --- a/tools/metrics/histograms/histograms_xml/session/histograms.xml +++ b/tools/metrics/histograms/histograms_xml/session/histograms.xml
@@ -410,7 +410,7 @@ </histogram> <histogram name="Session.WebStates.AllSerializedCertPolicyCachesSize" - units="KB" expires_after="2021-06-10"> + units="KB" expires_after="2022-05-01"> <owner>djean@chromium.org</owner> <owner>gambard@chromium.org</owner> <summary> @@ -475,7 +475,7 @@ </histogram> <histogram name="Session.WebStates.SerializedCertPolicyCacheSize" units="KB" - expires_after="2021-06-10"> + expires_after="2022-05-01"> <owner>djean@chromium.org</owner> <owner>gambard@chromium.org</owner> <summary>
diff --git a/ui/base/ime/ime_text_span.h b/ui/base/ime/ime_text_span.h index 62bdfb8..2d373da 100644 --- a/ui/base/ime/ime_text_span.h +++ b/ui/base/ime/ime_text_span.h
@@ -28,6 +28,8 @@ kMisspellingSuggestion, // Creates an autocorrect marker that isn't cleared by itself. kAutocorrect, + // Creates a grammar marker that isn't cleared by itself. + kGrammarSuggestion, }; enum class Thickness {
diff --git a/ui/base/ime/mojom/ime_types.mojom b/ui/base/ime/mojom/ime_types.mojom index 0c04bbf..8c6c22e 100644 --- a/ui/base/ime/mojom/ime_types.mojom +++ b/ui/base/ime/mojom/ime_types.mojom
@@ -58,6 +58,7 @@ kSuggestion, kMisspellingSuggestion, kAutocorrect, + kGrammarSuggestion, }; // This enum represents the thickness of an underline segment of text,
diff --git a/ui/base/ime/mojom/ime_types_mojom_traits.cc b/ui/base/ime/mojom/ime_types_mojom_traits.cc index e09781c..36a77cd 100644 --- a/ui/base/ime/mojom/ime_types_mojom_traits.cc +++ b/ui/base/ime/mojom/ime_types_mojom_traits.cc
@@ -209,6 +209,8 @@ return ui::mojom::ImeTextSpanType::kMisspellingSuggestion; case ui::ImeTextSpan::Type::kAutocorrect: return ui::mojom::ImeTextSpanType::kAutocorrect; + case ui::ImeTextSpan::Type::kGrammarSuggestion: + return ui::mojom::ImeTextSpanType::kGrammarSuggestion; } NOTREACHED(); @@ -232,6 +234,9 @@ case ui::mojom::ImeTextSpanType::kAutocorrect: *out = ui::ImeTextSpan::Type::kAutocorrect; return true; + case ui::mojom::ImeTextSpanType::kGrammarSuggestion: + *out = ui::ImeTextSpan::Type::kGrammarSuggestion; + return true; } NOTREACHED();
diff --git a/ui/ozone/platform/wayland/host/wayland_window.h b/ui/ozone/platform/wayland/host/wayland_window.h index b375127..34bfc7a 100644 --- a/ui/ozone/platform/wayland/host/wayland_window.h +++ b/ui/ozone/platform/wayland/host/wayland_window.h
@@ -105,7 +105,7 @@ WaylandWindow* child_window() const { return child_window_; } int32_t buffer_scale() const { return root_surface_->buffer_scale(); } - int32_t ui_scale() const { return ui_scale_; } + float ui_scale() const { return ui_scale_; } // A preferred output is the one with the largest scale. This is needed to // properly render contents as it seems like an expectation of Wayland. @@ -239,7 +239,7 @@ // Sets bounds in dip. void SetBoundsDip(const gfx::Rect& bounds_dip); - void set_ui_scale(int32_t ui_scale) { ui_scale_ = ui_scale; } + void set_ui_scale(float ui_scale) { ui_scale_ = ui_scale; } // Calls set_opaque_region for this window. virtual void UpdateWindowMask(); @@ -322,7 +322,7 @@ // The UI scale may be forced through the command line, which means that it // replaces the default value that is equal to the natural device scale. // We need it to place and size the menus properly. - float ui_scale_ = 1.0; + float ui_scale_ = 1.0f; // Stores current opacity of the window. Set on ::Initialize call. ui::PlatformWindowOpacity opacity_;
diff --git a/weblayer/browser/cookie_manager_browsertest.cc b/weblayer/browser/cookie_manager_browsertest.cc index a8ccd32d..a7da2970 100644 --- a/weblayer/browser/cookie_manager_browsertest.cc +++ b/weblayer/browser/cookie_manager_browsertest.cc
@@ -2,11 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/files/file_util.h" #include "base/test/bind.h" -#include "content/public/browser/browser_context.h" #include "net/test/embedded_test_server/embedded_test_server.h" -#include "weblayer/browser/cookie_manager_impl.h" #include "weblayer/browser/profile_impl.h" #include "weblayer/public/cookie_manager.h" #include "weblayer/test/weblayer_browser_test.h" @@ -48,16 +45,6 @@ return final_result; } - base::Time GetCookieDbModifiedTime() { - base::FilePath cookie_path = - GetBrowserContext()->GetPath().Append(FILE_PATH_LITERAL("Cookies")); - - base::ScopedAllowBlockingForTesting scoped_allow_blocking; - base::File::Info info; - EXPECT_TRUE(base::GetFileInfo(cookie_path, &info)); - return info.last_modified; - } - private: size_t num_to_wait_for_ = 0; std::vector<net::CookieChangeInfo> change_infos_; @@ -125,48 +112,4 @@ } } -IN_PROC_BROWSER_TEST_F(CookieManagerBrowserTest, FlushCookiesAfterSet) { - EXPECT_TRUE(embedded_test_server()->Start()); - NavigateAndWaitForCompletion( - embedded_test_server()->GetURL("/simple_page.html"), shell()); - - base::Time original_modified_time = GetCookieDbModifiedTime(); - - ASSERT_TRUE(SetCookie("a=b; expires=Fri, 01 Jan 2038 00:00:00 GMT")); - EXPECT_EQ(GetCookieDbModifiedTime(), original_modified_time); - - EXPECT_TRUE(static_cast<CookieManagerImpl*>(GetProfile()->GetCookieManager()) - ->FireFlushTimerForTesting()); - EXPECT_GT(GetCookieDbModifiedTime(), original_modified_time); -} - -IN_PROC_BROWSER_TEST_F(CookieManagerBrowserTest, FlushCookiesAfterSetMultiple) { - EXPECT_TRUE(embedded_test_server()->Start()); - NavigateAndWaitForCompletion( - embedded_test_server()->GetURL("/simple_page.html"), shell()); - - base::Time original_modified_time = GetCookieDbModifiedTime(); - - ASSERT_TRUE(SetCookie("a=b; expires=Fri, 01 Jan 2038 00:00:00 GMT")); - EXPECT_EQ(GetCookieDbModifiedTime(), original_modified_time); - ASSERT_TRUE(SetCookie("c=d; expires=Fri, 01 Jan 2038 00:00:00 GMT")); - EXPECT_EQ(GetCookieDbModifiedTime(), original_modified_time); - - CookieManagerImpl* cookie_manager = - static_cast<CookieManagerImpl*>(GetProfile()->GetCookieManager()); - EXPECT_TRUE(cookie_manager->FireFlushTimerForTesting()); - EXPECT_GT(GetCookieDbModifiedTime(), original_modified_time); - - // Flush timer should be gone now. - EXPECT_FALSE(cookie_manager->FireFlushTimerForTesting()); - - // Try again to make sure it works a second time. - original_modified_time = GetCookieDbModifiedTime(); - ASSERT_TRUE(SetCookie("d=f; expires=Fri, 01 Jan 2038 00:00:00 GMT")); - EXPECT_EQ(GetCookieDbModifiedTime(), original_modified_time); - - EXPECT_TRUE(cookie_manager->FireFlushTimerForTesting()); - EXPECT_GT(GetCookieDbModifiedTime(), original_modified_time); -} - } // namespace weblayer
diff --git a/weblayer/browser/cookie_manager_impl.cc b/weblayer/browser/cookie_manager_impl.cc index bdbaa4e0..4c0e6937 100644 --- a/weblayer/browser/cookie_manager_impl.cc +++ b/weblayer/browser/cookie_manager_impl.cc
@@ -17,7 +17,6 @@ namespace weblayer { namespace { -constexpr base::TimeDelta kCookieFlushDelay = base::TimeDelta::FromSeconds(1); void GetCookieComplete(CookieManager::GetCookieCallback callback, const net::CookieAccessResultList& cookies, @@ -137,17 +136,6 @@ } #endif -bool CookieManagerImpl::FireFlushTimerForTesting() { - if (!flush_timer_) - return false; - - flush_run_loop_for_testing_ = std::make_unique<base::RunLoop>(); - flush_timer_->FireNow(); - flush_run_loop_for_testing_->Run(); - flush_run_loop_for_testing_ = nullptr; - return true; -} - bool CookieManagerImpl::SetCookieInternal(const GURL& url, const std::string& value, SetCookieCallback callback) { @@ -161,9 +149,7 @@ ->GetCookieManagerForBrowserProcess() ->SetCanonicalCookie( *cc, url, net::CookieOptions::MakeAllInclusive(), - net::cookie_util::AdaptCookieAccessResultToBool( - base::BindOnce(&CookieManagerImpl::OnCookieSet, - weak_factory_.GetWeakPtr(), std::move(callback)))); + net::cookie_util::AdaptCookieAccessResultToBool(std::move(callback))); return true; } @@ -190,23 +176,4 @@ cookie_change_receivers_.Remove(id); } -void CookieManagerImpl::OnCookieSet(SetCookieCallback callback, bool success) { - std::move(callback).Run(success); - if (!flush_timer_) { - flush_timer_ = std::make_unique<base::OneShotTimer>(); - flush_timer_->Start(FROM_HERE, kCookieFlushDelay, - base::BindOnce(&CookieManagerImpl::OnFlushTimerFired, - weak_factory_.GetWeakPtr())); - } -} - -void CookieManagerImpl::OnFlushTimerFired() { - browser_context_->GetDefaultStoragePartition() - ->GetCookieManagerForBrowserProcess() - ->FlushCookieStore(flush_run_loop_for_testing_ - ? flush_run_loop_for_testing_->QuitClosure() - : base::DoNothing()); - flush_timer_ = nullptr; -} - } // namespace weblayer
diff --git a/weblayer/browser/cookie_manager_impl.h b/weblayer/browser/cookie_manager_impl.h index 4729b48..7c513cd 100644 --- a/weblayer/browser/cookie_manager_impl.h +++ b/weblayer/browser/cookie_manager_impl.h
@@ -56,10 +56,6 @@ void RemoveCookieChangedCallback(JNIEnv* env, int id); #endif - // Fires the cookie flush timer immediately and waits for the flush to - // complete. Returns true if the flush timer was running. - bool FireFlushTimerForTesting(); - private: bool SetCookieInternal(const GURL& url, const std::string& value, @@ -68,17 +64,11 @@ const std::string* name, CookieChangedCallback callback); void RemoveCookieChangedCallbackInternal(int id); - void OnCookieSet(SetCookieCallback callback, bool success); - void OnFlushTimerFired(); content::BrowserContext* browser_context_; mojo::ReceiverSet<network::mojom::CookieChangeListener, std::unique_ptr<network::mojom::CookieChangeListener>> cookie_change_receivers_; - - std::unique_ptr<base::OneShotTimer> flush_timer_; - std::unique_ptr<base::RunLoop> flush_run_loop_for_testing_; - base::WeakPtrFactory<CookieManagerImpl> weak_factory_{this}; };